課程:論文研討(二)
日期:2013/3/22
時間:14:00 ~ 15:30
地點:S104
講者:政治大學資訊科學系 陳恭 教授兼系主任
作者:資工研一 陳曦
聽完這次報告,我大致算了算我學過的編程語言, C , C++ , C# , objective-c , Basic , Java , JavaScript , R , Python , PHP , Scala,沒錯,這些都是看書學過的,但一些由於年代久遠忘了已經差不多了。這裡瞎扯一番。
因為我本人不是專業計算機出身的人,作為一個門外漢和初學者,首先我認為C不是一門很好的適合初學者或者不從事純粹的coding的人,道理很簡單,你90%的時間是在思考與你想解決的問題無關的問題,指針?指針的指針?返回指針的函數?返回函數指針的指針?好吧,我承認為何大學很喜歡開C語言課程,因為比較好出考題。結果學了一整個學期,還在問一個int/long/double佔幾個bit這種無聊的問題,請問這對coding能力的提升有幫助嗎?沒有,因為你花了大量時間在處理本應該由這個language應該處理的事情,當然你想寫一個run的非常快非常快的程式,那另當別論。
老實說,一個編程語言的好壞沒有絕對的標準,只能說面對不同的問題,有些語言比較適合,有些語言比較不適合。有人說只要精通一門語言就夠了,因為其他語言都差不多。這其實是個誤解,如果是這樣,為什麼會有這麼多語言。其實不同語言之間寫作風格上差異是很大的。就如我最近正在學的scala。 Scala是一種純粹的函數式編程語言。根據David Rupp在博客中的說法,Scala可能是下下一代Java。這麼高的評價讓人不禁想看看它到底是什麼東西。他與之前學過的任何語言差異很大。例如for/while迴圈,為何coding總要用令人難以理解的迴圈,然後一堆i++,j++,k++之類的東西, scala所提倡的就是avoid all loops。再來甚至連if-else的寫法都不一樣,scala上用了更加“神奇”的pattern match。這些細節上的東西,要真的去學習之後才有直觀感受,這裡舉個例子,我嘗試用C和Scala解決同一個問題,對比兩種語言的差異,發現C要用300+行代碼,而改寫成Scala版本,驚喜的發現,只要40行。
沒有留言:
張貼留言