一、 什么是計算機程序?
創新互聯公司是一家集網站建設,汕城企業網站建設,汕城品牌網站建設,網站定制,汕城網站建設報價,網絡營銷,網絡優化,汕城網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。計算機程序又稱“計算機軟件”。通過指令的順序,使計算機能按所要求的功能進行精確記述的邏輯方法。計算機本身作為機器可以獲得專利,但計算機程序是一種數學邏輯方法,各國一般不予保護。隨著電子技術的廣泛應用,導致產生了專門提供計算機所需軟件的新興工業部門及新型商品——計算機程序。因此,也產生了對此類創造性活動的產品予以保護的需要。美國1980年12月12日生效的新修訂專利法已將計算機程序列為版權的保護對象。不過一些學者認為,用專利法或派權法對軟件進行保護均不適宜,因為軟件的壽命較短,經常變化,而專利的保護期一般是10—20年,版權的保護期更長如有必要,對軟件的保護還應另頒單行法規更為適宜。世界知識產權組織也曾召開專家會議,討論對計算機軟件的保護問題。會議建議補充專利法、版權法及不正當競爭法,酌情建立計算機程序保護制度。
計算機程序,就是運行在計算機上能完成特定功能的指令集合,計算機程序的復雜程度由所需完成的邏輯功能來決定,計算機程序有簡單的也有復雜的,如編寫簡單的程序可以計算一個一元二次方程方程的解,而一個功能強大的游戲程序,可以給你帶來不一樣的游戲體驗,程序的本質就是運行在計算機之上的一組有序指令的集合,這些指令可以讓計算機執行一些具體的運算,能實現特定的功能。
在計算機開機后,進入操作系統如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多用于手機及嵌入式系統里,指令集的細分類型還有許多,感興趣的可以具體了解一下。
二、 什么是程序語言?
機器語言是早期的程序語言,由0和1兩種符號構成,當時計算機內部只能接受二進制代碼,因此,用二進制代碼0和1描述的指令稱為機器指令,是計算機能夠直接閱讀與執行的基礎語言,任何程序在執行前都必須被轉換為機器語言。用機器語言編程的程序成為目標程序。 只有目標程序才能被計算機直接識別和執行。 機器語言使用起來不方便、可讀性低、不容易維護,并且不同的機器平臺,編碼方式都不盡相同。機器語言是屬于低級語言。
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. 高級語言編譯生成的程序代碼一般比用匯編程序語言設計的程序代碼要長,執行的速度也慢。所以匯編語言適合編寫一些對速度和代碼長度要求高的程序和直接控制硬件的程序,高級語言程序“看不見”機器的硬件結構,不能用于編寫直接訪問機器硬件資源的系統軟件或設備控制軟件。為此,一些高級語言提供了與匯編語言之間的調用接口。用匯編語言編寫的程序,可作為高級語言的一個外部過程或函數,利用堆棧來傳遞參數或參數的地址。
以上就是編程小白學習php必須要了解的事的詳細內容,更多請關注創新互聯其它相關文章!
當前文章:新手學編程需要注意什么-創新互聯
URL網址:http://m.newbst.com/article40/dcjoho.html
成都網站建設公司_創新互聯,為您提供電子商務、定制網站、網站導航、用戶體驗、商城網站、面包屑導航
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯