PHP對程式設計師的要求更高

2021-08-07 09:27:52 字數 1111 閱讀 8950

首先, 大家都知道, php也是一種編譯型指令碼語言, 和其他的預編譯型語言不同, 它不是編譯成中間**, 然後發布.. 而是每次執行都需要編譯..

為此, 也就有了一些opcode cache, 比如開源的apc, eacc. 還有商業的zend o+等.

那麼為什麼php不把編譯/執行分開呢?

php雖然是一種編譯型指令碼語言, 但是它的編譯速度非常快, 它的編譯不做任何語義優化, 就是簡單的忠實的把你所寫的**翻譯成對應的opcodes. 而其他語言因為在編譯器做很多的優化工作, 會造成編譯比較重, 也一定程度上要求它們分離.

所以, 理論上來說, 通過編譯執行分離, 想達到原始碼加密, 是不會有什麼太大收效的, 因為它很容易被反向.

另外, 編譯直接分離, 並不會帶來特別大的收益, 反而會降低除錯部署的效率(想想, 修改, 編譯, 發布, 看效果), 並且apc等opcode cache工具, 已經很成熟了..

到這裡, 請大家注意這句:」它的編譯不做任何語義優化」….

這也就是我為什麼說, php對程式設計師的要求更高, 不同於其他的編譯型語言, php在編譯的時候不會幫你做一些優化, 比如對於如下的**:

$j

="laruence"

;for($i

=0;$i

<

strlen($j

);$i

++)

如果是其他預編譯語言, 它的編譯器也許會幫你做優化, 把strlen提取到前面去, 只做一次就夠了. 而對於php來說, 它在編譯的時候不做任何優化, 也就是說, 你的strlen, 會忠實的被呼叫8次.

再比如:

$table

="table"

;while($i

++<

1000

)

沒錯, 「select * from 」 . $table會被concat 1000次..

可見, php的程式設計師, 需要認真的想好, 你的**會怎麼被執行, 你怎麼寫**, 最終的執行效率才最高. 而不像其他的語言, 程式設計師可以把一部分優化工作交給編譯器.

這也就是我為什麼說:」php對程式設計師的要求更高」 的原因. 當然, 這個是好是壞, 那就是見仁見智了.

iOS程式設計師對演算法的要求

演算法和資料結構 鑑於二者的關聯,以下統稱演算法 對於程式設計師的重要性一直是個具有爭議性的話題。有一些程式設計師內心對演算法有著天然的排斥,面試當中一旦考察演算法知識,會被不少程式設計師吐槽,但有部分公司又一直在堅持這種做法。我且以乙個ios程式設計師的視角,談下自己粗淺的看法。不懂演算法並不妨礙...

高階程式設計師的要求

1 腦力勞動的人,我用的是大腦。如果是用搬運工,我去鄉下能招更便宜的 2 樓主 8年工作了,搞的 開發,介面庫 別人的,框架 別人的。資料庫 別人的。那麼,樓主你自己的東西呢?如果只是組合別人的東西,也就是個體力勞動。3 第二條你可能聽不懂,我換個方式說。你會用筷子,我也會,我還能左右手呢,有意義嗎...

VB 程式設計師 不要放鬆對自己的要求

業界一直對 vb 程式設計師有偏見,認為這個群體普遍水平不高。最近在維護 修改 vb.net 的老 時發現,這是有原因的。以 vb.net 為例,注意兩個選項 option explicit 和 option strict 前者表示,每個變數要先宣告才能使用。後者,則對隱式型別轉換有一定的要求。另外...