序言vs Lisp
Prolog和Lisp是當今最流行的人工智能(AI)計算機編程語言。它們是用兩種不同的編程範式構建的。Prolog是一種聲明性語言,而Lisp是一種函數式語言。這兩種方法都適用於各種人工智能問題,但Prolog主要用於邏輯和推理問題,而Lisp則用於有快速原型需求的問題。
序言
Prolog是一種人工智能編程語言。它屬於邏輯程序設計語言家族。Prolog是一種聲明性語言,通過對定義為規則和事實的關係(表示程序邏輯)運行查詢來完成計算。prolog開發於1970年,是最古老的邏輯編程語言之一,也是當今最流行的人工智能編程語言之一(與Lisp一起使用)。它是一種免費語言,但有許多商業變體可用。它最初用於自然語言處理,但現在被用於各種任務,如專家系統、自動答疑係統、遊戲和高級控制系統。Prolog只有一種稱為term的數據類型。項可以是原子、數、變量或複合項。數字可以是浮點或整數。Prolog支持列表和字符串作為項的集合。Prolog使用子句定義關係。從句可以是規則,也可以是事實。Prolog允許迭代遍歷其遞歸謂詞。
口齒不清
Lisp是一個計算機編程語言家族。現在用於通用編程的最著名的Lisp方言是Common Lisp和Scheme。LISP這個名字來源於“列表處理”,正如它暗示的那樣,LISP的主要數據結構是鏈表。實際上,整個源代碼都是使用列表(使用前綴表示法)編寫的,或者更準確地說是用括號括起來的列表(稱為s表達式)。例如,一個函數調用被寫成(fa1a2a3),這意味著函數f是使用a1、a2和a3作為函數的輸入參數來調用的。因此,它被稱為面向表達式的語言,其中所有數據和代碼都作為表達式編寫(在Lisp中表達式和語句之間沒有區別)。這個漂亮的特性對於Lisp來說是非常特殊的,在Lisp中,它可以通過編寫有用的宏來將語言擴展到手頭的問題。雖然尾部遞歸被程序員用來表示循環,但所有常見的Lisp方言都包含了像loop這樣的控制結構。此外,常見的Lisp和scheme都有mapcar和map,它們是函數的示例,通過將函數依次應用於其所有元素,然後將結果收集到一個列表中,從而提供循環功能。
Prolog和Lisp有什麼區別?