[程式教育] 學習程式語言的Why and How

Photo by Tim Mossholder on Unsplash

前面我們淺談了「為什麼要學習程式語言?」和「程式語言是什麼?」,應該都理解了學習「程式語言」的重要性。不過,在進入「如何」(How to?)學習之前,我們要再談一次「為什麼」(Why?)

為何要再問一次Why呢?因為前面的Why只探討了「重要性」,當你知道了一件事很重要,並不表示你會興起想要去做的念頭,也就是「動機」。

學習要有足夠的「動機」和正確的「目的」

舉例來說,大家都知道「運動」很重要,也知道運動能帶來很多好處。但是,真正有規律在運動的人,相對或許是少數。因為大多數人,還是沒有「立即性」的需求,讓他能觸發想要實踐的心。換句話說,就是沒有足夠的動機,所以運動的優先權會被排在其他被認為更重要的事之後。

再舉個例子,我們從小都被灌輸「英文」很重要,但學習英文的動機和目的,大多數是為了「考試」、「升學」必須取得好成績。所以一旦離開校園、或沒有上述的目的後,就失去了學習的動機。如此一來,在職場一旦進入需要使用英文的環境,過去所學反而無法派上用場,等於要再額外花時間進修英文。

目的不同,學習方法就不同

從上面學習英文的例子可以看出,學習的方法會跟著學習目的的不同而改變。學習一個語言的主要目的當然是為了「溝通」,回想從孩提時期是如何學習母語的,就可以知道學習過程是聽、說、讀、寫。但我們的學習過程,大多數反而是先讀寫、再聽說,或者說是重讀寫、輕聽說,都是因應考試的型態而定義了學習的方法和順序。

我在去年寫了一篇針對初學者的文章,「在開始學習之前,你應該了解的三件事」,在文章開頭就點出要先釐清學習的「動機」與「目的」,才開始思考或尋找對應的學習方法。要學習一件事,其實只要花一定足夠的時間,就能有所成效。

我們不是要成為專家,所以不需要花上一萬小時去學習某項事物到專精程度。您可以觀看由《不花錢讀名校MBA》的作者Josh Kaufman,在TED上的這部影片,影片內容就解釋了,當學習有特定目的時,就能訂定對應的有效學習方法。

沒有動機怎麼辦?

根據統計,有70%的在職工作者,其工作內容或所需技能是跟大學念的科系完全無關。這當然還是與我們從小的學習模式有關,我們從小開始學習這麼多科目,是因為學校教這些而學,也因為考試要考才學。到大學前,幾乎都是這樣的學習歷程,所以大學念的科系,往往不一定是自己真正有興趣的。

關鍵在哪?「探索」。當一件事沒有接觸之前,我們唯一可能有的想法是「新奇」,因為沒碰過,所以看起來感覺「有趣」。但我們的學習方法,大部分都是無趣的,久了以後,對於新事物就很難提起興趣。

所以,沒有動機是很正常的。就如同你問一個國中生或高中生,「你大學想念什麼科系?」我想能回答出來的人不多。其一原因是,他們不知道唸這些科系能幹嘛?或者說每個科系究竟在學什麼並不清楚。再者,不知道自己是否適合,當然完全沒有概念。回到根本,沒有探索,當然無從得知自己是否適合。

圖片來源:換日線

之前就提過,學習「程式語言」並不是為了成為程式設計師。再舉「運動」為例,從事某一項「運動」也不一定是為成為「選手」,對吧?是因為單純喜歡,而且可以從中得到好處。學習「程式語言」的好處,也在第一篇談「為什麼」就說明了,可以培養「邏輯思考」、「創造發想」與「解決問題」三種能力。在國高中生階段,透過多元探索,尋找自己熱愛的事,就是最大的動機了。

「如何」學習程式語言?

從上述內容和這部影片中,我們可以得知,學習方法和學習的目的有很大的關係。也就是說,你的目標有多大多遠?以及你有多少時間來學習?當然,還有你目前的程度在哪?這些都是影響學習方法的決策因子。

其實,大部分的技能,都可以透過「刻意練習」來養成。在《刻意練習》這本書提到,「第一步,找個好老師」。以現在的時代,網路就是老師,但網路的資訊太多,需要有系統性的資訊整理,才能有效的學習。

網路上有許多學習平台,不論付費、免費的都有,坊間也有不少以營隊形式的實體教學。接下來的文章,我將花一些篇幅,來介紹一下目前有哪些學習程式語言的管道。請持續追蹤我的文章,獲取相關資訊。當然,我也不吝推薦自己,有興趣的家長或同學,歡迎透過我的臉書聯繫我,可以安排時間,進行一對一的指導。

Read more

聽說 AI 都能寫程式了,那我還需要學程式語言嗎?

自從ChatGPT橫空問世,人們在獲取知識的方式,發生很大的改變。很多既有的知識或疑問,可以不用在透過Google等搜尋引擎,搭配正確的關鍵字,從中找到相符的結果。 有了ChatGPT,只要用聊天的方式,用人類自然語言詢問,就能在短時間統整出邏輯清晰且條理分明的結果。不論是知識的學習、文章的統整、甚至程式的撰寫,都能透過AI工具快速產生具有一定水準的成品。 那,既然AI都能幫忙寫程式,而且也寫得不錯,我還需要學習程式語言嗎?答案是「肯定」的。 AI是輔助工具,不是程式設計師 沒錯!AI能寫出不錯的程式碼,但如果你本身不懂程式設計,你如何判斷它寫出的結果,是否符合你所想要的?對懂程式的人來說,他會比較清楚該如何對AI工具「下指令」,程式設計師可以利用AI工具的輔助,節省掉實際開發與除錯的時間。 再者,要寫出一個可以應用的程式,並非如此簡單。從一開始的需求分析,到架構設計、模組化元件、單元測試等等,絕對不是透過跟AI工具講三兩句話就能產出的。 AI是透過背後龐大資料與分析模型取產生我們想要的結果,意即,它做不到「無中生有」。相較於AI,人類的優勢在於「創造」。AI工具的出現與

By 三寶爸工程師

[程式教育] 該學哪一種程式語言才好?你必須先了解程式語言的7個應用領域

之前一再強調,學習程式語言不完全是為了將來當工程師而學的。但對初學者來說,在這麼多種程式語言中,究竟要選哪一種程式語言做學習呢? 在這之前,我們要先了解,程式語言的應用,大概有哪些領域。先看看自己對哪一個領域有興趣,不妨從該領域下手,學習一種該領域會用到的程式語言,並透過學習去完成一個小作品。 以下是依照應用領域的分類,列出該領域的幾個主要採用的程式語言。 一、網頁開發 (Web Development) 網頁(網站)開發是最普遍的一種應用,幾乎每個人每天會接觸到的,都脫離不了網頁開發的相關產品。在這裡我要特別說明,「開發」網站跟「架設」網站是兩回事,如果只是要「架設」網站,那是可以不需要學會寫程式就能做到的,因為有太多現成工具就可以達到「架設」網站這件事。關於「架設」網站的工具,我們有機會再另外寫一篇文章說明。但不論如何,網頁(網站)的基本運作原理還是要懂的。 網頁開發的部分,一般來說還區分「前端」和「後端」的開發與維護。

By 三寶爸工程師

[程式教育] 我未來不想當程式設計師,那還需要學程式語言嗎?

這個問題,最中肯又八股的答案當然是「不一定,但有學比較好」。如果問我,我肯定是建議你「最好要學」。 我換個問題,我未來不想當英文老師,那我需要學英文嗎?答案應該很清楚了! 你可能會說「不一樣啊!」請你仔細想想,學習「語言」跟「程式語言」的目的,我在 [程式教育] 學習程式語言的Why and How 這篇文章內有提到,兩者的目的一樣都在「溝通」,只是對象不同。 以目前AI發展的速度,也許不久的將來,「語言」也不需要學習了也說不定。屆時,「程式語言」的角色可能反而更吃重。並不是說你要學會用程式語言來開發軟體,而是透過學習程式語言吸取基本知識和延伸的能力。以下我列出五點,學習程式語言所能帶來的價值。 一、提升問題解決能力與創造力 學習程式設計可以培養邏輯思維和系統化解決問題的能力。這些技能在各種職業中都是非常寶貴的,無論是管理、行銷、工程還是醫療領域,遇到複雜問題時,能夠分解問題並系統地找到解決方案是非常重要的。 程式設計是一種創造性的活動,讓你能夠實現自己的想法和項目。

By 三寶爸工程師