Re: [請益] 看懂微積分,就會寫程式???

看板Soft_Job作者 (dryman)時間12年前 (2011/12/31 11:51), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串21/49 (看更多)
看了TonyQ大的回應,不禁想上來分享一些自己的經驗 先純就經歷來看: 我機械系畢業,大四上半路出家開始學程式(資料結構C++) 大四下開始學Perl 及用matlab+C++解一個電腦視覺的簡單問題(形態學,可以用在機械仿生的魚辨識上) 大五做數學系的專題解醫學影像造影的「平行計算正子影像」 http://link.aip.org/link/?PSISDG/7961/796147/1 最近實做了一個基於MMSEG演算法的中文分詞引擎 http://search.cpan.org/perldoc?Lingua::ZH::MMSEG 現在正在研究輸入法開發 ======================================== 數學對寫程式重不重要,我覺得是重要的 數學不僅適用於程式,也適用於許多不同科目上 機械工程大量的運用到數學,物理、化學在實驗及理論中都會用到數學 語言學也會用到統計,現在有些經濟學還要用到複雜的物理模型及用程式來模擬 一個有辦法用數學來建模的MBA,提出來的報表對我這樣的工程師來說會更有說服力 ================================================================== 但話說回來,Zany大說的「機會成本」也很重要 「只有」學數學就我個人的經驗來看是不夠的 實作能力也是邁向卓越的必要條件 這是我很喜歡的影片: http://marshmallowchallenge.com/TED_Talk.html 從棉花糖塔的挑戰,看合作的本質及統籌專案的必要條件 片中說到幼稚園畢業的小朋友會建立多個prototype 進而發現哪些模型是可行的,哪些不行 也因此他們蓋的塔平均都比大人高 能快速地建立prototype去挑戰未知問題的能力 是我自己硬著頭皮學程式時練出來的能力 很多優秀的本科生也有這樣的能力(通常他們都有自己養一些project) 但也有更多的本科生在解固定問題(例如作業)之外的問題時就一籌莫展 我認為實作能力的指標在於能設定良好的開發環境 C的話你懂多少command line參數?會不會gdb?會不會用ctag?會不會用gnu autotools? 至少....要會寫Makefile吧?除非那個程式小到不需要Makefile... 其他專案的話,你至少要熟練地使用一種version control system 現在比較紅的是git,雖然難學了點但是資源比較豐富(例如github) 會git也比較容易找到工作 XD 把old school的東西放一邊,談現在很紅的objective c 現在我在寫Mac OSX平台下的輸入法,剛好要接觸到 需要熟悉的不僅僅是IDE本身,還有輸入法架構(input method client-server arch) Foundation framework,以及objective c的慣用寫法 (不熟悉一個語言的慣用寫法寫程式會很痛苦) 還有就是objective-c如何寫testing (sentestingkit, GHUnit, OCUnit) objective-c specific gdb commands.. 我是把一切你開始設計程式邏輯前的前置作業都歸類為「熟悉開發環境」啦 不然真的是怎麼死的都不知道 :P ======================================================================= 除了數學建模和實作能力外,我認為廣泛地去學各種背景知識也很重要 就資訊工程而言: 作業系統、資料結構、網路、組合語言與電腦架構、資料庫總該有點了解吧? 不然設計一個網路程式一天三萬點集量伺服器就被操掛 沒有點背景知識,怎麼可能會知道是因為太多的SQL join query把硬碟搞掛呢? 或是網頁連結太慢,卻對front-end optimization一點也不懂 也不知道現在很多瀏覽器都有client side評分系統可以幫你解決問題... 就算不懂理論,也要熟悉IT界的常識嘛 不過,我認為廣泛地去學各種背景知識,不單單是侷限在IT裡面而已 如果你要開公司,你真的放心把錢都交給mba來管嗎? 你希望你跟設計師溝通時,表現得就像現在的老闆一樣豬頭嗎? 還有現在「資訊名嘴」如此之多,如何不被唬得一愣一愣? 至少要懂一點點的專業術語還有背景知識... 這樣才有獨立思考的本錢及溝通的籌碼 ======================================================================= 我學程式的資歷很淺,才兩年半而已 截至目前為止我的心得是下面三個能力最為關鍵: 實作能力:環境設定、profiling, testing, debug...etc 數學:數值線性代數、統計 背景知識:作業系統、網路、資料結構、資料庫、其他 使用UNIX like的開發環境還有接觸開放原始碼很重要 很多東西自己想破頭想不出來的,好的程式碼看多了也就會了 開源社群我推薦Perl 台灣的Perl大師gugod, c9s, audreyt(唐鳳), clkao都是以一檔百的hacker... 以上,是我自己個人的一點點小心得,希望對大家有幫助 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.180.132 ※ 編輯: dryman 來自: 220.136.180.132 (12/31 11:56) ※ 編輯: dryman 來自: 220.136.180.132 (12/31 11:57)

12/31 13:03, , 1F
感謝您的分享!
12/31 13:03, 1F

01/01 09:46, , 2F
你真是有夠強的..Orz 兩年半已經碰這麼多了
01/01 09:46, 2F
文章代碼(AID): #1E_eRJVD (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1E_eRJVD (Soft_Job)