編程語言--進階之路


如果想成爲一個好的程序員,甚至架構師、技術總監等,顯然只精通一種編程語言是不夠的,還應該在常見領域學會幾門編程語言,正如我們要成爲高級人才不僅要會中文還要會英文,甚至還要會德文、俄文一樣,其實是每一種語言都給人另一種思維方式,編程語言也一樣。

彙編語言

   每種架構CPU都有自己的彙編語言,如果不涉及很底層的修改,瞭解X86的即可,理解一下機器語言的工作方式,便於優化核心代碼。

C

  幾乎適用於各個領域,應該是目前用途最廣泛的編程語言(開發人數不是最多,但涉及到的領域、項目數量應該是最多的,目前尚沒有數據支撐這一點)。本人接觸到的第一門編程語言,除了C++也是最喜歡的一本編程語言,非常美的語言,無論從其語法、編程思想、運行效率、靈活性等都有着無五倫比的優勢,雖然沒有直接支持面向對象的語言特性,但很多項目也將面向對象的思想應用於C語言應用的開發。C語言出生40餘年仍然風糜世界,並被大量應用於各個領域、各種項目,這本身就是一個奇蹟,包括後來的C++、Java、C#、Javascript 等等衆多主流的編程語言都深受其影響。

    學好C語言本身其實並不難,但C語言是與操作系統近距離工作的一種編程語言,由於其運行環境的複雜性導致了寫好它必須先熟悉其環境,所以要求編程者對操作系統乃至硬件都要非常熟悉,所以學C語言的人感覺學好C語言很難,其實是用好C語言太難。比如指針,其實不是指針本身比較難,而是指針用不好會導致系統內存的破壞,破壞運行環境,所以會讓程序員感覺指針很難。

C++、

 鑑於它是C語言的超集,基本包括了C語言的所有特性(C99標準),得益於C語言的廣泛應用,幾乎適用於各個領域,各種操作系統平臺,也是個人認爲最難的一種編程語言,但一旦精通之後再稍加學習其它語言很容易,基本無敵。其難在於功能強大與靈活,學好它的難度就是:C語言的難度+C++面向對象特性+面向對象編程。C++是本人最喜歡的編程語言,其學習過程是漫長的,但一旦精通了C++,學習其它任何語言都非常快,它貫穿了從硬件到對象的整個過程,學會了很容易讓人看透編程語言的所有內幕。

Visual Basic (.Net)、Delphi

Windows上的快速開發語言,特別是對於界面比較多的應用,開發速度很快。其實C++ Builder也把擴展了一下C++也可用於快速開發,但自從有了C#以後,搶佔了很大一部分RAD的市場,用的人也少了。

Java、C#

二者都可算是比C/C++更高一級的編程語言,一般不直接編譯成機器碼,需要通過虛擬機或類似虛擬機的運行時來運行,可以實現跨平臺。他們與C/C++的不同之處就在於他們的編譯過程分爲兩個階段:編譯和運行時編譯,其實第一次的編譯並不是直接生成機器碼,而是生成一種便於編譯成機器碼的中間代碼,在實際運行的時候再通過所謂的運行時編譯器(Just-In-Time Compiler)根據需要將中間代碼編譯成機器碼並執行,實際上第一次編譯更準確一點說是翻譯。

Java運行之廣也是無人不知無人不曉,但其缺點在於對UI的支持不太好,無論在哪個平臺做的界面都不太好,特別是在Windows上,用Java實現界面的應用很少;C#是微軟.Net戰略的主要語言,也可以實現與Java一樣廣泛的應用,包括桌面應用和WEB應用,而且對UI的支持那是剛剛的。雖然C#在Linux陣營也有Mono項目,雖然該項目Novell主持,但開源項目哪能像微軟一樣給力,實際應用非常少,所以C#的跨平臺平不理想,僅限於微軟的Windows系列(包括移動應用)。

Javascript、ActionScript

  WEB開發前端腳本,特別是AJAX被作爲一個專有名詞提出來之後前臺腳本已經不單單是進行一些簡單的輔助,而成了WEB UI的主要實現形式,並且產生了很多流行的框架項目,如ExtJS、JQuery、Dojo等。這些語言與前面幾種編程語言不同之處還在於其弱類型特性,屬於動態語言,設計思想與前面幾種有些不同,雖然都支持面向對象但其實現方式稍有不同。學習它們會拓寬思路,幫助我們更深刻地理解編程語言。

shell、VB Script、Python、Perl、Ruby、PHP、TCL

腳本語言,特別是shell、VS Script屬於輕量級的腳本語言,一般只用於批處理(雖然它們可以完成非常複雜的功能),尤其是shell(準確地說shell不是一種編程語言,由於該語言是它專屬,暫以代之);特別是shell應用範圍最少,而後面的四種除了可用於批處理,還可以用於WEB編程,而且Ruby用於WEB開發已經非常流行。

其中Python是本人比較喜歡的一種,它把程序的可讀性要求提高了一個檔次,把代碼的縮進列入了語法範疇,這應該也是編程語言的趨勢,以後可能將註釋的添加也列入註釋範圍,比如對每一個類、每個函數必須填寫相應的註釋,否則編譯不通過,這樣有助於更好地統一、執行一個工程編碼的規範。

Lua、Matlab

屬於小衆的編程語言,Lua有一個嵌入式腳本引擎,非常輕量級;Matlab的所謂M語言與Lua類似,它是Matlab專用的腳本語言。

不同的領域都有一些專門的腳本語言,真的希望這些語言能夠是一種。

XML、HTML、XSLT、CSS

這些語言又是另一種類型的編程語言,這些語言通過標記來表示,特別是XML、HTML是一種靜態的標記語言。而XSLT則可以有動態之意,屬於XML的一種派生語言,可以將XML文檔轉換成其它格式的文本文檔這使得數據的展顯非常方便,XML用於表示數據,通過不同的XSLT表現爲不同的樣式。

嚴格來講CSS不應該算作一種編程語言,但它的確通過與HTML配合可以實現類似XSLT的效果,只是它暫時未從HTML中獨立而已。

Verilog、VHDL

硬件描述語言,用於集成電路設計。它們也是編程語言,只是它編譯後的產物不是類似CPU執行的指令那樣的程序,而是對執行機構進行改造、重組的方案。


LISP、Haskell、Erlang

函數式編程語言,它們將電腦運算視爲數學上的函數計算,並且避免狀態以及可變數據,是另一種編程範型,又是一種編程思路。


    編程語言遠遠不止這麼多,也並不是一個程序員要精通這裏所說的所有編程語言,個人認爲每一類都應該熟悉一種,至少了解其編程思路,並達到可以讀懂的程度,而對於一些重要的編程語言,應該掌握,不僅要會讀還要會寫包括:C、C++、Java、C#、JavaScript等,但根據自己的工作領域不同可能的側重不同,視實際情況選擇瞭解其它編程語言。

SQL

數據庫必備,雖然標準是有,但不同的數據庫還是有自己的一些特性,或者實現標準不完整,比如Cybase、DB2、Oracle、MySQL、SQLite、SQL Server等等,但只要掌握了標準的SQL,用其它語言的時候也只需要一個簡單的手冊而己。

    《程序員修煉之道》裏不也建議每年學習一門編程語言嘛,十類編程語言,十年寒窗,程序員的漫漫修煉之路。

後:   

  首先,感謝各位網友的討論,可能標題爲“掌握”不太準確,已經改爲“熟悉”。

   這裏列的編程語言並不是每種都需要“精通”,那絕對是不可能的,而且我也還從來沒有理解什麼樣的程度叫“精通”。根據每個人的所有領域不同使用的主要語言也不同,工作用的語言肯定是需要“精通”的,除了工作用的語言,必須要掌握的語言有:C++(包括C)、Java或C#、SQL、Javascript,需要熟悉的:perl或python、XML,其它的可以根據興趣或應用領域選擇。
  實際上,掌握了這些語言後已經從一個初級程序員變身爲高級程序員,在學習過程中對設計模式、算法、操作系統、微機原理等知識的涉獵基本達到了一個初級架構師的水平,如果自己的溝通能力、創新能力、管理能力等素質夠硬還可以做到CTO的職位,這也是本人推薦的程序員的成長技術路線。

  編程語言其實只是個工具,什麼時候用哪個工具,如何用好每個工具非常重要,這裏蘊含着很多知識、技能、思想。每學習一們編程語言,學習的不是語法,而是編程語言的精髓,解決問題的思維,重在思想。


轉載自:Nocky;http://blog.csdn.net/nocky/article/details/8035374

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章