程式就是一系列的操作步驟,計算機程式就是由人實現規定的計算機完成某項工作的操作步驟。每一步驟的具體內容能夠理解的指令來描述,這些指令告訴計算機「做什麼」和「怎麼做」。編寫計算機程式所使用的語言稱為程式設計語言。
通常分為三類:機器語言、組合語言和高階語言。
計算機最早的語言處理程式是機器語言,它是計算機能直接識別的語言,而且速度快。機器語言是用二進位制程式碼來編寫計算機程式的,因此又稱二進位制語言。例如用機器語言來表示「8+4」這個算式,是一串二進位制碼「00001000 00000100 00000100」。機器語言書寫困難、記憶複雜。一般很難掌握。
由於機器語言的缺陷,人們開始用助記符寫程式,用一些符號代替機器指令所產生的語言稱為組合語言。但是,用組合語言編寫的源程式不能被計算機直接識別,必須使用某種特殊的軟體將用組合語言寫的源程式翻譯和連結成能被計算機直接識別的二進位制程式碼。其示意圖如圖所示。
組合語言雖然採用了助記符來編寫程式,比機器語言簡單,但是組合語言任屬於低階語言,它與計算機的體系結構有關,在編寫程式前花費相當多的時間和精力去熟悉機器的結構。因此工作量大、繁瑣,而且程式可移植性差。
計算機並不能直接接受和執行用高階語言編寫的源程式,源程式在輸入計算機時,通過「翻譯程式」翻譯成機器語言形式的目標程式,計算機才能識別和執行。這種「翻譯」通常有兩種方式,即編譯方式和解釋方式。
編譯方式是:編譯方式的翻譯工作由「編譯程式」來完成,它是先將整個源程式都轉換成二進位制程式碼,生成目標程式,然後把目標程式連線成可執行程式,以完成源程式要處理的運算並取得結果。解釋方式時:源程式進入計算機時,解釋程式邊掃描邊解釋,對源程式的語句解釋一條、執行一條,不產生目標程式。解釋方式的翻譯工作由「解釋程式」完成。
編譯性語言有C/C++、Pascal/Object Pascal(Delphi)等。
解釋性語言有ASP、PHP、Java、Javascript、VBScript、Perl、Python、Ruby、MATLAB、Basic等。
使用編譯性語言程式將整個源程式編譯連線為可執行的檔案,這種方式效率高、可靠性高、可移植性好。不過,當源程式修改後,必須重新編譯。
物件導向語言借鑑了20世紀50年代的人工智慧語言LISP,引入了動態繫結的概念和互動式開發環境的思想;始於20世紀60年代的離散事件模擬語言Simula67,引入了類的要領和繼承,成型於20世紀70年代的Smalltalk。
物件導向語言的發展有兩個方向:一種是純物件導向語言,如Smalltalk,EIFFEL等;另一種是混合型面型物件語言,即在過程式語言及其他語言中加入類、繼承等成分,如C++、Objective-C。