11月 02, 2008

【語言】程式語言簡介 - Introduction of Programming Language

@
  語言(language),時常是人與人之間賴以溝通的橋樑。正如日常生活中,三五好友間的哈拉閒聊、講台上教授的口述講解、或是我現在寫出來的這一篇文章,都是利用語言做為「你」與「我」之間,互相溝通、交流的管道。

  同樣的,在電腦蓬勃發展的現代,我們也需要有一種方式,能夠與電腦做「溝通」,讓電腦能夠理解並遵循使用者的命令,以完成某些特定的「任務」。而程式語言(programming language)便是這種人與電腦溝通的「媒介」。


  由於電腦其實只「看得懂」二進位(binary)數字(0 跟 1)。因此,在早期,程式設計師都是使用一連串 0 跟 1 所組成的機器語言(machine language)來撰寫程式。舉例來說:假設 "0010" 代表「相加(add)」,則 "0010 0001 0110" 這樣的一串指令,就表示著「把記憶體位置 0001 的值加上 6 (01102)」。

  雖然因為這種方式是電腦可以直接理解的,所以使用機器語言撰寫的程式執行效率相當的高;但是,也正因為這串指令對人而言是如此的難以理解,且相當容易出錯。因此對人而言,使用機器語言來寫程式是相當費力的。


  為了改善機器語言的缺點,組合語言(assembly language)誕生了。組合語言將機器語言的二進位指令,以一對一的方式轉換成簡單的符號或是英文的簡寫,使得指令更容易被人所記憶。於是,我們可以直接使用類似 "ADD 1 6" 的指令,來達成與前面提到的機器碼同樣的動作。

  而在執行之前,只需要透過組譯器(assembler)將組合語言轉換為機器語言,電腦就看得懂了。雖然因為經過轉換的動作,組合語言的程式執行效率會比機器語言來的差一些,但是程式也因此變得好懂、好寫許多。


  縱使如此,組合語言對一般人而言還是難以學習。而且,機器語言與組合語言都有一個缺點,就是他們都是「依賴於機器的(machine dependent)」。換句話說,可能你的機器語言(組合語言)程式移到別的機器上,它就不能執行了!

  因此,相對於機器語言和組合語言這類低階語言(low-level language)高階語言(high-level language)出現了。(對電腦科學來說,高階與低階僅用於表達其「接近機器的程度」,並無優劣褒貶之意。)包含了常見的 BASICPascalFortranCC++Java 等等。


  高階語言不像低階語言,其採用較接近人類所使用的自然語言(natural language),以人較容易閱讀理解的文法規則來編寫程式。雖然高階語言比起低階語言執行速度較慢,但是也因此減少了許多程式的學習難度與開發時間。

  而且,高階語言在不同的平台上,都可以藉由不同平台上的編譯器(compiler)直譯器(interpreter)被轉換為適當的機器語言,使得程式不再只因轉移平台,就需要將程式全部重新撰寫的情形。




  自從高階語言出現以來,許許多多不同的程式概念與寫法不斷被提出、修正、改良。直到現今,仍然有許多代表著不同想法的高階語言不斷被創造出來。程式設計學術之盛,由此可見一斑。

0 回覆:

張貼留言