程式語言 #
前言 #
程式語言是交大資工大二的必修課程(自101學年後已非必修),使用的課本為《Concepts of Programming Languages》。在這堂課中,會概略討論程式語言設計的原則,並簡單介紹程式語言發展的歷史以及設計程式語言的原理,包含語言的語法以及各種程式結構與特性的實做方式等等。值得注意的是這堂課並非學習使用程式語言的入門課程,而是探討程式語言背後的設計原理。而學生若先擁有寫程式的經驗也能對課程擁有較好的理解。
課程內容 #
課程主題主要可分為三個大項,第一是語言的格式和語法。例如敘述語言 Syntax 的 Context-free grammar、BNF,還有用分析算術運算式為例子介紹 Lexical Analysis 和 Parsing 等概念。這部份在正規語言概論和編譯器設計概論課程中也會再次提到。
第二則是根據設計程式語言時會遇到的幾項課題,比較各種不同設計的優缺點、實做的方法,以及提一些實際語言的例子。
- Variable, 包含命名、範圍等等。
- Data type
- Expression
- Control flow
- Subroutine, 參數傳遞、Call stack 等等。
- Abstract data type
- Concurrency
- Exception
最後則是介紹程式語言的幾種不同設計哲學:
程式語言 #
許多語言設計的精神如 functional languages,和常用的程式語言有很大不同。若能實際嘗試使用語言,常能獲得較深的理解,所以有些老師也會讓學生實際學習使用其中的一兩種語言,以下便條列幾個較知名的程式語言:
- Python:十分易學且易讀的程式語言,同時也受到廣泛運用。除了擁有 imperative 和 object-oriented 的特性之外,也有一些 functional programming 功能。網路上的教學資源非常的多,如:The Python Tutorial、Python 教學
- Java:廣受使用的 objecti-oriented 語言,可參考 The Java Tutorials、書籍推薦《Head First Java》。
- Haskell:純粹的 functional programming language,可參考 Haskell Introduction 的介紹。網路上也有優質的學習資源:Learn You a Haskell。
- Prolog:相當知名的 logic programming language。
- C/C++:在交大資工課程中最常使用的語言。