想自學編程?霖哥建議從JavaScript開始!

我是霖哥,一個因興趣入行的商學院畢業的程序員。最近有不少人,來問我,想學編程,但是又不知怎么開始。所以,我想在我的公眾號“商學院畢業的程序員”中,把我自學編程的經歷,毫無保留的分享出來。

現在的世界,是互聯網科技的世界,人一天生活下來,從玩手機、購物、看新聞、聽音樂,無處不在的都是編程代碼所編織出來的世界。

不論是工作中的人,還是學生,很多人都有自學編程的想法,但是卻不知道從哪里開始。

上網搜集相關自學編程的學習資料,什么C++、Java、Python一堆又一堆的術語,根本讓人無從入手。

如果去問相關的計算機的朋友:“學編程該學啥呢?”

得到的答復,一般是先學一門編程語言吧,說學習C++或者Python吧。

接著,你就跑去買了一本C++或者Python的語言書。

才翻了沒幾頁,完全看不懂,整本書都沒一點人話,又礙于面子,不知道怎么問別人,擔心別人說自己笨。

最后,一本厚厚的編程語言書,就這樣成為了家里的裝飾品。

霖哥沒有接受過傳統學校的編程教育,通過自學編程,用過11種編程語言做過項目。

總結多年的自學經驗,建議自學編程,先學習的編程語言——JavaScript!

JavaScript不是Java!

(圖:美國的Jordan品牌和中國的喬丹品牌,是沒有關系的)

JavaScript(簡稱JS)跟Java,從編程語言技術上,沒有半毛錢關系,別被她的名字欺騙了。

之所以叫JavaScript,是因為90年代Java大火,當年JavaScript的發明者網景公司把自己發明的腳本編程語言,帶上“Java”的名號,讓它更容易傳播。

這就好比我們中國的喬丹,山寨了美國的Jordan品牌名氣,其實它倆壓根沒關系......

在最初的十幾年里,JavaScript一般是用于做網頁上的動態效果的。而最近幾年,有一個叫NodeJS的工具出現,它賦予了JavaScript全方位的應用能力,不論網頁、App、后臺服務器......總之,JavaScript語言幾乎無所不能。

當然了,今天我們探討的是,新手自學編程的第一門編程語言,我們不多介紹NodeJS,來關注用JavaScript用來做網頁的部分。

奧巴馬學編程

奧巴馬編程(圖片來自Wired)

2015年的時候,奧巴馬參加了一個“編程一小時”活動,呼吁世界上的所有人都應該學習編程,并以身作則,編寫了一段很簡單的計算機代碼,在屏幕上畫了一個正方形。

這也讓他成為了美國歷史上首位編寫計算機程序的總統

那么,那時候,奧巴馬學習使用的,是什么編程語言?

答案是:JavaScript

奧巴馬寫了啥?

據說,當時奧巴馬學編程,曾寫了這么一段代碼。

moveForward(100);

在上一篇霖哥自己的經驗,「我是如何用10天自學編程,改變一生」里,霖哥提及過,英語能力不能太差。因此,只要你英語不差的話,看到奧巴馬的這一句代碼,你應該能明白它的意思:

移動向前(100);

(圖:奧巴馬的編程學習網站)

沒錯,他執行了一個函數,叫moveForward(100)。 因為奧巴馬當時使用的是code.org編程學習網站,它使用這個函數,促使屏幕上的卡通人物,向右(卡通人物的前方)移動了100像素!

理解「函數」

這里提及了霖哥認為編程中最最最最重要的概念——函數

函數,很多時候,又會被叫著“方法”。所以要注意了,跟別人溝通時,“方法”、“函數”,很可能是同一個意思,它們英文是Method和Function。 (兩者嚴格學術定義有一點差別,這里先不追究,認為一樣的就好了)

所謂函數,學術上來定義,是一個統一的代碼塊;而霖哥的理解,函數就像一個別人生產好的工具

看看你現在桌子上的杯子,我們知道,喝水要用杯子喝,杯子是別人生產好,我們買回來的。“函數”,就像是一個生產好的杯子,我們拿過來直接用

上面,是站在“喝水者”的角度來說的,假如換個角度來說,“我”是杯子的生產商呢?那么,要做一個杯子,我們還需要各種各樣的“函數”——比如,陶瓷、玻璃、包裝盒...等等等。如果我是包裝盒生產商呢?我還需要紙皮、綁繩等等等。

你想要生產某個商品,但是不可能說,所有的零配件都是自己生產的,部分零配件需要從外部獲取。 而零配件,就是“函數”。 同理,你要開發一個軟件,不可能所有函數,都是自己寫的,大部分(甚至是絕大部分)的函數,也是需要從外部獲取的。

所以,霖哥建議自學編程的第一課,一定要搞清楚“函數”的意義! 編程的本質,大部分時候,就是對“函數”的操控;而對函數的操控,它就像我們的生活那樣,商品是從別人那里獲得的!

這引申出霖哥自學編程的第一定律:

任何編程技術,都可以從生活中找類比!

搞清楚“函數”的意義,你就能理解大部分的軟件工程了。

你要做一個網頁,你需要調用“瀏覽器”的函數;你要做一個瀏覽器,你需要調用“網址解析”的函數;你需要做一個游戲,你需要調用“游戲引擎”的函數;你需要做一個游戲引擎,你需要調用“顯示器顯示畫面”的函數;.....................無數的“函數”,一環扣一環的,組件了我們各種各樣的計算機軟件。

這又回到「我是如何用10天自學編程,改變一生」里談到的話題了:自上而下的學習過程。這里對軟件工程的思考,也是一個自上而下、從高到低的思考過程,先思考要做一個這樣功能的程序軟件,然后再思考,使用什么“零配件”去堆砌我們軟件。

為什么霖哥推薦JavaScript作為初學編程語言?

開發環境到處都是

JavaScript的開發環境很容易弄起來,同時它是一只易入門的編程語言。

它是唯一能運行在瀏覽器網頁的編程語言。因此只要有瀏覽器運行的地方,它就可以運行起來,試問一下,現在還有哪一臺電腦或者手機是沒有瀏覽器的嗎?

而常見的Java、C++語言,就沒有這樣的好處。要學習他們,你就必須經過復雜的安裝、編譯過程,好不容易地才能運行一個小小的程序。這對初學者來說是一個不小的門檻。很多的初學者光在安裝開發環境,就被折騰得半死。

JavaScript用途廣

我們也經常看到,微信里經常出現的各種各樣的所謂H5的活動網頁,其實,就是用JavaScript開發的。

不論是做活動宣傳、企業宣傳、企業網站,經常需要工程師來做網頁。做網頁需要用到什么編程語言?就是JavaScript。

隨著這幾年JavaScript的發展,JavaScript已經不單只局限于網頁前端了,現在還可以使用JavaScript來開發后端服務器、手機App甚至游戲。

它是目前編程語言中應用最全能的編程語言,并且普及程度還在上升趨勢。

JavaScript職業需求量大

有一個職位,叫Web前端工程師。說白了,就是JavaScript工程師(另外還要有HTML、CSS知識)。

直到今天,2017年,前端工程師的崗位還是有很大的需求。

為什么呢?

霖哥覺得,因為大學計算機學科里,一般都是讓你學Java和C++,就認為JavaScript一個搞網頁的腳本編程語言沒有前途。然而,時代早就在變化了。

教育供應跟不上,市場需求大,結果就是導致前端工程師工資水漲船高。

霖哥發現,很多學了幾手JavaScript的前端工程師,比不少寒窗苦讀幾年、科班出身的C++技術大牛工資還要高。沒辦法,供求關系決定了薪資。

來一點實戰

為了讓準備自學編程的小白,加深對編程和“函數”理解,我們嘗試來一段超級簡單的代碼,作為JavaScript的入門實戰吧。

在以往的計算機語言中,我們經常會看見一個Hello World例子,其本質就是使用“屏幕打印函數”,然后輸出“Hello World”文字。霖哥這里想弄個更復雜的例子,然后用擬人化的語言,來描述一遍機器的執行。

以下代碼中,出現的英語單詞都比較簡單,能讀懂英語單詞,就能大概讀懂意思了。

你也可以自己動手試一試,創建一個文件,叫test.html,把這些代碼放進去,然后雙擊,就會看到瀏覽器的執行結果,輸出了“300”

<script>
function add(a, b) {
    return a + b;
}

document.write( add(100, 200) );
</script>

它具體是怎么運行的呢?

我們首先把它翻譯成中文方便理解:

<這里是代碼(開始)>
函數 加法 (參數a, 參數b) {
    返回結果 a + b;
}

網頁.寫上( 加法 (100, 200) );
</這里是代碼(結束)>

我們再用擬人化的語言,來模擬這些代碼的操作:

你是一個上帝,

你創建了一個函數,叫add(加法);

你手下有一個家伙,叫document(網頁);

你說:document啊,執行你的write(寫) 函數! 稍等,add(加法)函數會告訴你怎么執行的!

你說:add函數,給你100和200,把它們相加,完了告訴write!

add函數說:JavaScript語言機,把100和200加起來,返回結果!

write函數說:輸出結果!

這段代碼里,出現了兩個“函數”,它們分別是add和write。

編程的本質就是操縱代碼,也就是說程序員是代碼的上帝。所以很多時候編程只是使用英語,對一系列的“函數”進行操作,各種各樣的的“函數”,是程序員們的千軍萬馬。

所以霖哥會說,英語很重要,因為只要懂得英語單詞,并且愿意看,就能很容易看得懂很多的程序代碼執行。

理解“函數”至關很重要,程序開發當中,幾乎90%的代碼都在不斷地調用函數。當程序員想做一件事的時候,第一個要想到的,是“找函數”,而不是寫具體的函數。

所謂的大牛,就是那些知道很多各種各樣“函數”的人,他們利用各種自己所知道的“函數”,來滿足自己的需求。

究竟怎么系統的學習JavaScript呀?

聽霖哥說了這么多,霖哥更著重的,是希望自學編程的人,能先理解“函數”思維這一編程的本質。

如果現在就想具體地學習JavaScript,還是建議使用霖哥上一篇文章所說的《W3School:JavaScript》,快速學習、快速試驗、快速理解。

往后的日子里,霖哥也會更多地講解一些編程概念,希望把一些抽象化的編程理論,用具象化、擬人化的方式敘述出來。

下一篇文章,霖哥想說說建房子與編程的關系,能讓你更好的理解“函數”思維。

作者相關系列文章:

我是如何用10天自學編程,改變一生


我是霖哥,一個商學院畢業的程序員,通過自學編程成為一家大型上市公司的資深軟件工程師。

在《商學院畢業的程序員》專欄中,我想持續分享我自學編程的經驗和心法,用通俗的話提煉我的技術思維和對科技世界的理解,希望可以幫助到你。

如果覺得有用就分享給你的朋友,轉載請注明出處《商學院畢業的程序員》。

如果在了解或學習編程的過程中有迷惘、或對一些生澀的科技概念的不解,用力留言!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,572評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,071評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,409評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,569評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,360評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,895評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,979評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,123評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,643評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,559評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,742評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,250評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,981評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,363評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,622評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,354評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,707評論 2 370

推薦閱讀更多精彩內容

  • 我是霖哥,一個因興趣入行的商學院畢業的程序員。最近有不少人,來問我,想學編程,但是又不知怎么開始。所以,我想把我8...
    陳凱利閱讀 7,669評論 31 195
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,592評論 25 707
  • 生活中你有沒有遇到這樣的問題?在戀愛關系中,竭盡全力用力去愛換來的卻是漠視和不在乎;親子關系中,媽媽事無巨細噓寒問...
    一念靜心花開遍世界閱讀 789評論 0 0
  • 有一天,我會和她旅游到不知名的地方,吃著不知名的美食,拍下永遠的回憶,許下永恒的諾言。
    午后圖書館閱讀 92評論 0 0
  • (一) 狗是沒有姓的 我叫做狗才兒,一個正值盛年的男,哦不,公狗。都被你們人類給洗腦了。 在沒遇到我的主人之前呢,...
    小云哪閱讀 436評論 4 0