我是如何學習計算機編程的

我在很小年紀的時候就開始學習編程,我學習編程的方法是建立大量的不一樣的網站。下面列出的是我建立的主要的網站,其中最先的一個是我11歲時開發的。我但願讀者能從我這些複述中得到的信息是:若是你想學習編程,作大量的練習性的項目是很是必要的。html

學習一種技術最好的方法就是練習,練習,練習。全部我知道的最優秀的程序員都深深的享受編程——編程是一件讓他們幹起來無由的高興的事情。也所以他們大量的編程。常常,那是一種不健康的廢寢忘食。學習如何編程——以及如何編程——並不須要你具備超人的能力。你只須要去按照本身的意願動手去作,作出點什麼東西。python

作什麼東西並不重要,重要的是你找到東西動手去作。我所認識的那些優秀的程序員,他們都有各自不一樣的最初學習編程的動機。有些人學習編程是爲了開發動畫遊戲。有些人是爲了解決他們在使用計算機時遇到的問題,或讓工做更有效率。有些人是爲了開發產品來知足人們的需求。有些人(真正的程序員)學習編程只是他們爲了深刻了解計算機工做原理的步驟之一 ;他們但願能搞清楚這種機器。有些程序員編程只是由於他們享受解決難題的挑戰。jquery

讓全部這些「優秀程序員」統一塊兒來的惟一因素就是,他們全由於生活中的某些緣由而爲編程着迷,繼而花大量的時間編程,作大量的,大量的用於練習的項目nginx

那麼,我就再也不羅嗦了,下面就是我如何學習編程的故事:git

個人第一個網站

做者小時候的詐騙

在我大概十一二歲的時候,我感到須要給本身作一個網站。我已經記不清爲何須要一個網站了,只記得那樣就開始作了。因而我就在網上搜索關於網頁、Web瀏覽器、HTML如何工做的信息。不少的信息我發現都已通過時了,有些明顯是錯誤的或給了錯誤的嚮導(例如爲IE瀏覽器和Netscape瀏覽器分別作網站),但過程是很是的有趣的,我學到了不少新東西。程序員

儘管在網上搜到了不少粗製濫造的的信息,我仍是想辦法作了一個簡單的網站,我叫它「Feross的網站」。開發它,我使用的是微軟的Frontpage,那是一個很是棒的所見即所得的HTML編輯器。我使用很常見的語法,例如粗體,斜體等對網站作修改,在編輯器裏即時查看這些HTML標記能達到的效果。這是頗有效的學習方式。github

下面是個人第一個網站的截屏。這個網站已經不存在了。web

個人第一個網站

你從上面的圖片上看不出來,這個網站上的每一個元素都在動,閃爍的動畫,還能出聲。我在網站的每一個頁面上都放置了不一樣的MIDI格式的歌曲。並且都是自動播放,你沒有辦法讓它們停下來,除非把電腦消音。哈,這就是當年流行的網站設計風格。 :D算法

等再長了幾年歲數後,咱們從新設計這個網站,讓它變的漂亮些。我使用了在網上發現的一些免費的網站模板,用微軟的畫圖工具修改了一些圖片。sql

修改後的第一個網站

經管我大量的依賴於模板,但這不失爲一個學習HTML和Web瀏覽器的好方法。「Feross的網站」除了用來收集我小時候的一些視頻外沒有其它用處,因此不久後我就對它失去了興趣。

個人第一個真正的

當我9年級(14歲)時,我和個人朋友都很是着迷與觀看像Newgrounds 和eBaumsWorld這樣的網站上的flash視頻和動畫(這是2005年以前,尚未YouTube)。我在這種網站上花了大量的時間,因此我知道全部最好的視頻和遊戲。我想,若是作一個網站來收集這些在網上發現的我喜歡的flash動畫、視頻、遊戲,會是一件很酷的事情。這就是我作出FreeTheFlash網站的初衷。它是這個樣子的:

我從開發「Feross的網站」的過程當中學到了不少HTML知識,此次我使用了Macromedia 公司(如今的Adobe公司)的Dreamweaver編輯器,這個東西能讓我在網站裏重複的頁面使用同一個模板。

一段時間後,我意識到,我應該讓網站動起來,據說是應該使用一種叫作PHP的編程語言來作網站,而不是隻使用靜態的HTML。因而,我買了花了20美圓從Amazon買了一本書,叫作《PHP and MySQL for Dynamic Websites》,使用PHP和MySQL對網站進行了從新設計。我還給它進行了新的美化:

PHP&MYSQL動態網站

在高中時期我對這個FreeTheFlash 網站的開發持續了2年。它對於個人第一次嘗試作一個「真正」的網站來講是至關成功的——在2006年,它得到了60萬人/次訪問,頁面瀏覽量達3百萬。FreeTheFlash 讓我知道了作出一個產品、讓它傑出、看大量的人使用它,是一件多麼自豪的事情。它讓我想作出更大的網站。

個人第二個網站

在中學,我在上計算機課程時作了大量的筆記。因而,在11年級時,我以爲應該把這些筆記放到網上,讓那些不喜歡看課本的學生使用。我作了一個網站,叫作StudyNotes,使用的是PHP和一個叫作Joomla的內容管理系統。我也嘗試過使用Drupal,但發現它太複雜了。

學習筆記網站

同年,我爲個人學校Key俱樂部分部作了一個網站,現在也不用了。

這段時間,我花了大量的時間泡在WebmasterWorld裏,這是一個論壇,主要關於網站站長和SEO專家推測Google算法,討論AdSense技巧,調試網站問題等。

大量的學習和閱讀

等我進入了斯坦福大學後,我學習了大量的計算機課程,諸如CS106X 和CS107,我還超前學習了部分 CS106 課程。

全部的課餘時間我幾乎都在閱讀關於設計、編程、瀏覽器和JavaScript等方面的資料。通常天天4-5個小時。

若是你要問我都讀什麼?亂七八糟的。但大部分都是我敬仰的設計師和程序員寫的博客。你能夠從這篇博客的右側看到我列出的部分博客連接。

關鍵一擊

以後,在2010年夏天,當我在Facebook實習時,由於跟一個朋友打賭,我開發了YouTube Instant,它是一個用來實時搜索YouTube視頻的網站。這個網站在建成以後的10天裏得到了1百萬用戶的訪問量,YouTube的CEO甚至給我發消息說提供一個職位給我,你能夠從這裏看到這些媒體的躁動。

我知道YouTube Instant的成功歸功於當前的好時機和一點幸運。我想,咱們不少人不知道本身能作出什麼。

YouTube Instant

繼續前行

我注意到不少人使用YouTube Instant來聽音樂視頻,這讓我想到了另一種使用YouTube API的好方法。因而,個人朋友Jake Becker 和我在2011年的頭3個月裏開發了Instant.fm,它能讓你輕鬆的向朋友分享音樂播放列表。經過這個項目咱們都學到了不少新的東西。

Instant FM

在這個工程中我掌握的技術:

以及其它一些咱們學會使用的東西:

動手去作!

我把從11歲就開始作的東西都不厭其煩的曝出來,目的就是要說,若是你想學習編程,你須要動手去作東西!如今就去。不要找任何藉口。

作東西是最好的學習方法。

從頭至尾讀一遍編程語言書籍是一件很無聊的事,讀到一半你就讀不下去了。但,若是你想作一個項目,你在作的過程當中會知道你該學習哪些知識,這是認識和掌握知識更有效的途徑。

計算機課程

大學裏的計算機課程是學習編程的另一種十分有效的方法。大多數好的計算機課程都十分強調學習計算機科學領域裏的重要概念和範式,而不是教你某個特定的語言。這能讓那些歷來沒有接受過正規教育的人在自學時開闊眼界。

記得在斯坦福大學上第一堂計算機課程時(那是教授C++的課程),我在想「怎麼可能變量前不帶$符號呢?」當時我只使用過PHP! :) 我用了好長一段時間才改掉在變量前加$符號的習慣!

在軟件公司工做

另一個提升編程水平的方法就是到軟件公司實習,好比Facebook或Quora,最近的兩個夏天我就是在這些公司裏度過的。你會從那些優秀的人那裏學會如何更好的編程,如何閱讀和理解他人的代碼,如何在大項目中進行團隊合做。

仍是那句話——比什麼方法都管用——學習編程最好的方法就是作項目練習。我是否是重複這句話無數次了? :)

如何學會編程:

  • 作練習性項目。
  • 看編程書籍。
  • 作項目練習。
  • 上計算機課程。
  • 作練習性項目。
  • 讀編程類博客。
  • 作項目練習。

這就是我能給出的最好的建議。

祝編程愉快!

 

文章轉自:http://itxxz.com/a/zhichang/2014/0618/96.html

譯文出處:http://www.vaikan.com/how-i-learned-to-program-computers/

轉載請註明連接

相關文章
相關標籤/搜索