2011年1月23日 星期日

Programming language comparison and brief

JAVA:
-- 跨平台的新興語言,可與網際網路密切結合,最早應用於網際網路的物件導向程式語言,網際網路方面的功能十分齊全 。 
-- Java 與傳統程式語言有很大的不同,如: C 或 C++ 、 FORTRAN 等,那便是 Java 是一個直譯式( Interpreted )的程式語言。
-- 定義了Java Virtual Machine,它所用的指令稱為byte code。
-- 當您寫好一個 Java 程式之後,必須先使用 Java 的編譯器( compiler )將原始程式編譯位元碼( Bytecode ),再使用 Java 直譯器來執行位元碼。因為 Java 的位元碼提供了一個與機器架構都無關的檔案格式,所以可以在各種平台上執行,只要平台上有所謂的 Java 虛擬機器。 
-- Virtual Machine一般是以軟體來模擬的,只要新的平台有Virtual Machine,則原始程式不用Compile,執行舊機器上已有的Virtual Machine目的碼,就可以了。
-- 使用Virtual Machine的缺點之一,是執行的速度較慢,代價是開發的速度變快了。
-- 以現在的硬體來說,大部分應用程式的執行速度已經沒有那麼重要,反倒是軟體的開發速度和品質越來越值得重視。 

XML
-- 談到了 Java ,不得不順便介紹 XML ,以一句簡單的話說明他們的關係:「 Java 是跨平台的程式, XML 是跨平台的資料」
--  Java 不受限於平台環境的特性,改變了程式語言的演進史, XML 更進一步將資料交換的問題解決了,讓 Java 可以更盡情自在的發揮。 
-- Java 和 XML 有許多共同的特徵,而這些特徵是用在以網站為基本單位的企業應用軟體上,最重要的功能,例如:平台獨立、可擴充性、程式碼再使用、支授全球共同語言( Unicode ) ... 等等。

PHP 、 ASP
-- 網頁程式開發語言 

C語言:
-- 指標是他最大的特色。
-- 在電機的領域裡面是最基礎也最重要的語言,因為這個語言是硬體與軟體溝通最重要的溝通橋梁,也因為有指標,可以處理很多記憶體位置的問題。
-- 開發模式 是編寫.c的Source Code,再經由Compiler編譯成Object Code。
-- 所謂Object Code指的是和硬體相關的機器指令,也就是說當我們想要把C程式移植到不同的硬體時,必須要重新Compile,以產生新的執行檔。
-- 除了需要重新編譯外,新系統是否具備應用程式所需的程式庫,include的檔案是否相容,也是程式能否在新機器上順利編譯和執行的條件之一。
-- 在實務上,為了讓C程式能在不同的UNIX版本上都能順利編譯,原作者往往必須使用前置處理器的 #ifdef 指令,判斷不同環境的適當寫法。
-- 如果想 把在UNIX上開發的C程式移植到Windows上,則有用到專屬程式庫的部分(如UNIX的使用者介面可能用到X Window的API,Windows就沒有支援,必須一台一台灌程式庫才行,很可能還要花錢買),就必須重寫才行。
-- 解決此類問題的方法之一,是定義一種Virtual Machine(虛擬機器),讓程式語言編譯時不要翻成實體機器的指令,而是翻成Virtual Machine的目的碼。當然要達到完全不用重新Compile就能執行的理想,還要配合標準的程式庫才行。 

C++語言:
-- 就是"物件化"的C語言(當然有包含指標),C++本身是非常的精煉,也因為軟體產業的分工發展,相應有物件化的概念,方便多位程式設計師一起撰寫。
-- 較早出現於市場的物件導向程式語言,功能最齊全,但也比較不好學。

C#:
微軟發表的程式語言,宣稱源自於 C++ ,但刪除 C++ 較繁瑣的功能,相較於 C++ 雖稍有簡化,但依然保存物件導向所需具備的所有功能。

VC++:
-- 以VC++6.0以後的版本來說,和C++最大的差別就是【視窗化】
-- 因為底層的"語法"是用C++的規範,所以兩者都有C++,但是因為要"視窗化",配合舊的windows作業系統的win32 API才有MFC這個爛的library
-- 但是新版的VC++ 2003以後 有了CLI,據說是以.Net架構去撰寫,有把問題簡化。

VB7 (VB.NET)
-- 源自於 VB6 ,補齊了 VB6 所欠缺的物件導向功能。
-- VB7 的前身 VB6 ,雖然也具備物件導向的特性,但功能並不完整,許多人一直在等待 VB 變成一個完全的物件導向程式語言,其間從 VB4 到 VB6 ,都只是增加一部份物件導向功能,但始終不完整,相較於其他物件導向程式語言的誕生時間, VB7 簡直就是個遲到者。
1. 終於等到 VB7 變成完全的物件導向程式語言
2. 微軟同時也將程式執行環境物件導向化了,換句話說,就是提供豐富的通用物件類別庫,這將會提高不同程式語言之間的可移植性
3. 微軟也統一了物件存取介面,這將使得以不同程式語言所發展的出來的物件類別可通用於其他程式語言。
而以上的第 (2)(3) 點,也正是微軟 .NET 專案的一部份功能。

C#和VB.Net:
-- 先解釋.Net Framework,雖然名字有net,但是跟網路無關,有用這個Framework就很像用Java的模擬器(JVM),開發程式的時候完全不用去考慮底層的事情,像是: 用哪一種CPU,哪一個版本的作業系統NT or Vista,要怎麼處理開檔寫檔,怎麼使用網路的連線。
-- 只要是用微軟的作業系統就通通可以用.Net Framework來解決真正要面對的問題(現在linux也有mono專案可以使用.Net架構)
-- VB.Net的VB就是Visual Basic,恩,看到Visual就想到視窗化! Basic本身只是一種語法(Basic之於VB = C++之於VC++),寫程式要按照Basic的規矩來寫(比爾蓋茲就是用Basic寫Windows的第一個版本),加上了.Net就是使用了這個 framework,所以看VB的source code要認明是VB6或是VB.Net,兩者程式不能互用,必須稍微修改。

Pascal
-- 嚴謹的高階語言

Perl
-- 目前最受歡迎的 CGI 開發語言

SQL
-- 標準的資料庫查詢語言


接下來就是腳本語言囉!

ruby: 
-- 很適合做網頁,python很適合做科學研究! Ruby是日本人開發的新語言,近年來發展極迅速,幾乎快占掉Jave網頁上的所有應用

Python: 
-- NASA和Google和Youtube都是用python語言,被google併購的廠商大多都是用python為基底開發,腳本語言可以想成跟Matlab差不多,寫程式可以專心面對問題,解決問題,跟Matlab最大不同就是"不用錢!"
-- python也榮獲TIOBE排名2007最佳程式語言。有人描述它: 想飛,就用python import抗地心模組就可以飛了

Reference: 1 2

沒有留言:

張貼留言