Andy
Andy

手民

編程自學指南三・入門指南

學編程,從哪開始呢?

首先,要區分「語言」和「開發平臺」。大致就像「(自然)語言」和「話題」的關係:中文能講飲食,英語也能;西班牙語能聊哲學,豪薩語也可以。編程語言與平臺的關係相對更緊密,有點像討論遠東史要用文言,談伊斯蘭繞不開阿拉伯語一樣。

所以這裏有兩個決定要做:學什麼語言,用什麼平臺(或者說,用語言來幹什麼)。

先講講不要先學什麼。

1. Ruby、PHP、R

這三門語言的問題是用途單一,Ruby和PHP只用來Web後端開發,R只能做統計。(當然,這些語言都是「圖靈完備」的,理論上表達能力是一樣的,但這就好像說水果刀也可以用來砸釘子和鋸樹,可以是可以,但會很麻煩。)

2. C、C++

這兩門語言地位崇高,但是相對「底層」,上手慢。

好,剩下的選項就看你想要做什麼了。

1. 畫網頁/數據視覺化/快速原型/GUI工具開發 (廣義「前端」)

那沒得說,HTML + CSS + JavaScript 三巨頭。

這裡面,JavaScript才是通常意義上的「編程語言」,HTML其實是純文本的強化版,CSS是用來給HTML排版的。

JavaScript出身卑微,連名字都是附會當時大熱的Java,因緣際會,成了一方豪強。

Web上本來有好幾個編程語言,Java、VBScript、ActionScript(就是Flash),最後折戟沉沙,只剩JavaScript一家活了下來。而Web瀏覽器又是消費級電子產品上最廣泛的平臺(桌面機有、平板有、手機也有),JavaScript也成為支持非常廣泛的語言。

後來又出了個Node.js,讓JavaScript也能方便地跑在服務器上,現在後端JavaScript的勢力也非常強了(Matters前後端就都是用JavaScript寫的)。

「通用型編程語言」,JavaScript排第一。基本上,你想得到的事情,都有人在用JavaScript做。故古諺云:

Any application that can be written in JavaScript, will eventually be written in JavaScript.

JavaScript有幾個難點:——

1. 當年設計的時候不夠小心,語言裡有些奇怪的設定,只能記下。

2. 更新比較快,2015出了ES6(也就是ES2015),從此之後,每年更新一版。所以如果你看得教程比較舊(尤其是2015年之前的),容易學到過時做法。但是JavaScript這門語言非常講究「向後兼容」,所以過時的做法並不是錯的,只是有更新更好的做法而已。

學習路徑大致是這樣的:——

1. HTML(怎樣給文字加tag,怎樣給tag加attribute)

2. CSS(選擇符語法,Box Model)

如果只是想做網頁,HTML+CSS已經能做很多事情了。

3. JavaScript(語法)

4. DOM (連接HTML和JavaScript,這個是Web平臺的接口)

5. 前端框架(寫WebApp的可以學Vue或者React,做數據視覺化的就d3.js)

2. 人工智能/爬蟲/CUI工具開發 (廣義「後端」)

選Python。

Python一開始也就是個「腳本語言」,就是程序員搭配「編程語言」(比如C)使用,方便自己工作的小東西。但是設計得很舒服,大家寫着寫着,就開使用Python做別的事情了。Python也是十項全能,AI、爬蟲、Web後端,都有很身後的基礎。

Python有版本區別,Python 2和Python 3是不兼容的,現在應該學Python 3了,還是要知道Python 2這個東西,不少地方還能見到Python 2的語法。

光學Python語言也是沒什麼用的,要搭配學習主攻領域的工具。做神經網絡那就上Keras,研究得深入一點可以考慮TensorFlow;做爬蟲那就是Scrapy;後端開發那就是Flask、Django一類了。

3. 移動App開發

iOS那就是Swift(還要瞭解Objective-C),Android那就是Java(也可以考慮Kotlin)。平臺指定的,這個幾乎沒得選。

學習方法

決定了語言和平臺/用途之後,學習大致就是兩條線,一條線是學語言本身(語法(詞法、句法)、關鍵詞),一條線是學習平臺。

語言方面,我自己當年是從Codecademy上手的,還不錯。

平臺方面,Web其實非常直觀,HTML和CSS可以直接臨摹自己喜歡的網頁,JavaScript可以直接讀一下DOM,其實主要就是document.querySelector和element.addEventListener兩個API,已經可以做很多事情啦。Python那幾個,找各個框架的主頁去看就好了。

幾個建議:

1. 遇到問題勤搜索,尤其是StackOverflow,初學者會遇到的問題,以前一定有人遇到過,一定有人在網上問過,一定有人在網上答過,就看找不找得到了。

2. 搜索 [keyword] + tutorial 時常能找到不錯的文章。Tutorial類型的文章一般是寫給初學者的,相對簡單。

3. 一開始不要太在乎「姿態對不對」,做出來效果是你想要的效果,那就是對的,過程可以慢慢調。編程雖然是很樸實的領域,也有不少指揮家。

4. 如果學了一陣子覺得沒學到東西,可能是教程不好。我覺得網上九成的九成都很差,主要是人不擅長想像「無知」的狀態,教不到點。如果遇到這種狀況,換一個教程試試。

5. 實在學不進去,可能緣分還沒到,不妨放一放,遇到很想用編程解決的問題,再去學。

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…
加载中…

发布评论