手民
編程自學指南三・入門指南
學編程,從哪開始呢?
首先,要區分「語言」和「開發平臺」。大致就像「(自然)語言」和「話題」的關係:中文能講飲食,英語也能;西班牙語能聊哲學,豪薩語也可以。編程語言與平臺的關係相對更緊密,有點像討論遠東史要用文言,談伊斯蘭繞不開阿拉伯語一樣。
所以這裏有兩個決定要做:學什麼語言,用什麼平臺(或者說,用語言來幹什麼)。
先講講不要先學什麼。
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. 實在學不進去,可能緣分還沒到,不妨放一放,遇到很想用編程解決的問題,再去學。
喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。
发布评论…