作為業余愛好者如何學習編程

發表于:2013-12-20來源:酷勤網作者:不詳點擊數: 標簽:編程
作為業余愛好者如何學習編程。因為 Aaron Swartz 的自殺,這兩天看了不少關于他的報道以及他自己的博客,對我觸動最大的是盡管他一直在做技術相關的事情,但眼光和理想卻遠遠超越了技術。他把技術當作推動自由和社會變革的工具,所以 Twitter 簽名也是 "Applied sociolo

  因為 Aaron Swartz 的自殺,這兩天看了不少關于他的報道以及他自己的博客,對我觸動最大的是盡管他一直在做技術相關的事情,但眼光和理想卻遠遠超越了技術。他把技術當作推動自由和社會變革的工具,所以 Twitter 簽名也是 "Applied sociologist", 而不是經??梢栽诔绦騿T那里看到的 "Geek" 和 "Hacker" 等。我非常欽佩他的社會理想和為之做出的努力,然后開始思考自己可以做些什么,于是就有了這篇文章。

  現在有關編程的書籍非常多,網上也有很多教程,但大多都是針對職業程序員或者計算機專業的學生,對那些只想實現一些自己想要的東西的業余愛好者幫助不大。業余愛好者并不想以編程為職業,也不想花太多時間去學習基礎,他們只是想盡快做出自己想要的東西。這樣的東西在專業程序員看來可能很爛,但我覺得非常有意義。會編程的人越多,信息流動的渠道就越多,做出好玩的東西的機率也越大。

  我的技術水平一直不怎么樣,而且越來越業余,不過正因為如此,我非常能體會初學者的痛苦,或許寫這樣的東西正合適。本文的目的是幫助業余愛好者掃清一些思想上的障礙,分享一些我的經驗,并不會涉及太多技術細節,畢竟每個人想做的東西和想學的編程語言都不同,不過后面會給出一些學習資料。

  重要聲明:本文只針對那些不想以編程為職業,只想學習編程以便自己做東西的業余愛好者。想要成為一個優秀程序員的同學請看這篇經典的《十年學會程序設計》。

  思想準備:

  1. 編程不難,至少做出一個能用的東西不難。別把它當回事兒。很多人之所以覺得編程很難是被專業術語和趾高氣揚的程序員嚇到了。別擔心,業余愛好者不需要對自己要求那么高。

  2. 編程不需要數學基礎。沒錯,就算你數學很爛也能做出東西。大部分算法都已經有成熟的解決方案,可以直接拿來用,完全不用擔心。我們的目的是做東西,不是研究算法和數學。

  3. 編程不會改變你的生活方式。你完全可以學習編程而不接受和它有關的文化。不一定要崇拜某位大神、閱讀技術新聞或者參與社區,也不一定要不修邊幅、熬夜工作。如果愿意的話,精裝打扮穿上最漂亮的衣服去編程也可以。反正不想成為職業程序員,不用擔心因為「不像程序員」而被鄙視。

  4. 有很多友善的程序員。程序員給很多人的印象要么是邋遢、木訥、害羞的書呆子,要么是性格怪異、智商極高的大神,其實大部分程序員并不是那樣,只不過媒體和大眾更偏愛怪異的東西。以 Linus 為例,在他的自傳 《Just for Fun》 中提到:

  「Linux 不是靠犧牲寶貴的睡眠時間換來的。事實上,如果你想聽真話,那我就要說,我更喜歡睡覺?!?/p>

  「在那個時候,只要一想到姑娘,Linux 系統就變得不再重要了。在某種程度上,今天也還是這樣?!?/p>

  瞧,這位大神其實大部分時間和普通男性差不多,更喜歡「睡覺」和「姑娘」。所以,如果真的遇到了無法解決的問題,完全可以大膽地去請教專業程序員們,一般都可以得到答復。

  5. 習慣無知。無論學習什么東西,往往越深入就越覺得自己無知。這樣的無知本身并不是壞事,它可以讓你保持謙虛,但千萬不要被它嚇得不敢繼續前進。及早適應無知的感覺,你并不需要全知全能才能做出東西,如果覺得困難,可以試著假裝自己擅長編程 。

  如何開始:

  首先,完整閱讀這篇文章:《你第一要做的是開始去做》(這篇文中翻譯自 The first step is to start )。

  如文中說的那樣,不要以「基礎不夠」、「知識不全」等借口停下來,一開始甚至可以先在紙上勾勒出想要的東西。當然,完全不懂編程肯定無法開始真正的創造,但學習的時候不要抱著「先專心學習,學好本領再回來做」的念頭。正確的做法是:只學那些最基礎的東西,然后立刻著手去做,遇到不會的地方再去學。

  沒有技術背景的人學習編程很容易被錯綜復雜的技術體系嚇到,網上的教程中也經常會出現「一定要讀這本書,非常經典」、「最好先有 XX 基礎再看這篇教程」之類的警告,結果有時候會出現這樣的情況:本來你只打算學習編寫網頁 ,結果幾天后莫名其妙地開始苦讀《精通正則表達式》。為了能夠專注于自己想做的東西,要十分警惕「學習」這件事情。盡量學習最少的東西,然后把時間都花在創造上。當想要學習的時候,慎重考慮它是否會讓你偏離目標,或者繞太遠的路。這樣做肯定會導致基礎不夠好,但我們是業余愛好者嘛,能盡快做出東西就行了。如果你真的非常在意基礎,說明你可能更想成為職業程序員,請返回參考前面的重要聲明。

  沒有人天生就會編程,在做東西的過程中會不斷學到新的知識,然后就會發現自己之前的代碼很愚蠢。這個時候你可能會很想推倒重來,或者從頭改進之前的代碼。要抑制住這種沖動,不然就會掉入代碼優化的無底洞。事實上,幾乎所有的專業程序員都會對半年前自己的代碼感到不滿,而且一開始代碼質量不好完全沒有問題。舉個例子,假如要在網頁上顯示 10 次 "I love you.",你并不知道如何使用循環,于是就復制粘貼了 10 次 "I love you"。這樣的做法或許很笨,但是你做出了想要的效果,對于業余愛好者來說,完成一個東西要比代碼質量重要得多,不要為了這種笨方法而感到羞愧。

  如何解決問題:

  在創造的過程中肯定會遇到很多問題,對于初學者來說,大部分的問題都是語法或者拼寫問題,只要仔細檢查代碼就可以解決,少數摸不著頭腦的問題也可以用 Google 找到答案。很多非 IT 行業的人平時都只是搜索中文,可能并不覺得 Google 比百度要好,但當你開始學習編程,就會立刻發現 Google 比百度好用得多,一般都可以在搜索結果第一頁找到想要的東西。使用 Google 搜索的時候,請嘗試用英文描述問題,或者直接把出錯信息直接粘貼到搜索框。

  如果實在搜索不到解決辦法(這種情況對業余愛好者來說極為少見,請善用 Google),可以去 Stack Overflow 提問。提問的時候請注意描述好自己的問題,把錯誤信息以及相關的代碼都寫進去。 Stack Overflow 的氛圍相當好,應該很快就會有人回答你的問題。比較不方便的地方是你必須使用英文提問,沒辦法,因為類似的中文社區并不存在。如果執意要去中文社區提問,那么我真誠地建議你使用女生頭像和昵稱,可以有效提高回復率,呵呵。

原文轉自:http://www.kuqin.com/pragmatic/20130627/334617.html

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97