有意和面向语言的编程有什么用处?

时间:2009-01-02 23:37:17

标签: intentional-programming

有意义或“面向语言”的编程有什么用处吗?

这不是一个修辞问题。我正在寻找那些尝试过这些工具的人(即代表一些“更高级”格式的程序而不仅仅是文本,并使用不同的编辑器来处理不同的域特定子集),并对它是如何做出一些评论,或者建议好的工具。

http://www.onboard.jetbrains.com/is1/articles/04/10/lop/What exactly is Intentional Programming

4 个答案:

答案 0 :(得分:4)

术语“单纯的文字”让我想在这里唠叨。

语言是具有语法,语义和含义的符号系统。它可以采用键盘点击,鼠标点击,听觉信号或任何能够携带信息的方式。

它的适用性不是它的传播方式的函数,而是它映射到它被用来表达的心理概念的直接性。

当你改变主意时,会发现这种直接性的简单衡量标准:在不引入“错误”的情况下更改“代码”有多难?

Take a look at this.

补充:刚刚看过Simonyi的东西,也许我可以就它的用处给出一个看法。

从消极方面来说,我对WYSIWYG和非编码人员能够构建应用程序的重视印象不深。人们喜欢像素,特别是彩色移动像素,特别是如果他们在加利福尼亚。当然可以在玩具领域做一些事情,但只要你想做你的问题,你就会感到失望。这是一个AI问题,值得努力。声称接近实现它是不诚实的。

从积极的方面来说,I wrote a book,我在那里谈到了与语言导向编程非常相似的语言方法。我喜欢以理论为基础,所以我的方法基于Algorithmic Information Theory。这可能听起来很可怕,但它基本上是关于如何处理信息单元的最紧凑(但仍然有意义)的表示,包括程序。

我从中得到了切线。而不是寻找紧凑的程序(这是好的)我寻找从人类大脑通过手指/眼睛到计算机的最紧凑的编辑流。这不仅包括编写程序,还包括通过一生的需求变化进行维护。

我提出这样的想法,基本上如果你想要最小化维护编辑流,你必须将语言改进到可以被称为特定领域的地步。这是值得做的积极进取,并愿意在流行的潮流中游泳,因为受欢迎的是阻止我们。

我举了几个例子,我继续给他们,但他们都是实用的,第二个。他们是完成特定工作的方法,但是他们不擅长创办一个程序员似乎非常渴望的华丽乐队。

所以我并没有真的想打电话,因为这是浪费时间,但也许我已经给出了一些理由,为什么面向语言编程,我认为它将是一个有用的东西。< / p>

答案 1 :(得分:3)

一个非常有用的用途,它使测试用例更加清晰,不仅适用于业务分析师,也适用于您自己/您的团队。

当时间过去而你忘记了确切的测试案例的全部内容时,拥有LOP非常有帮助。您可以拥有规范,甚至可以在源代码注释中记录规则,但这些工件不会被执行。代码是!

你也可以使节目非常清晰,但比“面向语言”的描述更加清晰几乎是不可能的。

考虑这个虚构的片段。

注意这不是java是LOP,但是有一些框架的目的是做一些类似下面的事情,即让测试用例更容易理解。

package a;
import static a.Help.*;

public class Test { 

    public void test(){
        Object value = "";
        Object obtained = "";
        assert that( expected( value , isEqualTo( obtained ) ) );
    }
}

这是一个非常简单的例子。此代码中的值是执行的行说明测试的全部内容:

            assert that( expected( value , isEqualTo( obtained ) ) );

这很清楚,它写着:

  

断言期望值等于

这很简单。但你可以拥有任何一种商业规则,只需按字面意思阅读即可。

  

断言客户抵押贷款在到达......等等时处理

Martin Fowler解释了这一点,并提到了Hamcrest这样做的框架。

这是link (我不完全确定他是否在谈论Hamcrest,或者是另一个人:P抱歉)

答案 2 :(得分:0)

我不确定这是不是你要问的问题,但是几次尝试AppleScript后我真的很沮丧。在英语中,有所以表达某些东西的方法,我发现很难记住甚至基本结构的语法。

我认为优秀的编程语言感觉很自然,但仍然像你一样受限于结构。

答案 3 :(得分:0)

这只是未来

使用高级编程语言,我们已经看到相当聪明(但像我这样的心理上不容忍)的人开始编写有趣的工具,因为他们能够专注于什么,而不是如何编程。

使用HTML,我们已经看到任何具有一些形式逻辑的人都可以使用基本但大规模的通信。

通过CMS,我们看到人力资源经理能够以低成本快速构建合理可用的内部网。

通过mashup,我们看到富有想象力的业余爱好者创造了令人难以置信的服务,包括数据交叉,网络化等,同时没有微软预算的1/100000。

每当你消除困难时,你就会为那些没有你能力但有其他能力的人开启一扇新的大门。你可以实现自己的经验和总结。

明天,我们会看到Ms和Mr. Everybody在不知不觉中编写一些疯狂的东西,因为他们需要这样看待它。你永远不会做的东西,因为你不是他们。

现在这是真的,因为工具不够好,所以我们非常高兴。但是我们每年都越来越接近了,我打赌你会看到传入的语义网有所改进;-)下一步可能是用自然语言进行高级搜索,或类似Ubiquity项目。然后谁知道呢?

最终,我同意你的观点:目前,它们并没有真正有用。自动生成的GUI不太好(对于原型设计或小型应用程序非常有用,但是当你想要“开展业务”时效果不佳),自然编程就是说,有限的......但是关于你可以做些什么的事情20年前的一台电脑(我甚至不是黑白两色,而是黑色和绿色),你会明白它有多么有前途。