一個好的程序員不能把自己綁定在一種語言上,不能把自己就定義為JAVA程序員,C#程序員,等等。語言沒有高下之分,只有適用的場景。好的程序員,應該有很快學會一種新的語言,並解決實際問題的能力。在我二十年的程序生涯中,有過不止一次,因為項目,一兩天學一種語言的基本語法,然後邊Google函數和庫用法,邊完成項目,然後項目完成後就扔一邊的經歷。
但是學習的順序卻是有跡可循的,我們可以根據不同的重要程度來選擇自己想要學習的語言,接下來我們就來談談C#、C++、Java、Python四種語言學習的優先程度。
作為一個20年的老程序員來回答一下。
1998畢業,現在自己做一家IT公司,依然喜歡寫代碼。
工作這麼多年,正式項目用過的語言有:Pascal/Delphi,dBase/FoxBase,FoxPro,VB,VBScript,JavaScript,COBOL,C/C++,Lua,Java,C#,各種數據庫的SQL。
最早學的是Pascal,大學裡面學數據結構用的,畢業以後用delphi寫了一個小項目,然後再也沒有用過。
dBase/FoxBase也是學校裡面學數據庫的時候教的,然後畢業以後用的是FoxPro,也是做了一個小項目,後面基本就沒用了。
VB/VBScript作為主力語言,從1998年用到2002年,對,那時候做ASP。也用VB寫過還算有規模的EXE的項目。至今書櫥裡面那本《VB5金典》依然保佑一席之地。VB做快速開發真的很好用。然而就壓根沒看過。那已經不是VB了。
因為Web開發基本上沒有斷過,JavaScript一直陪我到現在。
COBOL是原來在對日外包公司工作的時候,接了日本一個野村證券的項目,居然是COBOL,然後,作為新技術研發部的負責人,當仁不讓上了。邊學邊做項目,做完就扔了。
C是從開始編程就學的,斷斷續續用一點點,2003年做銀行項目的時候,用IBM小型機,Tuxedo中間件,然後只能用C/C++語言編程(那個時候銀行還不怎麼接受Java)。然後自己開始創業,做游戲,用OpenGL做了一個游戲引擎,跨平台的那種,一次編寫,Windows、Android、iOS都能跑。C++寫的。中間嘗試了一下Lua,寫了兩個小游戲,覺得對程序的掌控能力還是比C差遠了,就放棄了。
最後就是Java和C#這對雙子星,是用的時間最長,做過項目最多的。C#是從2001年開始,beta版本開始學的。記得第一個項目是2002年6、7月的樣子吧,那時候公司接了一個比較大的Web項目,本來是准備用ASP做的,結果那時候我正好在學C#,然後看了一下說是10月份會發布正式版(時間大概是那樣吧,年數長了,記憶有點模糊),然後仗著自己是項目負責人,外加老板不懂技術,就擅自決定用C#來做。項目做完大概是10月份,在項目上線的前幾天,微軟發了正式版ASP.Net1.0,項目有驚無險的上線了。現在想想有點作死的感覺。如果微軟把.Net正式版的發布時間往後推一個月,很難想象老板會拿我怎麼樣。
Java差不多跟C#同時學的,然後一直做啊做,從EJB做到SSH,再到Android。那時候年輕,學習的精力旺盛,然後覺得C#和Java似乎差的不是太多。
PHP看過,沒用過。Python看過,沒用過。還有Ruby,看過,沒用過。我說看過的意思大概就是寫過Hello World,但是沒有拿來做過項目。
我是真的喜歡寫程序,所以有什麼新奇的東西,都喜歡拿來跑一跑。
然後說說對編程的看法。
首先,我認為,語言沒有高下之分,只有應用場景之分。作為一個技術決策者,拿到任何一個項目,首先第一個考慮的,不是怎麼做,而是用什麼做。如果你拿到的是一個Web項目,我認為,在很多情況下,JSP、PHP、甚至Node.js基本上都是等價的,應該都能夠很好的完成項目的開發,選擇什麼技術開發,看自己所擁有的資源禀賦和具體情況。如果手下一幫弟兄都是搞Java的,當然JSP啊,如果手下小弟都是做C#,當然啊。當然,項目有特殊要求的除外,比如,如果甲方是銀行,那估計就沒法用了,如果是有客戶端的項目,當然C#+WinForm啊,如果是做安卓,當然Java啊。
其次,作為一個好的程序員,應該至少會三種以上語言,這樣你能夠充分接受不同語言的風格,更關鍵的是你會去關注不同技術社區的討論,開闊眼界,對編程的本質會有更深刻的體會,然後你會覺得,看任何語言都是差不多的。我經常對公司的技術人員講,要用Java的編程思想來寫C#的代碼。這是不同技術社區的風格體現出來的。在Java的社區,你能看到更多的對模式、框架的討論,而微軟雖然自己做的東西很講究模式和框架,但似乎更喜歡做好一堆全家桶給你,讓你去做快速開發。
第三,對各種語言的感受,寫起來最爽最有成就感的當然是C,那種一切盡在掌握的感覺是很奇妙的。不過我現在公司沒有C/C++程序員了,因為公司不做游戲了,我也有起碼5年沒碰C了。我最喜歡的還是C#,我很崇拜安德魯,C#的語法和機制真的設計的很精妙:泛型、delegate/event、Attribute、Lamda表達式、函數式編程,總覺得這個語言的設計給人一種特別的精致美感,能滿足我對一門好的語言的所有的想象。自從.Net Core以後,跨平台也不是問題了。相對Java來說,我更喜歡C#。當然,我是不會排斥Java的,只要做Java能賺錢。
第四,我覺得數據結構真的非常重要,如果你想成為高手的話。在學校裡面,一定要把這門課反反復復的學習。當然,如果你只想做做Web開發,寫寫網頁的話,當我沒說。
最後,對計算機專業的學生來說,我認為,在大學就是要打好基礎。語言的東西真的不難,所有語言的編程思想都是想通的,語法其實也都大同小異,無外乎順序結構、循環結構、分支結構。不用太焦慮應用型的開發,這些東西其實學起來是很快的。重要的是基礎。C語言是必學的,學好C,讓你對計算機的原理(數據結構、寄存器、內存、硬盤讀寫等等)有更深刻的認識。然後,為了工作,學學Java,學學C#。數據結構、編譯原理這樣的課程,當你工作年限變長,開始寫架構、開始做性能優化的時候,你會覺得特別有用。當然,最開始的簡單開發任務基本上用不著。不過,不想做高手的程序員,當然不是好程序員,是吧?
還有,其實我是非常建議,作為程序員,C#是必學的,不是因為我個人喜歡C#,是因為,實際上,按照我的習慣,在做項目的過程中,我經常會寫一些小工具,而這些小工具,很多時候當然都是寫成exe啦,所以,一般我都會選擇用C#來寫。
以上就是一名工作了20年的老程序員的感言,大家可以根據他的回答,來排序自己的時間學習。
文章來源:網絡 版權歸原作者所有
上文內容不用於商業目的,如涉及知識產權問題,請權利人聯系小編,我們將立即處理