程序員學習過程的幾個困惑?
做程序員這幾年來,接觸了不少要學習編程的小夥伴,經常提到的問題是XXX 語言怎麼入門、如何學好編程語言等問題。這裡我總結了初學者的一些困惑與大家分享。
1、如何入門?
在學習編程第一天,大部分人會想我該如何去學習,需要看什麼書?
對於剛入門的程序員,不管是科班出身還是非科班出生,我建議你可以先買一本 《XXX 從入門到精通》 類型的書(找好評多的),最好還能搭配視頻,視頻與書結合著看, 從軟體環境安裝到執行出第一個 "Hello World!"。 。
可能有些小夥伴也在一些論壇聽一些老鳥告訴你需要買個《XXX 編程思想》,這種書很好,是 XXX 語言的聖經,但個人認為這並不適合初學者,這種書簡直初學者的噩夢,很容易澆滅你的學習熱情。
當然 《XXX 從入門到精通》 這種書也只適合入門,入門後就可以燒了,要想精通還是建議認真研習下 《XXX 編程思想》。
書上的案例建議自己一個個字母敲下來自己去測試執行,開始雖然慢,但這是你必須要經歷的過程,千萬別 ctrl+c、ctrl+v。
2、碰到問題如何解決?
學習編程語言會碰到各種各樣奇怪的問題,初學者最有可能碰到的是語法格式的錯誤,例如:
- 結束語句分號忘記寫了、漏了反括弧、缺少空格,等等。
- 關鍵字,變數名寫錯了,例如 $runoob 寫成了 $runob,String 寫成 Strng。
- 判斷相等兩個等號(==)寫成一個(=),有的還不能使用兩個等號(==)判斷是否相等。
- 賦值類型不匹配,整數類型使用了字元串賦值。
- 格式縮進不一致(python)。
- ……
以上這類錯誤在初學者非常常見,如果是語法錯誤,一般 IDE 都會有很好的提示功能,你根據提示修改即可,但大家平時還是要細心些,培養好的編程習慣。
而有些錯誤在執行後才會提示,一堆英文提示,單個字母都認識,拼起來一個都不認識,這時候很多人就手足無措了,不該怎麼辦,其實這時候大家不要慌,要淡定,這些都是紙老虎,只要你認真去看,英文看不懂藉助翻譯工具 Google 、百度翻譯下,是很容易理解錯誤內容的。
比如以下這個例子:
……failed to open stream: No such file or directory in ……
如果你看的懂其實意思很明白了,文件沒找到,如果你看不懂,丟到 Google 翻譯後為:
......未能打開流:沒有這樣的文件或目錄......
這會明白了吧,然後你看看代碼中包含的哪個文件不對,修改為正確的文件名或文件路徑就能解決了。
如果中文還看不懂,我就懵逼了……
總結下就是編碼要認真細心,注意格式,不要丟三落四,使用好的 IDE 協助培養良好編程習慣,遇到錯誤認真看,看不懂用翻譯工具翻譯再看。
3、我該去哪找人提問交流?
如果我們已經認真看了錯誤提示,還不懂的如何解決問題時,這是建議你使用以下幾種途徑解決:
- 搜索引擎(百度、Google、Bing等)上檢索你的問題與需求,看看是否有人碰到與你一樣的問題。
- 技術論壇上提問如: 百度知道、CSDN、V2EX 等。不過個人不推薦這個這個要等人來回答,效率太低,而且不一定是你想要的。
- QQ 群,找到你學習語言的活躍 QQ 群,群內提問,如果有人回答最好,沒人的話建議看下群內成員的活躍度,直接發信息給幾個活躍的,如果他們不是他忙應該會幫你解決。
- 最好的也是最直接的就是問你身邊的技術高手,他一句話也許就能給你點透。
平時我們也要多收藏好的技術文章,如:CSDN、博客園、菜鳥教程、簡書、infoq、51cto、知乎等。多看看前輩的經驗和案例,自己也去測試測試。這些對大家的積累是很有幫助的。
4、英文重要嗎?
學習編程需要英文很好嗎?不需要。
英文能力重不重要?非常重要。
雖然現在很多中文的技術文檔、博客、論壇也很多,不懂英文也是能學會一門編程語言。但是你要明白很多編程語言的官方文檔,源碼注釋都是英文的,很多前沿的技術也是英文的。 不去閱讀英文的文檔很多精髓無法領會,翻譯的有些也是不準確的。
此外,還有最重要一點是很多錯誤提示也是英文的,你英文能力好,可以直接明白提示內容,如果不懂你還得拿翻譯工具翻譯。
很多問題的解決方案你百度的結果可能是:呵呵……,但你如果能使用英文描述下來,再把這描述內容往Google(需要梯子)框框一丟,第一個搜索結果 80% 是你需要的答案。
所以非常建議大家學好編程語言里常用的一些英文術語,如果你英文差就藉助錯翻譯工具去閱讀,久而久之,你會體會到他的好處的。
例如: debug => 調試 , debugger => 調試器 , abstract => 抽象的 abstract base class => (ABC)抽象基類 , abstract class => 抽象類 , import => 導入 , include => 包含 , array =>數組 , command line => 命令行 , comment => 注釋 , commit => 提交 , compatible => 兼容 , compiler => 編譯器 , component => 組件 , array => 數組 ,thread => 多線程 ,multi-thread => 多線程 , 等等
更多可查看:編程中常見英文術語。
5、總結與分享
總結我想對大家是最難的,就像上學的時候讓你們一天寫一篇日記,基本沒幾個人能堅持下來。
但學習編程過程中,我還是建議大夥平時要多總結自己走過的坑,記錄自己的學習過程,不要求一天一篇,但最好在 3~5 天有個對自己過去的學習有個總結與反思,特別是可以記錄規範性文檔及程序腳本,比如:
- XXX 語言編碼規範
- XXX 語言邏輯判斷方式
- php 獲取當前 URL
- 正則表達式匹配郵箱、電話號碼
- 樹狀結構的遞歸代碼
- 中文亂碼解決方案
- 資料庫連接代碼封裝
- ……
我相信這些功能大家在編程中絕對不會只寫一次、兩次,會非常頻繁的使用,所以這些東西大家可以總結出來,寫在自己的雲筆記上(有道雲、印象筆記)。
最後是分享,如果你有好的問題解決方案,或者你認為你的方法是天下第一,可以分享出來,包括各個博客平台。
這裡推薦大家在學習過程把自己的學習筆記分享到菜鳥教程上,菜鳥教程已開通筆記功能(需要註冊),首次分享需要發送筆記到管理員郵箱(429240967@qq.com)。
通過審核會給你邀請碼註冊,以後就能在我們平台上自己記錄筆記了。筆記的內容要求簡單明了,不能偏離對應的文章的內容,使用 一句簡單的描述+一段簡單的代碼 的方式。如下圖所示:
※Linux 常用基本命令 ln
※SparkStreaming如何解決小文件問題
TAG:程序員小新人學習 |