編程語言是語法比較重要還是編譯器的具體實現比較重要?

經常在網路上看到大家爭論編程語言哪家強,有說C++大法好的,有說Java比較方便通用的,也有說人生苦短,Python是岸的,等等。

由於本人才大一,對這些語言的具體實現不太了解,所以想問問各位大牛評判一種編程語言的好壞,是語法比較重要還是編譯器的具體實現比較重要?

如果是編譯器的具體實現方式比較重要,那麼是否可以用同一套語法系統應用在不同的領域呢?


當然是傳教士重要


語法重要。編譯器/虛擬機太爛可以搞一個新的出來,一下子改進所有現成的積累,從頭開始做也行。你語法不好,最多只能打補丁,推翻重做更是不可能,那就變新語言了。

當然初學者不要想那麼多,挑一門語言學就是了。


記得大學的時候初學C++,心血來潮給Bjarne Stroustrup寫郵件問了類似的問題,他的回答是理解學習編程的時候優先理解「概念」,語法需要熟悉,但不是重點。

編譯器的具體實現是編程學習中最不重要的細節,除非你想學的本身就是編譯器實現,而不是語言本身的應用。


這就是「做什麼」和「怎麼做」哪個重要的問題,其實是相關而非對立的

如果覺得語法設計不重要,那可以設計個容易實現的語言,這樣怎麼做也不重要了,反之亦然


顯然是語法重要。

因為如果語法設計的不好的話,語言會越長越丑的。

你看看C++和Rust就知道了。


不要在剛學編程的時候就想這麼哲理的問題,等多學幾種編程語言積累到一定程度再回來看這個問題,你會有自己的看法。知乎上的大牛說的也未必是對的


會用語言重要,用什麼語言不重要。

能用你所學的語言實現功能,解決問題,這個是程序員的價值。把心思都花在選擇語言上,最後只能裝裝逼。

倚天劍屠龍刀,到廢物手裡也是廢鐵一塊。高手要的是見招拆招,克敵制勝。

程序也是一樣,程序是一種用語法解決問題的東西,之所以需要人寫代碼而不是編譯器自己就能寫代碼,就是因為人的智慧是非常強大的,人用自己的智慧操縱簡單的工具去解決複雜問題。而這些工具對於實際問題來說是非常簡單的,不足以讓你選擇得頭疼。包括庫也是一樣的,不要把心思都花在用stl,boost還是ace。需要的時候,你很可能幾天就要學一門新語言。所以不要糾結,趕緊學會一門語言,用它去實現各種功能,到時候你就知道了。


爭論的大多數人是因為他們既沒學過對方的語言,又實現不了編譯器,所以只能撕逼。

爭論的少數人是因為他們學了對方的語言,但實現不了編譯器,所以多是抱怨。

沒有爭論的人是因為他們正在優化演算法,所以沒時間撕逼。


數據結構重要!


個人認為語法重要,編譯器的實現到了現代基本是一個套路不同花樣罷了,而我覺得最重要的就是編譯器的語法設計,是否與過去的語言類似,是否體現了自己的特性,是否足夠優雅,因此我看一門語言只會以藝術品的角度來看。比如Perl,捂臉~~~~


語言上說 語法重要 語法爛 或者設計錯誤無法修復 就如同發布的介面和功能無法回收

編譯器 虛擬機爛 可以改進 可以優化 可以重構

但是在現實層面 語法和編譯器都不是最重要的 一個語言的立足點是拿下某個市場 和標準庫實現足夠多的功能


語法重要


語法不好,程序員痛苦點 ;編譯器不好,機器多跑點時間。


坐等撕逼大戰


推薦閱讀:

符號表和抽象語法樹是什麼關係?兩者在編譯器設計中是否必需?
程序設計中,堆和棧比較重要。棧存取速度大於堆,而且編譯器可以修改棧大小,這個值可以隨意設置嗎?
GPU編譯器開發怎麼樣,前景如何?
Android 中的 LLVM 主要做什麼?
C++特性問題?

TAG:程序員 | 編程語言 | 編譯器 |