PHP 是一門高級語言嗎?為什麼總是被其他語言黑?

ps。 我知道高級語言不一定「高端」。但問題是,既然屬於高級語言,既然圖靈完備,為什麼會「低端」。哪裡招惹其他語言了?


N卡和A卡其實都很牛逼,但是你看N卡黨和A卡黨還不是互相黑來黑去的?

iOS 和 Android 其實都很牛逼,但是你看 iOS 黨和 Android 黨還不是互相黑來黑去的?

同理,來來來,題主你告訴我有哪個編程語言是不被黑的?

編程語言大體可分兩種:1) 被人黑的 2) 沒人用的

——奧斯托洛夫斯基

樓上說得對

——卡巴斯基


呵呵,哪個語言不被黑?就算再優秀,那也不可能被所有人喜歡。


對於 PHP 有一篇完整的吐槽 PHP: a fractal of bad design / fuzzy notepad,沒有什麼要補充的了。


題主弄明白了什麼是高級語言什麼是低級語言了嗎?

「高級」代表抽象層次高,遠離實際的硬體層,而不是說它比其它語言「高級」。

保時捷比較「高級」,但在編程裡邊「高級」完全不是這個意思。


哈哈哈,首先我們要堅持PHP是世界上最好的語言~

話說PHP low確實是入手簡單,寫起來也快,內置函數多,基本都大多數人用。

沒啥設計模式,隨便怎麼寫都能run,運行成本低(是個空間就能跑)

PHP是高級語言,同時也是被黑次數可以與java抗衡的語言。

另外,PHP寫得快是因為不會有下面這種類名 。。。。。

臨走前黑下java。喏,你看

javax.swing.plaf.nimbus.InternalFrameTitlePaneMaximizeButtonWindowNotFocusedState Class Reference

鏈接:JavaDevelopmentKit(JDK)1.7.0_03: javax.swing.plaf.nimbus.InternalFrameTitlePaneMaximizeButtonWindowNotFocusedState Class Reference


題主本著先問是不是後問為什麼的原則,問出了這樣一個令人誤會的問題。

不敢去改問題,不過根據我的判斷,樓主所指的高級,應該是和html這種語言相對應的。



這個話題經久不衰

XXX語言才是真正的程序員。

XXX編輯器才是程序員的最終歸宿。

XXX語言在未來是一種趨勢,必將幹掉XXX。

你看他們討論出來什麼了嗎?

我好想把這些XXX補上,為了避免大規模戰爭,還是算了吧。


維基百科是這樣解釋低級語言的:

低級語言(英語:Low-level programming language),在計算機科學之中,是電腦編程語言的一類。該類編程語言之所以被稱為低級,是因為該類語言在運作時無法進行進一步的抽象化,而與中央處理器的機器語言或指令直接對應,因此一般亦被指是原始的編程語言。即使是與高級語言相對,但這並非指低級語言較高級語言為差,相反,低級語言由於無需大量的編譯動作即可被中央處理器所運行,因此以該類編程語言編寫的源代碼編譯和運作效率一般較高級語言的源代碼為高。

低級與高級其實只是相對的概念,Java對比C語言可以被認為是一種相對高級的編程語言。

有一篇博文是這樣解釋高級語言和低級語言的區別:

一般來講高級語言和低級語言有一下特點:

高級語言:實現效率高,執行效率低,對硬體的可控性弱,目標代碼大,可維護性好,可移植性好

低級語言:實現效率低,執行效率高,對硬體的可控性強,目標代碼小,可維護性差,可移植性差

我們都知道CPU運行的是二進位指令,所有的語言編寫的程序最終都要翻譯成二進位代碼,但是為什麼實現會有以上眾多差異呢?下面以C語言為高級語言代表,彙編語言為低級語言代表來解釋一下。

越低級的語言,形式上越接近機器指令,彙編語言就是與機器指令一一對應的。而越高級的語言,一條語句對應的指令數越多,其中原因就是高級語言對底層操作進行了抽象和封裝,使編寫程序的過程更符合人類的思維習慣,並且極大了簡化了人力勞動。也就是說你用高級語言寫一句,會被轉換成許多底層操作,大部分的工作交給了負責轉換的機器(即編譯器),從而人力得到了解放。因為機器就是用來為人類提供便利的,所以說高級語言的出現是計算機發展的必然結果。

下面重點解釋為何低級語言的執行效率更高:

1.低級語言可以通過控制硬體訪問來優化效率

越低級的語言月接近底層,即控制硬體訪問的能力越強,對硬體資源的利用效率越高。比如說彙編語言能夠訪問寄存器,而C語言就做不到。通過對寄存器等硬體的訪問,我們可以將程序的運行效率優化到最大,而像C這樣的高級語言用的最多的是堆棧這樣的內存結構,訪問速度自然不如寄存器了。

2.高級語言程序存在工作冗餘,有效率損失。

各種語言需要通過編譯器翻譯成機器碼,不管編譯多麼智能和強大,都是會產生冗餘。這裡的冗餘不是指指令的多少,而是有沒有做沒有必要的事情。 產生冗餘的多少關鍵要看語言跟機器指令之間的耦合度。耦合度越大,編譯器翻譯過程越簡單,產生的冗餘越少。對應彙編來書,由於與機器碼一一對應,所以翻譯後基本沒有冗餘。而高級語言由於進行了抽象和封裝,所以與機器指令間的耦合度較低,因此整個翻譯過程較複雜,因此在高級語言在具體化的過程中不可避免會產生較多的冗餘。據說C語言有10%的效率損失。

3.效率高不高,還取決於程序員水平。

一個差的程序員用彙編寫程序,可能存在很多沒有用的操作,而程序高手用c語言寫,可以將程序優化到最大。最終的結果可能是彙編的程序跑不過C語言程序。

總之,完成一項工作的工作量是不變的,機器做的 多了,人就做的就少了,同時人對程序的很多細節的控制性也減弱了。各種語言都是在這個平衡點附近糾結。從C/C++的注重機器運算效率的優化,到C#/JAVA注重開發效率的優化。人操作起來更加方便了,更高效了,代價就是,機器要處理的東西更多,運算效率被進一步壓縮。但是這個壓縮在許可範圍內,那麼這也是一種進步。

我是這樣認為的:

  • 低級語言可以直接操控計算機硬體,而達到一些功能,(可以直接操作硬體CPU 和 內存)如果程序員的水平夠好的話,直接可以寫出高性能的程序,但是由於,每次開發程序都需要對程序的重新編程,代碼量比較巨大,於是出現了封裝。
  • 封裝的優點是,復用率高,可以質性強,但是缺點也有就是封裝後的東西為了適應計算機的各種環境,和復用,不得不犧牲掉內存,和CPU,不夠簡潔。但是利大於弊,隨著科技的發展,計算機硬體不在這麼值錢。
  • 高級語言也就是低級語言的封裝,封裝成一系列的函數,便於程序員學習,和開發,不必要再學習一些以後用不到的東西。由於低級語言可以直接操控硬體,提高程序的性能,和大部分高級語言的底層語言,也就不會被淘汰。


在某些人看來,語言越低級則越高端,語言越高級則越低端

所以機器碼最高端了

當然,也不是一點道理沒有,語言越高級,一般情況下(我是說一般情況下),入門門檻越低,使用的人就越多,低端開發者也就越多

但是,牛人使用什麼語言都差不到哪裡去,慫人使用什麼語言都強不到哪裡去,不是嗎?


編程語言俗稱「計算機語言」,種類非常的多,總的來說可以分成機器語言、彙編語言、高級語言三大類。C、java、PHP都屬於高級語言。

高級不等於高端。


一群傻逼沒事幹。


這就是黑客文化啊。


高級不高級 要看是從誰的角度看 。。。PHP能傳播這麼廣 本身就是「高級」的語言


世界上有兩類語言,一類是天天被罵的,一類是沒人用的。


舉個例子,就nba來說,科比詹姆斯這些人有多少黑子,但是有多少名不見經傳的球員有很多黑子的?因為大家沒工夫注意這些人,他們的黑點即使暴露了也沒人關心。能引發爭議的東西都牛逼。


推薦閱讀:

電腦上如何輸入 Emoji 表情?
在U3D用water4里的水模型做海面,怎樣做能看起來無限大,而且不卡?
如果說程序設計是對現實生活的抽象,那麼如何培養這種能力?
如何高效深入的閱讀Redis的源碼?
主板上為什麼同時存在北橋晶元和南橋晶元?

TAG:Web開發 | PHP | 編程 | 計算機 |