這個問題是用來暢想未來的,大家可以不考慮太多現實因素,例如商業政策,政府政策之類的
首先,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不成變成阿姆斯壯之迴旋阿姆斯特朗錘子咧。◕‿◕。