永恆的珍珠紅
學習編程基本上有兩種情況,一種情況是處於愛好,另一種情況是工作需要,簡單的說就是業餘組和專業組的區別。不同情況的學習路線是完全不同的,下面分別進行闡述。
專業從事軟件開發的學習路線
計劃從事專業軟件開發的準程序員需要有一個系統的學習過程,給出以下學習建議:
首先要選擇一門編程語言,建議從Java、C、Python、PHP這幾門語言中選擇一個,這幾門語言是目前程序員廣泛使用的語言,具有大量的用戶群和豐富的解決方案。制定一個系統的學習計劃,以Java為例需要按順序掌握如下內容:Java基本語法、面向對象編程過程、Java操作數據庫、Java網絡編程、Java分佈式編程、Web編程、SpringMVC(框架可能需要多學一些)。
選擇一個數據庫產品深入學習,建議從Oracle、MySql兩個數據庫產品中選擇一個,原因有兩個:一個是與Java的兼容性好,另外一個原因是這兩個數據庫產品有廣泛的用戶基礎。制定一個系統的學習計劃,以MySql為例需要掌握如下內容:MySql安裝、建庫、數據類型、建表、查詢、排序、數據過濾、通配符和正則表達式的使用、數據處理函數的使用、數據分組、關聯表創建、組合查詢、數據插入、數據更新、數據刪除、創建和使用視圖、創建和使用存儲過程、遊標的使用、觸發器的使用、事務管理、安全管理、國際化、數據維護和優化。數據庫內容較多,作為程序員來說數據庫是必須掌握的重要內容,需要深入系統的學習。
選擇一個Linux系列操作系統,建議從CentOS、Ubuntu、Redhat三個產品中選擇一個,這三個版本的Linux有廣泛的用戶基礎和較好的性能。作為程序員無論使用C、Java還是Python或PHP基本上都需要跟Linux系統打交道,因為大部分程序後臺的部署和運行環境都是基於Linux系列操作系統,學習Linux系統對專業程序員來說是必修課。
有良好的數學基礎,建議學好線性代數、概率論與數理統計、離散數學(組合數學)、高等數學、算法導論(很重要)這幾門課程。程序開發問題說到底就是數學問題,簡單的說程序就是算法和數據結構的結合,把程序分解開無非就是代碼、算法、數據三個部分。所以掌握算法是掌握程序開發的核心環節,無論是做大數據、機器學習、雲計算還是物聯網、工業控制這些都離不開算法,所以專業程序員要有一個良好的數學基礎。
最後一個建議就是做大量的實驗,學程序設計離不開實驗,尤其是專業程序員更離不開大量的實驗。早期可以做一些小實驗來驗證一些概念和想法,後期要參加到實際的項目組中進行實習,只有接觸到了真實的需求才能有質的提高。
業餘愛好編程者
愛好編程的朋友可能並不需要從事專業的軟件開發工作,所以在學習編程的過程中可以按照自己的興趣愛好進行選擇。對於這部分初學者建議有以下幾點:
語言的選擇上可以很寬泛,可以從HTML、JavaScript、Python、PHP等語言中進行選擇,因為這幾門語言比較簡單,學習時間短、上手快、環境搭建簡單但是功能卻很強大,比如Python雖然是一門腳本式語言,但是在機器學習和大數據領域有廣泛的應用,對於初學者來說它還足夠簡單和明確,所以是一個好選擇。當然,如果選擇別的語言,比如Java或者C語言也可以,只是學習時間上比較長。
不需要按步驟系統學習,可以直接學習案例,比如直接學習編程200例這樣類似的書籍,裡面的小例子很豐富,做起來也十分有趣。
不需要學習Linux系列系統,也不需要系統學習網絡和數據庫知識,甚至不需要有數學基礎。很多編程愛好者做的程序大部分是處於興趣愛好,對數據結構沒有嚴苛的要求,程序大多也是基於管理方面的內容,所以對數學等專業內容並沒有多少涉及。
要重視實驗,初學者在學習過程中一定要一邊學習,一邊實驗,作為愛好並不需要去專業團隊進行實習,也沒有必要找專門的老師進行指導,完全可以通過網絡或書籍進行自學。如果條件允許,也可以找專業程序員進行指導,這樣學習起來會更容易一些。
IT人劉俊明
十多年的編程生涯,有一些自己的理解,和大家分享一下:
認清這個行業
如果你學習編程,是想以後從事編程工作的話,你要清楚的認識到:
編程只是一個很普通的職業,就跟建築行業蓋房子一樣,有房地產開發商,也有設計房子的建築工程師,而更多的是底層動手蓋房子的。
編程也一樣,如果只會別人讓你幹啥你就幹啥,那麼敲代碼和搬磚的性質差不多。
還有大家都認為程序員的工資很高,和其他的行業一樣,高薪只屬於部分人,而很多程序員的工資都是被平均的。
在這個金字塔形的行業等級分佈裡,只有不斷的往上爬,才能獲得更高的回報。
如果你下決心選擇這個行業,請繼續往下看,當然如果你只是把編程當成興趣愛好,當然也可以往後看看。
一些建議
打好基礎,有很多課程,感覺學起來沒有什麼用,比如計算機原理、數據結構等,看起來很編程沒有什麼關係,但是計算機學習是分層的,這些都是最下面的基礎課程,也相當於修煉的“內功”。
選擇一門編程語言之後,要不斷地寫,不斷地練。總看書,是寫不出代碼的;總看視頻,也是寫不出代碼的。
筆記很重要,要不斷完善自己的代碼倉庫。
英文你可以不會聽、不會說,但是你必須會看英文文檔,這個不要怕,有個高中英文基礎足矣,多看看就熟練了,每天堅持看半個小時,有一個月就差不多了。
眼光不要只侷限於身邊的同事,技術不要只侷限於公司的項目。
有些事情必須不斷的練習,比如盲打(這個不擔心你們,基本每個人都在網上聊天的時候學會了盲打)、熟悉IDE快捷鍵等等。
業務能力很重要,業務能力很重要,業務能力很重要;我當時就吃了這個虧啊。
當你技術能力達到一定程度的時候,可以多開開主流開源框架的源碼。
不要一門心思只搞編程,該吃吃該睡睡,多鍛鍊身體,該談戀愛就談戀愛。
希望我的回答能夠幫助到你!
會點代碼的大叔
如果是出於愛好,那麼可以通過愛好驅動。由淺入深的一步一步腳踏實地的學習。首先可以培養邏輯思維能力,這個可以在平時生活中刻意的去鍛鍊。然後根據需求選擇一門適合入門的語言進行學習,比如說python,並配合入門書籍進行基礎語法的學習和練習。掌握了基礎語法和語言特性後,可以開始學習數據結構和算法,配合著leetcode進行會有比較好的效果。最後就是自己做一些項目來鞏固學習和學以致用了。
如果是想把編程作為謀生手段,又想要儘快上手的話,那麼就找個相對比較靠譜的培訓機構進行培訓吧。不過培訓只是勉強帶你入門,以後在工作中還是要不斷的充實和完善自己的知識體系,數據結構是必不可少的,還有操作系統相關的知識。
無論是那種情況,都需要持之以恆的學習和進步。祝你在編程學習上天天有進步,早日成為大神。
落北117
作為一個過來人,真心給你幾點建議吧
1、興趣很重要
興趣才是最好的老師,我當時大一學習語言的成績可以說是班裡名列前茅的,就是憑著自己的極大興趣,以及自己課外的很大一部分時間,跑實驗室(學校一般都有開放性的實驗室),不斷寫代碼
2、筆記
你不可能記下所有老師講的知識點,好記性不如爛筆頭,筆記記了也不是用來擺設的,自己平時上課、業餘時間去實驗室寫程序時,都帶著
3、課堂任務百分百完成
老師的講課,需要自己全部消化掉,課上消化不了,課外消化(當然了,還得自己有興趣和學習慾望,才能有自己對課外時間的安排)。老師們一般也會高一些難度高一點的題目,可以拿著慢慢研究
4、編碼
最後一點也是最重要的一點,理論學的再多,不實踐下,也沒懶用。實踐才是檢驗真理的唯一標準。
多練才是王道,實踐出真知