其實不用
好像很多人都在苦惱自己背不起來語法,這個擔心有點太多餘。
現在學校的程式教育,會考語法,主要的原因就是學校都從最基本的開始教,流程控制、變數指派…..
這些語法並不難,甚至非常基本,多數人懼怕的原因可能來自於真的要去寫一個小project的時候,看到一堆沒用過的語法就覺得很頭痛。簡而言之,基本的語法是一定要會的,但是這些語法要怎麼組裝起來?data flow的觀念就重要得多,所以學程式絕對不是在背一大堆的語法、除了學校考試之外,也不會考你實現這個功能/想法 的語法怎麼寫。那如果不會寫怎麼辦?不會寫很正常,我們在第五講:寫程式時的思路,我怎麼想 中有提到,所謂的不會寫是「沒有辦法想出input 、 output ,參數設置、變數間的互動不佳」語法的不會只是小問題,Google就好,這也是為什麼我會在寫程式前該具備的能力提到:你應該學會如何Google ,這時候就會有一個新的問題:「Google這麼麻煩,我可不可以脫離Google ? 」
我們不如把問題轉化一下,為什麼會想要脫離Google呢?查詢Google是你的問題嗎?不太對,Google是你的需求,你的需求是「告訴我XXX在某語言的語法怎麼寫」,也就是說,問題依舊是「不知道該怎麼寫某語言的語法」,所以問題不變,但是你問了一個看似新的問題,我們就要去想這個問題的動機是什麼,可能就是「如果我太依賴Google,我的專業到底在哪裡?」
專業就是你的程式設計方式,有沒有好的設計模式、變數命名符合規範、思考函數的時候夠不夠嚴謹等等…….絕對不是程式語法背得夠多就叫會程式,有時候你想到一個方法,用這個方法寫完一個函數,發現網路上已經有人更快寫完、寫得更優雅,你要學的就是去臨摹他的思考方式,知道「有這個函數存在、我知道如果要做A我得用B」就好!然後可能把它記在你的筆記中(我是用evernote記下思考流程跟onenote貼上程式碼片段,這樣的安排跟這兩套軟體的設計邏輯有關,有機會細講)
如此一來,你就相當於在你的大腦之中安裝了一個抽屜,寫程式的時候忘記語法怎麼辦?沒關係,因為你大概知道要下什麼關鍵字Google、某門語言有內建的語法、類別幫忙實現,這時候拉出來去找用法就很快。久而久之,那些常用的語法就會自然而然記住了。
接下來我們說個為什麼語法不用背的原因,關鍵就在IDE!
什麼是IDE?
IDE叫做:整合開發環境,就是你寫程式碼的地方,比如Java可能是eclipse 、Python是Pycharm之類的…….
現在的IDE服務越來越好XD 打個bg可能就會出現候選字background,這樣有什麼好處?不只加快開發速度,複雜的語法你只要記住縮寫就好,我們在學最基本的程式語言時都會打一些if , else , print….之類的語法,這些基本語法的共通點就是很好理解跟很短!IDE讓我們能夠更專注在理解這條語法所能產生的output 、進入的input是什麼,通常都是我打一些縮寫然後tab,一行程式碼就寫完了。
IDE更強大的絕對不止這樣,還有一個最強大的就是code snippet!
簡單來說,就是讓你寫好一個函數、類別然後按個自定義的縮寫就「啪拉」直接寫完,比方說我不想要每次寫一份網頁頁面就去copy bootstrap、fontawesome之類的連結,我就設定好bs-setting 是我的trigger,然後只要我打bs-set + tab ,直接幫我設定好,還有一個用法是Python做資料分析的EDA、modeling之類的,因為我個人太愛用plotly這種好看但是設定費時的庫,也就設定個snippet 就可以專心在「我想要做什麼」上。有點像是程式本身的腳本語言,你不需要每次都重新寫,只要設定好想做的事情、跟IDE設定trigger就行了,非常方便。因為這個IDE提供的福利,我一直都蠻猶豫要不要繼續寫一個純粹簡化語法的資料分析套件XD,畢竟除了Jupyter notebook,有code snippet的IDE都可以調一下就馬上用,缺點是換了一個IDE就要重新設定吧!基本上有名的文本編輯器(文本編輯器其實就是記事本,不過可以安裝一堆外掛來讓他變成好用的編輯器)都支援code snippet ,比如Atom 、sublime 、Vscode等等…我自己目前都是開發網頁用vscode,寫Python用Jupyter,這是題外話。
那code snippet的思想就是 「建立自己的程式碼軍火庫」跟筆記是一樣的意思。
我在「寫程式的情境,軟體開發是怎麼一回事」會好好說明,不過就跟我查詢東西,會整理到筆記本上一樣,我可以更快調用想用的函數、想做的功能等等…..這也是寫程式其中一個好玩的地方,你要怎麼設計好自己的筆記本編排?如何更快翻出抽屜找到程式碼?噢這大概又可以寫一篇來好好細講,有興趣的朋友可以先查詢「知識管理」大概就會有個想法,至於我在程式上的知識管理,或許等到在Hahow開課或者工作坊的時候會講講,有機會會寫個長篇的文章,畢竟有點多,而且是門比較難、又有點藝術的技能,學完我在程式碼上的知識管理之後,相信能夠讓您對獨立開發(不依賴教學,想做什麼就有能力自己做一個出來)更得心應手。
那麼以上,就是程式語法要不要背的探討!不需要,專心在學習自己的思考方式以及data flow吧!感謝您的觀看,我們下篇文章見!
好文作者——Dennis Dsh