这是我的第一个问题,所以我有点紧张,因为我不确定我是否能很好地理解它的意思。不管怎样,我们开始了.
每当在编程中达到新的里程碑时,他们似乎总是有一个共同的目标:让程序员更容易编程。
机器语言、操作码/助记符、过程/函数、结构、类(OOP)等在它们的时代总是有助于以更自然、更容易理解和更好维护的方式规划、组织和编写程序。
当然,函数式编程并不是什么新鲜事,但最近几年它似乎经历了一种复兴。我还相信,当微软将F#添加到他们的主流编程语言中时,FP将得到巨大的推动。
回到我最初的问题,我相信最终编程将用一种自然语言(英语)完成,几乎没有限制或规则。编译器将是AI/NLP系统的一部分,该系统从代码中提取信息,或者我应该说文本,并将其转换为编译器可以编译的中间语言。
那么,FP是将编程更接近于自然语言编程,还是它是一个障碍,主流OOP将引导我们更快地转向自然语言编程?
这个问题不应该用来讨论自然语言编程的可用性或可行性,因为只有未来才能证明这一点。
发布于 2008-11-12 23:49:24
对不起,我一点也不同意。代码最终是制作事物(对象)的蓝图,因此它必须非常精确和受规则控制,才能可靠地运行。自然语言不会取代编程,就像餐巾上的草图不会取代机械工程一样。
发布于 2008-11-12 23:51:08
我个人已经得出结论,自然语言编程有点破解。
英语并不完全适合作为一种编程语言,太多与编程无关的抽象词汇,比如情感术语和其他抽象概念,在编程中没有立足之地,所以说编程可能是“自然语言”,“自然语言”可能是编程,但它不是。
现在我明白你在说什么了,问题是英语中有太多的废弃术语和相同事物的重复名称,所以我们会使用一些甚至不是特定于编程领域的东西,来完成编程任务。
我认为更适合于人们理解编程实际上是一种高度专业化的语言,并开动脑筋,学习用一种语言编写代码,这种语言简单,声明式的,具有一致的定义,不像英语,定义是高度主观的。
一旦你了解了一门语言的细节,并了解了它的原理图和行为,你就可以把它们结合起来做一些新的事情。
以Perl为例,每个人都抨击它是线噪声,但当你了解许多编程语言时,一旦你克服了"OMG线噪声“的最初障碍,就会有一定程度的直觉性,你可以编造出你从未读过的东西,然后看到它神奇地按照你的预期工作。
而IMHO,领域特定语言胜过口语语言,用于有针对性地解决问题。
发布于 2008-11-12 23:56:59
“那么,FP是让编程更接近自然语言编程,还是说它是一个障碍,主流OOP将引导我们更快地转向自然语言编程?”
都不是。两者的操作原则都是相同的,即您必须具体说明您希望计算机做什么。不能有不确定性的空间,这两种范式都与自然语言没有任何关系。它们解决了一个完全不同的问题:管理和构建复杂的代码和大型代码库。
自然语言中最大的障碍是语法分析。要明确地解析自然语言是不可能的。即使人类没有大量的上下文信息(面部表情,语调)也无法做到这一点,即使这样,我们仍然经常出错。
OOP和FP只是关于解析之后发生的事情。一旦语义元素被识别和解析,它的含义就被分配给每个语义元素。
也许有一天我们能够用自然语言编程。我怀疑这会在未来几十年内发生,但有一天可能会发生。但是今天的编程范例既不会加速这个过程,也不会延迟它。它们根本与此无关,也无助于解决解析问题。
https://stackoverflow.com/questions/285848
复制相似问题