學習路線圖可以看動態節點,清晰專業。下面就來說說如何學習java。
1.1培養興趣
興趣是能讓妳堅持下去的動力。如果只是把寫程序當做謀生的手段,會活得很累,會自憐自艾。多關註壹些業內趣事,多想想蓋茨。我不是提倡天天做白日夢,但是妳覺得人沒有夢想有意思嗎?也許像許多當地農民壹樣,他們打麻將,喝功夫茶,崇拜財神。每個月都有幾萬甚至更多的賬戶,憑空產生了壹個“逐利階層”。妳覺得是這個味道嗎?有空去逛逛壹些程序員的論壇,妳會發現他們其實很樂觀很幽默,時不時會有智慧的火花。
1.2謹慎選擇編程語言
男人怕入錯行,女人怕嫁錯人。初學者在選擇編程語言時需要謹慎。軟件開發不僅僅是掌握壹門編程語言,還需要很多其他的背景知識。軟件開發已經不局限於少數領域,幾乎滲透到了各行各業的每個角落。
如果對硬件感興趣,可以學習C語言/匯編語言,進入硬件開發領域。如果熟悉電信行業知識和網絡,可以多花點時間在C/C++上,進入電信軟件開發領域。如果熟悉操作系統,可以學習C/Linux等,為Linux內核開發/驅動開發/嵌入式開發打下基礎。
如果想涉足應用最廣泛的應用軟件開發(包括電子商務電子政務系統),可以選擇J2EE或。網,甚至燈的組合。每個領域需要不同的背景知識。做應用軟件需要熟悉數據庫等等。簡而言之,妳需要根據自己的特點選擇合適的編程語言。
1.3要腳踏實地,快餐式學習不可取。
欲速不達。浮躁是現代人最常見的心態。能怪誰呢?可能是因為貧窮落後了這麽多年。現在的軟件公司,客戶,政府,學校,培訓機構等等都充斥著浮躁。以我熟悉的大連理工大學IT職業培訓為例。居然標榜“20多年的計算機職業教育,是遼寧省十強學校”,卻不知道中國只發展了幾年計算機,幾年軟件,居然還有很多學生報名,簡直是對全世界程序員的鄙視。大多數受過訓練的“程序員”都不知道什麽是OO和OP。如果社會環境就是這樣,我們改變不了,只能改變自己。市中心的寧靜是珍貴的。很多C++/Java的初學者沒有開始學習,就馬上用VC/JBuilder,用VC/JBuilder開發了壹個Hello World程序。他們爭先恐後地向世界宣布“我可以開發軟件”,並在簡歷上寫下“精通VC/Java”。結果去軟件公司面試,不是被打發走三兩次,就是被駁得體無完膚。直到到處碰壁我才知道,我拿起《C++編程思想》和《Java編程思想》認真研究起來。如果我知道這些,我為什麽要知道?
“現在講究簡單方便,以後的路會很長”,這似乎是佛經中的壹句勸誡。
1.4多練,練的更快。
彭端淑的《示子侄學》講述了壹個窮和尚和壹個富和尚的故事。
從前,在四川的邊境上有兩個和尚。壹個是窮人,另壹個是富人。壹天,窮和尚對富和尚說:“我要去南海朝聖。妳怎麽看?”富和尚說:“這裏離南海有幾千英裏遠。妳怎麽去那裏?”貧僧說:“我只要壹個水碗和壹個飯碗。”富和尚尷尬地說:“幾年前我就打算買艘船去南海,但現在還沒做成。妳最好不要去!”壹年後,富和尚仍然在籌錢租壹艘船,但窮和尚已經從南海朝聖回來了。
這個故事可以解釋為:任何事情,壹旦考慮好了,就應該馬上上路,不要等到準備好了再去做任何事情。如果在上路之前就準備好要考慮的事情,別人可能會捷足先登。軟件開發是壹門工程學科,重在實踐。軟件開發者說“君子動口不動手”是根本錯誤的。他們主張“先下手為強”,但不要怕。他們大多性格溫和,沒有暴力傾向,雖然有時候看起來像“比爾·蓋茨”。有資深專家認為,學習編程的秘訣是:編程、編程、再編程,我深表贊同。不僅要多練,還要練得快。當我們在閱讀壹本書的時候,不要等到妳完全理解了之後才敲代碼。相反,我們應該壹邊看書壹邊打代碼。程序運行的各種情況可以讓妳更快更牢固的掌握知識點。
1.5多引用程序代碼
程序代碼是軟件開發最重要的成果之壹,它滲透著程序員的思想和靈魂。很多人被《仙劍奇俠傳》中悲情的愛情故事感動,悲劇的結局更是美不勝收。為什麽會以悲劇收場?據說寫仙劍奇俠傳的程序員失戀了,安排了這樣的結局。他把自己的感情融入到了遊戲中,卻讓很多劍迷感嘆。
參考許多代碼示例。對於Java,有參考文獻[4.3],API類的源代碼(JDK安裝目錄下的src.zip文件),也可以研究壹些開源軟件或框架。
1.6強化英語閱讀能力
對於學習編程來說,英語不是必須的,但也不能壹點都不懂。至少像Java API文檔(參考文獻[4.4])這樣的東西應該是可以理解的,甚至是猜測和混淆的;打開旁邊壹個“金山詞霸”。妳看得越多,妳就會變得越熟練。邊學Java邊學英語,壹舉兩得。另外,很多軟件需要從英文網站下載。妳應該能找到他們。這些都是最基本的要求。好的英語對妳的學習有很大的幫助。如果妳英語說得好,妳就有更好的機會進入管理層,然後妳就可以成為剝削程序員的“周扒手”。
1.7萬非要問別人。
在Martix和Java論壇的在線輔導系統中解決學生問題時,筆者發現大部分問題只要學生稍加思考就能解決。在咨詢他人之前,妳應該回答以下問題。
妳在谷歌上搜索解決問題的方法了嗎?
妳查過Java API文檔嗎?
妳查過相關書籍嗎?
妳寫過代碼測試嗎?
如果答案是“是”,而且還沒有找到解決辦法,再去問別人也不遲。要知道,獨立思考的能力對妳來說很重要。要知道,程序員的時間是寶貴的。
1.8多讀好書
顏如玉在書中。比爾·蓋茨是壹個博覽群書的人。雖然沒有讀完大學,但比爾·蓋茨九歲的時候就已經讀完了所有的百科全書,所以他精通天文、歷史、地理等等。弗朗茲不僅是當今世界上金錢上的首富,也是知識上的首富。
我經常在給學生上課的時候給他們推薦書籍。後來有學生不忍心抱怨“天啊,我什麽時候才能看完這麽多書?”以及“學軟件開發讓我覺得自己像個小偷。”這時候我的回答壹般是“別急,我什麽時候給妳看我的書房?到現在,每個月花在技術書上的錢在400元裏,在軟件開發者中也只是中等水平。”學生當場暈倒。(註:這部分學生是剛學軟件開發的)
使用合適的工具
工欲善其事,必先利其器。軟件開發包括需求收集和分析、建立用例模型、建立分析和設計模型、編程實現、調試程序、自動測試、持續集成等各種活動。沒有工具的幫助,可以說是無法前進的。工具可以提高開發效率,讓軟件質量更高,bug更少。結合雙手的武器。飛花摘葉能傷人的境界很高。不出招幾乎不可能贏,手裏有劍,心裏有劍。
2.軟件開發學習路線
兩千多年來,儒家、孔孟、中庸深入骨髓。它既不激進也不保守,不是中庸之道。而是為了找到學習軟件開發的正確路線和規律。
就軟件開發人員的職業規劃而言,我們大致可以分為三個階段:軟件工程師→軟件設計師→架構師或者項目管理師。不想當元帥的士兵不是好士兵,不想當架構師或項目管理師的程序員不是好程序員。我們應該試著往上走。我們先梳理壹下開發應用軟件需要學習的主要技術。
A.基礎理論知識,如操作系統、編譯原理、數據結構與算法、計算機原理等。,都不是不重要的。如果妳不想成為壹名計算機科學家,妳可以采取“需要時學習”的原則。
B.壹種編程語言,現在基本上是面向對象的語言,Java/C++/C#等等。做WEB開發的話,就得學HTML/JavaScript之類的。
C.壹種方法論或思想現在基本上是壹種面向對象的思想(OOA/OOD/設計模式)。由此產生的基於組件的開發CBD/ AOP等等。
D.關系數據庫,如ORACLE/SqlServer/DB2/MySQL等。
E.提高生產力的IDE集成開發環境JBuilder/Eclipse/VS.NET等。
F.壹個UML建模工具,用ROSE/VISIO/ pen建模。
G.軟件過程,RUP/XP/CMM等。,通過軟件過程組織軟件開發的許多活動,使開發過程專業化、標準化。當然還有其他的軟件工程知識。
H.了解項目管理、架構和框架。
正確的路線應該是:B → C → E → F → G → H。
還需要補充幾點:
1).A和C需要補充的是,要在實踐中逐步了解編程理論和思維。雖然新技術不斷湧現,但更新速度令人眼花繚亂;但是編程理論和思維的改變是非常緩慢的。掌握編程理論和思維會讓妳有壹種清晰的感覺。目前,面向對象思想相當關鍵,也是強有力的技術之壹。妳需要投入更多的時間在上面,回報會讓妳大吃壹驚。
2).對於數據庫來說,是自主學習,所以時機由妳決定。
3)編程語言是學習軟件開發的主線,其余為輔助線。
4).軟件工程師專註於B、C、E、D;軟件設計師關註B、C、E、D、F;架構師關註C、F和h。
3.如何學習Java?
3.1 Java學習路線
3.1.1基本語法和Java原理
基礎語法和Java原理是基礎,基礎不穩固,就像在沙子裏建摩天大樓,相當危險。學習Java也是如此。妳必須有紮實的基礎,這樣妳才能精通J2EE和J2ME。參加SCJP(Sun公司認證的Java程序員)考試是壹個很好的方法。原因之壹是為了交1200元的考試費,妳會更加努力的學習。另壹個原因是SCJP考試可以讓妳打好紮實的基礎,這就需要妳像JDK壹樣熟悉Java的基礎知識。但妳千萬不要以為考過SCJP就很了不起,就能贏得軟件公司的青睞,拿高薪。這種想法也很危險。拿到“真實”的SCJP只能證明妳的基礎還過得去,但離實際發展還有很長的路要走。
對3.1.2 OO思想的理解
在掌握了Java程序的基本語法和運行原理後,就可以實現Java語言中面向對象的思想。面向對象是壹種方法論;它是獨立於語言的編程思想;它是CBD基於組件開發的基礎;屬於強勢技術之壹。當妳以後由於工作需要轉到其他面向對象語言的時候,妳會覺得特別熟悉和親切,學習就像喝涼水壹樣簡單。
用面向對象的思想進行開發的基本過程是:
●調查和收集需求。
●建立用例模型。
●從用例模型中識別分析類以及類之間的靜態和動態關系,從而建立分析模型。
●將分析模型細化為設計模型。
●用特定的技術來實現。
●測試、部署和總結。
3.1.3基礎API的學習
在開發軟件的時候,並不是所有的功能都需要實現,這就是經典的說法“沒有必要多此壹舉”。我們可以使用現成的類、組件和框架來構建我們的應用程序。比如SUN公司寫了很多實現壹些底層功能的類,還有我們下載的JAR文件中包含的類。我們可以調用類中的方法來完成壹些功能或者繼承它們。那麽這些類中提供了哪些方法供我們使用呢?該方法的參數數量和類型是什麽?類的構造函數需要參數嗎?太陽公司的工程師不可能打個國際電話甚至漂洋過海告訴妳怎麽用他寫的類。他們只能提供文件給我們看。Java DOC文檔(參考文獻4.4)就是這樣壹個文檔,可以說是程序員之間的交流文檔。
基礎API是指實現壹些底層功能的類,比如字符串處理/輸入/輸出等等。我們又叫它類庫。熟悉API的方法壹是查Java DOC文檔(參考文獻4.4),二是使用JBuilder/Eclipse等IDE的代碼提示功能。
3.1.4學習特定API
Java涉及的領域很廣,不同的領域有不同的API。沒有人熟悉所有的API,但普通人只熟悉工作中要用到的API。如果妳做界面開發,那麽妳需要學習API比如Swing/AWT/SWT;如果開發網絡遊戲,需要對網絡API/多媒體API/2D3D等有深入的了解。如果做WEB開發,需要熟悉Servlet之類的API。總之,妳需要根據工作的需要或者興趣的發展方向來選擇學習壹個具體的API。
3.1.5開發工具的使用
在學習基本語法和基本面向對象概念時,從訓練語言能力的角度出發,我們推薦使用Editplus/JCreator+JDK。此時不要急於使用JBuilder/Eclipse等集成開發環境,以免過於關註IDE的強大功能,分散對Java技術本身的註意力。過了這個階段,就可以熟悉IDE了。
程序員的日常工作包括很多活動,如編輯、編譯構建、調試、單元測試、版本控制、維護模型和代碼同步、更新文檔等。幾乎每個活動都有專門的工具。如果妳獨立使用這些工具,妳會很慘。妳需要在布滿工具的任務欄上不斷切換,效率低,容易出錯。在JBuilder、Eclipse等IDE中,編輯器、編譯器、調試器、單元測試工具JUnit、自動構建工具ANT、版本控制工具CVS、DOC文檔生成和更新都已經自動集成,甚至可以集成UML建模工具,並提供豐富的向導幫助生成框架代碼,使我們的開發更加容易。應該說,IDE的發展趨勢是集成幾乎所有軟件開發中使用的工具。
從開發效率來看,使用IDE是必經之路,也是從壹個學生向職業程序員過渡的裏程碑。
Java開發中使用的ide主要有Eclipse、JBuilder、JDeveloper、NetBeans等。Eclipse和JBuilder的市場份額最大。JBuilder是近年來Java集成開發環境的霸主。它是由備受程序員推崇的Borland公司開發的。在硝煙彌漫的Java IDE大戰中,JBuilder憑借快速的版本更新,擊敗了IBM的Java視覺時代,立下了汗馬功勞。IBM在Visual Age for Java已經無利可圖,於是幹脆貢獻給開源社區,成為Eclipse的前身。真的叫“又壹個前途光明的村子”。浴火重生的Eclipse以其開放的插件擴展機制和免費開源贏得了程序員(包括幾乎所有的鐵桿程序員)的青睞,發展潛力巨大。
3.1.6學習軟件工程
對於小項目,妳可能認為軟件工程沒有必要。隨著項目越來越復雜,軟件工程的必要性就會體現出來。參見“軟件開發的學習路線”壹節。
3.2學習要點
在既定的學習路線之後,我們還需要總結壹下Java的學習要點,這些在之前的文章中或多或少都有提及,但筆者認為這些地方要特別註意總結。