《php大講堂系列1《什么是php》》要點:
本文介紹了php大講堂系列1《什么是php》,希望對您有用。如果有疑問,可以聯系我們。
verchielxy原創
本文主要介紹計算機語言的共同性,主要講php這門計算機語言的一些基本特性和優缺點,以及和其他編程語言的(比如java和c)的區別.
計算機語言,顧名思義,就是指人和計算機之間通信的語言. 當然這只是一個擬人化的比喻,實際上機器是不可能理解我們平時所說的語言的,所以我們需要媒介去和機器交互. 到目前為止,機器能理解的語言有且只有二進制語言,其他例如匯編和高級語言,最終都會轉化成為二進制語言共機器解讀.
計算機語言的種類非常的多,總的來說可以分成機器語言,匯編語言,高級語言三大類.
1. 機器語言
電子計算機所使用的是由"0"和"1"組成的二進制數,二進制是計算機的語言的基礎. 集合是指令集,指令是不可分割的最小功能單元. 機器語言的指令集和硬件本身有關,所以不同的硬件之間有可能互通,有可能不通.
2. 匯編語言
匯編語言不用多介紹,相信工科出身的童鞋對這方面比我更了解. 匯編語言主要是指用一些簡潔的英文字母、符號串來替代一個特定的指令的二進制串, 早期的目的是能讓人更容易理解和開發協作,用來做機器語言的上層,但是因為不同的硬件之間的通信成本大, 所以匯編語言不能作為終極的開發語言來進行迭代使用,所以后面又衍生出來高級語言.
3. 高級語言
高級語言就是我們經常說到的計算機語言,比如c,c++,java,ruby,php等等. 計算機不能直接理解高級語言,只能直接理解機器語言,所以必須要把高級語言翻譯成機器語言,計算機才能執行高級語言編寫的程序. 高級語言出現,最終辦理了現在計算機語言領域的最終載體,可以說是極大的降低了人工開發的代價和制定了一個相對標準的規則. (難道你想用“0”“1”來寫機器語言?) 這里我們通過語言的一些特性,又分割出來編譯語言和解釋語言兩個大類, 這兩大類的語言直接包含了現在所有的開發語言,編譯和解釋這兩個特性直接決定了語言在生產環境當中的需求目標.
編譯語言
編譯型語言指的是,在程序執行之前,需要一個專門的編譯過程,把程序編譯成為機器語言的文件,比如在windows上面的exe文件. 以后要運行的話就不用重新翻譯了,直接使用編譯的結果就行了,因為翻譯只做了一次,運行時不需要翻譯,所以編譯型語言的程序執行效率高. 但也不能一概而論,部分解釋型語言的解釋器通過在運行時動態優化代碼,甚至能夠使解釋型語言的性能超過編譯型語言.
解釋語言
解釋性語言的程序不需要編譯,省了道工序,解釋性語言在運行程序的時候才翻譯. 比如解釋性basic語言,專門有一個解釋器能夠直接執行basic程序,每個語句都是執行的時候才翻譯. 這樣解釋性語言每執行一次就要翻譯一次,效率比較低.解釋是一句一句的翻譯.
說只有兩大類,是對的,也是不完全的. 隨著Java等的語言的出現,我們又不能把語言單純地分成解釋型和編譯型這兩種. 這些語言包含了編譯和解釋的兩種特性,所以這些語言都是需要單獨討論的.
以java為例子,java首先是通過編譯器編譯成字節碼文件,然后在運行的時候通過解釋器給解釋成機器文件.
再以C#為例子,C#首先是通過編譯器將C#文件編譯成IL文件,然后在通過CLR將IL文件編譯成機器文件. 所以我們說C#是一門純編譯語言,但是C#是一門需要二次編譯的語言.同理也可等效運用到基于.NET平臺上的其他語言.
php屬于腳本語言.有些人又開始迷惑了,上面根本就沒提到過腳本語言好嗎.好吧,我只能說,是沒有提到過. 腳本語言其實是屬于解釋語言當中的子集,說腳本語言是解釋語言是沒有錯的,但是說解釋語言是腳本語言是不對的,不完全的. 上面提到過有java這種語言的存在,有些人喜歡吧java歸類到解釋性語言當中,有人歸類到半解釋和半編譯當中,其實都沒有錯. 因為java這些語言容易被部分人歸類到解釋性語言當中,所以在解釋語言又劃分出來一個子集,叫腳本語言,把像php和perl這類語言歸類其中.
作為一個php開發的從業者來講,php是世界上最好的語言這種論調,這只不過是一種戲稱,一個調侃罷了. 語言沒有好壞之分,針對不同的業務需求,不同的語言會有不同的優勢.
php作為腳本語言,他的語言特點有如下幾個:
1. 作為腳本語言,環境部署相對簡單,出了問題也相對容易調試.
2. 弱語言類型,對于變量的類型沒有限制,語法也相對簡單,便于初學者自學.
3. 不需要像java一樣,要設計是自動內存分配回收機制.php的變量在執行腳本起占用內容,結束之后釋放.
4. php語言面向的是辦理web方面的問題,雖然不代表他不能辦理其他方面的問題,但是這不是php的長處所在.
5. php本身就是一個模板語言,不需要配合其他模板引擎使用.
6. 對于大部分的中型公司而言,客戶頻繁的變更需求和前期開發的架構不停的迭代, 使用php語言可以快速和小成本的辦理這方面的問題.當然這不代表這門語言就是辦理這類需求的終極方案.
當然php也有他的弱勢特點所在
1. php是多進程,單線程的語言,設計模式也是如此.這意味著, php在承載高并發量的時候,消耗的硬件資源比其他語言要多.
2. php作為腳本語言,其執行速度要遠低于編譯語言.雖然在日常開發當中, 這些速度損耗遠沒有架構缺陷和數據庫帶來的時間損耗多,但是在大型項目的開發當中, 這仍然是php的缺陷之一.
3. php由于變量太過于靈活, 一個命名不規范的php程序以及不規范的開發結構, 導致在二次開發上面的技術代價可能比較大.
4. 大部分語言的通病,類的反射消耗的時間長,同樣的代碼,純sql語句執行和 依托php包(包括官方包和非官方包)來執行的語句,損耗的時間后者大于前者.
總結起來,每一門語言都有他們的長處和短處,在開發的時候,尤其是大型高并發項目的時候, 往往都是多語言共同辦理.每一個模塊都是一個或者幾個語言來負責,提高內聚,降低耦合, 前后端分離等,才是辦理一個需求相對完整完善的方案.
維易PHP培訓學院每天發布《php大講堂系列1《什么是php》》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/7175.html