> 原文出處:http://dbarobin.com/2012/04/04/breif-talk-on-primary-programming-language/
> 作者:溫國兵
# 程序員的奮斗史(一)淺談幾種主要編程語言
## 目錄
[TOC=2,2]
## 寫在前面
經常聽到有人在抱怨這個語言哪里哪里不好,那個語言又是如何的優秀。對于這樣的牢騷,我只是一笑而過。
就我而言,語言只是工具,沒有好壞之分。只要你采用相應的語言,完成對應的工作,那你的目標就完成了。我們無需抱怨這種語言的缺點,而是應該抱有接受的態度。任何語言的存在都有它的合理性,如果不合理是不會經受住時間的考驗的。世間之物都具有雙面性,只是看利多還是弊大。如果一個東西是十全十美的,那我毫不猶豫的告訴你,一種情況是它不存在,另一種情況是你還沒發現它的缺點。
每種語言都有自己得天獨厚的優勢,當然缺點同時伴存。C語言是計算機界的常青藤。C語言執行效率高,用于寫底層的驅動那是再適合不過。指針是C語言的精華。而C++是很強大的,只要你是個高手,你幾乎可以利用C++完成任何事情。當然虛函數是C++的精華。Java取消了指針,這是應該喜還是憂。喜的是,沒有C或者C++那種對內存繁瑣的操作,而且也降低了很多致命性的錯誤發生的概率。憂的是,效率大打折扣,采用虛擬機的方式使得Java有跨平臺的特性,必然會使得效率降低。另外一個方面,你借別人的東西使用(內存),是不是應該還回去呢?從這一方面考慮,C或者C++的設計思想更有意義。經常關注TIOBE世界編程語言排行榜,Java已經有很久排名第一,我覺得這樣的排名只是看看而已,無需過多的信奉。下面看看幾種主要語言的優缺點。
## C語言
**C語言的優點:**
* 簡潔緊湊、靈活方便
* 運算符豐富
* 數據結構豐富
* C是結構式語言
* C語法限制不太嚴格,程序設計自由度大
* C語言允許直接訪問物理地址,可以直接對硬件進行操作
* C語言程序生成代碼質量高,程序執行效率高
* C語言適用范圍大,可移植性好
* C語言有一個突出的優點就是適合于多種操作系統,如DOS、UNIX,也適用于多種機型
* 有效地將一個較復雜的程序系統設計任務分解成許多易于控制和處理的子任務,便于開發和維護
**C語言的缺點:**
* C語言的缺點主要是表現在數據的封裝性上,這一點使得C在數據的安全性上做的有很大缺陷,這也是C和C++的一大區別。
* C語言的語法限制不太嚴格,對變量的類型約束不嚴格,影響程序的安全性,對數組下標越界不作檢查等。從應用的角度,C語言比其他高級語言較難掌握。
* 可重用性差
* 數據安全性差
* 難以開發大型軟件和圖形界面的應用軟件
* 把數據和處理數據的過程分離為相互獨立的實體
* 當數據結構改變時,所有相關的處理過程都要進行相應的修改
* 每一種相對于老問題的新方法都要帶來額外的開銷
* 圖形用戶界面的應用程序,很難用過程來描述和實現,開發和維護也都很困難
## C++
**C++優點:**
* 可擴展性強
* 高效 簡潔 快速
* 可移植性
* 面向對象的特性
* 強大而靈活的表達能力和不輸于C的效率
* 支持硬件開發
* 程序模塊間的關系更為簡單,程序模塊的獨立性、數據的安全性就有了良好的保障
* 通過繼承與多態性,可以大大提高程序的可重用性,使得軟件的開發和維護都更為方便
**C++缺點:**
* 比較底層,易用性不是很好
* 多重繼承和友元機制
* 標準庫涵蓋范圍不足
* 開發周期長
* 非并行
* 掌握有難度
* 粒度封裝不夠
## Java
**Java的優點:**
* 簡單性
* 面向對象性(面向對象的程度可以達到95%)
* 健壯性
* 跨平臺性
* 高性能(自動垃圾回收機制)
* 多線程
* 動態性
* 安全性
**Java的缺點:**
* 跨平臺是它最大的優點也是最大的缺點
* 復雜性(做一個項目需要很多的知識,涉及面廣)
## 寫在后面
很多時候,一種語言的優點很可能是它的缺點,缺點又可能是它的優點。這主要看你是從哪方面去考慮。這就印證了那句話,凡事沒有必然。
不管是哪種語言,就像文章開頭所言,只要你采用他達到你想要的,那就成功了。無需過多在意它的缺點,更無需贊揚它的優點。所以網上那些關于哪種語言更好的口水仗,我只能說這樣的爭斗毫無意義。
**語言只是工具,沒有好壞之分。**
–EOF–
- (一)淺談幾種主要編程語言
- (二)今天你跑步了嗎
- (三)談時間
- (四)興趣是第一驅動力
- (五)謙遜才是王道
- (六)我們是需要團隊合作精神的
- (七)溝通交流、表達能力的重要性
- (八)懶人造就方法
- (九)分享是種美德
- (十)談項目管理
- (十一)我們是群居動物
- (十二)談信念
- (十三)我為什么不考研
- (十四)談態度
- (十五)談性格
- (十六)談習慣
- (十七)父母
- (十八)人活著,只是一種態度
- (十九)因為愛情
- (二十)沉思錄(一)關于博客和思想
- (二十一)我們的大學觀
- (二十二)《中國合伙人》聯想錄
- (二十三)做自己 最真實
- (二十四)寫在大三結束之際
- (二十五)情緒與生活
- (二十六)迷失的朋友
- (二十七)談談英語學習
- (二十八)寒門再難出貴子?
- (二十九)分享我的時間管理-半小時管理法
- (三十)近期微信公眾平臺更新文章集錦
- (三十一)人在囧途之應聘篇(一)
- (三十二)人在囧途之應聘篇(二)
- (三十三)人在囧途之應聘篇(三)
- (三十四)人在囧途之應聘篇(四)
- (三十五)人在囧途之應聘篇(五)
- (三十六)人在囧途之應聘篇(六)第一季終結篇
- (三十七)大學斷代史(一)開篇
- (三十八)大學斷代史(二)我與數據庫的故事
- (三十九)大學斷代史(三)我和知乎邂逅
- (四十)大學斷代史(四)我與博客
- (四十一)大學斷代史(五)我的娛樂方式
- (四十二)大學斷代史(六)我與圖書館
- (四十三)大學斷代史(七)在實驗室的日子與我的學業
- (四十四)大學斷代史(八)大學的友誼
- (四十五)大學斷代史(九)獨自南下的歲月
- (四十六)大學斷代史(十)給學弟學妹們的忠告-終結篇
- (四十七)工作三個月小結