菜雞程式指南EP2. 新手的程式語言選擇困難症

更新於 發佈於 閱讀時間約 11 分鐘

好,在看完前兩篇程式 勸退 心法文章後,如果沒有澆熄你學程式的熱情,那麼恭喜你,你已經踏出程式之旅的第一步了(ノ>ω<)ノ。
不過在這之前,身為程式初學者,你要面臨的第一個關卡,絕對是

我該學習哪種程式語言???

不過你也不擔心,現在網路資源這麼普及,相信這種萬年新手題,一定會有相關回答可以參考的。

於是打開估狗、輸入「程式語言 入門新手」之類的關鍵字、按下搜尋。蹦!各種資訊映入你的視線,像是炸彈一樣攻擊你的認知。
「[ 2022 ] 新手最該學的程式語言」
「轉職者注意!最順利求職的語言選擇」
「近十年來最夯的程式語言,不學後悔」
等等像是老高影片般的介紹標題,內容又穿插著各種你看不懂術語,什麼宣告、完整函示庫、動態語言、靜態語言,每種分析原因你看的似懂非懂,卻又看起來怪有道理的:

有人推薦學 C 或 C++,可以對電腦底層邏輯有比較堅實的理解;
有人推薦學 Java ,除了使用率高,也可以對 OOP 有扎實的應用認識;
有人推薦學 JavaScript,前後端都可以實作,弱型別也省去新手在型別宣告上的麻煩;
有人推薦學 Python,說人工智慧與機器學習是大趨勢,學了以後趕上科技潮流......

raw-image

看了各家之言,還是搞不清楚到底學哪個語言才是對的,再加上自己本身的選擇困難症,更是讓你惴惴不安,深怕如果在起點就學錯語言,會不會在這條路上一步錯、步步錯,忙了半天鎩羽而歸(◞‸◟)......


如果你在看了各種推薦文、介紹文,對於要從哪個語言開始入手人毫無頭緒的話,接下來我就以我的經驗與認識,分享一下我對於這個問題的看法(不是絕對解答),提供給選擇困難症的你做個參考~

情境1. 已有明確的學習方向/目的

如果你已經確定好「我學程式就是要XXX...」的話,那其實沒什麼好猶豫的,根據你要學的目標尋找相對應的程式語言即可。

如果你想學習網頁前端設計,那就學 JavaScript;
如果你想學手機 App 開發,那就學 Swift (iOS) 或是 Kotlin(Android);
如果你想學遊戲開發,那就學 C++/C#;
如果你想學資料分析、機器學習,那就學 Python ......


不過我相信大部分的初學者,在剛開始學習時只是抱著「我要學程式!」這種一股腦的衝勁,根本搞不清楚這個領域的發展方向有哪些,更遑論根據方向選擇語言了。
如果你也屬於這一類人(包括當年ㄉ我),倒也不用覺得難過或沒有方向;事實上,我認為這樣倒可以讓初學者用一種更彈性、更基礎的心態,來認識程式語言的本質。

情境2. 我只是想學程式看看

根據我涉略數種程式語言、深入思考分析後,我會推薦給所有程式初心者們,不分領域、不論年度,最適合入門的程式語言是......

都可以,看你喜歡哪個語言、覺得哪個語言的語法看起來最順眼,就去學吧(゚3゚)~♪。

ㄟ先別氣到關掉網頁Σ(;゚д゚),這個看似沒有邏輯、不負責任的回答,其實是想帶出一個程式語言的核心概念:
如果你是完全初學程式,那你的學習重點不是某個語言的語法規則、某個語言的應用方式,而是更本質的「程式思維」

有看過 EP0 的同學,應該都對這個詞不陌生。我所謂的程式思維 programming,指的是「分析問題、解構問題、最後透過程式碼來解決問題」的能力。
每一種程式語言,其實都是應用類似的程式邏輯,達到自動化的效果,差別只在於應用的領域或是使用的媒介不同而已。因此,不論未來想發展的方向是甚麼,培養程式思維都是必經、也必須的學習課題。

話是這麼說,你可能還是很好奇,所謂的程式思維,究竟是個什麼東西、又該怎麼培養呢?

程式思維:三大工具的靈活運用

這邊簡單的說明一下我個人對程式思維觀念的剖析,分別是三個核心概念:資料型態、情境判斷與重複處理。無論你是學習什麼語言,都會驚訝地發現程式語言只是這三個概念實踐的媒介,差異只在於語法規則而已。

資料型態

相信不用我多說,電腦的記憶力無與倫比,我們可以善用電腦儲存龐大又多種的資料。
實際上,電腦又可以透過不同的資料型態,來幫助我們有效率的處理不同的問題需求,比如說基礎的資料型態,包含字串(string)、整數(integer)、小數(floating number)、布林(boolean)、陣列(array),高階的資料型態則有物件(object)、字典(dictionary)、串列(linked-list)、堆疊(stack)、佇列(queue)、樹(tree)等等。

raw-image

初學者在這裡要學習的是認識各個資料型態的特色,以及資料型態的靈活運用,如根據情境要求的挑選適合的資料型態、資料型態的函式操作、以及不同型態間的轉換處理等等。
深度理解資料型態後,你才能用最符合邏輯的儲存方式,操作、運行程式碼。

情境判斷

所謂的程式碼,就是一套工程師預先寫好的命令,讓電腦忠誠的執行指令、完成任務。
為了面對千變萬化的要求與情境,電腦自然要有一套判斷的標準,根據不同的狀況回復相對應的結果。

拿射擊遊戲來比喻,射中頭部的話扣500滴血,射中軀幹的話扣350滴血,射中四肢的話扣100滴血,射中襠部的話......直接歸零_(:3 」∠ )_。

raw-image

利用 if - else 判斷式,思考所有可能的數值情境、並設計出相對應的處理方式,就像是參透多重宇宙的奇異博士,不論是什麼結果都能正確應對!

重複處理

相對於容易疲弱的人腦,電腦高效、準確,而且最重要的是,不會靠么(  ̄ 3 ̄)y▂ξ,忠實的執行你給的任何指令(無論指令多沒有意義,比如從0開始不斷+1幾百萬次)。

如果你在設計程式的過程中,發現需要重複執行某個相同的步驟N次,就可以利用 for / while 迴圈,設計好迴圈內的重複處理的行為與迴圈停止條件,用短短的幾行程式指示電腦該重複多少次,而不是「親力親為」手動把程式碼編寫N次;

同時,如果你發現有一大組程式碼是為了執行某個邏輯關係緊密的步驟,而這個步驟在其他段落也有相同的處理時,便可以將這組程式碼提煉成 函式(function),之後需要的時候,只要用一行指令呼叫該函式,就可以執行這一整串的動作了。

先觀察題目需求、思考執行過程中重複操作的流程、並將其用迴圈/函式的方式處理,這個概念在程式設計裡稱為DRY:Don't Repeat Yourself,讓程式碼精簡、也易於維護。
如果寫程式都還要事必躬親、每個步驟都要親自 code 上去的話,這種「工人智慧」的設計方式絕對是讓你事倍功半、精神崩潰。゚ヽ(゚´Д`)ノ゚。。

raw-image

資料型態、情境判斷與重複處理,這三個基本核心概念貫穿了所有的程式語言,不論你是C、C++、Java、Python、JavaScript、PHP、GO、還是其他語言,其實都是運用這三個核心概念完成目標。
(當然實際上各別語言都有不同的特色,比如說非同步、執行序、物件導向、傳址傳值等等,但我認為這是進階的學習目標,初學者先以能靈活掌握運用上述基礎概念為主。)

這就有點像外功與內功的差異:外功是「型」的展現,或是拳腳、或是兵器的熟悉程度,而內功則是「質」的培養,體力、肌力、耐力、柔軟度等基礎體能的訓練,提升體格的本質。
重視內功(程式思維)的修練,再配合外功(語法規則)的學習,才有辦法將自身擁有的勁道發揮出來,成為真正的武術大師。

結語:挑選初學語言時你可以考量的因素

最後,讓我用兩個問答,來結束這次「語言選擇難題」的回合。

你為什麼擔心「錯」語言?

初學者在選擇五花八門的初學程式語言時,除去你本身的選擇困難症造成的焦慮,多數人會在這裡猶豫不決、甚至是擔心選錯語言的情緒,歸根結柢是來自於「無法學以致用」的潛意識:

如果現在學的這個語言,不是未來想深耕領域要使用的語言,那這段學習犧牲的時間、付出的學習成本,不就白白浪費、又輸人家一大截了嗎(◞‸◟)?

以我自己的經驗來說,這種疑慮絕對是多餘的。如上所述,你在第一次學習程式的目的,是為了培養「程式思維」,程式語言只是提供一個媒介,讓你去熟悉與思考如何利用這些概念,去解開相對應的問題或需求。

只要你的「內功」深厚,將來不論是要去學任何一種「外功」,其實都只是把新語言的語法規則摸熟而已,基本邏輯不變,學習時間與成本都比你想像中的低。
(而且以後端工程師來說,轉換語言、框架實在是家常便飯,同時還可能要熟悉多種語言以便操作不同的微服務,想靠一個語言打遍天下根本是癡人說夢)

要怎麼培養程式思維?

無他,花時間練習寫題目ξ( ✿>◡❛)。
我自己是在 ccClub 的 judge 題庫裡刷數學題庫,在每個絞盡腦汁、苦思冥想的過程中,漸漸掌握程式思維的概念。因此對於這個問題的回答,沒有什麼出人意料地答案或是捷徑可走,就是不斷地寫題目、去發掘題目裡的規律、設計情境、解出答案、習得訣竅。

這也是我覺得為什麼「學哪種語言」這個議題沒你想像的重要的原因。比起單純教程式語法的教學文或教學影片,有豐富題庫資源的課程才是真正初心者需要的教材。如果你找到有題庫提供練習的教學資源,大可別在意該語言是否是你未來一定會運用到的,學就對了,以掌握「程式思維」為學習目標。
(LeetCode 不算,上面的題目已經是比較進階的資料結構、演算法方面的習題為主,初學者直接拿這個去練習絕對是學的一個咪咪帽帽)


說是不用在意學哪種語言,其實我這裡還是有私心推薦(*´∀`)~♥兩種程式語言給初學者的入門參考:JavaScript 和 Python。
會推這兩個語言,原因倒不是什麼「產業趨勢」、「應用範圍廣」等外部因素,主要是這兩個語言結構跟語法相對比教單純、直覺,初學者可以將注意力集中在熟悉 資料型態、情境判斷、重複處理 的運用與掌握上。

再來給自家社團打個廣告,若選擇以 Python 作為入門語言,ccClub 提供免費註冊的 judge 平台與 YT 教學頻道,提供大量生活化的題庫與教學資源給初學者,只要肯投入時間、資源,努力寫題目,我保證你一定可以領悟所謂的程式思維,從程式小白畢業、成為初級 Coder ,往更進階的程式領域邁進!

(ccClub 還會不定期舉辦 Python 基礎班讀書會,如果想有同伴一起學習 Coding,還有認識爬蟲與專案實作,記得關注 ccClub 粉絲團的最新訊息歐!)

下一集跟大家分析幾種不同的教材資源優缺分析,敬請期待~


留言
avatar-img
留言分享你的想法!
avatar-img
魚骨書籤的沙龍
56會員
85內容數
這裡是專屬於我個人的生物學筆記,紀錄那些神奇有趣、變化萬千的有趣生物知識。 撇開為了分數而苦讀的生硬生物知識,讓我告訴你該怎麼用正確的姿勢,閱讀生命的奇蹟故事!
魚骨書籤的沙龍的其他內容
2022/12/24
身為一個程式學習者,如何用正確的心態與方法進行學習,將大大地影響你的學習效率、成果,還有學習過程中的心情。
Thumbnail
2022/12/24
身為一個程式學習者,如何用正確的心態與方法進行學習,將大大地影響你的學習效率、成果,還有學習過程中的心情。
Thumbnail
2022/08/29
在確定學習哪種程式語言後,接下來總算要進入正式的學習了......(´・ω・`)吧? 這個章節就稍微總結整理一下,身為程式小白,你會碰到的幾種學習資源,以及該如何妥善選擇才能有最大的學習成效吧(ゝ∀・)b!
Thumbnail
2022/08/29
在確定學習哪種程式語言後,接下來總算要進入正式的學習了......(´・ω・`)吧? 這個章節就稍微總結整理一下,身為程式小白,你會碰到的幾種學習資源,以及該如何妥善選擇才能有最大的學習成效吧(ゝ∀・)b!
Thumbnail
2022/08/13
身為程式初學者,該抱持著什麼心態踏與認知上起點,才不容易在半途而廢?
Thumbnail
2022/08/13
身為程式初學者,該抱持著什麼心態踏與認知上起點,才不容易在半途而廢?
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
這篇文章專門寫給「非」資訊相關科系畢業的人,說明怎麼樣開始學寫程式,還有到什麼程度才能轉到資訊相關產業。 我大學跟研究所都是念土木系,因為對寫程式蠻有興趣,所以除了系上的課之外,還有去資工系還有電機系修一些相關課程,因為不是資訊相關科系,所以有走了一些冤枉路,但是研究所的時候我已經可以開發套裝軟體了
Thumbnail
這篇文章專門寫給「非」資訊相關科系畢業的人,說明怎麼樣開始學寫程式,還有到什麼程度才能轉到資訊相關產業。 我大學跟研究所都是念土木系,因為對寫程式蠻有興趣,所以除了系上的課之外,還有去資工系還有電機系修一些相關課程,因為不是資訊相關科系,所以有走了一些冤枉路,但是研究所的時候我已經可以開發套裝軟體了
Thumbnail
為什麼要學習程式呢? 程式是怎麼分類的? 能處理什麼事情?
Thumbnail
為什麼要學習程式呢? 程式是怎麼分類的? 能處理什麼事情?
Thumbnail
在確定學習哪種程式語言後,接下來總算要進入正式的學習了......(´・ω・`)吧? 這個章節就稍微總結整理一下,身為程式小白,你會碰到的幾種學習資源,以及該如何妥善選擇才能有最大的學習成效吧(ゝ∀・)b!
Thumbnail
在確定學習哪種程式語言後,接下來總算要進入正式的學習了......(´・ω・`)吧? 這個章節就稍微總結整理一下,身為程式小白,你會碰到的幾種學習資源,以及該如何妥善選擇才能有最大的學習成效吧(ゝ∀・)b!
Thumbnail
在決定踏上程式之旅後,身為程式初學者,你要面臨的第一個關卡,絕對是: 我該學習哪種程式語言?
Thumbnail
在決定踏上程式之旅後,身為程式初學者,你要面臨的第一個關卡,絕對是: 我該學習哪種程式語言?
Thumbnail
在科技快速發展的現代,每個人都滿口大數據、人工智慧,。而大學的資工系也變得越來越熱門,學習程式也逐漸成為許多人考慮的事情。 在這篇文章,我會分享如何從零基礎開始學程式,給讀者開始的方向、避免你走冤枉路。
Thumbnail
在科技快速發展的現代,每個人都滿口大數據、人工智慧,。而大學的資工系也變得越來越熱門,學習程式也逐漸成為許多人考慮的事情。 在這篇文章,我會分享如何從零基礎開始學程式,給讀者開始的方向、避免你走冤枉路。
Thumbnail
常見入門款Python、統計分析用R、轉職培訓JAVA、C#、IOS用Swift、前端萬用JavaScript、學校基礎C語言、進階C++、甚至是新潮的語言go,程式語言那麼多種到底該從哪個入門好?難道從Scratch開始?
Thumbnail
常見入門款Python、統計分析用R、轉職培訓JAVA、C#、IOS用Swift、前端萬用JavaScript、學校基礎C語言、進階C++、甚至是新潮的語言go,程式語言那麼多種到底該從哪個入門好?難道從Scratch開始?
Thumbnail
資訊時代下,學習程式蔚為風潮。許多行業需要跨領域人才,結合程式與專業知識做應用。 如果是初次想學程式,但是不確定興趣領域,又不知道要如何選擇,既期待又害怕受傷害的情形下,我會建議新手從「容易看得見成果」的方向去嘗試,往後是否能保持熱忱與興趣,其實很大的原因是由「成就感」所支撐的。
Thumbnail
資訊時代下,學習程式蔚為風潮。許多行業需要跨領域人才,結合程式與專業知識做應用。 如果是初次想學程式,但是不確定興趣領域,又不知道要如何選擇,既期待又害怕受傷害的情形下,我會建議新手從「容易看得見成果」的方向去嘗試,往後是否能保持熱忱與興趣,其實很大的原因是由「成就感」所支撐的。
Thumbnail
雖然不能說,每一個人都該學 Python。但對於那些沒學過程式語言、且不知道將來想走哪個資訊領域的初學者來說,Python 是這些人應該學的第一個語言,絕對當之無愧!
Thumbnail
雖然不能說,每一個人都該學 Python。但對於那些沒學過程式語言、且不知道將來想走哪個資訊領域的初學者來說,Python 是這些人應該學的第一個語言,絕對當之無愧!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News