看到學弟們在討論這個話題,也來寫些感想。
最重要的是想法,想法包含效率分析,開發前要能算出這個想法(演算法)的時間複雜度和空間複雜度,而不是用力衝下去發現很慢再回頭改。
同樣的觀念可以用不同的語言呈現,但反過來說,各種不同的語言,背後有作者的設計理念,使用不同的語言,可以讓自己學習新的想法。像是用Lisp寫些小程式,保證遞迴觀念大增,因為不用不行,沒有for和while。
沒有最好的語言,只有最適合的語言。
多學多種不同語言,能增廣不同的切入點,像是Ruby將”外而內”的map和”內而外”的iterator輕易地呈現,用Ruby寫code自然會用map和iterator的方式思考; 因為有interface的設計,用Java自然會寫得較OOP。反過來說,如果寫Java不懂OOP,那只是學另一個C/C++ like的語言,用 C 的語法在寫,不算學新的語言,語法,語意,語用,最難的是學會語用,語法細節在要用時再查即可。
上面是依個人經驗舉例,不是說Lisp,Ruby,Java就好,每個人喜歡的語言不同,在語言大混血的年代,相似的概念各個語言多少有沾一些。
在語言之外的話題是library (package,API,framework都算類似的詞),個人覺得大一大二打好基本功,能自己刻Data Structure後,就不該自己造輪子重寫一堆基本元件,大三應該開始找library,練習找資料的能力,比方要存取XML的內容,用語言A的話,要上那找library?
沾過各種語言學會不同的思維,有把握針對問題需求用適合的語言開發,找出那個語言用的library,相信不管到那都能很有自信地coding的。
沒有留言:
張貼留言