歡迎您光臨本站 註冊首頁
小知識  >  php >

PHP的弱類型爭議

admin @ 2015-09-17 reply:0
←手機掃碼閱讀


PHP被爭議的特點很多,但是隨著語言版本的發布和完善,功能和特性方面的批評開始變少了。但是,PHP的「弱類型」特性,卻明顯受到更多的爭議,從HHVM通過Hack的方式直接「去掉」了「弱類型」特性可以看出,HHVM並不喜歡「弱類型」特性。然而,在我們很多PHP程序員的眼中,這卻是PHP的重要優點之一。PHP里的變數被設計得隨性和飄逸,海納百川,一切皆可包容,不是讓語言顯得更為簡單嗎?

實際上,有些人認為它是個嚴重的問題,對於「弱類型」的批評觀點大致如下:

  • 在「嚴謹」的語言中,通常是預先定義好一個變數的類型,自始至終,變數的類型是固定的,使用範圍也是固定。而PHP的變數,通常我們只能看見它名字,類型大部分都不可以預先定義,並且還可以隨意改變。(內存分配不好管理)
  • 為了兼容弱類型特性,PHP需要實現大量兼容代碼,包括類型判斷、類型轉換、存儲方式等,增加了語言內部的複雜度。(執行效率低下)
  • 變數的類型是不可控的,在執行過程中存在大量的「隱性類型轉換」,容易產生不可預知的結果。(這裡的確需要強調,PHP的類型轉換是個必須掌握的點,各種類型的互相轉換的可能會產生很多問題,尤其是初學PHP的同學哈)


他們認為,這些都不符合「所見即所得」的簡單性,而語法嚴謹的語言更高效率,也更容易「理解」。

受到類似批評的還有Javascript等語言,因為它在這個問題上的表現是一樣的。但是,一門語言最終被大規模使用,必然有它們的道理。PHP成為Web服務開發的首選腳本語言,Javascript則直接稱霸Web前端領域,能走到這一步都不可能是偶然因素,開發者們用腳投票選擇了它們。編程語言是人類和機器溝通的橋樑,終極追求是實現「人人皆可編程」的宏偉目標。

縱觀語言發展歷史,從0和1的機器碼開始,到彙編語言,然後到C語言,再到動態腳本語言PHP。執行效率呈指數下降,但是,學習門檻也呈指數降低。PHP語言不僅屏蔽了C的內存管理和指針的複雜性,而且更進一步屏蔽了變數類型的複雜性。提升了項目開發的效率,降低了學習的門檻,但同時犧牲了一定的執行性能。然後,HHVM的Hack給我們一種「回歸原始」的感覺,重新引入了變數的複雜性。當然,不同的語言解決不同場景下的問題,並不能夠一概而論。

[admin via ] PHP的弱類型爭議已經有1347次圍觀

http://coctec.com/room/show-71.html