这个嘛……证明了编程要从娃娃……哦不,hello world抓起的重要性。
1、哪怕现实中的程序员编程,也是一个人、一个问题只用同一种语言;极少有在同一个项目组使用多种不同语言的。
2、人类语言都可以找到一个统一的模型、一举支持全球数百种语言的双向互译;编程语言格式规范得多——只要你真解决了任意一种语言的AI编程问题,现在有无数种现成的工具可以在不同语言间自动翻译。
典型的,各种语言的编译器其实就是自动把该语言代码翻译到汇编语言/机器码。
更有甚者,各种模拟器——包括VMware等虚拟机软件,也包括街机模拟器、浏览器沙盒等等,实质上做的就是同构/异构硬件平台的机器码之间的相互翻译工作。
结论:学着敲个hello world吧。
题主的想法是好的,但是核心的基本假设「至少在语法书写上达到一致,就能够极大的降低入门门槛」是不成立的。
编程语言的关键问题是语义,语法可以说只是编程的界面(的一部分)。所以语法要适应语义(虽然在设计语言时也会有语法反过来影响语义的情形,但总体上说,主次是不能颠倒的)。所以即使语法书写上达到一致,只要语义不一致,也没有什么大用,而且会有反作用——相同的语法,语义却不同,很容易让跨语言编程的程序员搞糊涂并产生bug。
我6年前写过一个老答案:会不会出现统一 PHP, Java, Javascript 的语言规范?
该问题讨论的是语法很相似,语义也比较接近的 PHP、Java 和 JS。
举个小例子,还是 PHP 和 JS。两者数组都可以用 [1, 2, 3] 构造,然后用 a[0] 这样的下标语法访问。且 PHP 和 JS 的数组也都可以用字符串作为 key ,甚至字符串如果是数字,和数字索引是一样的。看上去一模一样啊。但是实际上 PHP 和 JS 的数组有很大的不同。
1. JS 和 PHP 都对索引进行隐式类型转换。JS 的索引都是归化为字符串的,所以 a[10] 和 a[10.1] 是不同的。但是 PHP 的索引是首先归化为整数的,所以 a[10] 和 a[10.1] 是相同的。
2. PHP 中:
$a1 = [1, 2];
$a2 = [0 => 1, 1 => 2];
$a3 = [1 => 2, 0 => 1];
a1和a2是相等的,但是和a3不等,行为(如迭代)也不同。实际上a3不是一个普通数组,而是一个关联数组。
在JS中数组虽然由于下一条都是不同对象,但不管用什么方式创建索引0是1索引1是2的数组(或者对象),其行为(如迭代)是一致的。
3. PHP 的数组是值,而 JS 的数组是对象引用。这在语义(如相等性)上天差地别,具体就不展开了。
在几乎完全一样的语法背后,也可以拥有如此巨大的差异,所以单单统一语法并没有什么卵用。
很相近的语言如此。如果是非常不一样的编程语言(比如不同的编程范式,不同领域的DSL等),那就连统一的可行性也是不存在的。
然后说一下「能够简化未来AI编程的难度」的想法,这也是不成立的。因为对于AI来说,语法可能是最不重要的部分,或者说,用传统的parser和code generator就可以解决的问题,根本用不上AI。
最后,我认为题主的问题虽然显然不成立,但其动机「降低入门门槛」还是可以思考的。这一目标没法通过统一语法达成,但也许可以通过其他方式达成。比如以非专业程序员为目标设计的编程方式(不是单单的编程语言),最典型的是古老的 Smalltalk(诞生于半个世纪之前),其语法规则很简单,编程范式很容易让普通人认知(对象互发消息),一体化的编程环境,操纵程序和操纵界面的一致性,程序就是虚拟世界,编程就是改造虚拟世界…… 从很多方面看,它比现在许多所谓的面向入门的编程语言(如Scratch这样的图形化语言)要自然得多。我个人非常期待未来能出现继承 Smalltalk 精神,辅以图形化、AI的,适合更广泛人群的一体化编程语言和编程环境。
《标准是如何泛滥的》
图1:现状,有 14 种相互矛盾的、冲突的标准。
图2:14种? 太荒谬了!我们需要制定一个能涵盖每种需求的统一的标准。
图3:很快,情况变成了:我们拥有了 15 种相互矛盾的、冲突的标准。
原文在这里:
《创建一种统一的编程语言,允许程序员学习一次,然后能够为 Apple 设备、Android、Microsoft 和 Linux 系统创建本地应用程序,最大的绊脚石是什么?如果有的话,它什么时候会存在?》
https://www.quora.com/What-is-the-biggest-stumbling-block-to-creating-a-unified-programming-language-that-will-allow-a-programmer-to-learn-once-and-then-be-able-to-create-native-applications-for-Apple-devices-Android-Microsoft-and-Linux-systems-When-will-it-exist-if-ever/answer/R-Drew-Davis
这个问题有很复杂的回答,但估计大部分人看不懂也不想看。
一定要回答下,也很简单:
因此正常人都知道怎么选。
是什么让你产生了“AI编程的难度在于语法”的错觉?