iT邦幫忙

2022 iThome 鐵人賽

DAY 1
0

這是我第一次想參加鐵人30天,畢業後工作了3年左右,覺得工作上想要再進修自己不足的部份,於是開始研讀以前大學時代沒有認真學習的演算法科目。不讀還好,一讀就確確實實的被演算法和資料結構給吸引。剛開始學習途徑買了幾本演算法書籍、線上課程與閱讀了無數的 Youtube教學影片,最終在腦中慢慢建立完整的演算法架構。想說趁這次 iThome鐵人賽機會,把資料結構及演算法的認知撰寫下來,來幫助我對資料結構及演算法的知識更加鞏固。

程式寫一寫就會動阿,為什麼要學資料結構跟演算法?

我相信這是大家一開始學習演算法最想問的問題。而對我來說為什麼要學習資料結構與演算法呢?因為...我感覺懂演算法的人都很聰明,如果我把它學起來是不是也會讓人覺得「我很帥又聰明呢XD」。
拋開我幼稚的想法,我必須承認,會動的程式真的不難寫,但是「好」的程式,就真的是另外一回事了。依照80/20法則,我們花20%的精力就能夠做到80分的作品,但當我們想從80分進步到100分,就必須花80%的精力,身為科學人,誰不想持續變強、進步呢?

甚麼是好的程式?

當然,會演算法不代表我們能夠成為一位好的Software Engineer, 更精確來說,演算法只是我們設計Function最最最基本的要素,但是基本不代表不重要,越基本的東西大家越容易忽略,萬丈高樓平地起,如果我們能有更穩固的演算法基礎,那當我們在開發Function的時候,就能夠有更好的地基去建立更完美的專案。
依照之前從教學課程裏面講師說到,好的程式有兩個要點 Maintainable and Scalable。Maintainable 意旨我們開發的程式必須要好維護,讓看你Code的人能夠很快知道你的Function在做什麼。這個範圍也相當的廣,包含變數命名、函數命名、Class 命名等等都在 Maintainable 裏頭。這次我們就不會特別介紹這一個部分,有興趣的同學可以去看 Clean Code: A Handbook of Agile Software Craftsmanship 這本書。Scalable 意旨我們得程式要能夠好擴展,擴展在很多領域上有不同意思。依我的見解,他想表達的大概是,當你 input 值很大的時候,你的程式會不會掛掉 ?相信我,這個跟你設計的演算法就會有很大的關係。這也會是我們這30天要去探討的主題呦。


下一篇
學習心法大補帖
系列文
從演算法到解題思路,以Python為例30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言