这个问题是用来畅想未来的,大家可以不考虑太多现实因素,比如商业政策,政府政策之类的
首先,ES6,java8,php7的语法标准有一些相互交叉的地方。而基本语法三者也非常相似。
而从应用来看,三种语言都是相当工程化的,都被用来构建十分复杂的项目。
js虽然也会被用来在浏览器端运行,但是最近组件化框架让前端开发变得和桌面应用相似,可以说,假如浏览器能运行java或者php并允许操作dom,react可以用这两种语言实现一遍。
后台方面,三种语言打仗不是一天两天了,各个功能齐全,开发敏捷,生态繁荣。
因此,我认为语言标准统一是有可能的。而若是统一标准,可以想象,程序员的学习成本会大大降低,可以更加关注前端,后端开发的技术,编程语言的思想和通用的语法特性,而不用关注各种语法细节,环境依赖和第三方库,毕竟第三方库也会变得通用。
不过,假如真的推出标准,还有几个麻烦的问题:
编译还是解释?
强类型还是弱类型?
事件驱动还是多线程?
如何统一不同的包管理?
如何在浏览器端运行?
如何权衡垃圾回收?
大家怎么看,我很好奇!
回复内容:
确实,许多现代语言的语法越来越相似。比如 PHP 对语法的改进使其越来越像 JavaScript(如 array(...) 构造简写为 [...]),又如各种语言引入的 async/await 几乎长得一模一样,再如Facebook最近开发的Reason就是将OCaml的语法改造成跟JS非常相似。所以看起来语法统一理论上并不是不可能。
然而,语法和所有其他部分一样,都存在保持兼容性的问题。破坏兼容性的反例,如python3。一个语言本身的升级况且如此,更不要说不同语言了。再随便举一个小例子,要不要可选分号,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 中:
<code class="language-text">$a1 = [1, 2];
$a2 = [0 => 1, 1 => 2];
$a3 = [1 => 2, 0 => 1];
</code>
少年,别多想了,就算其他几个语言愿意统一,你觉得J8老板Larry Ellison愿意吗?
不会有统一的规范
汉语拼音 和 英语 都用26个字母表现,但是内容天差地别
没有问题。php有JPHP,js有narshor,python有Jython,java不用说,本身就跑在jvm上。
所以题主说的“大一统”没有必要在语言层面实现,让他们能互相调用就够了。
不变的只有 C 和 Go.
这就要看语言的发明者坚不坚持自己的品味了.
即使有这样的机会,也只会诞生统一了 php, js, java 语言规范的新语言吧。。。
就因为这种想法的人还不少,很多人都想搞个一统天下,结果导致语言越来越多。统不统的看支持力度,不是语言特性。
畅想未来不如自己把它做出来。
会的,机器码应该是统一的吧!别打我。。。
那我的大php不成变成阿姆斯特朗之回旋阿姆斯特朗锤子咧。◕‿◕。
Kenyataan:Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn