看板 PLT 關於我們 聯絡資訊
※ 引述《ephesians (ephesians)》之銘言: : 最近在涉獵另一種程式語言流派, : 不是天流地流與神流,不是二刀流,也不是人稱一流劍一流, : 是一種叫做函數式語言 (functional programming language) 的. : 先聲明,因為以往工作與學習環境並不熟悉這東西的實作, : 以下凡談到底層,含編譯/直譯等,都是胡扯瞎掰的. : 如果有幸,將來可能有機會實作. : 函數式語言的特色就是函數定義,寫完函數,程式就寫完了. : 跟傳統程式語言 (結構化程式) 有什麼差別呢? : 按數學來講,函數是指將定義域映射到值域, : 而傳統程式語言的函數,除了映射之外, : 還多了很多東西, (流程控制,例外處理,資源管理...等) : 所以更稱為函式. : 函數式語言沒有指定敘述,沒有副作用 (side effect), 也沒有流程控制. 這應該是指 purely functional programming language 才是這樣。 像 Haskell 和 Clean 都是,這十年來 Haskell 當紅,成為函數式語言的 代表性語言,所以才讓人覺得函數式語言都是這樣。 但實際上 "不純" (impure) 的函數式語言反而比較多,像早年比較熱門的 LISP, Scheme 到 ML, 或總是被當成明日之星,卻始終沒起色的 Erlang, 都不是純函數式語言。 而在 OO 熱門之後,像是 CLOS, Dylan, Objective Caml 這類結合 OO 的 函數式語言,也都流行過一陣子。 拋開學生最愛的 Haskell 不談 (若無 lazy evaluation 的出現,純函數式 語言幾乎被認為是一種無用的學院派程式語言) ,商業上最成功的 Common Lisp, 就是什麼都有的,以函數式語言為主的混合式語言。 : 至於實作層面,不管是直譯或編譯皆可,想必都要附加一份引擎. : (流程控制不是該煩惱的事,函義/語意才是.) 所以 Logic Programming 一般都不會被通用程式語言的設計當中被考慮, 只是早年人工智慧當紅時,被當成四大程式設計典範,而總是在教科書中 佔有一席之地,實際上已經是歷史陳跡等級的東西了。 或者講得狠一點,作為電腦科學史上最耗錢最無用計劃之一的第五代電腦 計劃之核心語言的 Prolog, 是程式語言發展史的一大誤區,不能說沒用, 但只怕在學習時得在心裡多存著幾分警惕,那許諾的烏托邦是不存在的。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.222.173.26
ephesians:受教 02/25 14:47
YuYuHo:以前用prolog時,嚇到,感覺像是兩光版的sql. 02/25 20:21
caml:去年我搞了prolog一年﹐比較愚鈍﹐感覺這個語言不flexible 02/26 17:27