西西河

主题:【讨论】龙芯什么时候能配上中文计算机语言编译的源程序? -- 唵啊吽

共:💬151 🌺373 🌵4
全看分页树展 · 主题 跟帖
家园 我再总结一下

函数式和命令式的差别,不仅是计算的角度,也是表达的角度,因为两者中“值”的地位不同,导致接口的不同,从而必然影响大框架的思路,比如用函数式语言基本就不会去玩值驱动。

回到主题,我说思维的转变,主要是是强调主流(命令式)编程语言和任何自然语言都有的主要鸿沟在哪里,入门阶段在这个门槛面前,自然语言之间的结构差异微不足道。

表达形式很重要,但是入门阶段并不是当务之急,因为对代码的可阅读性,可理解性,各种思路差异的理解,在有几万行实践积累之后比较容易说明白,我试过给一开始就给人讲模块化方法,人家因为程序不上一百行,根本体会不到重要性。

说完入门,我说一下我从工程考虑,为什么认定编程语言会和自然语言相差至远,同时回答为什么我认为刚才有人提及的Intentional Programing也走不了太远,以修改代码为啥没被推开为例:

修改AST和冯诺依曼机初始的运行时修改代码实际是同构的,lisp的eval也做过类似尝试,他们很容易实现,但是因为对所有有时间有成本限制项目来说,可调式 可预测 可靠性比表达力都更要命,修改指令序列或者求值树带来的行为分支太大,因为既然代码可以改变,那么白盒测试的范围就无法确定,这造成范围不可控而让人不敢尝试,这些造成eval和冯诺依曼机原型没有被广泛接受。

修改代码,还算是理论上说的清楚,而因为实践中调试量过大难以实现,那么直接使用自然语言,其行为范围恐怕现在理论上都覆盖不了,谈何广泛应用(人工智能研究例外)。

结论:计算机语言不是自然语言的延伸,而是数学表达式和工业原则碰撞的结果。从图灵开始的数学研究奠定其方法集合,工业原则和调试成本剔除了某些方法,而接近自然语言的语法,无法通过工程原则检验。以后这些语言就算应用,也必然是作为嵌入语言,在传统的命令式或函数式的宿主语言控制下解决特定问题。

通宝推:唵啊吽,
全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河