這些年或因為興趣或因為工作需要著實接觸了不少編程語言,然而隨著接觸的多了起來,有時候也不免自我懷疑,為什么我要這么頻繁的更換編程語言?難道不能利用一種編程語言打天下么?這么做豈不是將時間精力完全的浪費在了學習編程語言的過程中,說實在的這個過程一點也不有趣。當我嘗試著將使用過的編程語言分類,詳細考慮編程語言的優(yōu)勢和特點,于是便有了這篇文章。
在這里,我嘗試根據(jù)每種編程語言的特點,主要應(yīng)用領(lǐng)域和優(yōu)勢對編程語言做一個比較實用的定位,避免今后在編程的道路上浪費時間,做無用功,將更多的時間放在高層編程技術(shù)上的學習上。
1.C語言
C語言是應(yīng)用最為廣泛的一種編程語言,從嵌入式到PC軟件,從操作系統(tǒng)到底層驅(qū)動都能見到他的身影。作為應(yīng)用最廣泛,形式最靈活,拓展最方便的一種編程語言,C語言在世界編程語言排行榜中長期占據(jù)第二的位置,牢不可破。然而這還是不計算嵌入式等領(lǐng)域的前提下得出的排名,如果將嵌入式等領(lǐng)域計算在內(nèi),超越Java不是妄想。
C語言時一種面向底層,面向計算機的編程語言,它介于高級語言與低級語言之間。相對于與機器指令對應(yīng)的低級語言——匯編語言,它具有足夠的抽象,能夠讓人們避免直接與寄存器打交道。同時,相對于高級語言Python來說,又因為面對計算機底層,運行效率不至于下降太多。C語言是一種折衷的選擇,當人們需要高性能但是又不愿意犧牲太多編程效率的時候,C語言是一種明智的選擇,又因為C語言面向計算機底層,因此C語言的編譯器實現(xiàn)起來較為簡單。這就使得C語言廣泛應(yīng)用在異構(gòu)CPU的嵌入式領(lǐng)域。
C語言的接口最穩(wěn)定,幾乎所有的動態(tài)鏈接庫都提供C接口。
綜上所述,C語言最適合的領(lǐng)域時嵌入式領(lǐng)域和驅(qū)動開發(fā)領(lǐng)域,在這兩個領(lǐng)域中,對于性能的要求時錙銖必較的,因此,相對于運行性能的損失,編程效率上降低一些無所謂。
2.Java語言
java時Sun公司開發(fā)的一種高級編程語言。他是一種靜態(tài)的編譯型編程語言,運行在JVM上,JVM是一個虛擬機,擁有獨立的結(jié)構(gòu),獨立于CPU結(jié)構(gòu),因此能夠做到編譯一次,到處運行的設(shè)計目標。
java語言脫身于C語言,并且對C語言做了拓展,加入了強大的面向?qū)ο蟮睦砟睿^承、范型、接口等概念對于規(guī)范化編程擁有極大的促進作用。因為java嚴格統(tǒng)一了數(shù)據(jù)結(jié)構(gòu)的定義,因此不需要針對某個平臺細究細節(jié),又因為沒有C語言的指針概念,因此java是較為容易學習的。
java的成功不僅僅是由于自身語言的設(shè)計,因為java不只是一種編程語言。java是一種技術(shù),一種標準,他隨身帶著最大最豐富的標準庫。XML解析、數(shù)據(jù)庫鏈接、界面編程、圖像處理、服務(wù)器編程、手機編程,你想要的,java擁有一站式的解決方案。另外最為世界上最流行的編程語言,java的第三方類庫俯拾皆是。
java最成功的地方其實是他的語言風格,因為他的語言風格,大部分的程序員都能寫出較為不錯的代碼。然而即使程序?qū)懙暮軤€,只要他運行在JVM這個無數(shù)計算機科學家們優(yōu)化過的超級平臺上,也會獲得即時優(yōu)化的加成。
java最適合的地方是龐大的工程化項目,項目越發(fā)龐大,便越能夠體會到j(luò)ava標準化,規(guī)范化的好處。利用java面向接口編程,面向反射編寫動態(tài)程序,異常處理等。這些特性能夠讓整個項目邏輯清晰,接口清晰、模塊化、靈活,堅固穩(wěn)定等。不光java本身設(shè)計足夠優(yōu)秀,又有Eclipse等優(yōu)秀IDE的加成,java程序的編寫異常方便。然而java是不適合編寫隨手可用的小項目的,java設(shè)計的足夠繁瑣,足夠辨準,也正是這些極為標準范式化的特性,讓你在編寫程序的時候必須要深思熟慮的設(shè)計一個好用的架構(gòu),需要花費大量的時間精力來設(shè)計和彌補架構(gòu)缺陷。讓人感受不到編程的樂趣。
3.shell
shell是一種腳本語言,根植于unix系統(tǒng)。它利用少量的shell命令,將命令行工具組合起來,真實工作的其實是unix命令工具。對于unix、linux命令的人來說,他是得力的工具,能夠即用最少的代碼,完成大量的重復(fù)工作。非常方便。然而,他的缺點同樣非常明顯,那就是它只能在unix類系統(tǒng)上工作。在windows上就比較尷尬了。
shell腳本長于組合系統(tǒng)工具,因此對于大量重復(fù)性的工作,利用shell腳本能夠大大的提升工作效率。shell腳本的缺陷也是十分明顯的,由于缺失了通用編程語言的數(shù)據(jù)處理能力。程序結(jié)構(gòu)設(shè)計的問題等shell在編寫大型項目的時候,力不從心。
shell最適合的其實就是計算機日常工作中非常繁瑣且重復(fù)性的批量操作。這種任務(wù)隨手寫一個小腳本過去,方便極了。
4.Python
python是一種不擇不扣的高級語言,動態(tài)類型為編程語言帶來了極大的靈活性,簡單的語法非常易學,強大的C語言拓展機制,異常豐富的類庫讓它成為最火熱的腳本語言。
然而,缺點同樣明顯,因為足夠高級,動態(tài)類型的加入,python本身的運行效率堪憂。動態(tài)類型的加入,調(diào)試排錯效率較為困難。異常處理等內(nèi)容相對于java來說較為薄弱。非常不方便。
python支持面向?qū)ο缶幊蹋虼俗鳛榭焖僭驮O(shè)計非常不錯,因為python寬松語法,能夠讓思路真正流淌起來。利用python作出項目雛形,然后利用java和C++等重構(gòu)時一個不錯的選擇。
5.C++
作為一種高級編程語言,C++拓展了C語言,加入了面向?qū)ο缶幊蹋嗉?,范型,模版等。它本身時一種多范式編程語言,你可以利用它面向過程編程,面向?qū)ο缶幊蹋瘮?shù)式編程等。
C++語言在保留最接近C語言的運行效率的基礎(chǔ)上,增加的了面向?qū)ο蟮雀呒壋绦蛟O(shè)計方式。因此在游戲編程等領(lǐng)域使用較為廣泛。在這些領(lǐng)域中C++依靠它出色的運行效率與編程效率稱霸天下。