首頁  >  文章  >  後端開發  >  程式小白學習php必須要了解的事

程式小白學習php必須要了解的事

烟雨青岚
烟雨青岚轉載
2020-06-15 13:38:362307瀏覽

程式小白學習php必須要了解的事

程式設計小白學習php必須要了解的事

一、 什麼是電腦程式?

摘錄一段百科上的描述: 電腦程式(Computer program),也稱為軟體(software),簡稱程式(Program),是指一組指示電腦或其他具有資訊處理能力裝置每一步動作的指令,通常用某種程式設計語言編寫,運行於某種目標體系結構上。

通俗的理解電腦程式

電腦程序,就是運行在電腦上能完成特定功能的指令集合,電腦程式的複雜程度由所需完成的邏輯功能來決定,電腦程式有簡單的也有複雜的,如編寫簡單的程序可以計算一個一元二次方程方程的解,而一個功能強大的遊戲程序,可以給你帶來不一樣的遊戲體驗,程序的本質就是運行在計算機之上的一組有序指令的集合,這些指令可以讓計算機執行一些具體的運算,以實現特定的功能。

在電腦開機後,進入作業系統如Windows/Linux/Mac等,作業系統會載入並執行許多程序,作業系統本質也是由一組電腦程式組成的,通常意義上表述的電腦程式,一般指的是能完成某些特定功能,相對比較獨立的程序,如視頻/音頻播放器,Web瀏覽器,社交工具的客戶端Wechat/QQ等;而一般由許多計算機程序共同協作來完成比較複雜的任務的一系列程序,通常被稱為系統,如作業系統等。

百科描述中所說的指令運行於某種目標體系結構上,對於絕大多數電腦來說,從電腦體系結構的大分類來看,這裡的目標體系結構通常都是指最常見的馮諾依曼體系結構,也就是上一節所講述電腦的基本結構,而在馮諾依曼體系結構設計之下,CPU(運算器和控制器)的設計也可以劃分不同的體系結構。

再了解什麼是指令集,指令集是儲存在CPU內部,對CPU運算進行指導和最佳化的硬程序,也就是說CPU的運算器只能執行CPU的指令集體系所支援的指令,之所以出現不同的CPU架構,就是由於指令集的設計不同,常見的CPU架構有Intel公司的X86架構和ARM公司的ARM架構,對應的指令集分別為複雜指令集(CISC )和精簡指令集(RISC), X86和ARM處理器的主要區別就是,前者使用複雜指令集(CISC),而後者使用精簡指令集(RISC)。 X86架構的CPU常見於筆電、桌上型電腦和伺服器上,而ARM架構的CPU多用於手機及嵌入式系統裡,指令集的細分類型還有許多,有興趣的可以具體了解一下。

二、 什麼是程式語言?

上面講述了什麼是電腦程序,電腦程式的本質就是運行在某種目標體系結構(可暫且理解為某種CPU架構)上面的指令集合,而這些指令的集合都應該能被該CPU架構所支持,即該CPU的運算器可以執行該指令集合中的所有指令,也就是說在不同的CPU架構上編寫相同功能的程序,最後生成的該程序所對應的指令集合很可能是不一樣的。

1. 機器語言

透過CPU架構所支援的指令集可以寫出成千上萬的程序,而由指令集所組成的程序,可以被CPU直接解讀和執行, 由指令集生成程序的過程就如同,通過文字去寫文章,單個的字或詞就是某一條具體的指令,不同字或詞(指令)通過一定規則組合起來,就是一篇文章(程式),所以CPU架構所支援的指令集的體系,也可以看做是一門語言,這門語言就是通常所說的機器語言,又稱為機器碼。不同的CPU架構所支援的不同指令集可以看做是不同的機器語言,就如同文字也分為漢語、English等許多語言,機器語言的道理也一樣。

2. 組合語言

透過機器語言就可以寫出許多各種功能的程式了,但是用機器語言寫程式,程式設計人員要先熟記所用電腦的全部指令代碼和代碼的涵義,在手工編程時,程式設計師還需要自己處理每條指令和每一資料的儲存分配和輸入輸出,還得記住程式設計過程中每步所使用的工作單元處在何種狀態。這是一件十分繁瑣的工作。編寫程式所花費的時間往往是實際運行時間的幾十倍甚至幾百倍,而且,編出的程式全是些0和1的指令碼,直覺性差,還容易出錯,那該怎麼辦了?

這時候組合語言便產生了,而組合語言的主體是組譯指令。組合指令和機器指令的差異在於指令的表示方法上,彙編指令是機器指令便於記憶的書寫格式,如執行一個操作:寄存器BX的內容送到AX中(具體什麼含義可以不用深究,明白是一條完成特定功能的指令即可)

  1000100111011000               机器指令
    mov ax,bx                    汇编指令

很容易可以看出,同樣一個操作,下面的彙編指令更容易被人熟記,彙編語言的出現是程式發展的一大進步,相較於機器語言主要有以下幾個特點:

1. 更具可程式化,即使用組合語言,程式設計師可以更簡單、更快速、更容易理解的方式完成同樣的程式設計任務;

2. 程式可移植性,上文介紹過不同的CPU架構支援不同的指令集體系(機器語言),所以通常以機器語言為某一類CPU架構編寫的程序,不能運行在其它CPU架構之上,而有了彙編語言,可以想像同樣一條彙編語句,運行在不同的CPU架構上時,只需要編譯器把它編譯(就如不同語言文字之間的翻譯)成對應CPU架構所支援的機器碼即可;

彙編語言的編譯器,是可以把彙編語言翻譯成目標CPU架構上機器語言的程序。

3. 高階語言

前面我們了解了什麼是機器語言和組合語言,組合語言也是和機器語言一樣,都是直接對硬體進行操作,但是組合語言指令採用了英文縮寫的標識符,更容易辨識和記憶,但也只是相對於機器語言而言的。在實際程式設計中,組合語言原始程式也是十分複雜和冗長的,為了更簡單和高效的編寫程序,於是高階語言就應運而生了。

高階語言不是指一種語言,而是包含許多程式語言,例如C、C 、Java、php、python等等,是高度封裝的程式語言。高階語言與電腦的硬體結構和CPU架構(指令系統)無關,組合語言已經具備一定的可移植性了,編譯器可以根據對應的CPU架構翻譯成對應的機器語言,同樣高階語言的可移植性更強,編譯器也可以將高階語言翻譯成目標CPU架構上的機器語言,至於是否直接翻譯成機器語言,還是先經過彙編再翻譯成機器語言,取決於編譯器的實作。

如今我們一般不需要學會如何用機器語言,彙編語言來進行編程,我們最多知道能如何看懂彙編語言就可以了。我們所寫的高階語言,當翻譯成目標語言時,編譯器會自動進行一些最佳化的處理。

4. 高階語言的分類

高階語言的分類方式很多,根據設計思想特徵可以分割為面向過程型(命令式)語言、物件導向型語言、函數式語言和邏輯式語言,而根據程式碼在執行之前被翻譯的時間,劃分為兩類: 解釋型語言和編譯型語言。

面向過程型(命令式)語言

#這種語言的語意基礎是模擬「資料儲存/資料操作」的圖靈機可計算模型,十分符合現代電腦體系結構的自然實現方式。其中產生操作的主要途徑是依賴語句或指令產生的副作用。現代流行的語言大多是這種類型,例如 Fortran、Pascal、Cobol、C、C 、Basic、Ada、Java、C# 等,各種腳本語言也被視為此類類型。

物件導向語言

現代語言中的大多數都提供物件導向的支持,但有些語言是直接建立在物件導向基本模型上的,語言的語法形式的語意就是基本物件操作。主流的支援物件導向的語言有 C 、Java、C#、PHP、Python等,一般的語言也都支援過程導向(指令式)的程式設計方式。

函數式語言

這種語言的語意基礎是基於數學函數概念的值所映射的λ算子可計算模型。這種語言非常適合進行人工智慧等工作的計算。典型的函數式語言如 Lisp、Haskell、ML、Scheme 、F#等。

邏輯式語言

這種語言的語意基礎是基於一組已知規則的形式邏輯系統。這種語言主要用在專家系統的實作中,最著名的邏輯式語言是 Prolog。

雖然各種語言屬於不同的類型,但它們各自都不同程度地對其他類型語言的運算模式都有所支援。

5. 解釋型語言

解譯型語言又可以依照語言的主動和被動特徵劃分為: 標記語言和腳本語言。標記語言時被動的等待解釋,不主動向電腦發出指令,腳本語言一般主動發出指令讓電腦執行任務。

標記語言

#

標記語言,是一種將文字(Text)以及其他文字相關的資訊結合起來,展現出關於文件結構和資料處理細節的電腦文字編碼。與文本相關的其他資訊(包括文本的結構和表示資訊等)與原始的文本結合在一起,但是使用標記進行標識。

例如: xml, html,  xhtml

#腳本語言

腳本語言是為了縮短傳統的編寫-編譯-連結-運行(edit-compile-link-run)過程而創建的電腦程式語言。它的命名起源於一個腳本“screenplay”,每次運行都會使對話框逐字重複。早期的腳本語言經常被稱為批次處理語言或工作控制語言。一個腳本通常是解釋運行而非編譯。腳本語言通常都有簡單、易學、易用的特性,目的就是希望能讓程式設計師快速完成程式的編寫工作。

例如: JavaScript、VBScript、PHP、Python

#6.編譯語言

編譯型語言:程式在執行之前需要一個專門的編譯過程,把程式編譯成機器語言的文件,運行時不需要重新翻譯,直接使用編譯的結果就行了。程式執行效率高,依賴編譯器,跨平台性差些。

例如: C、C 、c#、java等

7.不同型別高階語言的差異

1. 標記語言不用於向電腦發出指令,常用於格式化和連結。 

2. 腳本語言介於標記語言和程式語言之間,腳本語言腳本語言不需要編譯,可以直接用,由解釋器來負責解釋。

3. 編譯型語言寫的程式執行之前,需要一個專門的編譯過程,把程式編譯成為機器語言的文件,例如exe文件,以後要執行的話就不用重新翻譯了,直接使用編譯的結果就行了(exe檔),因為翻譯只做了一次,執行時不需要翻譯,所以編譯型語言的程式執行效率高。

8. 高階語言的一般性特徵

#1. 高階語言接近演算法語言,易學、易掌握,一般工程技術人員只要幾週時間的訓練就可以勝任程式設計師的工作;

2. 高階語言為程式設計師提供了結構化程式設計的環境和工具,使得設計出來的程式可讀性好,可維護性強,可靠性高;

3. 高階語言遠離機器語言,與電腦的硬體結構及指令系統無關,有更強的表達能力,因而所寫出來的程式可移植性好,重用率高;

4. 由於把繁雜瑣碎的事務交給了編譯程序去做,所以自動化程度高,開發週期短,且程式設計師得到解脫,可以集中時間和精力去從事對他們來說更為重要的創造性勞動,以提高程式的品質;

#5. 高階語言編譯產生的程式碼一般比用彙編程式語言設計的程式碼要長,執行的速度也慢。所以彙編語言適合編寫一些對速度和程式碼長度要求高的程式和直接控制硬體的程序,高階語言程式「看不見」機器的硬體結構,不能用於編寫直接存取機器硬體資源的系統軟體或裝置控制軟體。為此,一些高階語言提供了與彙編語言之間的呼叫介面。以組合語言編寫的程序,可作為高階語言的一個外部過程或函數,利用堆疊來傳遞參數或參數的位址。

感謝大家的閱讀,希望大家收益多多。

原文連結:https://blog.csdn.net/abc_1225/article/details/80237929

推薦教學:《PHP教學

以上是程式小白學習php必須要了解的事的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除