[初學者必讀] 在開始學習之前,你應該了解的三件事

1 動機與目的

其實學習任何新事物都一樣,首先你得搞清楚你為何學習(動機),以程式語言這個領域來說,要學習哪一個程式語言並非你首先就要思考或決定的問題。一定有某個事件觸發了你想要學習的想法,這就是所謂的動機,足夠強烈的動機才可以讓自己在學習過程有所衝勁。如果你只是單純因為聽說程式語言很重要,但你不知道學了要幹嘛?那講難聽點也只是跟風,學習過程就很容易遭受挫折而放棄。

試問一下自己,覺得自己的英文能力好嗎?回想一下你在求學階段,之所以學英文是為了什麼?大多數人的回答肯定都是為了考試,對吧!?以這樣的動機,自然學習起來就會感受到痛苦多於成就感,當然,錯誤的學習方式又是另一個問題,不在此多加討論。

搞清楚學習動機後,再來你還得思考一下,你在學習後想要得到什麼樣的結果(目的),這就牽涉到你要往哪個方向學習了。舉例來說,有人想要學習開發手機App,那就得先確認你要針對Android手機還是iPhone手機。不過,也有些技術是可以在Android和iPhone裝置都可以運作的,我們之後也會花點篇幅來介紹這個部分。

再舉個例子,有些人對網站技術有興趣,想要自己架設網站,那就得先搞清楚,架設網站和撰寫網頁程式,根本來說其實是兩回事。怎麼說呢?若只是單純架設網站,那可以直接學習一些用來架設網站的工具,這些工具是用網頁程式所撰寫而成的,你可以不需要學習或撰寫任何一段程式碼,就可以架設精美的網站,但你還是得具備網站架設的相關知識。那如果你是要具有開發網站的能力,除了須具備前面說到的基本知識外,你當然得依照你想要方向來學習,以網頁技術而言,簡單來說分為網站前端和後端兩個部分,如果連這些基礎知識都不清楚的話,自然是不知道從何開始。

2 找到合適的方法

有了明確的動機和目標後,就可以開始進入學習階段,以現有的環境來看,學習的資源可以說是隨手可得,不論線上或實體,都有各式各樣的程式語言學習課程,那究竟要怎麼選擇呢?如果你已經有了明確的目標,那我想選擇上應該不會太難。有些課程很熱門,但不一定適合所有人,如果課程提供試聽,那最好先是聽看看是否符合自己需求,還有講師的上課方式和自己的吸收狀況,都一併作為考量。

對初學者來說,我認為你在第一步並不是選擇到底要學哪一個程式語言,而是先有程式語言的相關理論基礎,然後依照個人興趣再去決定往哪個領域逐步前進。如果在這個階段,還不確定自己到底要往哪個領域發展,其實也沒有關係。選定了一種語言開始學習後,之後要學習其他語言也都相對容易上手了,不論哪一種程式語言,概念上都是互通的,差別在語法和使用上的差距為主,就跟學外語一樣,唯有透過大量的練習來熟悉它。

所以千萬記得,任何事的成功絕對都不是一蹴可及的,要在短短一兩個月從初學者變成一位軟體工程師,難度是非常非常高的。如果你確定你要的是成為一位軟體工程師,那坊間有很多不同的密集衝刺班,你都可以考慮看看,但重點是真正的實務經驗,還是得從進到相關公司參與專案後,慢慢累積。簡單來說,不論你是透過哪種學習管道,教給你的都等於只是給你一個工具,告訴你怎麼使用。但取得工具後,怎麼使用它,靠的就是你自己去試,然後從反覆的實作中去學習技巧,使其純熟。

3 最有效的方法是模仿

其實學習程式語言,就跟我們出生後學習語言一樣,先聽人家怎麼說,然後模仿。學習任何一種程式語言,也是大量的看他人寫好的範例程式,透過模仿的過程學習。不過模仿總要有個對象,就如同《刻意練習》這本暢銷書裡提到的,在日常生活中刻意練習的第一步就是「找個好老師」。

前面提到學習的動機與目的,確立好目的以後,學習的目標就能相對明確,自然就有較高的達成機會。透過看別人怎麼做,讓自己主動思考,搞清楚程式語法和特性,接著就可以用自己的邏輯產出自己版本的程式。

我所推薦學習的QML程式語言,在Qt官方有非常多的範例程式,對程式中所用到的模組,也有非常充足的文件提供參考。我自己在接觸這個語言初期,就是透過大量的範例參考,模仿其使用的方式,套用到專案的開發當中,非常實用且有效率。


這個網站能教你什麼?

接下來我會有一系列的文章,針對程式語言的初學者,透過QML這個程式語言,教授程式語言的基本概念,並在這個前提下,讓初學者可以在短期內,就可以撰寫簡單的應用程式。不過我還是要再次強調,這無法讓你馬上成為一位軟體工程師,但可以讓你奠定一些基礎,然後再依照自己有興趣的領域,去學習不同的程式語言技術。

另外,對於中階和高階的學習者,預計也會有一些相關的文章,像是Qt QML與C++的互通、Qt開發Android或iOS應用程式、Qt在樹莓派上的應用、等等,有機會的話,都會有專文介紹。如果你對於程式語言的學習,或者有任何Qt相關的問題,歡迎透過留言來信詢問。

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 三寶爸工程師