在當今信息技術高速發展的時代,編程成為了許多人所追求的技能之壹。然而,成為壹名出色的程序員並不是易事,需要不斷學習、實踐和探索。那麽如何靠自學提升自己的編程能力?接下來我們就來具體了解壹下吧。
1、多讀好書
書籍會系統介紹常見的知識點,讀壹本書比讀100篇博客有用的多。博客的作者技能良莠不齊,所以可能陷入誤區。對於基礎知識點,閱讀好書,學習在線課程,閱讀官方文檔(React的官網文檔,最好是英文文檔,中文很多翻譯不準確)。這樣逐步搭建自己的知識框架。
在學習壹門新的編程語言時,應該關註這門語言的基本表達形式(Primitive Elements)、組合的方法(Means of Combination)及抽象的方法(Means of Abstraction)這三個特性。
基礎知識:基本語法、關鍵字、變量與常量、數據類型、運算符、流程控制、異常處理、文件處理、編程思想(面向對象、面向過程、函數式編程)、多線程支持等;
應用知識:網絡請求、數據處理、內置函數、對日誌和調試的支持、對單元測試的支持、序列化與反序列化等;
高級知識:開源類庫、開源框架、底層原理等;
我覺得優先讀基礎知識(Javascript 基礎語法,數據結構與算法,ES6語法等),這部分基礎知識成熟,是其他所有知識的基礎。之後根據工作需求,閱讀相關的第三方庫文檔。
好書推薦
編程語言(c/c++):《c語言程序設計》->《c++ primer》-> C++ efftive 系列 -> 《C++ STL 源碼剖析》->《深入理解C++對象模型》
數據結構與算法:《大話數據結構》->《算法圖解》->《數據結構與算法之美》 -> 《劍指offer》 -> LeetCode刷題(至少刷到200多道)操作系統:《操作系統導論》->《現代操作系統》
計算機網絡:《圖解HTTP》->《圖解TCP/IP》->《網絡是怎麽連接的》 ->《計算機網絡自頂向下》->《TCP/IP協議詳解卷1》
計算機組成:《程序是怎麽跑來的》->《計算機組成原理:軟件/接口與設計》->《深入理解計算機系統》數據庫:《SQL必知必會》->《從根兒上理解mysql》->《mysql技術內幕》->《高性能mysql》
編譯原理:《程序員的自我修養》
2、多參與項目
參與項目就會寫很多的代碼。這樣可以讓妳明白學過的知識具體怎麽使用,哪些知識比較常用,自己哪些知識學得不牢固。實踐是檢驗真理的唯壹標準,項目是檢驗知識的唯壹標準。可以有針對性的參與項目(不同項目主要練習不同的知識點),自己需要做到把經常使用的項目,具體的配置和註意點熟記,不常使用的項目,可以短時間內閱讀項目並進行開發。項目推薦:
基千百度AI的語音識別
代碼量:400行
實現功能:語音錄入、語音轉文字
適合人群:有C++、QT、網絡基礎。
涉及技術:QT、信號與槽、HTTP、百度AI開放平臺。
通訊管理系統
代碼量:400行
實現功能:通訊錄信息的增刪改查操作。
適合人群:C語言的初學者,難度較小,不合適寫在簡歷上。綜合應用數組、指針,可以鍛煉編程邏輯思維,積累代碼量。
涉及技術:數組、指針、結構體、函數。
停車管理系統
代碼量:800行
實現功能:停車、找車、繳費、離開、路線規劃。
適合人群:有C語言和鏈表、棧、隊列基礎。
涉及技術:指針、數組、鏈表、隊列、廣度優先搜索。
智能WiFi攝像頭
代碼量:1500行
語言:C語言
實現功能:圖像數據采集、APP顯示、遠程控制
適合人群:有C語言、Linux、網絡基礎,屬幹綜合性項目,適合有意從事嵌入式開發的同學。
硬件平臺: NanoPi Duo2
涉及技術: mjpg-stremer、json、TCP、UDP、QT、epoll
智能音箱
代碼量:3000行
實現功能:由嵌入式端、後臺雲服務器和APP組成,實現了切歌、暫停、繼續、音量調節、APP遠程控制、語音控制。
適合人群:有C/C++/Linux基礎,綜合性比較強,可以作為項目提升、畢設、就業等。
硬件平臺:mini2440
涉及技術:C/C++、libevnet、json、進程、TCP、QT
3、多閱讀源碼
閱讀源代碼是學習編程的重要方式之壹。通過閱讀其他人編寫的代碼,妳可以學習到其他人的編程思路和技巧。同時,閱讀源代碼還可以幫助妳更好地理解編程語言和框架的工作原理。如果妳想要學習壹個新的編程語言或框架,閱讀其源代碼是非常有幫助的。
關於源碼閱讀的三層境界:
初級:記流水賬——初期的源碼閱讀文章基本上是記流水賬,例如對源碼壹行行加註釋,只關註底層實現細節,但並未形成更高層次認知,對其設計理念沒有提煉與深度領悟。
中級:能提問、思考、提煉——要求我們在閱讀源碼的時候多思考,並反問自己如果自己實現的話該如何著手,如何設計,帶著疑問去研究源碼。通過對比,思考,會對其背後的理念有了更深刻的理解。
高級:思考、質疑、驗證——不管是什麽代碼,都會存在BUG或者實現並不合理的地方,如果大家在閱讀源碼的時候能夠深入思考, 合理質疑,並能通過驗證證明自己的觀點,說明我們的能力、思考得到了極大的提升。
4、用好搜索引擎
多使用非百度的搜索引擎,可以獲取很多英文的參考資料,百度會減弱自己的英文能力。想要快速解決這些問題可以學會使用搜索引擎。編程界有個說法:超級程序員=普通程序員+Google。用好搜索引擎,Google+GitHub也許可以解決妳大部分的問題。
Newest ‘python’ Questions—壹個與程序相關的IT技術問答網站
3.10.4 Documentation—Python各個版本的官方文檔
5、自己做壹個開源的項目
參與開源項目是提高編程能力的另壹種方式。通過參與開源項目,妳可以與其他程序員合作,學習到其他人的編程經驗和技巧。同時,開源項目還可以幫助妳鍛煉自己的編程能力,提高自己的編碼水平。參與開源項目還可以擴展妳的社交圈,結識更多的編程愛好者。
6、學習算法和數據結構
算法和數據結構是編程的基礎,它們可以幫助妳更好地理解編程語言和框架的工作原理。學習算法和數據結構可以幫助妳更好地解決編程問題,同時也可以提高妳的編程能力。如果妳想要成為壹名優秀的程序員,學習算法和數據結構是非常重要的。
個人經驗:通過自學提升自己的編程能力需要付出大量的時間和精力,還需要具備自律和耐心。但是,成為壹名出色的程序員可以為自己創造更多的機會和發展空間,也可以為社會創造更多的價值和貢獻。因此,我們需要不斷學習和實踐,追求卓越,成為壹名優秀的編程高手。