簡單地一句話總結(jié):
1.假如你想幫他盡快找個活兒,賺到錢,推薦PHP。
2.假如你想讓他成為一個高效工程師,推薦 Python。
3.假如你想讓他愛上他的工作,推薦 Ruby。
語言的選擇:
編程語言非常重要,不要認為他們都圖靈等價,用起來都一樣。實際上,好的語言,帶給你的東西是超乎想像的。
下面是一些看法:
1.程序員的時間遠比機器的時間寶貴:選擇開發(fā)效率最高的語言吧,不要過于在乎運行性能,如果你開發(fā)不出東西,那么跑得多快也沒用。
2.優(yōu)雅的抽象勝于簡單的堆砌: 這意味著你的代碼是最簡潔而又充滿設(shè)計感的,面向?qū)ο?,容易的閉包,一切都是表達式等等,而最好的抽象是語言本身能夠分層,既能夠書寫語言的語言,比如 DSL 能力強弱是個指標。
3.才華橫溢的社區(qū)勝過有難度的招聘:這種語言一定要擁有一個活躍且才華橫溢的社區(qū),只要使用她的人,就有一種自豪感和精英意識,在社區(qū)里的每個人都自認為比別人強。即使,你不那么容易招聘到程序員,但我們不都知道,一個有才華的程序員勝過100個平庸之輩嘛?選用這種語言,能保證團隊里一起編碼的每一個人,都是高手。
4.也是最重要的,樂趣勝過一切: 靈活,好玩,永遠有新發(fā)現(xiàn)的魔術(shù)般的語言,只有你想不到的,沒有你做不到的,對一個真正的hacker來說,這是選擇語言唯一的理由,這也是 Perl 為什么能夠長期存活的原因,因為她是 hacker 為 hacker 創(chuàng)作的。
如果能看完這些觀點,相信你能猜出我的選擇了 :) 是的,Ruby是主流語言中我認為最出色的,最高的開發(fā)效率,最優(yōu)雅簡潔的抽象能力,最有才的社區(qū)(Github為中心),和最大的樂趣。
做為一個程序員,是應該去選取不同思路的語言去學習的,而且當然要選擇最有代表性的語言,在編程的世界里,主流的思路其實就兩種,一是結(jié)構(gòu)化編程,一是函數(shù)化編程,面向?qū)ο笾皇墙Y(jié)構(gòu)化編程進化的一個階段而已,其他各種各樣的思路大多數(shù)是這兩個的分支。
社區(qū)的創(chuàng)造力
選擇一門語言要看這個語言社區(qū)的氣質(zhì),以及你想用他做什么東西。
Mac 上可以運行那么多種語言,有很多人用 git。但卻只有 Ruby 的用戶開發(fā)出了 homebrew 這樣牛逼的包管理系統(tǒng),善用了 github 的諸多特性,真正的把每一個用戶都變成了潛在的 repo 貢獻者。我相信這絕對不是巧合。如果同樣的條件擺在面前,你做出了一個全新的東西而別人沒有,說明了你的創(chuàng)造力比別人要高。
作為 Python 的使用者,我覺得 Ruby 語法的優(yōu)劣不太重要。但是從外部看 Ruby 社區(qū)近些年持續(xù)的向外輸出一些從技術(shù)到開發(fā)上的理念,不斷的有大大小小的很酷的項目從 Ruby社區(qū)中誕生的出來。使得我覺得 Ruby 社區(qū)是一個很有創(chuàng)新氣質(zhì)的社區(qū)。因此如果你學編程是想做出一個很酷的東西,那么我強烈建議你直接學習 Ruby。
從 Web 開發(fā)去比較
對于 Web 開發(fā),這三種語言都能勝任,但是還是有不少區(qū)別:
1.Ruby 的 rails 框架確實是稱得上是快速開發(fā)的典范,但是 Ruby 的語法過于靈活,有些時候?qū)ν粋€處理會有很多種不同的寫法。
2.PHP 是老牌的網(wǎng)頁腳本語言,相對其他兩門而言比較成熟。PHP 雖然快速成型,但容易失控,尤其項目稍大的時候。
3.對于 Python 來說,由于自身的簡約設(shè)計,可能應用的方面的更多,幾乎是可以涉及到IT的各個方面,Web 只是它其中一個方面,而且有比較成功的殺手級應用,Youtube 就是用 Python 開發(fā)的,服務器的各種原來用 shell 或者 perl 的腳本,科學計算,游戲的腳本,甚至在桌面客戶端上也能看到 Python 的佳作,如 UliPad,對于初學者來說 Python是個不錯的選擇,在這三者中它的語法是最簡潔和清晰的,適合初學者學習。
入門語言還是應該選擇一個比較嚴謹?shù)?,像Java,Python那樣的語言比較合適,從 PHP 語言不太容易學到 OO 的思想和設(shè)計模式之類的東西,而這些對于一個優(yōu)秀的 PHP 程序員來說也是很必要的。這里不是黑 PHP,每個語言都有自己的優(yōu)點,比如 PHP 入門快,可以增加編程的信心,明白編程那點事后,可以觸類旁通的接觸其他語言。很多編程者就是從 PHP 入門的。
在編程學習里有這么一個現(xiàn)象:直接推薦 Python 的人,基本都沒深入學習過 Ruby。學過 Python 和 Ruby 的人,基本都喜歡 Ruby。
具體使用什么語言,不是唯一的。根據(jù)場景是要分的。一個人至少是需要學習3種語言的:
1.一種是工作語言,比如C++,Java,PHP,這三種語言,是互聯(lián)網(wǎng)的萬能藥,只要會了,工作是永遠都不愁的,大型公司一般都會使用,用來開發(fā)一些大型項目。
2.一種是自己使用的語言,比如 Python,Ruby,當然,我也推薦 Ruby。我也用過 python ,后來因為工作需要,忍痛放棄了 Python,最后,竟然深深喜歡上 Ruby 了。然后就不再回頭了,對于個人使用來說,是要非常注重開發(fā)效能的,一門語言,至少能用10年,如果自己選擇的語言,可以在開發(fā)效能上超越其他語言十分之一,那么在十年內(nèi)這種收益是非常大的。
3.還有一門是新語言使用,不必深入,但是一定要了解,這有助于比較不同語言的不足,才不至于成為井底之蛙。比如 Nodejs, Scale等。
關(guān)于 Ruby
我覺得直接學 Ruby 也是不錯的選擇。
1.本來 rails 框架就自帶了 server,WEBrick??粗?Log 做開發(fā)效率非常高。
2.如果要部署的話,用 passenger 也是絕對方便。
3.Views 層的模板系統(tǒng),ERB 應該比 Python 的各種要來得美,而且更加簡單。之前用過 Django,覺得太重了。
4.Rails 可以讓你不斷的驚訝程序可以這樣寫的啊,我第一次看到有 7.days.ago 的時候驚掉了。
5.Rails強調(diào)一種DSL,一來符合人們的語言習慣、二來我覺得是一種編程語言的顛覆,我們并不是在用某個特定的語言(比如Ruby)來實現(xiàn)一個功能(就如同是用C還是用Java來寫一個編譯器),而是我可以在這些語言的基礎(chǔ)上定義一種新的語言(類似于lex,yacc這樣的詞法語法生成器)??纯磖outes.rb的設(shè)置吧,能有多么驚訝,這是程序么,簡直就是詩。美不只是在于內(nèi)容,同樣在于形式。
關(guān)于 Python
python的優(yōu)勢很多,比如:
1.語法簡潔,無需編譯。Python 語法簡潔高效,一句話“人生苦短,我用 Python”啥都說明了,高效是 Python 的特點。
2.強大的數(shù)據(jù)結(jié)構(gòu)。默認安裝的Python開發(fā)環(huán)境已經(jīng)附帶了很多高級數(shù)據(jù)類型,如列表、元組、字典、集合、隊列等,無需進一步編程就可以使用這些數(shù)據(jù)類型的操作。使用這些數(shù)據(jù)類型使得實現(xiàn)抽象的數(shù)學概念非常簡單。
3.強制縮進,讓代碼自然顯得有條理。
4.插件齊全,可以完成絕大部分的程序設(shè)計任務。
當然還很多,具體還可以去看看 《Python的設(shè)計哲學》這個 chapter。
小結(jié)
沒有最好的語言,只有最合適的語言。
沒有糟糕的語言,只有糟糕的程序員。
沒有一種語言是萬能的,只會一種語言是萬萬不能的。
用什么語言不重要,最重要的是效率:開發(fā)效率和執(zhí)行效率。PHP 語法很傻,一點都不炫,但凡是學過C、JS、AS等等語言的,很容易上手,因為語法上有很多重合的地方。很多人看不起 PHP,說 PHP 太簡單的人,往往是因為對 PHP 本身不夠深入了解,其實 PHP 里面的東西一般人用到的很少,5.3 以上的特性也慢慢讓這種語言生動起來,你越是深入,就越能發(fā)現(xiàn)它的強大和優(yōu)勢。
這里僅僅列出 PHP,Python 與 Ruby 的一些情況,讓讀者更好地挑選學習的語言。
語言沒優(yōu)劣之分,Just follow your passion.
更多信息請查看IT技術(shù)專欄