2010年10月13日 (最後更新: 2010年10月14日)
何時使用何種語言以及原因
評分: 3.3/5 (149 票)
過去幾個月來,這裡一直在爭論什麼語言是“最好的”,或者更恰當地說,“最差的”,這反過來又定義了另一種語言的優越性。
我想澄清一件事。沒有最好的語言。沒有最好的範例。沒有最好的演算法、方法、最佳化、技術,任何東西都沒有最好的。所有優秀的程式設計師都知道這一點,所有真正的計算機科學家都知道,語言只是計算科學中的一種工具。如果有人制造了一個更好的螺絲刀,為什麼不用它呢?也許這個螺絲刀只是在更快地完成工作方面更好,而不是更有效地完成工作。或者它在這兩方面都很棒,但螺絲因此沒有牢固地擰在牆上。這與所有計算機語言的差異相似。
所以一位程式設計師可能會問“我應該在什麼時候使用“XYZ”?” 當得到回答後,他們可能會問“為什麼?”
我在這裡回答這些問題。
我應該在什麼時候使用匯編語言:當您需要對硬體進行最低級別的訪問時,您應該使用匯編語言。或者當您需要手動最佳化演算法等內容時。這並不是說您不能使用匯編語言來開發桌面應用程式,但這完全不切實際。一般來說,當您需要比快速編寫和可讀的程式碼更多的原始控制時,請使用匯編語言。
我應該在什麼時候使用 C/C++:首先,c 和 c++ 都是較低階的語言,雖然遠不如組合語言那麼低階,但仍然很低階。現在它們也是非垃圾回收的語言,所以您必須處理除錯記憶體洩漏之類的問題,但這種假定的缺陷是這些語言的最大優勢之一。雖然您可能會花費更多的時間編寫和修復程式碼,而不是最佳化程式碼,但您有能力比垃圾回收的程式碼更好地最佳化它。因此,任何告訴你“為了你的核心/遊戲引擎/通用時間和資源關鍵型應用程式使用 java/C#/Scala/etc”,因為他們認為你會更快地完成它,從而賺更多的錢的人,他們對計算機科學和經濟學一無所知。一個月內構建 x 個劣質玩具,你只會剩下一堆垃圾。一個月內構建 1 個很棒的玩具,每個人都會想要你的玩具...拜託,誰想玩一堆垃圾?
現在您可能會想,如果真是這樣,那我為什麼要使用 java/c#/scala/F#/etc 等語言呢?事實是,有時您確實希望實現速度比效率更高,在某些情況下,其中一些語言在這兩方面都做得更好。
所以我應該在什麼時候使用 java:如果這不是一篇公正的文章,我會說永遠不要,然後就此打住。但這篇文章應該是中立的,所以 Java 非常適合基於伺服器的應用程式,以及基於客戶端的 Web 應用程式。它速度快,與資料庫配合良好,同時也有一些開銷。我對 java 最大的問題是它不是一種很好的語言,事實上它很糟糕。但這就是人們試圖將一種旨在教學生學習計算機科學和 OOP 的語言變成行業標準的結果。它從未打算成為今天的樣子。
c# 怎麼樣? 只要你想使用 java,就使用 C#。 我認為 C# 就像 java...只是它能用。
像 F# 這樣的函式式正規化語言怎麼樣? 當您需要更高的平臺獨立性時,您會想要使用函式式語言。 函式式語言使您更容易處理您的演算法、方法、函式等,而無需考慮 CPU 執行緒。 它非常適合多平臺和多執行緒。 這也是 scala 在這些方面表現出色的原因。
所以考慮到所有因素,您在程式設計時需要記住一件事。 這不是關於找到最好的工具並像教條一樣堅持它。 這實際上是關於找到學習如何使用這些工具的最佳技術,以便在構建軟體時擁有一個完整的工具箱。
編輯:我上課遲到了,忘了新增“稍後會新增更多”並刪除以上部分。