史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 程式語言討論區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2006-06-24, 04:23 PM   #1
snoopy
註冊會員
 
snoopy 的頭像
榮譽勳章
UID - 33737
在線等級: 級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時
註冊日期: 2003-02-02
VIP期限: 2011-06
住址: 台南共和國
文章: 1831
精華: 0
現金: 12744 金幣
資產: 12834 金幣
預設 教學 - Java與C C++之比較

放暑假無聊特別寫了這篇文章
讓大家了解Java與C C C++有哪些異同
這篇文章還是Java為主 和C C++做比較
如果有錯誤歡迎指正

談Java必須先談虛擬機器(VM)是什麼東東
虛擬機器就像是以軟體模擬出來的CPU
一般C C++是在真實的底層CPU上面跑
而Java是在由軟體模擬出來的CPU(虛擬機器上面跑)
虛擬機器對於Java的效能 安全性 可移植等等議題有相當重大的影響
因此學習Java不得不對虛擬機器有些認識

首先是虛擬機器對於Java效能的影響
由於C C++語言是直接編譯成底層CPU可以看懂的目的碼(object code)
因此由底層CPU直接執行 這樣的做法在高階語言中效能是最快的
但是直接與底層機器溝通帶來的問題非常多
首先是可移植性 寫好的source code
一旦編譯成與機器有關object code之後
就無法在拿到其他機器上面執行了
其次是安全性
與底層機器直接溝通的語言
由於電腦的軟硬體之間沒有抽象分離和保護
惡意破壞如刪除檔案或損害記憶體等等就會變的非常容易
有時候程式設計師不小心也會拿槍射中自己的腳
虛擬機器的概念因此而生
由於Java會先將source code編譯成與機器無關的byte code
再由虛擬機器執行這段byte code
不管在任何平台的虛擬機器看的懂的都是同一份byte code
因此Java可以達到寫一次 到處執行
真正跨平台的效果
也因為程式是在虛擬機器上面執行
所以許多安全機制可以在這一層實作
在程式執行時提供一層軟硬體的分離與保護
但是由於不直接跟底層硬體溝通 因此效能大打折扣
所以我們從虛擬機器得到的結論是這樣的
C C++是高效能 直接與底層硬體溝通
適合拿來設計作業系統 要求高效能 關鍵系統或是與硬體溝通的語言
Java是真正安全 跨平台的語言
適合拿來寫與機器無關 應用軟體 網路應用程式 跨平台程式等等

而從物件導向的特色分析C C++ 與Java
我們當然都知道C語言不具備物件導向的特色
物件導向是開發軟體的新思維
它的設計概念就是以真實世界為靈感
讓程式變的更容易撰寫
程式碼可重用性 可維護性 產量也隨之提高

物件導向好處多多 也是未來軟體開發的主流
比較C++與java物件導向的特色
Java是100%純物件導向
而C++則得背負向下相容C的歷史包袱
這方面使得C++物件導向無法與Java相比
Java拿掉了C++令人困擾的多重繼承
以及向下相容C的歷史包袱
定義出一個全新 100%純物件導向的語言
語法更加嚴謹 更安全 撰寫上更容易上手

於其他方面
Java拿掉了指標 而完全以參考取代
程式設計師再也不必擔心誤用指標而造成機器嚴重的損毀
另外Java也有自動化的垃圾蒐集機制
程式設計師不需要關心何時該銷毀 釋放不需要的物件
Java也拿掉了運算子重載的功能 這也大大簡化了程式的開發
Java也支援執行緒和同步的功能
使用執行緒只需要簡單的繼承類別或實作介面即可
而同步問題也只需要使用保留字即可解決
而Java背後也有龐大的套件庫支援
比如說我想寫視窗程式 可以使用Swing套件
想寫網路程式 可以使用net套件
資料庫可以使用sql套件等等
Java API的查詢又遠比MSDN方便的多

Java語言結構的設計可以讓危險或無用的程式碼降到最低
Java的編譯器可以在編譯時期查到許多錯誤
大幅減低程式設計師的困擾
這也是C C++無法作到的

不管如何
只有"適合"的程式語言
沒有"最好"的程式語言
選擇一個適合的工具來工作才是重要的
snoopy 目前離線  
送花文章: 623, 收花文章: 392 篇, 收花: 1288 次
回覆時引用此帖
有 3 位會員向 snoopy 送花:
assitance (2006-10-31),Chin-Wei (2006-08-26),getter (2006-08-24)
感謝您發表一篇好文章
舊 2006-08-23, 10:23 PM   #2 (permalink)
註冊會員
 
sulein1122 的頭像
榮譽勳章
UID - 43104
在線等級: 級別:12 | 在線時長:206小時 | 升級還需:15小時級別:12 | 在線時長:206小時 | 升級還需:15小時
註冊日期: 2003-02-27
VIP期限: 2010-07
住址: 桃源吉第
文章: 136
精華: 0
現金: 0 金幣
資產: 17574881 金幣
預設

最近在學JAVA,在物件方面總覺得比起C++來說,要簡單的多,也更容易上手哦^^
sulein1122 目前離線  
送花文章: 0, 收花文章: 11 篇, 收花: 16 次
回覆時引用此帖
舊 2006-08-23, 10:40 PM   #3 (permalink)
註冊會員
 
snoopy 的頭像
榮譽勳章
UID - 33737
在線等級: 級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時
註冊日期: 2003-02-02
VIP期限: 2011-06
住址: 台南共和國
文章: 1831
精華: 0
現金: 12744 金幣
資產: 12834 金幣
預設

引用:
作者: sulein1122
最近在學JAVA,在物件方面總覺得比起C++來說,要簡單的多,也更容易上手哦^^
是啊 因為Java沒有歷史包袱
snoopy 目前離線  
送花文章: 623, 收花文章: 392 篇, 收花: 1288 次
回覆時引用此帖
舊 2006-08-24, 05:51 AM   #4 (permalink)
管理員
 
getter 的頭像
榮譽勳章
UID - 6433
在線等級: 級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時
註冊日期: 2002-12-08
住址: 天線星球
文章: 8157
精華: 0
現金: 19955 金幣
資產: 765391 金幣
預設

解釋的真好 ...,我只知道大概但也講不出重點。
__________________
在「專業主討論區」中的問題解決後,要記得按一下 http://forum.slime.com.tw/images/stamps/is_solved.gif 按鈕喔,
這是一種禮貌動作。

一樣是在「專業主討論區」中發問,不管問題解決與否,都要回應別人的回答文喔。
不然搞 [斷頭文],只看不回應,下次被別人列入黑名單就不要怪人喔。

天線寶寶說再見啦~ ... 天線寶寶說再見啦~

迪西:「再見~ 再見~」

Otaku Culture Party 關心您 ...
getter 目前離線  
送花文章: 37855, 收花文章: 6441 篇, 收花: 26052 次
回覆時引用此帖
舊 2006-08-26, 01:05 PM   #5 (permalink)
長老會員
 
Chin-Wei 的頭像
榮譽勳章
UID - 114112
在線等級: 級別:14 | 在線時長:257小時 | 升級還需:28小時級別:14 | 在線時長:257小時 | 升級還需:28小時級別:14 | 在線時長:257小時 | 升級還需:28小時級別:14 | 在線時長:257小時 | 升級還需:28小時
註冊日期: 2007-02-18
文章: 3448
精華: 0
現金: 1674 金幣
資產: 32804 金幣
預設

如果讓我選擇專精 C++ 或 JAVA,我會選 C++ 

其實,C++ 也是跨平台的程式語言,雖說在不同的 arch 下,會需要對 source code 做小幅度修正。但根據經驗,Java 雖然理論上是跨平台,但實務上也是要針對不同的 arch 進行 source code 編修。

C / C++ 大概是目前世界上用的最多的程式語言了,Java 算是小眾,常接觸 unix-like os 的人應該很容易體會。
__________________
思考,正是從一個錯誤,跳進另外一個錯誤。
Chin-Wei 目前離線  
送花文章: 5387, 收花文章: 1361 篇, 收花: 5457 次
回覆時引用此帖
向 Chin-Wei 送花的會員:
zasiza (2006-08-28)
感謝您發表一篇好文章
發文 回覆



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 04:19 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1