2011年11月27日 星期日

程式語言基本介紹

*什麼是程式語言?
    身為電腦使用者,我們常會說:「用某種程式來做某些事情」。這些能做不同事情、發揮不同功效的應用程式是如何產生的呢?簡單的說,是程式設計人員(programmer)寫出來的。而程式設計人員撰寫程式所使用的語言,就稱為電腦程式語言,或簡稱「程式語言」(Programming Language)。


*程式語言的演進與分類
  如果不考慮一百多年前的差分機(Difference Engine),第一個程式語言的出現至今才不過半個世紀多,在短短的五十多年就已發展出數量多到令人眼花撩亂的程式語言種類。而程式語言大略可依如下的方式分類:

機器語言 (Machine Language)
    對於電腦來說,它真正所懂得的語言只有一種,也就是「機器語言」。所謂的機器語言,其實是以特定的數字來表示電腦所能進行的各個動作。我們稱這些數字為機器碼 (Machine Code)或機器語言。舉例來說,如果把電腦比喻為一個人,而「0」代表向前走一步、「1」代表向後退一步、「2」代表往左轉 90 度、而「3」代表往右轉 90 度。那麼當我們要命令這個人往前走三步、再往右走三步時, 就必須下達「0003000」的指令。

組合語言 (Assembly)
   為了解決機器語言的難題,有人想到了用一些符號來替代數字,以方便人們辨識各個指令。以前面的例子來說, 如果以 forward 代替原本的 0、backward 代替 1、left 代替 2、而用 right 替代 3。

高階語言
   不論是機器語言還是組合語言,對於程式的描述都是以電腦所能進行的最基本動作為步驟,因此這兩種語言被稱為低階語言 (Low-Level Language)。換言之,本來是希望這個人向前走三步,再向右走三步,但是因為電腦所能進行的基本動作的限制,使得我們所寫出來的程式必須以向前走一步、向前走一步、向前走一步、向右轉 90 度、向前走一步、向前走一步、向前走一步這樣繁瑣的方式一步步描述實際進行的動作,寫起程式來其實並不便利。為了解決這樣的問題,有人開始設計新的語言,運用比較接近人類思考的方式來撰寫程式。而這種新的程式語言就稱為高階語言 (High-Level Language)。從第一個廣被使用的 Fortran 語言開始,至今曾流行過的高階語言還有 C、Pascal、Basic 等。它不但更容易閱讀和理解,也比使用低階語言所寫出來的程式精簡多了。不過電腦並無法看懂這樣的程式,和組合語言一樣需要一個轉譯的動作,將使用高階語言所撰寫的程式轉換成電腦所能看懂的機器語言,然後才能依此執行。這個轉換的動作是由各程式語言的編譯器 (Compiler) 或是解譯器 (Interpreter) 來進行。

物件導向程式語言
   隨著軟體技術的不斷演進,高階語言也仍不斷在改良、演進。約在 1960 年代興起了物件導向 (Object-Oriented) 的觀念。簡單的說就是將資料和程式結合成物件,在設計程式時以物件的方式來思考及設計程式的內容。而目前比較著名的物件導向程式語言,除了有 C++ 外, 還有 C# 、VB.Net和Java 等。


*程式語言介紹
C語言
  ‧ C 語言是 1972 年在 AT&T 貝爾實驗室 (Bell Laboratory) 中發展出來的,原創者 Dennis Ritchie 當時為了要發展 UNIX 作業系統,需要一種具有類似組合語言般的高效率以及能方便移植到各機型 (高可攜性) 之程式語言,於是創造了 C 語言。後來,由於 C 語言所具備的效率、彈性、可攜性等各項優點,逐漸成為一種廣受歡迎的程式語言。
  ‧ C 語言的優點包括:
  1. 程式碼精簡,產生的程式執行效率佳。
  2. 具有很高的可攜性。
  3. 完全支援模組化的程式設計。
  4. 彈性大而擴充性強。

C++ 語言
  ‧ C++ 和 C 語言一樣,也是在貝爾實驗室中發展出來的。其原創者 Bjarne Stroustrup 創造 C++ 的目的是希望把寫程式變成一種相當愉快的事情,同時讓設計者可以輕鬆地寫出好的程式來。他從 1979 年開始,以 C 語言為基本架構再加上物件導向程式設計相關功能,發展出一個名為 C with Classes 的新語言,也就是最初的 C++ 語言。
此後 C with Classes 不斷被改良,並在 1983 年時正式命名為 C++。在 C 語言中,++ 是一個遞增運算子 (Increment operator),如果將 C 當成是變數,則 C++ 就代表 C=C+1 之意。由此可看出 C++ 的目標就是要創造一個更好的 C,並且可與 C 相容並保有 C 原來的各項優點。
  ‧ 由於 C++ 可與 C 相容,所以大部份在 C 語言上發展出來的軟體仍可以在 C++ 中繼續使用。因其本身具有許多比 C 更強的特性,使得 C++ 在短短幾年之間就搖身一變成為目前最熱門的語言之一。
  ‧ 最初的 C++ 只是在 UNIX 上的一個轉譯器 (名為 Cfront),可將 C++ 程式先轉成 C 語言後再加以編譯;其後,隨著使用者不斷增加而逐漸有了在各作業系統上的編譯器,使 C++ 應用程式的產生更加方便。

Visual C++
  ‧ 微軟公司的 Visual C++ 是 Windows 平台上主流的 C++ 整合開發環境之一。Visual C++ 的 IDE 和微軟公司其它程式語言產品 (包括 Visual Basic、C#、J# 等) 其實是共用一個名為 Visual Studio 的 IDE。對於想同時用微軟其它語言或技術的開發人員而言,由於只需熟悉一套操作介面即可,所以使用起來較為方便。
  ‧ 近幾年來,微軟為推展其 .NET 技術,也將相關技術加到 Visual C++ 中。其特色之一就是能以微軟自家的 Managed C++ 語法來撰寫專門用在 .NET 環境下執行的 C++ 程式。

Visual Basic .Net 
  ‧ Visual Basic.NET是基於微軟.NET Framework之上的物件導向的中間解釋性語言,可以看作是Visual Basic在.Net Framework平台上的升級版本,增強了對物件導向的支援。
  ‧ VB 2005 延續 VB 6 的諸多優良的傳統,再加上非常完整的物件導向功能,以往無法做到或支援不完整的物件導向功能,現在都可做得到。

Microsoft Visual C# 
  ‧ Visual C#是微軟爲了實現.NET Framework中最有效率地進行開發的編程語言而被開發。Visual C#與Java一樣,是中間碼型的語言。不過,如果是對Write once, run anywhere作為詞句的話,Java基本地支持了Windows。C#和共通語言基礎自體作為開放協議的跨平台。
  ‧ Visual C# 單就程式語法來說有點類似 C++,或者說更像Java,因此有著易用、彈性大的特點,不但擁有完整的物件導向支援,在程式語法的執行效率上也比 VB 2005 快一點,所以說 C# 2005 是 .NET 上的欽定語言也不為過才是。

Java 
  ‧ Java,是一種可以撰寫跨平台應用軟體的物件導向的程式語言,由Sun公司1990年代初開發。Java伴隨著網際網路的迅猛發展而發展,逐漸成為重要的網路程式語言。
  ‧ Java 程式語言的風格十分接近C++語言。繼承了 C++ 語言物件導向科技的核心,Java捨棄了C++語言中容易引起錯誤的指標。
  ‧ Java平台是基於Java語言的平台。這樣的平台目前非常流行,因此微軟公司推出了與之競爭的.NET平台以及模仿Java的C#語言。

沒有留言:

張貼留言