請問大家覺得日後更優秀的編程語言會不會是一種結合所有既有編程語言優點的語言呢?

大一菜雞問的問題,不喜請輕噴啊哈哈哈。


C:內存這麼重要的東西怎麼能讓愚蠢的系統管理呢?必須讓程序員自己管理!

Java:內存這麼重要的東西怎麼能讓愚蠢的程序員管理呢?必須要讓系統自動管理!


想要讓一門編程語言結合所有語言的優點的話,唯一的辦法就是用這門語言生成所有其他語言的代碼。

舊的爭論(內存要不要自動管理,類型要不要靜態檢查,etc)解決以後,新的爭論誕生了:

什麼樣的語言適合作為生成所有其他語言的 lingua franca 呢……


不可能。因為優點是相互衝突的。


只要一門語言可以讓學習她的人自動就寫出低耦合的程序的話,那充滿了缺點也沒關係,每一個組件都可以用別的、合適的語言做,最後用膠水粘起來。


不可能。有些需求是互斥的。比如編譯語言和解釋語言,低級語言和高級語言。對於一個任務是優點,對於另一個任務就可能是缺點。


我說點大一能聽懂的吧……

數組學過了嗎?查找某個位置的元素看一眼下標就行了,然後你把它刪了試試?

雙向鏈表學過了嗎?刪除當前的節點一下就好了,可是這個點你怎麼找出來?

想要找到快刪的也快?可以,用個平衡樹,然後你就有一個查找比數組慢,刪除比雙向鏈錶慢的高效數據結構了。

為什麼?因為這個問題固有的複雜性就是這樣的。


不會的,保時捷不能拉貨,東風重卡不能上賽道,各語言都有自己適用的場合。


有:能夠用javascript寫出來的東西,必將被用javascript寫出來


編譯型的語言,會在代碼編譯期做很多工作,而解釋型的語言則會把很多工作放在代碼執行的時候,這肯定是矛盾的。不可能把這些優點都具備。


編程語言-人工智慧版

語言本身已經具備了人工智慧,根據不同的場景改變自己進行適配


所有既有編程語言的優點其實都有上下文的限制,我們只能說:

某個特定需求的限制下,對某個特定的團隊來說,某個編程語言具有某些優點。

另外,一個編程語言的特點在不同背景的人看來,既有可能是優點,也有可能是缺點,而對程序語言特性的優劣在業界也沒有很好的定量研究,關於這個話題可以參考 Making Software: What Really Works, and Why We Believe It http://shop.oreilly.com/product/9780596808303.do

剛好我的本科畢業論文是關於編程語言的發展的,大概結論如下:

「程序語言的發展過程是一個不斷抽象的過程」,「效率很大程度上決定了語言的流行程
度」

有興趣的話可以一看,個人認為很適合大一新生看,難度不深:

http://dsdshcym.github.io/blog/2017/06/18/programming_languages_comparison/我看程序語言的歷史、現在與將來 - dsdshome


現在同一個等級的語言基本都一樣了,特性是你有我有大家有,性能也相差無幾,搞各種奇奇怪怪的寫法,除了遺留問題,就是大公司不想你轉型而已。


不可能,不完備是可以被證明的,編程語言也一樣。


想的太多,大家目標都不太一樣,怎麼可能合到一塊去

C:我的優點就是有指針能直接使用內存,你們這些號稱秒天秒地的後生們快來繼承啊。

C++:。。。


具備所有語言的優點就是毫無優點

人無完人, 任何事物都是如此, 都是哲學道理


……所有的語言,都在權衡空間和時間上搞死了,統一無能為喵,世界太複雜了。


已經開源的Swift看來是最接近於我心目中的完美語言。

強類型 自動類型推斷:有。

編譯期范型:有。

編譯期null值檢查:有。

基於reference counting的自動內存管理:有。這個比自動垃圾收集好,類似於C++的智能指針,但在編譯器層面支持。

運行時修改類型(mixin):有。

可以當腳本用:有。(雖然仍然需要編譯)

操作符重載:有。

支持閉包和函數式編程:有。

代碼級別兼容C:有。

再加上語法全面、豐富、靈活,可以說已經超越Ruby,寫起來身心舒爽。

----

缺點當然也有。目前應用範圍太窄,主要還是mac/iOS平台的開發。用於後台開發還出於起步階段。

另外幾個版本下來,Swift也有變得越來越複雜的趨勢。希望開源社區不要把它搞成第二個C++。


應該不至於有所有的優點,有得有失,比如python相比較c/c++什麼的來說要簡潔很多,但他的時間會長一些,以後可能會貼近演算法或者更高級的技術,因為一些初級的語言甚至AI都能寫出來。。。。AI會幫助做很多事情,這些語言可能變得更加簡潔更加高級


是各有特點吧,你說的這種不就是c艹嗎,語言複雜度提高了,對工程來說不是件好事啊


未來的語言,應當在形式上非常簡潔,但表達力卻很豐富,這樣就可以讓程序員更快的書寫代碼,進行調試,快速讓軟體發揮作用!

未來的語言應當可以編譯成許多種不同的語言,有相同的語意和作用,速度卻相差不大,就好像現在的編譯技術,可以將C語言編譯成高效的彙編語言,和專家直接用彙編書寫的效果相差不大,這讓使用彙編書寫代碼的人越來越少。

未來的語言應當是可以進化的:語言本身可以自己描述自己,這樣就可以擴展自己的語義,就好像 Lisp 的宏一樣,不需要修改編譯器的核心,直接載入模塊,就可以用簡潔的語義描述新出現的抽象計算模式,這樣在複雜的計算環境中,依舊可以保持簡潔的字面形式和保持書寫的簡潔性。容易理解的代碼,也容易調試;更短的代碼,BUG 就會相對少一些。

未來的語言的編譯器本身也是用這種語言書寫的,也就是說,編譯器本身可以用多種語言實現。這樣就能橫向比較各種語言編譯器的效率。

未來,計算本身成為一種資源。相比程序員的效率,編程的時間成本將遠超計算機的運行成本。

而我,就在做這件事!


推薦閱讀:

當數據量不夠大的時候,有什麼方法可以提高CNN訓練效果?
研究linux kernel 0.11有哪些意義?
中國計算機專業留學生在美國現在的就業情況究竟怎樣?
大學學計算機為什麼必須要學演算法?
僅參考 C99 Standard 可以實現一個完整的 C99 編譯器嗎?

TAG:編程語言 | 編程 | Java | C編程語言 | 計算機科學 |