print 'hello,world'
當屏幕上出現(xiàn)這行代碼的時候,我仿佛回到了十年前 C 語言的實驗室里。
那個時候手機還是諾基亞,人人網(wǎng)才剛剛興起,大一不讓帶電腦;那個時候一群程序小白,坐在科技感極強的教室里,碰到了電腦,緊張又興奮;那個時候面對屏幕上閃爍的光標,手足無措。到現(xiàn)在我都記得,那個時候特別渴望有一個人能像高考前的語文老師一樣,手把手的教自己,編程要注意什么,要怎么做。
十年后,我寫下了這段文字,既是教十年前的自己,也是送給剛接觸編程的你,希望可以對你有所幫助。
市面上有太多 Python 教程,隨便一搜都能找到很多,打開看一看,大同小異。無論是什么樣的教程資料,能夠告訴你的無非是這些內(nèi)容:
程序的語法:語法中主要包括變量的定義、程序控制結(jié)構(gòu)(for、if、While)、邏輯運算符、類和對象(如果是面向?qū)ο蟮恼Z言會有)、函數(shù)、特殊的結(jié)構(gòu)(有一些有指針的語法)等;
注意事項:一些書里可能會有一些容易出錯的注意事項,編程的意見和建議等等;
案例:實際的語法代碼案例;
作業(yè):給你布置的初級的編碼任務。
如果你看的是一本實戰(zhàn)類的書籍,還會有一些項目等等。
但這些都是二手信息,并非 Python 的源頭。
當我們接觸到全新的編程語言時,首先應該問問自己,這個語言是誰在什么時候發(fā)明的?起源是什么?為什么要發(fā)明這個程序?現(xiàn)在程序誰在維護?源碼在哪里?官方文檔在哪里?按照這樣的思路,你才能找到一門編程語言的源頭。
比如,用搜索引擎搜索「Python」,無論是哪一個搜索引擎,一定會有這兩個內(nèi)容:
Python 官方網(wǎng)站:https://www.python.org/
Python 維基百科:https://en.wikipedia.org/wiki/Python
總這里出發(fā),能夠最快、最準確了解到 Python 的信息,你再也不需要別人的評價和指點了。隨著對上述文檔的充分理解,你會逐漸對 Python 產(chǎn)生感性認識,能夠初步的寫一些簡單的代碼了。
「hello, world」并不是全部,編程是否能夠突破門檻,關鍵還是在會寫一些簡單的代碼之后。除了官方文檔和基本語法,還有其他一些高質(zhì)量資料很有幫助:
幫助注釋:一般的編譯環(huán)境都會包含幫助信息,其內(nèi)容和官方文檔高度一致;
Google 搜素:Google 搜索能夠幫助我們精準解決點對點的問題。
到目前為止,我們已經(jīng)有了所有食材,面對這么多優(yōu)質(zhì)信息材料,如何消化才是關鍵。此時,你會遇到的幾大攔路虎:
語言:這是第一大攔路虎,對于很多剛進入計算機門檻的人來說,大家可能還沒有意識到,這是一個英文主導的世界。優(yōu)質(zhì)的信息翻譯成中文直到它在中文世界流行需要五年甚至更久,而各種程序在英文環(huán)境下才是最穩(wěn)定的。所以你必須要過語言關,直到可以在英文的 Linux 環(huán)境中自如使用以及能夠閱讀英文文檔。
范式:無論是 Linux 的命令幫助文檔還是 Python 的命令幫助文檔,解釋方法本質(zhì)上是一致的:它們都給出了命令、參數(shù)、用法、示例等。掌握了范式,看得懂幫助,能夠?qū)嵺`起來,你便勝利在望。
面對這些攔路虎,除了死磕之外,就是死磕。但是死磕也有自己的方法:
多理解原理:無論是現(xiàn)在的源頭學習還是后續(xù)的實踐,你一定會遇到很多問題。有的人解決了問題,不明就里,得過且過。這樣渾渾噩噩,可能很多年后也只能是一個初級碼農(nóng)。任何學科知識都可以當成一張大網(wǎng)。我們找到了源頭,就把網(wǎng)提了起來。那么網(wǎng)絡中間的連接呢?提問的方式是最好的建立連接方法。編程世界里語法是最基礎的。但是語法背后的內(nèi)隱知識,只有自己不斷的刨根問底,才能習得;
制作學習卡片:計算機知識太過龐雜,怎么辦?使用卡片是一個好辦法。每一次學習結(jié)束 6-12 小時后,嘗試編制自己的學習卡片,不借助任何外在材料,靠自己的大腦,把核心的內(nèi)容梳理出來。一開始有困難時正常的,但只要你堅持一段時間以后,會有讓你意想不到的效果;
嘗試教別人:認知心理學已經(jīng)有了研究,證明在同等條件下,即使是在大腦里想象自己教自己學習,都會提高學習效率。你可以嘗試想象你在教一段時間之前的自己,當然,如果你能找到伙伴一起學習,互相教,會有更深刻的體會。
計算機是一門實用的學科。有了工具,有了方法,還必須要實踐。另外,實踐和前面的源頭學習是相輔相成的,并不是線性的前后關系。學了就要實踐,實踐了得繼續(xù)學習,然后無限循環(huán)。
任何一次實踐,都可以模擬自己在教自己。告訴自己現(xiàn)在在做什么,準備如何來做,要有什么樣的成果。而且每一次實踐都要去總結(jié)。我們的結(jié)果可以是一段代碼,也可以是一篇文章,或者一個卡片,甚至是和同學的一次溝通。無論是什么,都要注意一點:既然做了,就要做完。
結(jié)果并不完全代表輸出。每一次的學習要有結(jié)果,而一段時間之后,需要一個輸出,這個輸出一定要可以展示給別人看。它可以是自己的一個項目,可以是學習后的演講。這個輸出要讓自己足夠自豪,能夠證明是自己經(jīng)過一段時間努力后的成果。不要擔心自己的輸出不夠復雜,羅馬不是一天建成的,我們要相信時間的力量。
剛開始接觸大量代碼時,及其郁悶,很多看不懂??墒乾F(xiàn)在,豁然開朗。兩三個月前接觸數(shù)據(jù)科學課時,毫無頭緒,及其沮喪。現(xiàn)在,已經(jīng)可以幫助自己解決工作的問題了。所以,相信自己,相信時間,相信滄海桑田。
優(yōu)秀的工具都有著自己的設計邏輯,也大多是簡潔、美觀的,這是一種享受。
不要害怕自己是小白,直接使用最專業(yè)的工具,和大牛使用同樣的平臺。在我們這個時代,GitHub 是再好不過的平臺了,在上面你可以和全世界的程序員在一起互相交流學習,只要你使用它,你會感受到那里蘊含著無窮的力量。
如果能做到這些,相信你絕對可以通過掌握一門編程語言來走進計算機的世界,也相信你一定可以走得更遠。所以,話不多說,開始動手吧!■
聯(lián)系客服