當前位置:編程學習大全網 - 編程語言 - 本人高中畢業,自學sql,java,很難,很難,書本裏的技術性很大,思維跟不上,怎麽辦?

本人高中畢業,自學sql,java,很難,很難,書本裏的技術性很大,思維跟不上,怎麽辦?

實踐就是最好的老師!

另壹個需要強調的是:

編程是壹種技能,就同學習外語壹樣,絕不可能“速成”!

在有了 10 年自學計算機技術的經歷和近幾年在高校講授程序設計系列課程的經驗之後,我壹直在思索以下幾個問題:

? 軟件到底是怎樣開發出來的?

? 編程是難還是易?有沒有能讓編程功力“暴長 10 年”的“武功秘笈”?

? 壹個有誌於成為優秀軟件工程師的人應該怎樣學習計算機技術?

? 用什麽方式才能讓許多學生很快地學會特定的計算機技術,而不用重復我和其他人所走過的彎路?

思索的結果就是大家所看到的這本書。

在我自己親身的學習與開發實踐中,逐漸形成了這麽壹個觀點:

編程其實並不難!

要編程並不需要到大學計算機系裏去學很多艱深的理論,經過適當的指導與訓練,壹個高中生就可以參加到軟件項目團隊中,並寫出具有相當質量水準的程序!

為什麽會有那麽多的人把編程視為很高深的東西?

為什麽我國那麽多的軟件企業深感合格的程序員是如此難找?

與此同時,又有與之完全對立的情況:每年有大批計算機及相關專業畢業生四處求職,卻處處碰壁,找工作成了壹件很不輕松的事情……

壹邊是真正合格的程序員人數很少,軟件企業都在喊急缺人才,而另壹邊是大量的學生畢業找不著理想的工作。這樣壹個怪圈為何會形成?

我想,造成這個怪圈有兩個重要的原因。

壹是學生學習方法與態度的問題。由於對軟件開發這壹工作本身缺乏正確認識,許多學生形成了壹種浮躁的功利型學習方法,表現為盲目地跟風學習各種當前流行的新技術,但大都只是三個月熱度,由於欠缺毅力和不具備紮實的理論與實踐基礎,對這些新技術無法深入把握,淺嘗輒止,“坐而論道”,討論時可以“滔滔不絕”,壹到動手則“原形畢露”。許多人沒有想過:現在流行的“新”技術,難道就會壹直“流行”下去?曾經風光壹時的 Foxpro 和 PowerBuilder ,國內曾有許多人(包括本人在內)投入大量的時間去學習與掌握,可沒過幾年,還有幾個項目是用這兩種技術開發的呢?所以,如果要“追”新技術,也只能去學預計兩到三年後社會急需的技術,這就需要學習者有超前的眼光。但軟件技術進步實在太快,很少有人能夠準確預測出幾年之後會流行什麽。所以,與其“臨淵羨魚”,不如“退而結網”,選擇壹項自己喜歡的領域,從理論到技術,紮紮實實地用兩到三年時間去學好它,在學習過程中培養出“捕魚”的本事。有了這種自我學習的基本能力與素質,還擔心出海捕不到魚嗎?

有壹些學生投入相當多的時間與金錢去參加種種有著各種動聽承諾的電腦培訓班,指望別人能夠幫助自己成為技術高手,卻不知真正的高手大都是“自學成才”!

更有太多的尤其是非計算機專業的學生,盲目地去考各種認證,不管是國內的還是國外的考試,只要有證,就有大批的人去參加。他們把應用計算機技術的能力簡單地等同於壹紙證書。當前的計算機等級考試就大有成為高校中第二個“英語四六級”的可能性。 事實上,妳向別人展示自己寫的壹個軟件作品,比給別人看壹堆各式各樣的證書更能說明妳的能力!

造成怪圈的第二個重要原因就是計算機教育問題。目前高校中的計算機教育並不能大批量地培養出合格的軟件開發者,學生在四年本科期間計算機理論學了不少,對培養編程能力卻重視不夠,缺乏實踐的結果是理論也掌握不好,學生的計算機水平被煮成了“夾生飯”。

除了在校的大學生,社會上還有大批的軟件開發愛好者,他們由於沒有機會系統地學習軟件開發技術,就采用自學和自我實踐的方式,結合自己的工作來應用學到的計算機技術。雖然他們沒有在校生的優越條件,但其中優秀人物的真實開發能力遠勝於正規高校計算機專業“科班”出身的本科生甚至是碩士生。這種例子已經很多了。

“職業選手”不如“業余選手”!

我自己是走“野路子”出來的,走的是以實踐為主導的自學之路,從親身實踐中深切感受到計算機科學本質上是壹門實踐性非常強的科學,不管是在校學生還是社會上的軟件開發愛好者,我的建議是:

我從 2002 年開始接觸 .NET 技術,並壹直研究使用至今,前前後後看了近百本國內外的 .NET 編程書籍,並寫了幾萬行的 .NET 代碼。在對 .NET 有了壹定的了解之後,我認為 .NET 技術是初學者學習軟件技術非常好的切入點,學習者可以壹步到位,直接學習目前主流的面向對象軟件開發技術,而不用按部就班,按傳統的先結構化編程再面向對象編程的順序去學習。

接著我思考的問題是:這本書該怎麽寫?

著名物理學家愛因斯坦曾經表達過這樣的思想:

學習時只需要掌握那些能讓思維導向深入的東西,而將其他無關的知識全部拋棄。

軟件技術本身有壹個龐大而復雜的體系結構,不分巨細地樣樣都想掌握,那麽只能是疲於奔命而終無所得。

為此,基於我自己的理解,在書中我將認為是最重要和最基礎的東西突顯出來,這些東西是必須掌握的,壹旦理解並掌握它們之後,讀者就掌握了“捕魚”的方法,自己就可以進壹步探索某壹領域內的其他技術點了。因此在書中不需對每個技術領域的每個技術點都“面面俱到”。

編程是有規律的,讀者能不能迅速成為壹名具備相當水平的程序員,關鍵在於對編程規律與必備知識基礎的把握程度。

最重要的是要掌握原理。在開發過程中所進行的各項具體活動與工作步驟,其背後都是有道理的,理解清楚了這些道理,在整個軟件開發過程中該做什麽,不該做什麽,先做什麽,後做什麽,也就心中有數了。

編了這麽多年的程序,我意識到其實學習軟件開發技術的過程就是壹個學會做事方法的過程。例如,在開發軟件時,要“分而治之”、“步步為營”、“先局部後整體”、“合理安排開發次序”、“養成良好的編程習慣”等,這不僅僅是程序設計的技巧,也是做好編程之外許多其他工作所需要的。

在學習與掌握軟件技術這壹過程中,可以鍛煉壹個人的許多基本素質,如思維周密、意誌堅強、學習能力、創新精神等。如果壹個人能在競爭空前激烈的 IT 業憑借著高素質站穩腳跟,那麽,可以很有把握地說,如果他轉向其他行業,同樣是壹個優秀的人才,也會闖出自己的壹番天地!

在許多計算機技術書籍中,出現了大量的技術術語,對於不熟悉這些術語的讀者而言,這無疑加大了閱讀的難度。對於這些計算機術語的表述,如果強調其在理論上的科學性與嚴謹性,則往往不易於理解,這在很大程度上限制了這些知識的傳播、普及和應用。因此,本書對這些術語大都采用了壹種通俗易懂的方式來表達,甚至使用了不少比喻手法來闡明其內涵。這種表達方式雖易於理解,但不免在科學性和嚴謹性上有所不足,讀者如果需要科學而精確的定義,請自行查閱相關的科技文獻。強調壹下,本書是壹本誌在普及軟件開發技術的專業書籍,與傳統的工程技術專著和計算機科學理論教材不同,閱讀時不要像中學學習數學壹樣,每個字都不放過,而應將重點放在形成對軟件開發過程的直觀理解和感性認識上。

對於壹個具體的軟件開發者而言,只有被理解了的知識才是真正有用的知識,無法理解的知識是毫無用處的。筆者寫書的主要目的是讓讀者能迅速地汲取書中所提供的知識,盡量做到 “用大白話講述復雜的技術” ,因此在文字上追求深入淺出,但是否真的做到了這壹點,還得由讀者來做出評價。

知識的獲取與掌握是有其客觀規律的,壹般而言,具體的知識易於理解,而抽象的知識則難於把握,在學習過程中,應遵循“具體 → 抽象 → 具體 → ……”這樣壹個無限循環的過程。

如果某人對壹門學科所知不多,卻指望他能通過理論學習迅速地把握這門學科,這就違反了人類認識世界的客觀規律。可惜的是,目前中國教育體制中普遍采用的讓學生重點學習抽象理論而忽視具體實踐的做法,造成了大批的學生既沒學好理論,也沒打好必要的實踐基礎。

我認為,只有建立在實踐基礎之上的理論學習才是真正有效的學習。因此在整個計算機技術的學習過程中,應該把開發實踐作為壹條主線,由它串起所有的計算機理論。如果把計算機技術中的各個子領域看做是壹個個珍珠,開發實踐就是那根把所有珍珠串成項鏈的絲線。沒有這根線,學習各門計算機課程得到的不過是壹顆顆零散的珠子,價值有限。

  • 上一篇:美國的微軟如何發展起來的?
  • 下一篇:數控車床如何區分G41和G42?
  • copyright 2024編程學習大全網