1.概說
計算機語言乃是人與電腦間溝通的語言,亦稱程式語言
程式語言並非一經撰寫即可在電腦上執行,而是必須經過一定程序的轉換,轉換為電腦所能辨識的執行指令,方可執行。程式語言轉換的過程亦可稱為翻譯。最終轉換的結果為機器語言,只有機器語言才能在電腦上執行
2.分類
約略可分為物件導向語言與傳統的非物件導向語言兩種
非物件導向語言
一般可以分為
機器導向語言依據程式語言對硬體設備的相依性,可分為低階語言與高階語言
問題導向語言依程式設計模式又可分為:
第五代程式語言則是以人工智慧為主的自然語言,例如PROLOGO(法、英,推理性語言),LISP(美,符號處理語言)語言等
Simula是第一個物件導向語言。原本是作為「模擬」用途,但其中的物件以及類別概念,成為現今物件導向語言的主要架構。(資料來源)
特性I
物件object | 訊息 | 類別class | 繼承 |
資料封裝 | 抽象資料型別 | 同名異元多元體 | 動態繫結 |
屬性Property | 事件event | 方法method |
特性II
相關名詞定義:
種類(連接外站:維基百科)
SmallTalk | 由全錄 (Xerox) 公司所發展出來的物件導向程式語言 (OOP) ,它將使用者介面的觀念帶入物件導向語言當中,目前有 DigiTalk 和Parcplace System 公司發展該語言的編譯器[84商教系]![]() |
C++ | 非常具有效能的程式語言。C++ 語言是90年代才逐漸獲得重視之以物件導向(Object-Oriented) 為基礎的程式語言,它可說是C 程式語言的的延伸,用來作為通用應用軟體之開發工具。 |
Ada | Ada語言起源,介紹。Ada 是一通用之高階之程式開發語言。其特點在於能夠提供優異之資料格式管理、同時作業處理和有效之程式架構等能力。此程式語言特別適用於崁入式的即時系統、分散式作業、高可靠度之軟體發展等應用。 |
VB | Visual Basic目前在台灣市場上常見的通用性教學程式語言 |
VFP | Visual Foxpro 資料庫程式語言 |
Delphi | Object Pascal由結構嚴謹的Pascal所後續開發的視窗環境下的程式語言 |
Java | 昇陽所發展,具跨平台特性,以C++為基礎所發展 |
C# | 念做c sharp,為MS新推出的程式語言,模仿Java功能,語法類似C語言 |
PL/1 | 通用語言(商用與科學用) |
APL | A Programming Language |
Power Builder | Sybase資料庫的4GL開發程式 |
SDK | 軟體開發套件(Software Development Kit, 即 SDK)一般是一些被軟體工程師用於為特定的軟體包、軟體框架、硬體平台、作業系統等建立應用軟體的開發工具的集合。 它或許只是簡單的為某個程式語言提供應用程式介面的一些檔案,但也可能包括能與某種嵌入式系統通訊的複雜的硬體。一般的工具包括用於偵錯和其他用途的實用工具。SDK 還經常包括範例代碼、支援性的技術註解或者其他的為基本參考資料澄清疑點的支援文檔。 軟體工程師通常從標的系統開發者那裡獲得軟體開發包。為了鼓勵開發者使用其系統或者語言,許多 SDK 是免費提供的。SDK 經常可以直接從網際網路下載。有時也被作為行銷手段。例如,甲產品或許會免費提供設備SDK 以鼓勵人們使用它,從而會吸引更多人由於能免費為其編寫應用程式而購買其設備。 SDK 可能附帶了使其不能在不相容的許可證下開發軟體的許可證。例如一個專有的 SDK 可能與自由軟體開發抵觸。而GPL能使 SDK 與專有軟體開發近乎不相容 |
widget | 部件工具箱(widget toolkits)亦稱為GUI工具箱(GUI toolkits),在程式設計中指的某些基本的GUI的構件元素的集合。他們一般以庫或者應用程式框架的形式出現。 |
API | 「『電腦作業系統(Operating system)』或『程式函式庫』提供給應用程式呼叫使用的程式碼」。 其主要目的是讓應用程式開發人員得以呼叫一組常式功能,而無須考慮其底層的原始碼為何、或理解其內部工作機制的細節。API本身是抽象的,它僅定義了一個介面,而不涉入應用程式如何實現的細節。 |
IDE | 整合開發環境(Integrated Development Environment,簡稱 IDE,也有人稱為Integration Design Environment、Integration Debugging Environment)是一種輔助程式開發人員開發軟體的應用軟體。 IDE通常包括程式語言編輯器、編譯器/直譯器、自動建立工具、通常還包括除錯器。有時還會包含版本控制系統和一些可以設計圖形用戶界面的工具。許多支援物件導向的現代化IDE還包括了類別瀏覽器、物件檢視器、物件結構圖。雖然目前有一些IDE支援多種程式語言(例如Eclipse、NetBeans、Microsoft Visual Studio),但是一般而言,IDE主要還是針對特定的程式語言而量身打造(例如Visual Basic)。 |
3.演進
計算機語言的演進歷史如下:
第一代 | 機器語言 | 由0與1所構成,電腦能直接執行的程式語言 |
第二代 | 組合語言 | 利用助憶碼取代數字碼,亦稱符號語言 |
第三代 | 程序導向語言 | 高階語言以1954年IBM的FORTRAN語言開始 |
第四代 | 非程序導向語言 | 4GL,,查詢語言SQL,應用程式產生器。1970年代萌芽,1980年大量使用主要應用在一般資訊查詢與報表列印,以事件驅動為主 |
第五代 | 自然語言 | 應用在人工智慧AI與所衍生的專家系統ES等特殊領域 |
我們可以利用圖形來代表這些語言的演進與人類的關係。
4.翻譯程序
一般程式編寫流程為:編譯,連結/載入,執行
使用者依程式語言語法規則所撰寫的文件,稱為原始碼(source code)。將原始碼轉換為機器碼以便在電腦上執行的工具軟體,一般依據該軟體的特性,此類轉換工具軟體可以分為:
組譯器Assembler | 將組合語言程式翻譯為目的程式,再經過連結程式,連結為執行檔*.com(檔案小於64K) |
直譯器Interpreter | 將原始程式逐行翻譯為機器語言。程式每次執行,皆必須經過翻譯的手續。亦稱為解譯器 |
編譯器Compiler | 將原始程式一次翻譯為目的程式後,再聯結函式庫或是其他目的程式為執行檔*.exe(檔案大於64K) |
此類工具軟體轉換原始碼為目的碼或是可執行檔的程序,可以用下圖表示:
組譯程序
直譯程序
編譯程序
吾人可以列出如下的表格比較彼此間的不同:
組譯 |
直譯 |
編譯 |
|
目的程式 | 有 |
無 |
有 |
程式執行速度 | 快 |
慢 |
快 |
語言處理與程式執行 | 編譯一次 執行n次 |
編譯一次 執行一次 |
編譯一次 執行n次 |
原始程式和機器的相關性 | 機器微處理器不同,原始程式敘述不同 | 與機種無關 |
與機種無關 |
語言種類 | MASM | Perl,Python,REBOL,Ruby,HTML 通常亦稱為Script語言 |
C/C++,Delphi(Object Pascal) |
除了以上三者外尚有:
在使用這些工具程式的同時,有一些特殊的工具程式必須介紹:
編輯程式 editor | 編輯原始檔案的工具程式,如PE2,MS EDIT 。在視窗環境下則以Ultra Edit最有名 |
連結程式 linker | 將一個以上的目的程式與程式庫連結合併成一個可執行檔 |
載入程式 loader | 將可執行檔從輔助記憶體中讀入主記憶體使執行的程式 |
偵錯程式 debugger | 協助程式設計師偵測程式錯誤點的程式 |
近來程式語言的開發環境已經趨向IDE整合介面,使用者只需在單一環境下,便可以撰寫程式,偵錯程式,編譯程式等開發程式的過程。
由於跨平台執行程式環境的需求日廣,程式必須在不同作業系統平台執行,在java環境下便有byte code (位元組碼)的產生,而微軟則推出.Net Framework的產生。
Byte Code位元組碼
.Net Framework
為支援XML,Web Service及跨平台等特性,微軟推出此一平台。此平台除了提供共通語言執行環境外(CLR Common Language Runtime),還提供一完整的類別程式庫(Comman Class Library),以供程式設計師可在支援此平台的程式語言中,以程式設計師熟習的語言來開發元件及應用程式,且可輕易與其他程式設計師所開發的元件相整合。任何一個VS .Net家族的程式語言經過編譯後就是一個可以在.Net Framework執行環境中執行的中介程式碼,此中介程式碼會在實際執行時經由.Net Framework中的Just In Time Compiler將其編譯成該平台下的實際執行碼,以達到跨平台的功能。.Net Framework的角色其實就和Java的VM一樣。 而此一平台則是以C#語言為最重要的語言,其後續發展值得觀察。(連結外站:維基百科)
一般來說,計算機語言的結構大同小異,但是在所有的語言中,比較需要注意的有以下各點:
指令
電腦系統接受指令執行運算,而這些指令便是電子控制訊號。指令分為兩部分:運算碼(Operation code)指揮電腦操作某一運算功能(例如加減乘除等),運算元(Operand)運算碼進行運算的對象(例如:待運算的文字或數值資料)。
依指令的功能一般可以分為:
輸入指令 | 由輸入裝置擷取資料 |
輸出指令 | 將處理器處理好的資料,送出到顯示裝置顯示結果 |
算術指令 | 執行算術運算。指令中運算元可為暫存器或儲存單位之位址 |
邏輯指令 | 提供處理過程中的邏輯運算,包含資料間的長度、大小、或條件測試 |
搬移指令 | 指定資料或位址的內容複製到目標位址上 |
控制指令 | 改變執行的次序或狀態 |
變數
可以宣告為全域變數或是區域變數
參數傳遞的方式
在撰寫程式時,通常需要呼叫其他程式或是函數進行處理。呼叫其他的程式稱為主程式,被呼叫的程式稱為副程式。彼此間透過參數進行資料傳遞。主程式的參數稱為實際參數,副程式的參數稱為形式參數
call by address | 傳址呼叫(空間)。主、副程式的參數使用共同的記憶體空間,當副程式的參數改變內容值,主程式的變數亦連帶改變 |
call by value | 傳值呼叫(數值)。主、副程式的變數各自擁有獨立記憶體空間,參數只是將內容值複製給引數,程式內的變數值改變,不會相互影響 |
call by name | 傳名呼叫,亦稱call by reference。主程式呼叫副程式時,將主程式中實際參數的名稱,傳給副程式中對應的形式參數,副程式中的所有形式參數名稱以實際參數的名稱代替。實際參數與形式參數,佔用相同的記憶體空間 |
call by result-value | 主程式呼叫副程式時,將主程式中實際參數的值,傳給副程式中對應的形式參數。兩者不會佔用相同的記憶體空間 |
副程式
優點:可以抒解程式撰寫的壓力,並將功能適當的分散到各個模組執行
分類:程序Procedure(不一定有傳回值,或是可以傳回一個以上的值)與函數Function(只有一個傳回值)
定義
由有限的步驟組成,依照這些步驟順序執行,可以完成某一特定的工作。這些步驟稱為演算法,並且同時滿足下列條件:
演算法均可以以程式流程圖表示,但是程式流程圖不一定能以演算法表示
如何書寫演算法
一般使用虛擬語言Pseudo-Language來書寫演算法,常見有Sparks,PASCAL-LIKE語言。其處理流程如下:
問題需求--(設計)-->演算法(Sparks)---->高階語言--(編譯器)-->目標機器語言
由於電腦是依照一定的邏輯步驟來執行運算的機器,在程式設計的時候必須將問題分解為許多小步驟,然後再依一定的次序逐步執行,我們將這個用來描述問題之解決程序的方法稱作演算法。許多同學在第一次接觸程式設計時,多半不知道如何下手。一般建議:多觀摩。多看別人寫的程式,多想一想為何他要這樣寫,自己再試著模擬一次,便可以容易上手了。而應付考試的同學,則建議把常見的考試題型,記憶起來。再看到題目時,如過能夠了解題目所代表的意義,解題便十分容易了
看一看以下這一題,你了解它的意義嗎?
S=0 FOR I=1 TO 100000 X=INT(RND+0.5) IF X=0 THEN S=S+1 NEXT P=S/100000 PRINT P |
|
虛擬語言Pseudo-Language
利用一種結合一般文字敘述、非正確的程式語言來描述演算法的程式碼,稱為 pseudo code。以下是一個排序演算法的描述碼
排序的元素放在陣列 a 中 |
利用 pseudo code 可彌補程式語言敘述的不足,而又有程式語言結構化且嚴謹的敘述能力,可相當有效率的定義出一個演算法的過程,在資料結構或演算法等領域,經常使用 pseudo code 來描述演算法。
乃是以圖形符號來描述程式的邏輯和處理程序。符號共分為三種:
程式流程符號 |
|
||||||||||||||||||||
輸入輸出媒體符號 |
|
||||||||||||||||||||
作業處理符號 |
|
流程圖符號 |
說明 |
||||||||||||||||||||||||||||
![]() |
本圖形乃是由Word中所擷取
|
||||||||||||||||||||||||||||
![]() |
左側圖形乃是Visio的流程圖模板 |
8.各種語言筆記
Basic 語言
Cobol 語言
C 語言
Pascal 語言
Visual Foxpro語言
Java語言
Android SDK Developer
iOS APP SDK Developer