JavaScript 和 PHP 兩種程式設計語言哪個設計得更好(差)一點?

來源:互聯網
上載者:User
以前斷斷續續學過很長時間的javascript,已經模糊了當年的痛苦;如今在學php(看網頁+實踐,沒看書),感覺php特別難用。也想起javascript和php都是被評價為設計糟糕的語言,因此想起了這個問題。

回複內容:

首先聲明:我曾經寫過兩年PHP,對文法還算熟悉,對核心API 始終半生不熟(因為太雜亂難記),我欣賞PHP 的簡單粗暴流行,喜歡PHP 的各種架構,但對PHP 的文法始終愛不起來。

=============

個人更喜歡 js 的文法和核心 API,變數取名不需要花錢,函數第一型,API 好記,最重要的是有規範有遊戲規則。

當然 js 也有槽點,callback hell 糟糕了點,iterator 的引入遲了點,class文法不夠甜,等等等等,讓 js 在一些事情上不如 PHP 好用,但還好一切都是可以慢慢改正的。

=================================

PHP 一開始就糟糕:

變數名的限制,使我一看到PHP就開始心疼鍵盤;

是變數名不區分大小寫,還是函數名不區分大小寫來著?

糟糕的核心API 命名,更糟糕的擴充API 命名,我寫PHP 的那兩年,隨身帶著一本 PHP Manual,連最常用的字串處理方法也不能達到熟練的程度,永遠在懷疑自己應該用底線命名法還是駝峰命名法還是乾脆全小寫字母,永遠在懷疑自己應該用過程式的API 還是oop 式的API;

在lambda引入之前,PHP 連簡單的 string.replace(regex, fn) 都磕磕絆絆,很多時候我想要把函數傳來傳去,結果不是在用字串建立函數,就是用把函數名寫到字串裡傳過去,蛋疼得很;

新引入的匿名函數跟傳統的命名函數,表現和用法有著十分的不同;

沒有 scope chain,糟糕的 global,繁瑣的閉包 use,一切都像是在一坨排泄物上費盡心思打補丁,打得還如此醜陋。

=================================

我對 PHP 文法和API 的看法就是,與其打上這麼厚的補丁,不如推倒重來?不過那還能叫 PHP 嗎。。JS和PHP都有很多設計失誤。

不同的是,JS的進化填了舊坑,並且幾乎沒有任何新坑。而PHP雖然每個版本也都在填坑,但是總是填不乾淨,還會產生新坑。


【補充】
即使看最初的設計,JS當然也比PHP好。Brenden Eich雖然只花了10天設計實現,但是比Rasmus還是高段多了。Rasmus自己都說是隨便玩玩,根本不是奔著設計語言去的。
語言特性上,只說一點。JS有閉包,就足夠支撐它在有諸多重大缺失情況下,作出許多精妙的庫和架構。而PHP直到現在雖然加了閉包,卻如雞肋般難用。

【又補充】
@魯小夫 吐槽了PHP大小寫規則,評論裡有人說什麼“php遵循的是unix風格,即變數是區分大小寫,函數不區分大小寫”。恕我從沒聽說過這種“unix風格”。
PHP的大小寫規則的來曆見我寫的這篇:PHP 為什麼大小寫規則是如此不規則? · Issue #29 · hax/hax.github.com · GitHub 難道你們已經進化到需要關心語言的坑了嗎?不是只有文法不一樣?PHP 最開始的版本是一種範本語言。。。可能是時代不同需求也不同吧,PHP誕生的初衷是創造一種快速製作動態網頁的語言,PHP破天荒的將代碼嵌入HTML中執行,而不是拼字串。PHP創始人當時可能摳破腦皮也沒想到,現在的人會流行搞MVC、忙著把視圖代碼和邏輯代碼分開。PHP在當時製作動態網頁的技術中,理念是相當成功的,所以一炮而紅。PHP本身就是為動態網頁而生的,同時造成了PHP和其它語言相比可能許多地方比較另類,以至於PHP每次迭代都在試圖向主流通用型語言發展,說得好聽叫成長,說得不好聽就叫填坑吧。一個是Personal Home Page(好吧就算最新的遞迴縮寫也只是PHP: Hypertext Preprocessor
一個是Java Script
從取名就能看出來他們自己的定位。

所以現在JS成了一個通用的中繼語言了,PHP還是只能做Web。

其實說起來,Brendan Eich在實現第一版JS的時候還是考慮過設計的,但是PHP,呵呵,並沒有看出來除了提升版本號碼和打補丁之外還考慮過什麼。

當然,Hack/HHVM作為一個後繼者,狠狠滴打了PHP社區的臉,然而沒推廣起來就沒什麼卵用。
所以現在看看PHP,要啥有啥(Hack甚至還加入了Generics和ADT),儼然是一副高端程式設計語言的樣子。但是要啥啥醜,就像是一個家裡不怎麼有錢的醜逼官二代。

然後你看JavaScript,經過Andres Hejlsberg和Erich Gamma的手就變成了神器了。

至於推翻重來,你們是不是沒有聽說過PHP 6和ECMAScript 4啊?這是js被黑的最慘的一次從文法上說,JavaScript勝出,尤其是引入JSON以後。
從接近C和Java的角度來說,PHP更容易入門。

如果拋開各種庫,
JavaScript很精簡,只有很少的內建對象,卻能滿足大部分編程式求。
PHP顯得臃腫,各種內建函數,命名還不一致。PHP是世界上最好的語言!雖然說我是堅定不移的php黑,但題主你這黑的一點道理都沒有,剛學就能知道php難用?你能說出哪難用嗎?
學習的時候不要先入為主行嗎,php唯一優點就是上手快(我又黑了一波)
是不是一個語言要複雜的像c艸你才不明覺厲?
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.