IT研究所

新手學程式該學哪種語言?程式新手常見毛病我中招了嗎?

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

我該學哪種語言?

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

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

【延伸閱讀-轉職必看】
APP面試經驗及心得分享-面試題目全攻略!
前端面試經驗及心得分享-一次搞懂前端面是最愛問的問題! 
後端面試經驗及心得分享-面試後端工程師,該怎麼準備作品集? 
UI/UX 面試經驗及心得分享-聽聽面試管怎麼提問~ 

盤點常見程式語言的特性

Python

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

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

【延伸閱讀】
 靠Python就能投資賺錢嗎?-什麼是程式交易?跟 python 又有什麼關係?
「程式交易」是什麼?個人戶也可以使用自動交易嗎?-教你如何開始使用程式交易!
Python資源包 新手到老鳥都適用-幫你整理新手到老鳥都適合的 python 資源包!
Python 免費學習資源總整理-包含相關工具、基礎篇以及投資教學~

JavaScript

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


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

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

【延伸閱讀】
10個新手必知的 JavaScript 實用技巧-讓你在學習時可以提升寫 code 的品質!
如何不使用 JavaScript 的 toUpperCase 跟 toLowerCase 轉換大小寫

Java

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

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

【延伸閱讀】
Java 已死 ? 那它為什麼還是 TIOBE 排行 第一名?- Java 的榮景不再嗎?
Java 學習周計畫-完整的學習筆記,快來跟戰友一起交流,寫 code 不孤單!
Java 入門教學-從開發環境建置開始教你! 

php

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

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

【延伸閱讀】
來挑你的程式語言吧-熱門語言大揭密,快來看看哪種程式語言適合你! 
網頁新手入門:初探網頁架構和前後端語言-了解前後端定義~

C / C++

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

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

延伸閱讀】
初識 C 語言-從基本語法到陣列-學習基本語法、函式、陣列等,初步認識 C 語言。
物件導向程式設計-想學好目前主流的程式語言,那你必須弄懂什麼是物件導向。
計算機概論與程式設計-學習C++程式語言的基本運作,入門沒負擔!

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

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

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

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

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

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

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

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

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


結語

總之,學習程式語言就是別半途而廢,只要你肯花時間練習且找到適合自己的學習方式,又願意正視自己的問題,勇於發問,一定都會有成效的,畢竟,皇天不負苦心人!不過,還是記得要適時的給自己喘息的時間,別讓自己太爆肝,降低了學習的動力~

Facebook Comments