LISP牛就牛在它跟圖靈機(jī)一樣強(qiáng),理論上能算任何可計(jì)算的問題。因?yàn)樗谶f歸函數(shù),不光數(shù)能搞,符號也能玩得轉(zhuǎn)。McCarthy搞出這套語言,就是沖著AI來的,處理符號賊溜。
而且LISP賊簡單粗暴——數(shù)據(jù)和代碼長得一模一樣,都是S-表達(dá)式,用括號套列表那種。表就是它的核心結(jié)構(gòu),想怎么嵌套都行,不用提前定死大小,靈活到飛起。
最騷的是,代碼能當(dāng)數(shù)據(jù)處理,數(shù)據(jù)也能直接跑成代碼,完全不分家。啥功能都靠函數(shù)實(shí)現(xiàn),程序運(yùn)行其實(shí)就是不斷求值函數(shù)調(diào)用,一層套一層。
控制結(jié)構(gòu)主打一個遞歸,雖然現(xiàn)在也有循環(huán),但精髓還是遞歸,整個語言的力量來源就在這兒。還有個超實(shí)用的點(diǎn):原子可以掛一堆屬性值,相當(dāng)于給變量隨便貼標(biāo)簽,表示復(fù)雜問題特別方便。
內(nèi)存也省心,自帶垃圾回收,不用手動清理無用數(shù)據(jù)。
———
Prolog,走的是只說我要啥,不用教咋做的路子。你只要告訴它事實(shí)、規(guī)則和問題,剩下的它自己推,根本不用寫步驟,智能感拉滿。
底層是一階邏輯,理論硬核,表達(dá)力強(qiáng),寫起來像自然語言,看著清爽,代碼量還小。
它自動搞定模式匹配(也就是合一)和回溯,這兩個可是AI里的基本操作。同一個問題能給你整出多個答案,為啥?一是執(zhí)行時會自動回溯找別的可能解;二是變量又可當(dāng)輸入又可當(dāng)輸出,提問方式五花八門,交互性超強(qiáng)。
傳統(tǒng)語言包括LISP都沒這本事。
數(shù)據(jù)和程序也是統(tǒng)一的,都用項(xiàng)來表示,存在同一個數(shù)據(jù)庫里。還能在運(yùn)行時用ADDCL、DELCL這種命令動態(tài)改自己,實(shí)現(xiàn)自我進(jìn)化,搞自學(xué)習(xí)程序很方便。
遞歸當(dāng)然也是家常便飯。
而且LISP賊簡單粗暴——數(shù)據(jù)和代碼長得一模一樣,都是S-表達(dá)式,用括號套列表那種。表就是它的核心結(jié)構(gòu),想怎么嵌套都行,不用提前定死大小,靈活到飛起。
最騷的是,代碼能當(dāng)數(shù)據(jù)處理,數(shù)據(jù)也能直接跑成代碼,完全不分家。啥功能都靠函數(shù)實(shí)現(xiàn),程序運(yùn)行其實(shí)就是不斷求值函數(shù)調(diào)用,一層套一層。
控制結(jié)構(gòu)主打一個遞歸,雖然現(xiàn)在也有循環(huán),但精髓還是遞歸,整個語言的力量來源就在這兒。還有個超實(shí)用的點(diǎn):原子可以掛一堆屬性值,相當(dāng)于給變量隨便貼標(biāo)簽,表示復(fù)雜問題特別方便。
內(nèi)存也省心,自帶垃圾回收,不用手動清理無用數(shù)據(jù)。
———
Prolog,走的是只說我要啥,不用教咋做的路子。你只要告訴它事實(shí)、規(guī)則和問題,剩下的它自己推,根本不用寫步驟,智能感拉滿。
底層是一階邏輯,理論硬核,表達(dá)力強(qiáng),寫起來像自然語言,看著清爽,代碼量還小。
它自動搞定模式匹配(也就是合一)和回溯,這兩個可是AI里的基本操作。同一個問題能給你整出多個答案,為啥?一是執(zhí)行時會自動回溯找別的可能解;二是變量又可當(dāng)輸入又可當(dāng)輸出,提問方式五花八門,交互性超強(qiáng)。
傳統(tǒng)語言包括LISP都沒這本事。
數(shù)據(jù)和程序也是統(tǒng)一的,都用項(xiàng)來表示,存在同一個數(shù)據(jù)庫里。還能在運(yùn)行時用ADDCL、DELCL這種命令動態(tài)改自己,實(shí)現(xiàn)自我進(jìn)化,搞自學(xué)習(xí)程序很方便。
遞歸當(dāng)然也是家常便飯。