您好,登錄后才能下訂單哦!
網上看到有人問:自學javase也有段時間了,看過些基礎視屏,但是現在自己還是什么都不會,一點方向也沒有!之前發(fā)過貼也說過這個問題,很多前輩指導說去做小項目,可是自己在網上找的那些小項目,源碼都看的稀里糊涂的!
以下是我的回復
從看到你的問題,我就在想怎么說明白這件事。
有的人真心想幫像你這樣的人,
但并不知道怎么明白告訴你,給你指明白這條路。
像我這樣的人都是第一天摸到電腦編程就興奮得要死,
發(fā)現電腦能以另一種方法解決“課堂上學習數學時面對抽象符號不容易理解的問題”,
興奮得每天都在期待學校電腦課到來(一周只有兩個小時,我高中的時候)。
到底電腦編程有什么魅力?
當年高三學到“圓的計算公式”時我在想“電腦是怎么利用這個公式畫圓的?”
當時學到兩種方法:1.用“勾股定理”;2.用三角函數;
因為“勾股定理”容易理解,所以就先用它,但畫出來的圓一點不好看。
只好用三角函數,結合圓的公式重新寫一個,最終很完美的把圓畫出來了。
那幾天興奮得睡不著覺。
電腦編程最美的地方就是“能夠快速驗證你想的東西對不對”,
把你想到的方法的答案快速地回復給你,
它是最棒的“思路正確性自我檢驗工具”。
不只如此,
經過這么多年編程語言的演進,
使這個工具在具有邏輯性的同時,
提升利用數理邏輯解決問題的優(yōu)美程度。
編程的過程就是在享受這個東西。
愈晚期發(fā)明的編程語言,
在這方面的改進愈明顯。
因此“原則上”Java在這方面是勝過C和C++的(原則上哈!)
除非你要解決的問題非C/C++不能解決(比如對速度有很高要求,或者是系統底層編程),
否則應該盡量的選用較晚發(fā)明的編程語言(或者在這方面持續(xù)改進自己的語言,Java屬于這一種)。
說到這里,
似乎仍然沒有回答你的問題:學習Java的路該怎么走?
呃,其實說了,不知道你發(fā)現沒有?
學習編程的關鍵點就在這里:
利用這個“思路正確性自我檢驗工具”反復驗證自己學得如何。
比如學習JavaSE、學習面向對象,
你真的學會了嗎?到底掌握了多少?
你得反復用編程工具(比如Eclipse)編寫簡短的代碼,
運行驗證結果,
看看跟自己理解的有什么差異,
驗證自己到底懂得多少,
驗證自己懂的到底對不對。
只有驗證自己確實學會了一些關鍵點,
才應該不斷往更高深的部份學習下去。
你說“網上找的小項目的源碼都看不懂”
其實,大部份別人寫的源碼我也看不懂。
非得“很痛苦而且很用力看”最終才能看懂。
學習編程的過程并不是看一些別人寫的源碼就能成長快速的。
要成長快速,正確的方法是先沉下心花幾個小時把基本的語法看會,
然后在這個基礎上問問自己,
以目前學會的,能出什么題給自己,
應用目前學會的怎么解決它?
怎么快速驗證它真的被解決了?
還有沒有更好的解法?
說說當年的一件事:
當年在學校電腦室,第一次接觸多人共用的Unix環(huán)境,
雖然已學習DOS多年,
但面對Unix終端完全不知道自己要干什么?
怎么邁開學習Unix的第一步?
那時候我就像你現在一樣迷茫。
直到有個學長告訴我:你可以寫個程序,監(jiān)看當前有誰登錄系統。
當時我們Unix賬號就是我們的學號,
我用Shell腳本寫一個十多行的程序(花了我約3小時)在后臺運行,
每當有人登錄系統,我坐在電腦室最后一排,
立刻知道他/她是誰(用學號到學校發(fā)的通信錄查詢,就知道他/她的名字)
真是太有意思了。
那之后我一直不斷的想:我還能用Shell腳本做什么?
每天給自己想一個題目,
然后去找書(那時候Unix只有英文書喔,百度還沒出生)設法找到解法。
雖然啃英文書很痛苦,
但是跟找到解法解決想解決的問題并最終獲得成就感比,
那種痛苦不算什么。
比如Unix環(huán)境中有電子郵件系統(OK,現在電子郵件沒什么了不起,但那時候這東西剛出來),
我便想這電子郵件系統怎么把郵件從遙遠的另一臺電腦寄到這里的?
找了很多資料,都說用Shell腳本做不到,只有C能,
于是為了搞明白郵件系統是怎么實現的,
開始了學C的漫長過程。
現在我告訴你:Java能開發(fā)郵件系統,也能開發(fā)QQ系統,
你會不會想知道怎么做到的?
OK,你是初學者,別選那么難的題目開始。
但繞來繞去說那么多,
其實我已經告訴你學習Java的路該怎么走了,
不知道你發(fā)現沒有?
面對什么javase,javaee,swing,swt,SSH,.....
名詞一大堆,東西一大堆,
誰都會迷茫的。
要學的東西如同大海嘯,又高又大地在你面前向你涌來,
你怎么可能不手足無措?
一開始能力還很差,
只能解決簡單的問題,
想想自己要從解決什么問題開始,是件超重要的事。
如果像我今天這樣的能力,卻想怎么開發(fā)出登月火箭,那就是犯傻了。
我甚至想都不會去想怎么開發(fā)出飛機的飛控系統,
因為我的能力離解決這個問題,相差太遠。
你想學Java做什么?解決什么問題?
怎么給自己找到下一個問題?
從“怎么用幾行Java就能享受著看到電腦解決你的問題并回復答案”開始,
一步一步的走出去。
漸漸地代碼行多了,
就得想想怎么分配代碼行到多個方法、多個類中、多個文件中,
漸漸地能力有所增長了,
才開始想除了標準JavaJDK外,還要學什么?
簡單的說,下一步要學什么,
是跟“你想用Java來實現什么”相關的。
每個人都會跟你說要學javaee,SSH,swing,swt.....
雖然他們說的都沒錯,畢竟這些東西是時下最流行的,
但隨便敲幾個字告訴你要學這些東西,是不負責任的。
那些什么“語言不重要,思想才是重點”的話雖然是正確的,
但對于現在能力的你,這話就是屁話。
這世上多的是那些“隨口說出正確的結論,但其實對我們一點幫助也沒有”的人,
這些“只滿足必要條件,不滿足充分條件”的描述,
對學習東西沒有太大的幫助。
就像看過《笑傲江湖》的人都知道“無招勝有招”是最高境界一樣,
但如果你沒先讀過獨孤九劍的總綱,
再學過破劍式、破刀式、破.....式,
并且有老師一點一點的跟你講解劍理的重點,
并且跟田伯光、黑衣人等人練習過,
怎么達到“無招勝有招”的境界?
沒有體會到劍理并加以實踐,
“無招勝有招”就只能是街口流氓打架。
最后,要告訴你,這條路其實挺遠挺不好走的,
你覺得你真的適合進入這個領域嗎?
這一切是一點一點學會,一點一點進入的過程,
沒有幾年是不會有成績的,
你真的適合以編程為職業(yè)嗎?
你真得好好想想。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。