Re: [請益] 看懂微積分,就會寫程式???
看了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
01/01 09:46, 2F
討論串 (同標題文章)
完整討論串 (本文為第 21 之 49 篇):
請益
24
90