函数式编程是自然语言编程的下一步吗?

时间:2008-11-12 23:43:06

标签: functional-programming nlp

这是我的第一个问题所以我对它有点紧张,因为我不确定我是否能够充分理解其含义。无论如何,我们走了......

每当达到编程中的新里程碑时,似乎他们总是有一个共同的目标:让程序员更容易编程。

机器语言,操作码/助记符,过程/函数,结构,类(OOP)等在他们的时代总是以更自然,可理解和更易于维护的方式规划,构造和编写程序。

当然,功能性编程绝不是新鲜事,但近年来它似乎经历了一种复兴。我还相信,当微软将F#添加到他们的主流编程语言时,FP将获得巨大的推动。

回到我原来的问题,我相信最终编程将以自然语言(英语)完成,只有很少的限制或规则。编译器将成为AI / NLP系统的一部分,该系统从代码中提取信息,或者我应该说文本并将其转换为编译器可以编译的中间语言。

那么,FP是否使编程更接近自然语言编程,或者它是一个障碍而主流OOP会让我们更快地进行自然语言编程?

这个问题不应该被用来讨论自然语言编程的可用性或可行性,因为只有未来才能说明。

9 个答案:

答案 0 :(得分:29)

对不起,我完全不同意。代码最终是制作东西(对象)的蓝图,因此它具有非常精确和规则控制,以便可靠地运行。自然语言不会更快地接管编程,因为草绘餐巾纸的概念将接管机械工程。

答案 1 :(得分:8)

我个人已经得出结论自然语言编程有点破解。

英语并不完全适合作为一种编程语言使用,太多抽象词在编程中没有相关性,例如情感词和其他在编程中没有位置的抽象概念,所以说编程可以永远是“自然语言”会跟随,“自然语言”可能是编程,但事实并非如此。

现在,当我得到你在这里说的话时,问题是英语有太多的废话和重复的名字,所以我们会使用一些甚至不是特定领域的东西。编程,用于编程任务。

我认为更适合人们理解编程实际上是一种高度专业化的语言,并使用他们的大脑并学习用一种语言编写代码,这种语言简单,具有说明性,并且具有一致的定义,与英语不同,其中定义是非常主观的。

一旦你学会了语言的细节,并学习它的原理图和行为,你就可以将它们结合起来做新事物。

拿Perl来说,每个人都会因为线路噪音而抨击它,但是当你知道很多编程语言时,一旦你超越了“OMG LINE NOISE”的最初障碍,就会有一定程度的直观性,你可以在哪里制作东西你从来没有读过,然后看到它像你期望的那样神奇地运作。

恕我直言,特定领域的语言胜过口语,以解决目标问题。

答案 2 :(得分:3)

“那么,FP是否使编程更接近自然语言编程,或者它是一个障碍而主流OOP会让我们更快地进行自然语言编程?”

都不是。两者都遵循相同的原则,您必须具体了解您希望计算机执行的操作。必须有没有的不确定性空间,这两种范式都没有任何与自然语言有关。他们解决了一个完全不同的问题:管理和构建复杂代码和大型代码库。

自然语言的一大障碍是解析。不可能毫不含糊地解析自然语言。如果没有大量的背景信息(面部表情,语调),即使是人类也无法做到这一点,即便如此,我们仍然经常犯错。

OOP和FP只是关于解析后发生的事情。一旦识别并解析了每个语义元素,就赋予其意义。

也许有一天我们能用自然语言编程。我怀疑它会在未来几十年内发生,但有一天可能会发生。但今天的编程范式既不会加速这个过程,也不会延迟它。它们与它无关,也无助于解决解析问题。

答案 3 :(得分:2)

我不认为函数式编程比OO编程更接近自然语言编程。函数式编程具有非常动词的语法。当您使用Lisp或Scheme进行编程时,您会花费大量时间考虑函数以及要对数据执行的操作。在OO编程中,您将大部分时间都花在思考对象上,因此它似乎非常注重名词。但是,在Smalltalk,C ++和Java中,您还有一些方法,允许您将动词应用于所有名词(可以这么说)。

我认为OO编程不一定会引导我们进行自然语言编程,但从我的观点来看,它比函数式编程更接近。对我而言,函数式编程似乎更接近数学而不是自然语言。这不是一件坏事,因为数学是我们在编程时应该考虑的语言。

答案 4 :(得分:2)

仅供参考,Inform 7可能是最接近自然语言编程的人。它是一个非常具体的领域的语言:编写交互式小说,这种以“冒险游戏”开头的软件。

答案 5 :(得分:0)

目前对功能编程的兴趣主要来自C#3.0的酷炫新功能,基本上是为了实现并行性,并表示向多核计算的转变。恕我直言,我认为我们不能认为这是“自然语言编程”的下一步

答案 6 :(得分:0)

如果您正在寻找编程语言的下一个发展,我会关注DSL。 DSL允许高度定制的语言,使高级商业用户能够配置系统,而无需担心数据类型,线程和UI小部件等编码细节。

功能语言将在“高度并行处理”的空间中占有一席之地。

答案 7 :(得分:0)

您是否认为主观问题会在此处获得“Windows Internals the 5th Element”添加到数据库并发送到我的地址的订单?如果是这样,自然语言编程将非常接近函数式编程,因为我以一种有点功能的方式提出我的问题。如果没有,那么自然语言编程将不会让我的订单发货,是吗?功能编程可以工作,因为它仍然与自然语言无关。

答案 8 :(得分:0)

没有。函数式编程将使我们更接近证明编译器。这是编译器证明你的代码更多的断言。编译器可以为我们证明越多,软件开发就越接近工程而不是艺术。

NLP编程语言可能更像是“我不是说我说的”风格语言。这可能与功能语言的方向相反。

“所有编程语言都在向LISP汇聚。”