php是什麼型語言

學識都 人氣:8.68K

PHP寫的網站佔所有網站的大概 80%了。那麼你知道php是什麼型語言了嗎?PHP 是一門弱類型語言,跟本站小編一起來學習一下吧~

php是什麼型語言

PHP 是一門弱類型語言

我們注意到,不必向 PHP 聲明該變量的數據類型。

PHP 會根據變量的值,自動把變量轉換爲正確的數據類型。

在強類型的編程語言中,我們必須在使用變量前先聲明(定義)變量的類型和名稱

1. 先定義一些基礎概念

Program Errors

trapped errors。導致程序終止執行,如除0,Java中數組越界訪問

untrapped errors。 出錯後繼續執行,但可能出現任意行爲。如C裏的緩衝區溢出、Jump到錯誤地址

Forbidden Behaviours

語言設計時,可以定義一組forbidden behaviors. 它必須包括所有untrapped errors, 但可能包含trapped errors.

Well behaved、ill behaved

well behaved: 如果程序執行不可能出現forbidden behaviors, 則爲well behaved。

ill behaved: 否則爲ill behaved...

2. 有了上面的'概念,再討論強、弱類型,靜態、動態類型

強、弱類型

強類型strongly typed: 如果一種語言的所有程序都是well behaved——即不可能出現forbidden behaviors,則該語言爲strongly typed。

弱類型weakly typed: 否則爲weakly typed。比如C語言的緩衝區溢出,屬於trapped errors,即屬於forbidden behaviors..故C是弱類型

前面的人也說了,弱類型語言,類型檢查更不嚴格,如偏向於容忍隱式類型轉換。譬如說C語言的int可以變成double。 這樣的結果是:容易產生forbidden behaviours,所以是弱類型的

動態、靜態類型

靜態類型 statically: 如果在編譯時拒絕ill behaved程序,則是statically typed;

動態類型dynamiclly: 如果在運行時拒絕ill behaviors, 則是dynamiclly typed。

3. 誤區

大家覺得C語言要寫int a, int b之類的,Python不用寫(可以直接寫a, b),所以C是靜態,Python是動態。這麼理解是不夠準確的。譬如Ocaml是靜態類型的,但是也可以不用明確地寫出來。。

Ocaml是靜態隱式類型

靜態類型可以分爲兩種:

如果類型是語言語法的一部分,在是explicitly typed顯式類型;

如果類型通過編譯時推導,是implicity typed隱式類型, 比如ML和Haskell

4.下面是些例子

無類型: 彙編

弱類型、靜態類型 : C/C++

弱類型、動態類型檢查: Perl/PHP

強類型、靜態類型檢查 :Java/C#

強類型、動態類型檢查 :Python, Scheme

靜態顯式類型 :Java/C

靜態隱式類型 :Ocaml, Haskell

TAGS:PHP 語言