PHP是最好的語(yǔ)言嗎?
最近被朋友們拉入了幾個(gè)技術(shù)社群,有微信群,也有QQ群,尤其對(duì)一些年輕的朋友,大家樂(lè)此不疲的問(wèn)題居然是 PHP 是最好的語(yǔ)言么?
我們推崇“敢于質(zhì)疑且獨(dú)立思考的自由精神“,所以對(duì)“PHP 是最好的語(yǔ)言么?“這一問(wèn)題,也是從疑問(wèn)開(kāi)始的。
什么是最好?
《現(xiàn)代漢語(yǔ)詞典(第5版)》第1823頁(yè)對(duì)“最好“一詞給出的解釋如下:
最:(1)程度副詞,表示某種屬性超過(guò)所有同類(lèi)的人或事物 (2)指(在同類(lèi)事物中)居首位的,沒(méi)有能比得上的。
最好:最為適當(dāng)。
與時(shí)俱進(jìn)一下,再看看百度百科的解釋?zhuān)?/p>
最好,拼音zuì hǎo,意思是.表示最理想的選擇;最大的希望。
最好是否具有相對(duì)性呢? 有這樣一句使用了“最好”一詞的名言:
怯懦是你最大的敵人,勇敢則是你最好的朋友。——弗蘭克
最好是指語(yǔ)言的自身么?是指圖靈完備性么?是語(yǔ)言自省等特性么?
最好相對(duì)于的主體是你自己,還是某個(gè)群體,抑或全部人群?
當(dāng)我們討論“PHP 是最好的語(yǔ)言“時(shí)候,我們是否明確了“最好“的適用范圍,爭(zhēng)議往往就是從邊界的不明確處產(chǎn)生的。默認(rèn)的,很多朋友可能是基于“PHP對(duì)所有程序員,是最好的語(yǔ)言“這一觀點(diǎn)的。
科學(xué)在于證偽,如果PHP是最好的語(yǔ)言,那么會(huì)引出什么樣的結(jié)論呢?
如果…… 那么…..
反證法經(jīng)常會(huì)在論述中使用,這里也可以粗淺的嘗試一下:
如果 PHP 最好的話(huà), 能不能 用 PHP 寫(xiě)個(gè) 操作系統(tǒng)呢?
遺憾,原諒我的孤陋寡聞,操作系統(tǒng)一般都是C寫(xiě)的,甚至連C++都沒(méi)有使用。那么 C 是最好的么?
如果C 是最好的語(yǔ)言,那么用C寫(xiě)一個(gè)類(lèi)似Hadoop 的分布式計(jì)算環(huán)境如何呢?可能會(huì)吐血, hadoop 是用 java 寫(xiě)的。那么Java 是最好的語(yǔ)言么?
如果Java 是最好的語(yǔ)言,那么寫(xiě)個(gè)網(wǎng)頁(yè)爬蟲(chóng)會(huì)是怎樣的情形呢?
一個(gè)頁(yè)面請(qǐng)求和解析至少要 50行以上的代碼么, python 可能不超過(guò)10行代碼? 那么 Python 是最好的語(yǔ)言么?
……
node.js 可以支持最小的全棧, 為什么不是最好的?
Spark 是用 scala 寫(xiě)的呀?
文本解析和正則表達(dá)式誰(shuí)能比得過(guò) Perl呢?
shell 編程 直接系統(tǒng)調(diào)用 性能很高呀?
不用Objective-C 又如何在 iOS上寫(xiě)出高性能的程序呢?
……
各種吐槽
喜歡C的人必須期待內(nèi)存泄露這種事就不會(huì)找上門(mén),最糟糕的地方在它的內(nèi)存管理地獄。C 語(yǔ)言程序就像一群拿著刀的人在剛剛打過(guò)蠟的地板上快速的跳舞。 兩位大神是這樣描述C和C++的。
C 很容易讓你朝自己的腳開(kāi)槍。在 C++ 中,這么做變的困難了,但是你要不注意就會(huì)崩掉自己的整條腿。
– Bjarne Stroustrup,C++ 發(fā)明者
C++ 是一門(mén)恐怖的語(yǔ)言。即使選擇 C 沒(méi)有任何優(yōu)勢(shì),只是為了逃避 C++,那這個(gè)理由也足夠了。
– Linus Torvalds,Linux 發(fā)明者
再看看其他神人的各種吐槽,喜歡Java的人肯定上過(guò)指法課,不斷地重復(fù)又重復(fù)敲打鍵盤(pán)。內(nèi)部類(lèi)和匿名類(lèi)導(dǎo)致令人困惑的代碼。如果 Java 真的有垃圾收集的話(huà),大部分程序在剛開(kāi)始執(zhí)行的時(shí)候就會(huì)把他們自己刪了。
Perl 是唯一一門(mén)在 RSA 加密前后看起來(lái)一樣的語(yǔ)言, 呵呵…..
PHP 是由不稱(chēng)職的業(yè)余選手發(fā)明和操縱的,而 Perl 是偉大而陰險(xiǎn)的,由一幫高水平的變態(tài)專(zhuān)業(yè)人士操縱, 也是沒(méi)色(sei)了。
Python不但跟編譯語(yǔ)言相比慢,就是跟其他腳本語(yǔ)言相比也顯得慢吧!
JavaScript沒(méi)有連接器,所有的代碼都共享一個(gè)命名空間,那么多個(gè)不同的庫(kù)能夠在一起運(yùn)行,真是一件萬(wàn)幸的事!
Erlang是一門(mén)美麗的函數(shù)式語(yǔ)言,可以寫(xiě)出很精致程序,以一種精確的方式進(jìn)行通信,為什么開(kāi)發(fā)一個(gè)簡(jiǎn)單的WEB服務(wù)需要費(fèi)這么大的工夫?
Scala 那么的優(yōu)秀,但如果讓一個(gè)新人來(lái)熟悉寫(xiě)好的老代碼,是不是會(huì)有懵圈的感覺(jué)呢?
……
最好的語(yǔ)言在哪里?為什么缺陷會(huì)被如此的放大呢?
廣泛使用
作為最好的編程語(yǔ)言,是否應(yīng)該是被大眾廣泛接受并使用的呢?可以求助一下編程語(yǔ)言的使用排行榜。
這是TIOBE 在2016年12月的排行榜。Top 10 編程語(yǔ)言 TIOBE 指數(shù)走勢(shì)(2002-2016)如下:
對(duì),最好的語(yǔ)言也許是少數(shù)人喜歡的語(yǔ)言,也許像 Bjarne Stroustrup 所說(shuō)的那樣:
世界上只有兩種編程語(yǔ)言:整天被人噴的語(yǔ)言,沒(méi)有人用的語(yǔ)言。
編程語(yǔ)言的錢(qián)途
編程語(yǔ)言也是程序猿/媛吃飯的家伙,最好的語(yǔ)言是否是最能掙錢(qián)的語(yǔ)言呢?
2016年 Packet 網(wǎng)站對(duì)使用不同編程語(yǔ)言的程序猿/媛薪資狀況的調(diào)查結(jié)果如下:
有點(diǎn)奇怪的是,Bash和Perl 高居榜首。這是國(guó)外的調(diào)查結(jié)果,可能和國(guó)內(nèi)差距較大,有什么參考意義呢?那么看一下,該網(wǎng)站的2016年各大主流編程語(yǔ)言平均薪資排行榜:
1:C語(yǔ)言 平均薪資 15000+ 崗位需求1% 系統(tǒng)、底層、嵌入式、驅(qū)動(dòng)級(jí)開(kāi)發(fā)。
2:C++ 平均薪資13000+ 崗位需求10% 大型軟件、游戲、服務(wù)器級(jí)開(kāi)發(fā)。
3:OC+swift 平均薪資12000+ 崗位需求15% IOS、Mac OS平臺(tái)開(kāi)發(fā)。備注:從業(yè)人員較多,競(jìng)爭(zhēng)力較大
4:javaME 平均薪資10000+ 崗位需求20% android 、移動(dòng)設(shè)備嵌入式開(kāi)發(fā)。
5:javaEE 平均薪資9000+ 崗位需求50% web、軟件、企業(yè)級(jí)開(kāi)發(fā)。備注:長(zhǎng)期霸占編程語(yǔ)言第一名,崗位需求比所有語(yǔ)言崗位加起來(lái)都多。
6:C# 平均薪資8000+ 崗位需求10% windows平臺(tái)、游戲、軟件開(kāi)發(fā)。備注:人才最少,競(jìng)爭(zhēng)力最小。
7:python 平均薪資7000+ 崗位需求5% web、軟件、后臺(tái)開(kāi)發(fā)。備注:國(guó)外已成熱門(mén)、國(guó)內(nèi)尚欠火候,人才急缺。
8:PHP 平均薪6000+ 崗位需求20% web、后臺(tái)級(jí)開(kāi)發(fā)。
最好的語(yǔ)言能否帶來(lái)最好的錢(qián)途呢?
不是小結(jié)的小結(jié)
如上所述和所問(wèn), 最好的編程語(yǔ)言可能是個(gè)偽命題。 老曹覺(jué)得,沒(méi)有最好的編程語(yǔ)言, 只有最適合某一場(chǎng)景的編程語(yǔ)言,只有相對(duì)適合自己的編程語(yǔ)言?;蛟S,自己最適合且真正熱愛(ài)的語(yǔ)言才是最好的語(yǔ)言。
如何心中存在著對(duì)編程語(yǔ)言的鄙視鏈, 說(shuō)明還不了解對(duì)方,或者說(shuō)明我們遇到的坑還是太少了,遇到的事和問(wèn)題同樣太少了。
【本文來(lái)自51CTO專(zhuān)欄作者老曹的原創(chuàng)文章,作者微信公眾號(hào):喔家ArchiSelf,id:wrieless-com】