1

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

这不是一个修辞问题。我正在寻找尝试过这些工具的人(即,以某种“更高级别”的格式表示程序,而不是单纯的文本,并为不同的域特定子集使用不同的编辑器)并对它的方式提出一些意见,或者提出好的建议工具。

http://www.onboard.jetbrains.com/is1/articles/04/10/lop/究竟什么是意向编程

4

4 回答 4

4

“纯文本”一词让我想在这里插话。

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

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

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

看看这个。

补充:刚刚看了西蒙尼的东西,也许我可以就它的有用之处发表意见。

不利的一面是,我对所见即所得和非编码人员能够构建应用程序的强调没有留下深刻的印象。人们喜欢像素,尤其是彩色移动像素,尤其是在加利福尼亚的情况下。当然,在玩具领域可以做一些事情,但是一旦你想解决你的问题,你就会失望。这是一个人工智能问题,值得为之努力。声称接近实现它是不诚实的。

从积极的方面来说,我写了一本书,其中我谈到了听起来很像面向语言的编程的语言方法。我喜欢以理论为基础,所以我的方法松散地基于算法信息论。这听起来可能很可怕,但它基本上是关于如何处理信息单元的最紧凑(但仍然有意义)的表示,其中包括程序。

我从中得出了一个切线。我没有寻找紧凑的程序(很好),而是寻找从人脑通过手指/眼睛到计算机的最紧凑的编辑流。这不仅包括程序的编写,还包括在需求变化的整个生命周期中对其进行维护。

我的想法是,基本上,如果您寻求最小化维护编辑流,则必须将语言改进到可以称为特定领域的程度。这是值得积极去做的,并且愿意逆流而上,因为流行的东西阻碍了我们。

我举了很多例子,我继续举,但它们都是首先实用的,然后是漂亮的。它们是完成特定工作的方法,但它们并不擅长启动程序员似乎非常渴望的华而不实的潮流之一。

所以我真的不打算按喇叭,因为那是在浪费时间,但也许我已经给出了一些理由,说明面向语言的编程,在我看来,将是一个有用的东西。

于 2009-03-03T18:54:40.533 回答
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是一个框架来执行此操作。

这是链接 (我不完全确定这是他在谈论 Hamcrest 还是另一个:P 抱歉)

于 2009-01-03T00:13:09.870 回答
0

我不确定这是否是您要问的问题,但是尝试了 AppleScript 几次后,我对此感到非常沮丧。在英语中,有很多表达方式,我发现即使是基本结构也很难记住语法。

我认为好的编程语言感觉很自然,但仍然像你被限制在一个结构中一样。

于 2009-01-03T00:16:35.150 回答
0

这只是未来

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

借助 HTML,我们已经看到任何具有一点形式逻辑的人都可以进行基本但大量的通信。

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

通过 mashup,我们已经看到富有想象力的业余爱好者创造了令人难以置信的服务,包括数据交叉、地理网络等,而他们的预算还不到微软的 1/100000。

每次你排除困难,你就为那些没有你能力但有别人的人打开了一扇新的大门。你把你的经验和他们的总结。

明天,我们将看到每个人的女士和先生在不知不觉中编写一些疯狂酷的东西,因为他们需要以这种方式看待它。你永远不会做的事情,因为你不是他们。

现在这是真的,我们离它还很远,因为工具还不够好。但是我们每年都在接近,我敢打赌,我们会看到传入的语义 Web 有所改进;-) 下一步可能是自然语言的高级搜索,或者类似Ubiquity项目。然后谁知道呢?

Eventually, I agree with you : for now, they are not really useful. Automatically generated GUI are not so good (quite usefully for prototyping or small apps, but not good when you want to "be in business"), natural programming is, well, let's say limited... But thing about what you could do with a computer 20 years ago (mine was not even in black and white, but black and GREEN), and you'll understand how promising it is.

于 2009-03-07T13:37:14.960 回答