程式本科系學了什麼(三) - 物件導向等基本功

閱讀時間約 3 分鐘
如果還沒看前一篇的人,可以按下面連結去看上一篇文章
上一集有說,我們以前在學校要教很多作業,扣除那一些夭壽難的題目,其實大多數都是在練基本功
而外面許多書籍、課程和公司內的學習,則是強調實用和解決問題的方法
例如如何寫一個爬蟲程式、如何寫一個影像處理的程式、如何做使用者界面
但是在學校,我們則是花很多時間在練基本功,例如物件導向、傳值和傳址、變數和函式、程式如何在電腦上運行和效能以及各種演算法
演算法我會在下一集的時候在深入討論,這裡先說除了演算法以外的基本功
其實練這一些基本功非常的無聊、毫無成就,而且對一個剛入門的學生而言其實也不知道這一些東西未來要用在哪裡
我永遠記得我大一結束的時候,那時候會了這一些基本功,感覺自己很強,但是回家之後高中的朋友問我能不能寫個UI或是一些專案等,但是我都不會。那時候在想,人家都說讀成大電機很厲害,但是為什麼我什麼都做不到,是不是我太笨或是哪裡出了問題?
反觀從實用和解決問題來學習程式非常的有成就感,例如我的學生從0到有學了幾10小時的python爬蟲,回家之後就可以簡單的爬股票資訊、爬104的資料,真的可惜當初在讀大學時沒有知道有這樣的資源和管道,否則就算是本科系學生應該也去學一下,才會知道學了半天的程式可以用在什麼地方
然而看過許多自學程式的人,我還是建議自學者要花一點時間增加自己的基本功,因為程式的基本功如果不好會導致以下三個問題
未來會無法看懂別人的程式碼
在查資料時受到許多的限制
公司面試有極高的機率會考程式的基本功
其實這道理很簡單,舉程式的物件導向的例子來說
假設不會物件導向,之後前輩用物件導向寫了一連串的程式碼,不要說了解這一個程式運作的順序和意義,光是要看那一些符號就像是在看無字天書
在查資料的時候也會同樣的問題,例如好不容易找到相對應的解法,結果人家是用物件導向來寫,要理解和修改成跟現在程式相容,根本是不可能
最後就是公司的面試也會考這一些基本功的題目,考得好不好也會影響能不能錄取和薪水
我在第一份工作錄取的時候,預期薪水直接寫了超過人資明示暗示的薪資(當初是抱著反正不會上就算了的心態寫的),但是他們還是給我想要的薪資,過了幾年,有一天問我的老闆當初為什麼可以這樣做,他只說:你知道嘛?當初那一份超級難的程式題目你拿滿分喔
既然程式的基本功這麼重要,但是為什麼外面的課程不會太著墨於這裡?
身為講師,關於教學生程式的基本功其實對我來說也很兩難,因為我知道程式基本功的重要性,但是這裡又不是學校,可以每週花3小時和每週給作業強迫讓學生去練習基本功,而且程式基本功有一些非常難理解,更慘的是學完之後毫無成就感,最差還有可能會投訴教太難聽不懂,實在是風險極高的課程
但是我還是會盡量教這一些基本功,就算只是在課堂稍微提到也好,畢竟對學生來說這一些未來有可能會碰到,多學一點還是比較好
對自學者來說,程式的基本功是一件無聊,卻也是一件很重要的事
因為
學程式就像練武功,要成為高手,馬步就要蹲好
接下來,我們就來談基本功裡面的其中一環-演算法,敬請期待
本文章同步分享於FB粉專 如峰小教室
歡迎大家一起來到FB追蹤按讚,獲得更多及時的資訊
作品和產品的區別,不只有程式工程師,PM和老闆更必須要知道,才能讓公司的運轉更加地順利。我們以前在學校寫的作業和練習,就是程式作品,如果用一個術語就是,程式作品是比最小可行性的產品還要再小,那產品比作品還要多注意甚麼東西呢? 讓我們在這一個專欄中一起來探討吧!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
如峰小教室的沙龍 的其他內容
身為電機系畢業的學生,我們以前在學校最常見的就是被迫去寫很多程式 作業從的難易很廣,最簡單的hello world到很複雜的模擬電腦運作的程式都有可能是老師出的作業
最近發現,很多人對於程式本科生有著莫名的幻想 例如電機系和資工系出來寫的程式一定比較好 或是非本科生就會有莫名的自卑感
身為電機系畢業的學生,我們以前在學校最常見的就是被迫去寫很多程式 作業從的難易很廣,最簡單的hello world到很複雜的模擬電腦運作的程式都有可能是老師出的作業
最近發現,很多人對於程式本科生有著莫名的幻想 例如電機系和資工系出來寫的程式一定比較好 或是非本科生就會有莫名的自卑感
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
大學記憶中的程式課,我過得很痛苦。以為懂了,作業卻永遠寫不出來。有鑑於過往痛苦的經歷,學程式語言類似學習外語,應該從需求出發,並且以生活中可理解的事物當作範例學習。所以去年大膽的進行了一個實驗:我們來上中小學生的 Python 課程,透過寫程式解數學題目培養直覺。男孩們選了一個非常瓊瑤的題目!
Thumbnail
從範例學python的目標讀者: 針對剛進入的初學者,想學習Python語言。 有基礎本數學邏輯基礎即可。 從小遊戲學python的目標讀者: 針對已經有經驗的C/C++, Python, 或其他有程式基礎的讀者。 想實作一些小專案,從實做中學習如何分析需求、元件分拆、到底層實作
Thumbnail
學習生成式AI,不僅僅是掌握幾個工具,而是從全方位了解AI的發展範疇及其潛力。我經常在企業教授AI課程時,會遇到HR詢問:某些工具用不上,可以不教嗎?當然可以,但如果同仁不了解生成式AI在「數位內容」上的廣泛應用,又如何掌握大語言模型的發展邊界?
數學系的訓練,與上面閱讀原始碼的優先順序,本質上是反過來的。在數學的訓練中,是先把函數定義的非常清楚,再進一步去看函數應用在具體的數據上會發生什麼行為,然後就到此為止,不太會再有進一步的討論。但如上面西尾泰和所述,工程師看事情的角度,是先掌握全局,然後再進一步細化每一層的細節。
Thumbnail
不帶思考的 Trial and Error 靠的是運氣,運氣不好的學生容易挫折就放棄,運氣好的學生會誤以為自己會了
Thumbnail
這一節談的是用物件導向程式設計(object-oriented programming, OOP)的方式來實作隨機漫步。
離開工程師的工作之後,我轉往兒童程式教育的跑道,這份工作將我原有的程式技能結合上我所關心與有興趣的兒童教育,轉換跑道的路上並不輕鬆,不論是工作方式或心境的調整,在克服的路上都是學習。 我很幸運用最快速的方式接觸到不同年齡層的學生,第一個班級就是18個中班孩子只能用慘烈來形容每堂課的準備與挫敗,當然
Thumbnail
學習程式語言是一個不容易的過程,但有效的學習方法可以幫助你克服挫折,這篇文章分享了一個程式設計師的學習心得以及一些建議,包括課後實作、短期學習、跟別人比較等注意事項,同時提供了一些相關的教學資源。
這個系列的文章主要專注於物件導向到函數式編程的差異與分析,並針對概念與機制上的不同進行比較。很多人說物件導向和函數式編程沒有哪個比較好的問題,只有哪個比較適合的問題,然而我並不這麼認為,我透過這一系列的文章從各個角度討論它們之間的優缺點就是為了闡述我的觀點。物件導向錯在沒有理論基礎,但它贏在熟悉性,
Thumbnail
前文提到我按照某公司培訓營的指示自學了Scratch,並完成了一個不太理想的「半成品」程式。幾個月後,我參加了另一個課程,不同的是這次是使用PHP,為期三天(週三至週五),每天上課四小時,總計約12小時。課程內容包括基礎語法與環境架設、網路爬蟲、實際構建購物車並與資料庫進行串接。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
大學記憶中的程式課,我過得很痛苦。以為懂了,作業卻永遠寫不出來。有鑑於過往痛苦的經歷,學程式語言類似學習外語,應該從需求出發,並且以生活中可理解的事物當作範例學習。所以去年大膽的進行了一個實驗:我們來上中小學生的 Python 課程,透過寫程式解數學題目培養直覺。男孩們選了一個非常瓊瑤的題目!
Thumbnail
從範例學python的目標讀者: 針對剛進入的初學者,想學習Python語言。 有基礎本數學邏輯基礎即可。 從小遊戲學python的目標讀者: 針對已經有經驗的C/C++, Python, 或其他有程式基礎的讀者。 想實作一些小專案,從實做中學習如何分析需求、元件分拆、到底層實作
Thumbnail
學習生成式AI,不僅僅是掌握幾個工具,而是從全方位了解AI的發展範疇及其潛力。我經常在企業教授AI課程時,會遇到HR詢問:某些工具用不上,可以不教嗎?當然可以,但如果同仁不了解生成式AI在「數位內容」上的廣泛應用,又如何掌握大語言模型的發展邊界?
數學系的訓練,與上面閱讀原始碼的優先順序,本質上是反過來的。在數學的訓練中,是先把函數定義的非常清楚,再進一步去看函數應用在具體的數據上會發生什麼行為,然後就到此為止,不太會再有進一步的討論。但如上面西尾泰和所述,工程師看事情的角度,是先掌握全局,然後再進一步細化每一層的細節。
Thumbnail
不帶思考的 Trial and Error 靠的是運氣,運氣不好的學生容易挫折就放棄,運氣好的學生會誤以為自己會了
Thumbnail
這一節談的是用物件導向程式設計(object-oriented programming, OOP)的方式來實作隨機漫步。
離開工程師的工作之後,我轉往兒童程式教育的跑道,這份工作將我原有的程式技能結合上我所關心與有興趣的兒童教育,轉換跑道的路上並不輕鬆,不論是工作方式或心境的調整,在克服的路上都是學習。 我很幸運用最快速的方式接觸到不同年齡層的學生,第一個班級就是18個中班孩子只能用慘烈來形容每堂課的準備與挫敗,當然
Thumbnail
學習程式語言是一個不容易的過程,但有效的學習方法可以幫助你克服挫折,這篇文章分享了一個程式設計師的學習心得以及一些建議,包括課後實作、短期學習、跟別人比較等注意事項,同時提供了一些相關的教學資源。
這個系列的文章主要專注於物件導向到函數式編程的差異與分析,並針對概念與機制上的不同進行比較。很多人說物件導向和函數式編程沒有哪個比較好的問題,只有哪個比較適合的問題,然而我並不這麼認為,我透過這一系列的文章從各個角度討論它們之間的優缺點就是為了闡述我的觀點。物件導向錯在沒有理論基礎,但它贏在熟悉性,
Thumbnail
前文提到我按照某公司培訓營的指示自學了Scratch,並完成了一個不太理想的「半成品」程式。幾個月後,我參加了另一個課程,不同的是這次是使用PHP,為期三天(週三至週五),每天上課四小時,總計約12小時。課程內容包括基礎語法與環境架設、網路爬蟲、實際構建購物車並與資料庫進行串接。