怎麼看待 2012 年的「程式設計語言之爭」?

來源:互聯網
上載者:User
關鍵字 question oschina 63456 http net
問題比較水了, 看到有人整理了幾篇部落格的看法, 最近也挺熱鬧:
http://www.oschina.net/question/28_63456
也許是沒有看到所期待的人們站出來說些什麼吧...
回答前憋忘過一下連結裡幾篇部落格, 畢竟有些觀點重複次數多了

回複內容:

不是專門做pl的人說討論這些沒多少意思吧?而且目前就涉及到為數不多的幾種語言而已。與其花些時間討論這些倒不如把《冒號課堂》拿出來科普科普(印象中有句話:沒有最好的語言,只有最合適的語言)。如果想找個有發言權的人,我覺得可以請教王垠。
打個廣告:我收集了一些程式語言理論方面的書和函數式方面的基礎書。不過大部分是僅和我的個人研究方向相關或周圍人的推薦得到,其中不免有很多不合適的地方,歡迎指教。
http://book.douban.com/doulist/1373274/
http://book.douban.com/doulist/1430378/ 在沒有答案的問題上說得天花亂墜是無意義的。
語言之爭的娛樂性高於知識性。
所有關於這個問題有定論的答案都是不靠譜的。
所有看起來靠譜的答案又都不是針對於這個問題本身的。
綜上所述,回答LZ的問題,"怎麼看這次程式設計語言之爭?",答案就是別看,因為怎麼看都是在浪費生命中寶貴的時間。(我竟然浪費了這麼多時間來回答這個問題,而且還看了lz提供的串連地址,收穫就是知道了,@寒冬winter @莊表偉 @左耳朵耗子(陳皓) @Laruence (惠新宸)@老趙,他們都挺有閑工夫的)語言有好壞之分嗎?
沒有,只有適合不適合
適合的,就是好的語言好不好很難比較,都好。
碼農在寫代碼的時候很多時候舒服還是難受的感覺來自於使用的是什麼IDE
一個優秀的IDE可以大大縮短你寫代碼的時間你成功地把戰線拉到了知乎如果希特拉老先生在世,他一定會說日爾曼民族使用的語言才是最好的語言,想用其他的?一律砸電腦。只能說閑人太多。裝13的人太多。題主請多關心些有用的東西。C++肯定是最爛的語言,模板和基於模板的STL是最爛的特性

Objective-C不用GC的話,預想之外的異常發生時資源會失控。用GC的話就好很多,但是這個語言還是過於複雜了。OO裡Smalltalk的範式(如Objective-C/COM)是overkill,Simula(如Java/C#)的範式正好

Python/Ruby真的用過很長時間的話,就知道沒有想象中好。主要是版本之間和平台之間的互相容性不夠好,一段指令碼寫完,不到5年基本就不能在最新的系統上跑了。做指令碼可以用用,做支撐系統不夠伺服器:Ruby
瀏覽器:jQuery
遊戲指令碼:Lua
iOS:Object-C
Windows:C#
底層:C

以上是我個人開發時選用的語言

世界上不存在唯一一個“最好用”的語言,只有在合適的環境合適的時間選擇一個合適的語言,去創造程式員最大的價值這個問題就像問程式員哪個編輯器是最好的編輯器一樣,總是會引起戰爭。

** C ** 顯然是一門偉大的語言,它和UNIX幾乎是共生的,幾乎所有作業系統的開發都是基於C的,OSX的底層同樣是C開發的(因為本質上就是一個UNIX)。C的問題在於它操作的顆粒度過細,缺乏像物件導向語言那種更抽象的機制來實現代碼重用和封裝(不要和我講在C下如何?物件導向,你真要做是可以的,但是代碼量是很大的,如果你真實現了,差不多就是在C下實現了一個python差不多)

** Objc ** 是在C的基礎上增加了一些簡單的機制來實現物件導向的,不過Objc是基於訊息來實現的物件導向,這和C++顯然是不同的。結果就是Objc的物件導向機制比較簡單易懂,蘋果的OSX和IOS除了底層部分,系統的finder之類的都是用Objc的,所以在蘋果的裝置上進行系統開發和GUI開發,Objc是最好選擇,沒有其他。 

如果拋開平台來說,我也認為Objc是一門比較優雅的物件導向語言。

ps:順便說一句,很多人在討論哪個程式設計語言最好的時候,其實無意中考慮的還有庫,蘋果為Objc提供了一個Cocoa庫確實非常棒,大量使用了設計模式,而且確實做的很好(你和MFC比較就知道有多好了)

** C++ ** 這個語言我只能說除非有特殊需要,比如系統對效能要求很高,做圖形映像計算等特定領域,一般還是不要碰比較好。這東西已經發展到掌握它已經變成一種負擔,沒有很好的掌握它而去使用它會變成一種災難的語言。記得我高中接觸C++的時候,它還是一門C+物件導向的一門比較易學的語言,但是後來引入太多的東西,語言的複雜性完全失控。所以不要輕易自虐,物件導向語言裡面C++絕對是醜陋的一門(“簡單就是美“ 的反面)。


** Java ** 本人對Java的學習不夠深入,只能說學過,但是沒有大量實際的程式開發經驗。這門語言顯然成為目前軟體行業中非常重要的標準,物件導向語言中最流行的語言,到書店看看書架上有多少講Java的就知道它對現在的軟體行業有多少重要了。

在我看來Java的成功就是在克服或者說吸收了C++設計的教訓來得到的。首先Java的文法上和早期的C++類似,基本上就是C加上一層物件導向機制,然後提供了包等機制來實現更好的封裝。控制了語言的複雜性,然後提供的基於JVM的跨平台和正趕上的互連網發展浪潮讓它獲得了巨大成功。

此外Java的內建的庫也非常豐富,所以程式員一般會對它有另外的好感。


** Python ** 這門語言是我比較喜歡的。我曾一度認為在物件導向語言中,如果論程式設計語言本身的文法特性,python應該是物件導向語言中文法最優雅的一門。我很大程度上是因為這個喜歡上這門語言的,另外一個原因是因為python的標準安裝包提供了幾乎所有常用的類庫,可以滿足的大多數應用。對於入門者這也算是一種福音。

最近一兩年國內開始流行起來了。各種書也多了。python讓我不爽的幾個特點是:GIL(全域線程鎖)、最近開始基於 @ 文法的那些進階特性的進階用法某種程度上破壞了文法的優雅性,記憶體消耗不少,調試比較麻煩。


** Ruby ** 這個不好意思 沒學過!當年曾經在Ruby和Python兩者直接猶豫過,那個時候市場上還沒有任何關於Python和Ruby的書籍,最後選擇Python而不是Ruby的原因是因為douban的存在,至少知道除了自己外還有人折騰Python,然後聽說Ruby這個是個日本人折騰的,出於當年大學期間正是反日情緒高漲的時候,沒有選擇Ruby,不過看過一份文檔,貌似Ruby對於物件導向做的比較徹底。

沒有怎麼深入折騰過,具體好壞我就不做評價了。

** Lua ** 學過,編過小程式,文法上沒有什麼特殊值得誇耀的,自稱速度是解釋型程式設計語言中最快的,然後解譯器非常小(編譯貌似只要一個C標準庫),然後剩下的實在沒什麼好講的,為遊戲開發外掛程式可能不錯,然後我還知道貌似openwrt還是哪個路由器韌體系統裡面貌似用的Lua來做各個功能的模組。僅此而已,我覺得沒什麼太多驚喜。

**javascript**  瀏覽器上的霸主,基於宿主平台的。這兩年比較火應該和Google的一個項目V8有關,是一個高效能的javascript引擎,chrome瀏覽器的高效能估計就是因為V8受益不少。所以開始有人折騰node.js 這個平台,mongodb裡面貌似也用的javascript作為操作語言。

簡單的講: javascript文法是非常簡單的,容易學,有很好的東西,也有很糟糕的玩意。

很好的東西我認為就是它特殊的物件模型(貌似學習的self語言),它的物件模型、函數模型、複合資料結構是基於統一模型的(至少從外觀上是一樣的,底層實現是否相同不清楚),這個特定的優勢是可以將代碼和對象像基本資料(浮點數,字串)一樣傳遞給一個函數,這個功能是非常強大的(懂行的應該知道這個特性會意味著代碼可以非常靈活而強大,不懂的人估計根本不知道這個特性對編程的意義)。

很糟糕的東西我認為是基於全域對象的全域變數,還有5種表示邏輯假的常量——這是災難。所以我認為它的文法需要被好好整理下。而且個人認為Lua和javascript不大可能成為一種通用程式設計語言。


下面是我目前比較喜歡的程式設計語言

Lisp 自己google去,我不想花費大量時間去解釋這門偉大的語言——無以言表。

Lisp是一個家族,旗下有不同的衍生語言。elisp——emacs就是用這個開發的,CommonLisp 是一個通用的標準,和它相對的是一個scheme。目前發展勢頭比較猛的是clojure。

要解釋Lisp的優勢可能要花上面所有的篇幅,因為實際上這已經不是一門程式設計語言的優勢,而是一種構建程式的方法的優勢,因為它是如此與眾不同,所以解釋起來需要大量的篇幅。

下面粗略說幾點,具體的內容先不展開

優點:

1、幾乎無限的表達能力
2、幾乎無限的抽象能力
3、1+2 代碼重用的無窮潛力

缺點:

要掌握這門語言,就要把你原先學過的其他程式設計語言的所有東西都丟了,不要指望在這門語言裡面去找與其他語言類似的東西。——有點欲練此功,必先自宮 的意思。因為思維方式徹底不同,腦袋不是很靈活的人會很痛苦。
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.