iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 1
4
Software Development

我要轉職成 C# / .NET 工程師系列 第 1

程式語言的發展已經年過半百

程式語言的發展已年過半百

程式作為完成特定工作的一串電腦指令組合,人類與電腦互相溝通的語言我們都稱之為程式語言,在溝通的過程中,人們以自己易於理解的程式語言來撰寫程式碼,透過編譯器、解譯器、直譯器、組譯器等等,翻譯成電腦能理解的程式語言,使電腦執行人們所下達的工作。

https://ithelp.ithome.com.tw/upload/images/20190917/20120420Dtv3Qrod8l.png

人們對於自己易於理解的語言統稱為高階語言

而相對於人們不易理解或接近電腦能理解的程式語言我們稱為低階語言,例如機器語言或組合語言。時至今日人們依應各項的需求在各個時代下開發出多種高階程式語言,例如Fortran、COBOL、BASIC、C語言、C++、Perl、Python、Java、livescript(後來更名為javascript)、C#等等。而Fortran程式語言正式發表於1958年,也已經問世超過60年,在前述提到的幾個高階語言中,C#是其中最年輕的高階程式語言。

C#,念作C sharp

是物件導向高階程式語言,微軟於2000年發表C#程式語言,並於2002年正式推出C# 1.0,如今2019年C# 8.0已經在公開預覽階段。作為一個面市不到20年的年輕語言,C#融合了其他語言的優點,並避開其缺點,瘋狂地改進與加強,創造出屬於自己的特色。

為什麼人人都說C#的很像Java?

這要回到我們前文說的,人們撰寫的高階程式語言需要編譯成電腦能理解的機器語言才能執行,以C++來舉例,用C++編寫的程式碼,要在不同電腦上執行需要編譯成對應的版本才能執行,例如在Windows上執行的C++程式,到了macOS上要重新編譯,到了Android上也要重新編譯,畢竟在不同作業系統、不同平台不同電腦上,不同電腦能理解的機器語言就有不同,就需要不同的編譯器來翻譯成該電腦的機器語言。想想看你若買了一套軟體,例如:office for Windows的軟體,當你的電腦換成Mac時,你需要再花一筆錢買office for Mac,因為office for Windows不能在Mac電腦上執行,亦或者說Mac電腦無法理解office for Windows軟體中的程式語言。

而Java最大的特色就是編譯完之後不用重新編譯

只要編譯一次就能直接在不同平台上執行,以前面的例子來說買一套office的錢就可以在不同平台上執行,具體實踐的做法,說白了很簡單,所有平台上的Java程式碼,並不是編譯成該電腦能理解的機器語言,而是統一編譯成Java byte code語言,交由該電腦上能理解Java byte code語言的代辦人JVM來幫我們執行並命令電腦完成工作,所以在不同電腦不同平台上,只要該平台上有能理解Java byte code語言的代辦人JVM的話,我們的程式就可以跨平台執行。

回到我們所說C#的設計概念充滿Java的影子

這說到1995年當java 1.0版剛發表沒多久後,昇陽就授權微軟將Java移植到Windows平台上,熱心的微軟大大的改造了JVM,使Java直接調用Windows函式庫api,讓Java可以執行windows特有的功能,提升了Java的執行效能,並新增一些Java原先沒有的語法,微軟稱為J++,雖然不同平台上編譯而成的Java byte code可以在Windows上正常執行,可是J++編譯而成的Java byte code就不一定能跨平台執行,這違反的Java的初衷,於是昇陽開始了對微軟訴訟,後來微軟以J++的經驗創造出了C#。

參考資料:知呼:微软当年的 J++ 究竟是什么?为什么 Sun 要告它?


下一篇
回顧1995年
系列文
我要轉職成 C# / .NET 工程師34

尚未有邦友留言

立即登入留言