- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CS Camp 2006 Programming Language程式語言 2006/07/11 By Shu-Chun Weng (翁書鈞, scw) scw at csie dot org http://scw.tw/works/CSCamp/ 什麼是程式語言? 研究已經存在的程式語言 研究新的程式語言 研究已有的功能、已有的特性 修正、改進、研發 語言有哪些特性? 語法難易、打字多少 語義合理性 自由度、容錯能力 編譯器檢查 型別檢查 安全性檢查 執行期檢查 權限檢查 例外處理 為什麼要程式語言? 因為電腦很機車,它說的話沒有人看得懂 因為電腦很機車,它說的話別台電腦也看不懂 i386:000000111100000011100000MIPS:000010000000001100001000000000010000100010000000 他們都在說 (3 + 1) * 4 ! 為什麼要程式語言? (cont.) 因為電腦很笨,聽不懂人說話 因為人很機車,說話很難理解 I saw a saw sawing a seesaw. Time flies like an arrow. 光陰 似 箭{測速 蒼蠅} 如 箭 測速 {蒼蠅 喜歡 箭} 時間蒼蠅 喜歡 箭 所以我想說什麼? 程式語言比較的觀點 介紹一卡車程式語言 低階語言 老古董和還在用的老古董 物件導向程式語言 腳本語言、網頁腳本語言 函式語言 邏輯語言、伺服器端腳本、硬體描述語言 其他有的沒的 其中我會寫的約二十種,加上很多只看得懂的,和一些連看都不想看的…… 所以我想說什麼? (cont.) 編譯器、直譯器、互動介面 語法、語義、型別 程式檢查 可移植性 (Portability) 哇!這支程式好棒!可是我是在 Linux 上用的 哇!Mac 的介面好漂亮!可是 Mac 用的不是 x86 CPU 同樣的程式能不能拿到不同的 OS 上用? 同樣的程式能不能拿到不同的 CPU 上用? 可移植性 (Portability) (cont.) 愈高階:通常愈具可移植性 語言標準通常完全可移植 但那些不標準的部份通常很難移植 視窗介面 加速函式庫 語法自由留下的奇妙現象 解決方式 關鍵部份由作者自行依不同環境各別撰寫,很累 包山包海的標準! 虛擬機器 語言結構性 (Structure) 這行做完之後要做哪一行? 從這邊跳到那邊是為什麼? 寫出來的程式容不容易看懂 寫出來的程式容不容易除錯 語言結構性 (Structure) (cont.) 愈高階:通常愈結構化、愈模組化 機械碼 jmp [距離] 組合語言 jmp [標簽] FORTRAN 有 ‘if’ ‘while’ C 很少用 goto Java 沒有 goto! 語言結構性 (Structure) (cont.) 結構化程式語言 (structured)FORTRAN 以後提供 ‘if’ ‘while’ 等語法 函式導向程式語言 (procedure-oriented)Algol, CPL 以後有函式以及區域變數、遞迴呼叫 物件導向程式語言 (object-oriented)Simula, Smalltalk 以後以資料訂定型別,同時包含操作資料的函式 語言可讀性 (Readable) 是詩篇還是天書? 不只視覺效果,更影響開發效率、除錯效率! 語言本身限制外,如何使用影響甚鉅 語言可讀性 (Readable) (cont.) 高階語言的目標通常包含可讀性 語言實用性 (Usable) 可以寫視窗介面嗎? 可以寫網路程式嗎? 效率夠好嗎? 語言設計時的考量影響語言多好用、什麼時候會被用。 標準函式庫 (standard library) 的內容 主流! 語言實用性 (Usable) (cont.) 重視效率可能要犧牲模組化 (FORTRAN, C++) 重視可移植性可能要犧牲效率 (Java, C#) 重視語法簡易可能要犧牲檢查或簡潔 (Python) 重視彈性可能要犧牲可讀性 (C, Perl) 程式執行方式 直譯 (interpret) 邊讀邊執行程式 BASIC, python, ruby, shell script, lisp 編譯 (compile) 至原生碼 (native code) C, C++, FORTRAN 至虛擬碼 (byte cod
文档评论(0)