menu trigger
訂閱電子報
訂閱
新手學程式-我該學哪種語言?新手常見毛病我中招了嗎?
2019/12/20
F5 學程式

 學程式對於新手來講,就是一個從零到一、從無到生有的過程。任何技能養成的起步都是困難且必須付諸一定程度努力的,而程式語言特別是如此,光是一堆看密密麻麻、看不懂的程式碼就讓初學者心生畏懼。 本文整理了新手常見的疑惑及易犯的錯誤,並且給程式初學者一些建議,希望可以給迷茫的新手一點方向!

 

 

我該學哪種語言?

 

 

程式語言百百種,許多新手在選擇語言時,就先卡關許久。有些人會看程式語言排行榜,挑最受歡迎、最多人用的語言;有些人會挑看起來最有「錢途」的程式;挑選能廣泛應用的程式語言;或是以後想從事什麼職業,就學與之相關的語言。這些方法都沒錯,但我認為最重要的是「確認目標和動機」,千萬別人云亦云!

 

先問問自己,我為什麼要學程式?如果你是為了轉職、升遷需求,那妳可以上網找找資料,或是詢問身邊的人,該領域的人才需要具備何種技能?你也可以到求職網站搜尋看看,通常雇主會要求這個職位的人需要會哪些程式語言。
如果你不是因為轉職、升遷需求,單純想學寫程式,那不妨從解決生活上的問題開始!例如,你可以寫一個記帳 APP。

 

 

盤點常見程式語言的特性

 

 

python 是許多新手會選擇學習的程式語言,它的優點是語法簡單易懂,例如句尾不用加分號、變數不用事先宣告類型等,學習者不需要花太多時間在語法的細節上,因此初學者較容易上手。另外,python 能應用的領域非常廣泛,舉凡近年來討論度非常高的人工智慧、網路爬蟲、數據分析、手機 APP 等,且它也可以跨平台使用,但通常用於處理 data 居多。不過,因為它是解釋型語言,因此常被別人說速度慢。相較於其他程式語言來說,它的職涯選擇較其他程式語言少。

 

總結:語法簡單易懂、應用領域廣泛、處理 data 居多
入門難度: ★

 

 

一說到製作網頁,大家第一個想到的就是 HTML、CSS、JS 這幾個前端三巨頭,JS經常用來輔助 HTML 實現網頁的功能,替網頁增加互動式效果,而它也能自己完全構建 Web 應用程序。JS 還有一個好處就是「跨平台」,JS 可以運行在 Mac、Window、IOS、Android等裝置上,且目前的主流瀏覽器都支援 JS 語法,JS 甚至開始往桌面應用程式發展, 知名部落客兼開發者 Jeff Atwood 提起 JavaScript 時 ,甚至還說,所有能用 JavaScript 編寫的程式,最終都會被寫成 JavaScript。 不過 JS 的的安全性不高,因此 Web 安全性可能會犧牲某些功能。你也可以學習它相對應的框架,讓你寫程式時更加快速且順利。

 

另外,如果你想建立網站,HTML、CSS是你必學的!它們兩個都不算是程式語言,HTML決定的是網頁本身的架構、內容資訊等;CSS則決定網頁的排版、外觀、形狀等跟視覺有關的事情 。HTML、CSS 相較於其他程式語言來說,學起來也不算困難,而且學起來好處非常多!例如你可以為自己製作一個網站,放置自己的作品集,應徵工作的時候就能派上用場。

 

總結:跨平台兼容、應用廣泛、Web 安全性對 JS 某些功能造成犧牲
入門難度: ★★

 

 

在 TOBIE 的排行榜,Java 穩坐第一名的寶座很長一段時間了,它是歷史悠久的語言之一,因此資源相當豐富。它能被應用的範圍及領域也非常廣泛,如:金融業、大數據、物聯網等,發展相較成熟,有很多的社群資源可以使用。Java 也可以用來開發 APP及遊戲開發,較知名的實際案例有 Gmail和 Minecraft。而它的優點是它可以跨平台運作,寫好的程式碼可以在各種框架下使用,不用為了不同的裝置、作業系統而寫不同的程式碼。不過,有些人認為它的取代的語言多、開發效率低、運行速度也較慢。 而職缺需求方面,在台灣,使用 Java 的企業仍舊佔多數,人才需求也較多。

 

總結:資源豐富、通用性高、人才需求多
入門難度: ★★★

 

 

php 是一種通用開源腳本語言,吸收了 C 語言、Java 以及 Perl 的特點,同時也自創了 php 的新語法,它支持幾乎所有流行的資料庫和作業系統,使用非常廣泛,主要適用於 Web 開發領域,且 php提供了豐富的函數,它也可以嵌入 HTML 當中使用且允許網路開發人員快速編寫動態頁面。關於 php,網路上的資源也很豐富,也有很多成熟的框架,而它也有強大的跨平台性,能夠在 UNIX、Linux、Window、Mac OS、Android等平台上運行,我們熟知的網站也有非常多是用 php 建構而成,例如:Facebook、WordPress 等。而它的缺點就是語法不太嚴謹,比如變數不需要定義就可以使用。

 

總結:資源豐富、常用於網頁開發、語法較不嚴僅
入門難度: ★★

 

 

C 語言在 TOBIE 排行榜也是名列前茅,相較於上面提及的程式語言,C 語言較難入門,網路上甚至流傳一句話 – 工程師的缺德行為,就是叫初學程式的朋友去學 C++。也有人將 C++ 比喻成開手排車,你必須要了解離合器、換檔,而 python 像是開自排車,需要自己操控的東西較少。雖然 C++ 較難入門,不過學習它,可以鍛鍊完整且扎實的電腦知識,例如:它允許你用不同的方式與程式碼去達成同一件事情,如此你可以學習用不同角度去解決你的問題。不過這意味著你除了要學習很多方法外,也要小心被各種方法搞昏頭。另外,它跟 python 相比還有一個優點,它在處理龐大資料或執行很複雜的程式時,執行速度比 python 快很多。

 

總結:較難入門、可訓練程式邏輯、處理龐大資料時速度較快
入門難度: ★★★★

 

 

新手常見症狀,你也中招嗎?

 

症狀一:人云亦云,常常學半套?

「聽說 python 很適合新手」、「聽說 Java 的職缺多,我學 Java 好了」,很多初學者在選擇第一個學習的程式語言時,會迷失在這些意見當中,常常聽到另一個程式語言的好,就跳去學那個程式語言,導致每一種都學習得不夠扎實。所以在選擇學習哪一種程式語言前,先釐清自己為何要學它?你也要了解自己適合什麼學習方式與管道,是跟隨學校教育、線上課程,還是閱讀平面資料?

 

症狀二:只練習範例跟概念?如何檢視學習成果?

不論是看書學習還是參與線上課程,許多初學者學習完畢後,都只練習簡單的範例和概念,而沒有實際寫出一個成品。學程式就好比開車,在駕訓班的場地會開車,與真正實際上路簡直是差十萬八千里!考了駕照後卻從未實際開上路,那麼駕照有考跟沒考好像差不多。因此建議新手可以從小型的專案或小工具開始,以一個特定功能作為撰寫的目的,並事前預設要達到的效果,才能清楚知道自己的問題在哪,畢竟實際上過戰場,才能真正驗證你的學習成效,也才能知道哪裡還需要加強!

 

症狀三:我花這些時間,為什麼還學不會?

新手對於學程式常常失去耐心,一旦碰到解不出來的 bug 就信心大減,認為自己沒天分,又或是認為自己付出的時間與學習成效不成正比,而大大降低學習意願。其實,許多新手會在自己的舒適圈徘徊,經常反覆學習自己已經會的知識,而不學習新的內容。初學者想挑戰進階內容而遇到困難時,常常會認為是自己基礎不夠扎實,又回去反覆練習基礎知識,但如此往往只是在加深原有的記憶;又或是初學者投入練習的時間不夠多,常常三天打魚,兩天曬網,忘記前幾天學過的知識,只好再回去複習,如此無限循環,往往無法突破。
如果你遇到這些問題,記得重新調整你的學習計畫,檢視你的「學習時數」、「學習深度」。

 

症狀四:有問題卻不發問?

許多新手在遇到問題時,不好意思麻煩別人,或是以為自己讀得不夠多而不敢請教別人,導致在一個問題花費太多時間,一直在問題裡打轉,累積許多挫折感,大大降低學習意願。許多初學者也怕自己「問了笨問題」而被嘲笑,如果不要當伸手牌,不自己先找資料就問問題,其實都無妨 – 越是評價問題的好壞,越容易不敢提問。若能經由提問,吸取諸位前輩大神的經驗,快速解決問題,反而能越快累積經驗值,提升學習效率。如果有問題,別忘記你還可以加入 程式丼起來 臉書社團,跟大家一起學程式、一起交流 – 一個人寫 code 很孤單,一群人寫 code 很幸福!在這裡,不怕問題多,只怕你不問!

 

 

結語

 

總之,學習程式語言就是別半途而廢,只要你肯花時間練習且找到適合自己的學習方式,又願意正視自己的問題,勇於發問,一定都會有成效的,畢竟,皇天不負苦心人!不過,還是記得要適時的給自己喘息的時間,別讓自己太爆肝,降低了學習的動力~以下推薦給你一個 LeetCode 的課程,許多新手若是要練習題目、增加經驗值,都會從這邊刷題開始!

 

 

推薦給你的線上課程

 

從 LeetCode 學演算法

  • LeetCode平台的使用方法導引
  • 面對程式面試的準備策略和建議
  • 詳細解說演算法基礎,加強相關概念
  • 透過題目演練深化演算法理解,並強化自身解題能力

 

 

延伸閱讀