2013年5月30日 星期四

The Role of the Study of Programming Languages in the Education of a Programmer


課程:論文研討()
日期:2013/3/22
時間:14:00 ~ 15:30
地點:S104
講者:政治大學資訊科學系 陳恭 教授兼系主任
作者:資工研一 王品傑


今天聽了陳恭教授的演講後,深深地瞭解到為什麼我們需要學程式語言,學程式語言不止訓練了我們如何思考,更加強了我們的邏輯。今天的演講中,特別對函數式編程(Functional Programming) 有了更大的興趣。

函數式編程是種編程典範,它將電腦運算視為函數的計算。函數編程語言最重要的基礎是λ 演算(lambda calculus)。而且λ演算的函數可以接受函數當作輸入(參數)和輸出(返回值)。和指令式編程相比,函數式編程強調函數的計算比指令的執行重要。和過程化編程相比,函數式編程裡,函數的計算可隨時調用。

幾週後,更是去學習了一門新語言- Scala




Scala是一種純物件導向的語言,每一個值都是物件。物件的資料型別以及行為由類別和特質描述。類抽象機制的擴充功能有兩種途徑。一種途徑是子類別繼承,另一種途徑是靈活的混入機制。這兩種途徑能避免多重繼承的種種問題。

Scala也是一種函數式語言,其函式也能當成值來使用。Scala提供了輕量級的語法用以定義匿名函式,支援高階函式,允許巢狀多層函式,並支援柯里化 。Scala的case class及其內建的模式匹配相當於函數語言程式設計語言中常用的代數型別

更進一步,程式設計師可以利用Scala的模式匹配,編寫類似正規表式的代碼處理XML資料。在這些情形中,列表推導式功能對編寫公式化查詢非常有用。
由於JVM不支援尾呼叫,Scala也不能完全支援尾呼叫最佳化。不過,Scala編譯器可以把某些簡單的尾遞迴最佳化成迴圈。



沒有留言:

張貼留言