一個快速學會新的程式語言的方法

閱讀時間約 4 分鐘

A quick way to learn a new programming language


如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學? 採用這些方式的不便之處也很明顯,買書緩不濟急、外面課程花了錢還不一定對你的任務產生幫助,找同事來教要需要支付一筆人情債… 那有沒有更簡單有效方式可以讓我們快速幫助自己掌握一套新的程式語言的基本特性來趕快發揮戰力呢? 答案是有的,就是用 Sample Code 來學習。


前陣子我收到了要驗證 C API 功能的任務,要完成這個任務前提是會寫 C 語言,當時我正在苦惱要不要去買 C 語言程式書回來看,同時也一邊翻看著產品使用手冊,翻著翻著就發現裡面有一段教人如何這些使用 API 的 Sample Code,這次任務時間有限我決定暫時先放下書本改用 Sample Code 的方式學習 C 語言。我的目標很簡單就是先不管 Sample Code 裡面寫甚麼,先讓程式碼跑起來後再根據需求來應用修改程式碼就好。


好的輸入才有好的輸出

一個好的 Sample Code 不是書上教學用的那種,也不是在網路上隨便找一段複製貼上就可以,一定是針對你想解決的問題設計且能正常執行的一個「樣板」:

// main 是 C 語言的特殊函數是程式的進入點,這點學校都有教
int main()
{
/*
這裡用到一個 read_tag 函數,看起來是要去讀取一個叫做 "A" 的 tag?
tag 的型態應該是自定義的 tag_info 結構。暫時不知道細節沒關係
*/
tag_info *tag = read_tag("A");
/*
接下來這句話的寫法有點嚇人,大概知道是用 get_value 來取得 tag 裡面的某個值吧。
印象中沒看過 uint16_t,反正看起就像一個整數就先把它當作某種整數吧。
PS: 如果 tag_info 裡有其他的型態的資料的話,應該可以替換 uint16_t 來取值
*/
unit16_t data = *((unit16_t *) get_value(tag));
unit16_t cmd = 0;
/*
哦!! 原來 read_tag, write_tag 是一組的!!
稍微注意一下 write_tag 的用法就好,讀寫的資料型態應該要一樣
*/
write_tag("B", &cmd, sizeof(unit16_t));
/*
記得釋放用完的記憶體,才不會 memory leak.
*/
free(tag);
/*
main 宣告要求回傳一個 int, 回傳 0 通常代表程式順利結束
*/
return 0;
}

從上面的「Sample Code 樣板」你一定也發現了,為什麼說一段寫的清楚、功能正確的 Sample Code 很重要,因為它除了能節省接下來解任務時間,還能讓你站在一個 overview 的點來學習這個程式語言的基本樣貌。

假設你是只學過 python 的人,最直觀的語法差異就是 C 的程式碼區塊必須用大括號 {} 包起來,每一句話都要分號 ; 做結尾,要使用變數前就必須宣告正確型態,存取特殊的結構變數就會用到指標技巧等等,這些關鍵的語法差異之處就是我們要立即畫線特別關注的地方。另外像是釋放掉不用的變數的記憶體這種眉角,主程式也要回傳值的特性也可以順便學習到。


造樣造句,省時省力

有這個「健康」的 Sample Code 做為基礎,就算我還沒完全搞懂裡面語法的細節,我也很快就改出了符合這次任務需要的程式碼了。這種以 Sample Code 來快速學習並且馬上切入實作來完成任務的方式,滿足投資 20% 力氣達成 80% 的效果真的相當划算。如果你剛好對某一個程式語言有基本的觀念,那麼用 Sample Code 來快速學習一門你不熟悉的程式語言就是非常適合的一種方式。

12會員
60內容數
WarrenLo's 軟體設計武功祕笈
留言0
查看全部
發表第一個留言支持創作者!
Warren Lo的沙龍 的其他內容
經過這麼多年的觀察與實踐,一個成熟的軟體工程師還需要第四個要素,它是讓決定你通往熟手的重要關鍵沒有之一。
整合測試的時候突然遇到一個突然無法登入產品網站的問題,把程式模組單獨拉出來測試又正常,觀察測試報告後發現出現發生登入異常的時間點並不固定,而且只要發生就會連續發生一段時間,程式被中斷掉。後來確認問題在...
當這產品的這個 API 被呼叫,再從回傳內容的某個欄位欄位來判斷,只要“這個欄位”顯示 false 就代表不支援」,雖然這樣的設計也能滿足功能需求…
關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是…
IDE 升級後出現了一樣的錯誤,手上程式碼沒有 pylint black-format 檢查上不了 gitlab,我又點開了那個很小很小的 x 符號,裡面 logs 提示的解決方式是升級..
在網路上查找可以發現有很多類別圖的 6 種關係的說明與示例,通常不太容易難取得共鳴。主要有兩個原因: 1. 對於這些關係線的定義混淆,導致無法判斷滿足條件與使用時機 2. 缺少生活相關的具體案例,很難理解這些關係所對應的抽象概念
經過這麼多年的觀察與實踐,一個成熟的軟體工程師還需要第四個要素,它是讓決定你通往熟手的重要關鍵沒有之一。
整合測試的時候突然遇到一個突然無法登入產品網站的問題,把程式模組單獨拉出來測試又正常,觀察測試報告後發現出現發生登入異常的時間點並不固定,而且只要發生就會連續發生一段時間,程式被中斷掉。後來確認問題在...
當這產品的這個 API 被呼叫,再從回傳內容的某個欄位欄位來判斷,只要“這個欄位”顯示 false 就代表不支援」,雖然這樣的設計也能滿足功能需求…
關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是…
IDE 升級後出現了一樣的錯誤,手上程式碼沒有 pylint black-format 檢查上不了 gitlab,我又點開了那個很小很小的 x 符號,裡面 logs 提示的解決方式是升級..
在網路上查找可以發現有很多類別圖的 6 種關係的說明與示例,通常不太容易難取得共鳴。主要有兩個原因: 1. 對於這些關係線的定義混淆,導致無法判斷滿足條件與使用時機 2. 缺少生活相關的具體案例,很難理解這些關係所對應的抽象概念
你可能也想看
Thumbnail
「設計不僅僅是外觀和感覺。設計是其運作的方式。」 — Steve Jobs 身為一個獨立文案,許多人會以為我們的生活只需要面對電腦,從無到有,用精巧的文字填滿空白的螢幕,呈現心目中獨具風格的作品。 ——有的時候可以如此,但其實這是我們夢寐以求的偶發日常。 更多的時候,白天的工作時間總被各種繁雜
Thumbnail
台股、美股近期明顯回檔,市場敘事發生改變,壞消息一樁接一樁出現,下一步該怎麼走呢?本文將探討近期的宏觀經濟事件,並分享個人的操作思考。
Thumbnail
談感情的第一個大原則就是尊重,沒有尊重就什麼都不用談了,直接踹了,不尊重妳的人,我不相信他會多願意讓妳開心。 尊重是互相的,妳尊重對方那對方也要尊重妳啊,最重要的是妳有沒有尊重自己? 妳在這邊傷心的時候,放不下不值得的人的時候,請想想爸爸媽媽,妳爸爸媽媽要是知道妳這樣放不下一個對自己不好
Thumbnail
面對現代職場的快速變化,我們該如何培養一種以不變應萬變的能力?答案就是「學習力」。我有幸參加了一場名為「什麼都學得會!15個高效學習法則,快速上手新能力」的課程,由跨領域專家吳沛燊博士主講。在這堂課中,他分享了如何從不同角度切入,將學習方法落實到個人的職場和生活中。快來和我一起瞭解這堂課的精彩內容,
Thumbnail
Softr 是一個可以建立網站應用的 NoCode 工具,它提供多元彈性的頁面區塊、會員系統、身份權限設定、第三方串接等功能,讓使用者輕鬆打造想要的軟體服務。不論是微型電商、一頁式商品 / 服務網站,或是數據管理、進度追蹤、庫存管理,甚至是內外部協作的供應商/客戶入口等,都能透過 Softr 來建立
對於獨居上班族來說,健康美味的飲食是非常重要的。以下是一些簡單易做的料理,不需太多時間,也不需要太多食材,是完美的一個人料理。 廚房必備 在開始烹飪之前,您需要確保以下材料都在廚房裡: 個人料理必備調味料 鹽 油:推薦橄欖油 醋 醬油 糖或蜂蜜 重口味類一罐:如沙茶醬或辣椒醬 快速、簡單,又健康的料
前言 學習的重要性 學習是人類與生俱來的本能,也是人類進步和發展的基石。無論是從個人還是社會的角度來看,學習都具有極其重要的意義。 首先,學習可以幫助人們擴展知識面,提高專業素養,掌握新的技能和工具,增強自身能力和競爭力,從而更好地應對工作和生活中的挑戰。 其次,學習有助於提高人們的認知能力和創造力
Thumbnail
工作有很多時候節奏是相當緊湊的,在很短的時間內就要進入全神投入的狀態。 平常上班倒也還好,如果是遇到出差在外地,甚至是到了相反時差的地方,很多人就適應不過來了。 現在我要把這個心法流傳出來,能不能領悟就靠大家自己的悟性了。
Thumbnail
炎炎夏日,天氣熱到沒有食慾嗎? 這碗清爽的「蔬食涼麵」,應該會提昇一點食慾。
Thumbnail
繼上一部自學教材「奇妙人生:真實本色」之後,我正在通關另一部長篇劇情類遊戲「黑相集:灰冥界」(The Dark Pictures Anthology: House of Ashes)。遊戲步調快,台詞講得飛快,英文字幕也閃過很快,讓我一度困擾怎麼截圖做字卡複習單字,後來我想到一招挺好用的。
Thumbnail
如果你是一個剛要起步的Podcaster,我相信絕對常常有這樣的時刻,千頭萬緒不知從何開始,其實製作一個Podcast的流程,說穿了,就是企劃、錄製、宣傳、回饋、修正而已。 而根據不同人的能力跟條件,就會在不同的地方卡關 比如說我製作的第一個Podcast節目《星女郎老司機》,由於主持人星女郎擅長企
Thumbnail
「設計不僅僅是外觀和感覺。設計是其運作的方式。」 — Steve Jobs 身為一個獨立文案,許多人會以為我們的生活只需要面對電腦,從無到有,用精巧的文字填滿空白的螢幕,呈現心目中獨具風格的作品。 ——有的時候可以如此,但其實這是我們夢寐以求的偶發日常。 更多的時候,白天的工作時間總被各種繁雜
Thumbnail
台股、美股近期明顯回檔,市場敘事發生改變,壞消息一樁接一樁出現,下一步該怎麼走呢?本文將探討近期的宏觀經濟事件,並分享個人的操作思考。
Thumbnail
談感情的第一個大原則就是尊重,沒有尊重就什麼都不用談了,直接踹了,不尊重妳的人,我不相信他會多願意讓妳開心。 尊重是互相的,妳尊重對方那對方也要尊重妳啊,最重要的是妳有沒有尊重自己? 妳在這邊傷心的時候,放不下不值得的人的時候,請想想爸爸媽媽,妳爸爸媽媽要是知道妳這樣放不下一個對自己不好
Thumbnail
面對現代職場的快速變化,我們該如何培養一種以不變應萬變的能力?答案就是「學習力」。我有幸參加了一場名為「什麼都學得會!15個高效學習法則,快速上手新能力」的課程,由跨領域專家吳沛燊博士主講。在這堂課中,他分享了如何從不同角度切入,將學習方法落實到個人的職場和生活中。快來和我一起瞭解這堂課的精彩內容,
Thumbnail
Softr 是一個可以建立網站應用的 NoCode 工具,它提供多元彈性的頁面區塊、會員系統、身份權限設定、第三方串接等功能,讓使用者輕鬆打造想要的軟體服務。不論是微型電商、一頁式商品 / 服務網站,或是數據管理、進度追蹤、庫存管理,甚至是內外部協作的供應商/客戶入口等,都能透過 Softr 來建立
對於獨居上班族來說,健康美味的飲食是非常重要的。以下是一些簡單易做的料理,不需太多時間,也不需要太多食材,是完美的一個人料理。 廚房必備 在開始烹飪之前,您需要確保以下材料都在廚房裡: 個人料理必備調味料 鹽 油:推薦橄欖油 醋 醬油 糖或蜂蜜 重口味類一罐:如沙茶醬或辣椒醬 快速、簡單,又健康的料
前言 學習的重要性 學習是人類與生俱來的本能,也是人類進步和發展的基石。無論是從個人還是社會的角度來看,學習都具有極其重要的意義。 首先,學習可以幫助人們擴展知識面,提高專業素養,掌握新的技能和工具,增強自身能力和競爭力,從而更好地應對工作和生活中的挑戰。 其次,學習有助於提高人們的認知能力和創造力
Thumbnail
工作有很多時候節奏是相當緊湊的,在很短的時間內就要進入全神投入的狀態。 平常上班倒也還好,如果是遇到出差在外地,甚至是到了相反時差的地方,很多人就適應不過來了。 現在我要把這個心法流傳出來,能不能領悟就靠大家自己的悟性了。
Thumbnail
炎炎夏日,天氣熱到沒有食慾嗎? 這碗清爽的「蔬食涼麵」,應該會提昇一點食慾。
Thumbnail
繼上一部自學教材「奇妙人生:真實本色」之後,我正在通關另一部長篇劇情類遊戲「黑相集:灰冥界」(The Dark Pictures Anthology: House of Ashes)。遊戲步調快,台詞講得飛快,英文字幕也閃過很快,讓我一度困擾怎麼截圖做字卡複習單字,後來我想到一招挺好用的。
Thumbnail
如果你是一個剛要起步的Podcaster,我相信絕對常常有這樣的時刻,千頭萬緒不知從何開始,其實製作一個Podcast的流程,說穿了,就是企劃、錄製、宣傳、回饋、修正而已。 而根據不同人的能力跟條件,就會在不同的地方卡關 比如說我製作的第一個Podcast節目《星女郎老司機》,由於主持人星女郎擅長企