柴米油鹽計劃

編程魔法師之路要怎麼開始

Author :歐剃
圖片來自 pixabay 自由版權圖片庫

我想試一試,但我要怎麼開始才好?

從一門簡單易學的編程語言開始

在這裡,我鄭重跟各位推薦 Python ,大家別被這個名字嚇到,這門語言的創造者 Guido van Rossum 是根據英國廣播公司的搞笑節目 「蟒蛇飛行馬戲」( Monty Python』s Flying Cirecus )來命名這個語言的——並非他本人特別喜歡蛇纏起它們的長長的身軀獵殺動物覓食的樣子。(笑)

編程魔法師之路要怎麼開始

為什麼推薦 Python 呢,據《 A Byte of Python 》概括,主要有以下幾大理由足以說服我們去使用它:

  • 簡單: Python 是一種代表簡單主義思想的語言。閱讀一個良好的 Python 程序就感覺像是在讀英語一樣,儘管這個英語的要求非常嚴格! Python 的這種偽代碼特質是它最大的優點之一。它使你能夠專註於解決問題而不是去搞明白語言本身。
  • 易學:用過之後你就會發現, Python 極其容易上手。前面已經提到了, Python 有極其簡單的語法。
  • 免費、開源: Python 是 FLOSS (自由/開放源碼軟體)之一。簡單地說,你可以自由地發布這個軟體的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用於新的自由軟體中。 FLOSS 是一個基於團體分享的概念。這是其中一個讓 Python 如此優秀的原因:它是由一群希望看到一個更加優秀的 Python 的人創造,並經常改進著的。
  • 高級語言:當你用 Python 語言編寫程序的時候,你無需考慮如何管理你的程序使用的內存之類的底層細節。
  • 可移植性:由於它的開源本質, Python 已經被移植在許多平台上(經過改動使它能夠工作在不同平台上)。如果你小心地避免使用依賴於系統的特性,那麼你的所有 Python 程序無需修改就可以在下述任何平台上面運行。這些平台包括 Linux 、 Windows 、 FreeBSD 、 Macintosh 、 Solaris 、 OS/2 、 Amiga 、 AROS 、 AS/400 、 BeOS 、 OS/390 、 z/OS 、 Palm OS 、 QNX 、 VMS 、 Psion 、 Acom RISC OS 、 VxWorks 、 PlayStation 、 Sharp Zaurus 、 Windows CE 甚至還有 PocketPC !

編程魔法師之路要怎麼開始

有人說, Python 是一種非常適合初學者駕駛的好車。你可以不要駕駛證就開它上路。一般來說你不需要其它車,除非你想要開得飛快或者經過非常危險的地帶。

編程魔法師之路要怎麼開始

Q: Python 有兩個不同的版本,我該選擇 2 還是 3 ?
A: Python 2.x 是已經進入穩定狀態的 Python 版本,Python 3.x 是開發更加活躍的面向未來的版本。它們在語言的特性上有略微的不同,但還不至於相差太大。
至於選擇哪個版本,要根據你未來的使用方式而定。一般來說,大部分的Linux和MacOS設備都默認預裝了Python2,而且舊版本支持的第三方庫也更多;但Python 3 更新,提供了更舒服的字元編碼處理機制。
所以,如果你需要處理中文文本,或者你並不需要用到某些只有在Python 2上才能運行的庫,那你或許應該從 Python 3 開始你的學習之旅。

編程魔法師之路要怎麼開始

磨刀不誤砍柴工,選擇趁手的工具

為了編寫存儲程序代碼的文本文件(所謂源代碼、源文件),我們需要一個趁手的編輯器。
《 A Byte of Python 》的作者 Swaroop C. H. 對初學者的建議是:
「挑選一個編輯器確實是極其重要的。你挑選一個編輯器就如同你挑選一輛你將購買的轎車一樣。一個好的編輯器會幫助你方便地編寫 Python 程序,使你地編程旅程更加舒適,幫助你更加快捷安全地到達目的地(實現目標)。」

對於編輯器的基本要求之一是語法高亮功能,利用這一功能,你的 Python 程序的不同部分能被標以不同的顏色,這樣你可以更好地看清楚你的程序,使它的運行顯得形象化。

編程魔法師之路要怎麼開始

如果你使用 Windows ,那麼我建議你使用 IDLE 。 IDLE 具備語法加亮功能,還有許多其他的功能,比如允許你在 IDLE 中運行你的程序。特別值得注意的是:不要使用 Notepad ——它是一個糟糕的選擇,因為它沒有語法高亮功能,更重要的是,它不支持文本縮進。開始編程後你會發現文本縮進是極其重要的。一個好的編輯器,比如 IDLE (還有 VIM )將會自動幫助你做這些事情。

如果你使用 Linux/FreeBSD ,那麼你有很多種選擇。如果你是一個初學編程的人,那麼你可以使用 GEdit / Kate 。倘若你是一位有經驗的程序員,你一定已經在使用 VIM 或者 Emacs 了。勿庸置疑,它們是兩個功能最強大的編輯器。使用它們編寫你的 Python 程序,你將從中受益。我個人使用 VIM 編寫我的大多數程序。只要你願意花時間學習使用 VIM 或 Emacs ,那麼我強烈建議你一定要學習兩者之一,因為從長遠看來它們對你是極其有幫助的。

編程魔法師之路要怎麼開始

選擇適合你的教程

目前初學者比較容易接觸到的 Python 教材大致有以下兩類(文末有具體推薦):
一類是文字材料,例如實體書、電子書、網路教程和程序文檔等。文字教程的好處在於信息密度大,學習中遇到不懂的內容可以隨時翻出來查閱,書中的文字材料/代碼段可以直接複製出來運行,方便看到運行結果。

編程魔法師之路要怎麼開始

另一類是多媒體教材,例如 MOOC 課程、視頻課程、自學 APP 等。多媒體資料的好處在於直觀、互動性強,能清楚明了的通過動畫、視頻的演示了解教學內容的關係,一些課程在視頻的中間還夾有小問題等元素,方便立刻複習剛講授的內容。

編程魔法師之路要怎麼開始

不管選哪個,結合教材中的實例代碼,反覆修改、運行把玩,通過修改和不同的輸出來了解代碼的執行原理,都是非常重要的環節。多動手吧!

那麼,入門的時候要怎麼做?

懂得查

啊,我明明按照教程做的,怎麼跳出這麼多紅字?
Python 程序在運行時遇到的錯誤,通常都會顯示詳細的行號和錯誤信息,方便用戶查找修正。遇到自己不認識的錯誤信息時,別慌,先仔細看看錯誤信息的描述,再打開你的文件,找到出錯的行號。

編程魔法師之路要怎麼開始

如果靠自己弄不明白出錯在哪,首先建議對照 Python 入門指南或 Python 官方文檔(見文末),查找錯誤信息的意思(善用 Ctrl+F 頁面內搜索),對照修改自己的代碼。

如果問題過於詭異,就要好好利用 Google 或 Bing 的搜索引擎,搜索你遇到的具體問題和錯誤信息,通常情況下,基礎性的語法和邏輯問題還是比較容易解決的。

懂得想

假如經過上面的步驟,依然沒有解決我的問題,該怎麼辦呢?
耐心一點,不要指望 Google 搜索幾秒鐘就能解決一個複雜的問題。如果你第一次搜索沒有結果(或者結果太多),也不要拋出一堆問題,回答者對有針對性的問題更容易給出切實可行的答案。在真正開始提問之前,先稍微放鬆一下,再深入地思考一下問題。

編程魔法師之路要怎麼開始

值得注意的是,思考並不是盯著屏幕上的代碼發獃,你要動起手來,通過搜索得到的信息,嘗試修改你的代碼中 「可能有問題」 的部分,並觀察它的輸出結果,逐步定位問題產生的原因;或是通過修改從網上搜到的別人代碼,研究它的運行情況,來了解別人是如何解決特定問題的——思考的方向往往會成為解決問題的關鍵。

通過思考,嘗試描述自己遇到的問題的具體細節,往往也是解決問題的關鍵。

編程魔法師之路要怎麼開始

懂得問

可我想破了腦袋還是搞不明白,救救我啊!
這點我放到最後來說,因為如何提出一個好問題,往往是解決問題的一半。
當然,對初學者來說,大家會比較寬容,不用擔心你提的問題太簡單或 「太傻」 ,但務必表示出你的認真和用心,不要做伸手黨。

編程魔法師之路要怎麼開始

除了學習 QQ 群和一些在線課程的討論區之外,這裡推薦幾個問答網站:
國內:段錯誤 https://segmentfault.com/
國外:爆棧網 https://stackoverflow.com/

在真正在這些網站上提問題前,請最後再在這兩個網站上搜索一遍你要問的問題的關鍵字——畢竟很多新手容易遇到的問題,在這些網站上可能早就已經有人回答過了。

那麼,當你排除了以上的一切,要準備開始詢問時,應該怎麼組織自己的問題呢?這裡有幾點建議:

話不在多而在精

你需要提供精確有內容的信息。這並不是要求你簡單的把成堆的出錯代碼或者資料完全轉錄到你的提問中。第一,表現出你為簡化問題付出了努力,這可以使你得到回答的機會增加; 第二,簡化問題使你更有可能得到有用的答案; 第三,在你精鍊自己問題的過程中,你很可能就自己找到了解決方法。

描述錯誤信息,不做猜測

向別人陳述你的猜測是沒有用的(如果你的診斷理論真的那麼有用,你還會向別人求助嗎?)。所以,你只需要告訴他們問題的原始狀態,而不是你的解釋和理論,讓他們來解釋和診斷。

描述目標而不是過程

如果你想知道如何做某事,但按照你的理解去實現的過程中卡住了,你需要在開頭就表明你的目標,然後再陳述你遇到問題。

(以上三點建議來自 Eric S. Raymond 的《 How To Ask Questions The Smart Way 》,譯者: Ryan Wu ,建議初學者抽空閱讀中文版全文,必有收穫)

編程魔法師之路要怎麼開始

學習中會遇到的困難

當你選擇了學習編程,在之後很長一段時期內,你的業餘時間都會被它所佔據,而且在頭幾天過後,學習曲線會逐漸變陡,你將感受到枯燥、迷茫、自卑以及腦汁耗竭的痛苦。

這是非常正常的情況。許多人(包括我自己)在學習一門新技術的時候都會遇到類似的問題。對此,我個人的解決辦法有:

1、找點樂子。
當你看完了基礎的語法,對繼續往下挖掘感到枯燥時,不要勉強自己,翻一翻書本,找一些有趣的練習題(例如這本書中每個章節背後都有一些實例和習題)練練手,或者編寫、修改一些簡單而有趣的小項目,甚至嘗試跟你的朋友講述你學到的新內容,給自己找點成就感。

2、專註在當前的學習目標上。
沒有技術背景的人學習編程很容易被錯綜複雜的技術體系嚇到,網上的教程中也經常會出現 「一定要讀這本書,非常經典」 、 「最好先有 XX 基礎再看這篇教程」 之類的警告,結果有時候會出現這樣的情況:本來你只打算學習編寫網頁 ,結果幾天後莫名其妙地開始苦讀《精通正則表達式》。

別擔心,你不需要掌握所有這些分支才能繼續往下走,很多時候你只要知道在需要某個知識點的時候,能從這類複雜的教程中找到對應的用法即可。

3、習慣無知。
無論學習什麼東西,往往越深入就越覺得自己無知。這樣的無知本身並不是壞事,它可以讓你保持謙虛,但千萬不要被它嚇得不敢繼續前進。

覺得自己做的不好?覺得寫出來的代碼就像一坨屎?很正常,這是因為你看過的例子和學到的知識增進了你的眼界,但編程技能和編程思想需要在練習中成長,所以暫時跟不上你的眼界。千萬不要因此而自卑,繼續嘗試,相信自己的能力。

4、注意休息。
人的認知能力是會隨著時間流逝而耗竭的,別逞能,站起來走動走動,呼吸一下新鮮空氣吧!

編程魔法師之路要怎麼開始

分享一些學習資源

文字教材

適合自學者閱讀參考,也適合在學習視頻教程的過程中翻看查閱。

0. 簡明 python 教程,如果你對電腦知識的了解僅限於如何保存文本文件的話,那這本書就是為你準備的。
Python2 版: http://www.ttlsa.com/docs/jianming-python/python/
Python3 版: https://bop.molun.net/

1. 《 Think Python 》,非常淺顯易懂,把很多概念用非常樸實的話進行了解釋,同時,這本書還引導你慢慢習慣從程序員的角度去思考並解決編程中遇到的問題。
Python2 版: https://github.com/carfly/thinkpython-cn
Python3 版: http://codingpy.com/books/thinkpython2/foreword.html

2. Python 官方入門指南中文版:
Python2 版: http://www.pythondoc.com/pythontutorial27/index.html
Python3 版: http://www.pythondoc.com/pythontutorial3/index.html

3. Python 官方文檔(英文,方便速查)
Python2 版: https://docs.python.org/2.7/
Python3 版: https://docs.python.org/3

視頻教材

適合互動教學和系統性地學習。這裡分享幾個我本人學過,而且覺得不錯的課程吧!

Python 編程入門課程:面向對象編程導論

Python 互動式編程導論

人人都懂的編程課( Python )

自學 App

Sololearn - Python3
https://www.sololearn.com/Course/Python/
通過簡潔的語言介紹 Python3 的基礎語法,每一小段都自帶 Quiz ,適合出門在外用來複習語法基礎。

編程一小時 - 在線小遊戲,邊玩邊學
https://hourofpython.trinket.io/ke3-shi4-hua4-python-jian3-jie4

網頁版 Python 命令行,不需要真正安裝軟體,就可以在這裡嘗試運行許多命令:
Python 2.7: https://www.pythonanywhere.com/try-ipython/
Python 3.6: https://www.python.org/shell/

在線 Python 遊樂場,你可以將代碼粘帖在這裡,直觀地看到運行情況:
Python 2.7: https://repl.it/languages/python
Python 3.6: https://trinket.io/python

最後,祝各位新晉魔法師學習順利,給這個世界創造出更多美好和便捷!


本文是 LinuxStory 柴米油鹽計劃的投稿文章,由 LinuxStory 整理髮布。
原作者署名為:文/歐剃 圖/pixabay自由版權圖片庫
轉載請註明出處,否則必究相關責任。
本文鏈接:https://linuxstory.org/introduction-start-coding/

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
這裡是柴米油鹽計劃投稿的發布賬號。

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    柴米油鹽計劃

    文件兄,我find到你了

    文件找不到了,**window**上,大家習慣了右上角直接搜索,分分鐘就找回來了,但這樣操作真的安全嗎? 反正,這樣的「便宜」事就別想對**Linux**做了。 其實,**Linux**上的文件查找也並不難啦,而且安全性十足噠(特別花樣多,比格高),就小小的find的就能做到。