60年了,LISP語言的進化史是否會引發你對AI未來的新思考
GIF/1.7M
圖:pixabay
作為長期壟斷AI領域的高級計算機語言程序,Lisp語言到底經過了怎樣的變遷?也許,我們可能已經忘記了一些在今天仍然有用的東西,或者說,至少了解這些歷史對一些新的想法產生有所影響。
?2015-Parinfer
?2014-Paxedit
?2014- Lispy
?2012-Smartparens
?2005-Paredit by Taylor Campbell
?2001-DrScheme, 現在是DrRacket
...
?1987-Interlisp SEdit (結構編輯器,全面互動式顯示)
?198?-Interlisp DEdit (顯示編輯器,可點擊顯示+命令窗口)
?1980-Lispedit (顯示編輯器)
?1980-Zmacs-用於文本編輯器的第一個結構命令
?1979-Nokolisp-基於屏幕的編輯器
...
?1967-BBN (InterLisp) - (電傳機機構編輯器)
?1966-PILOT-第一篇關於結構編輯的論文
Interlisp
在Interlisp中,程序員使用的源代碼是由結構編輯器提供的,而此編輯器是以內存駐留Lisp數據結構的形式運行在源代碼上。
——Lisp進化論
Teletype Editor(電傳編輯器)
點擊此處運行
用於編輯s表達式的命令行界面。在每個命令之後每次只顯示一個表達式,而非顯示整個文件。
?使用N來轉到當前表達式的第N個子項
?使用來跳轉到母表達式
?嵌套子表達式默認為&
?用?來進行擴展
?用pp來進行pretty-print
可以對當前表達式的子項執行六個指令:
(A B C D E F G H) >(BI 3) (A B (C) D E F G H) ^ ^ wrap parens around index 3
(A B C D E F G H) >(BI 3 5) (A B (C D E) F G H) ^ ^ wrap parens from index 3 to index 5 >(BO 3) (A B _C D E_ F G H) ^ ^ unwrap parens around index 3
(A B C D E F G H) >(LI 3) (A B (C D E F G H)) ^ ^ insert left-paren before index 3, and right-paren at end
(A B (C D E) F G H) >(LO 3) (A B _C D E_ _ _ _) ^ ^ ^ ^ ^ remove parens around index 3, and EVERYTHING AFTER IT
(A B (C D E F G H)) >(RI 3 2) (A B (C D) E F G H_) ^ (RO 3) (A B (C D_ E F G H)) ^ -----> ^ move right-paren of index 3 to end
請參閱1967年出版的《Lisp系統》第49頁——「結構改變命令」部分
DEdit
顯示編輯器是電傳編輯器的可視替代方法,在pretty-print中單擊一個或兩個表達式,然後單擊一個命令使其在這些表達式上執行。
1.pretty-print窗口(左)——單擊以選擇表達式(current = solid-lined,previous = dash-lined)
2.命令菜單(右)——單擊以執行選擇操作(current = arg1,previous = arg2)
3.鍵入窗口(下方)——手動輸入表達式。完成後,它將顯示被選中狀態並可點擊
單擊表達式,按住Shift鍵,將未讀取到的輸入到類型輸入窗口(作為文本進行粘貼)。
1.左鍵——選擇對象
2.中間點擊——選擇包含列表
3.右鍵單擊——選擇和先前選擇共有的最低公共父節點
參見1985年出版的《Interlisp-D參考手冊卷II:環境》第16章第407頁
SEdit
點擊此處運行
SEdit之後後代替了DEdit成為Interlisp的默認視覺結構編輯器。它允許用戶直接輸入pretty-print視圖,並從DEdit中刪除了單獨的輸入窗口。它可能看起來更接近於我們慣用的普通文本編輯器,但是好像結果和想像的有些不一樣。
雖然它看起來似乎是一個正常的現代文本編輯器,但它仍然具有自動格式化結構編輯器的局限性。為了讓用戶在這些限制內獲得最大程度的自由,圍繞滑鼠的性能製作了一個非常有趣的語言,允許用戶以一種我只能描述為像vim一樣的方式與結構進行交互。你可以查看這個記錄來了解其獨特的插入符號狀態和選擇類型。
看到這個新型滑鼠的表現之後,我就明白了為什麼在SEdit中刪除了DEdit和電傳編輯器中的大部分paren命令。滑鼠原語只需最簡單的paren命令(wrap / unwrap)就能很好地顯示出來,就像熱鍵一樣:
paren的正常插入、刪除和點擊具有以下行為:
詳情可參閱附錄B中的1987年Lyric發行說明或Medley發行說明,以及列表1,2
Zmacs
點擊此處運行
據報道,1980年的Zmacs是第一個基於文本的編輯器,具有自動平衡paren操作。
當游標觸摸到列表的外部時,相應的paren將閃爍。這是現如今所有文字編輯器的主要功能。
主要的paren命令應該是那些與最簡單的熱鍵相關的命令:
其他通過META-X運行並輸入完整的命令(在自動完成的幫助下):
要將數字arg傳遞給熱鍵,請執行CTRL-1,CTRL-0,META(例如,將下一個10元素包含在列表中。
參見1987年的《Zmacs編輯手冊》(第209頁)(3-137)
Lispedit
我必須說,我希望我可以再次使用LISP / VM和Martin"s 編輯器。在我曾經用過LISP的任何編輯器後,我一直覺得它以最高的效率,提供了最好的界面。
——Cyril N. Alberga
Lispedit的一個重要特徵是從所選子表達式的角度顯示Lisp表達式的結構的程序顯示。 稱為focus的子表達式被顯示為高亮度,並且其與周圍上下文的關係由自動生成的縮進顯示。為了將大型表達式壓縮到有限屏幕的限制,focus的選定組件及其上下文被省略(顯示為「...」)
——《在Lispedit中執行程序》
Lispedit看起來沒有圖像倖存,但是可以從描述中重建:
TOP DISPLAY AREA: pretty-printed and condensed code │ │ ("focus" expression highlighted) ││ │ ││ │ 1 (LAMBDA ││ │ 2 (INPUT) ││ │ 3 (PROG (WORDLIST) ││ │ 4 (DO ((I 0 (+ (FINDENDWORD INPUT I) 1))) ...) ││ │ 5 (SETQ WORDLIST (REVERSE WORDLIST)) ││ │ 6 (NMAPCAR ││ │ 7 (LAMBDA ││ │ 8 (WORD) ││ │ 9 (COND ││ │ 10 (((ONE-OF a e i o u) (ELT WORD 0)) &) ││ │ 11 ("ELSE ││ │ 12 (CONCAT ││ │ 13 (SUBSTRING WORD 1 (- (SIZE WORD) 1)) ││ │ 14 (SUBSTRING WORD 0 1) ││ │ 15 "ay ")))) ││ │ 16 WORDLIST) ...) ││ │ │ ├────────────────────────────────────────────────────────────────┤ │FENCE LINE: (recursion-level / input-state / current-object) │ ├────────────────────────────────────────────────────────────────┤ │MESSAGE AREA: (recent command messages, multiline if needed) │ │ │ ├────────────────────────────────────────────────────────────────┤ │Program Function Keys: (currently defined keys) │ ├────────────────────────────────────────────────────────────────┤ │Command Area: _
請參閱1984年出版的《LISP / VM用戶指南》和《非同尋常的Lisp體驗》。
Nokolisp
點擊這裡運行
1979年,Nokolisp的編輯器被作為創作者對第一個Interlisp電傳編輯器的反攻,看起來它可能是一個基於屏幕的編輯器。
而不是傳統pretty-print為基礎的編輯後的畫面,nokolisp編輯器顯示在每一行中,可以讓你移動游標逐行選擇一個操作。例如:
0> fib (lambda (x) (if ( (edit fib)
這將顯示以下編輯器視圖:
┌──────────────────────────────────────────────┐ │ BOOT fib 0 0 │ │ ( │ │ _ lambda │ │ (x) │ │ (if (
(注意&省略了相符的長表達式。)
_游標最初在第一行。如果我們移動_到第三行,我們可以選擇並關注它來查看我們的下一個視圖:
BOOT fib 1 0 │ │ ( │ │ _ if │ │ (
BOOT fib 1 0 是標明 filename - function - level - ?的狀態行。
查看所有的nokolisp命令
Maclisp
(針對程序的數據結構的首選格式化ASCII文件)
Maclisp vs Interlisp的對比思考(即將代碼存儲為文本VS存儲為結構)
1978年的討論/辯論,揭示了人們在存儲和顯示代碼時如何思考文本與結構的關係:
在互動環境中編程:Lisp體驗
?Richard Stallman有關文本的回應: https://www.deepdyve.com/lp/association-for-computing-machinery/surveyor-s-forum-structured-editing-with-a-lisp-PzoXAz9GCu?impressionId=594bfe8baf9dc&i_medium=mydeepdyve&i_campaign=recommendations&i_source=recommendations
?作者回復: https://www.deepdyve.com/lp/association-for-computing-machinery/surveyor-s-forum-structured-editing-with-a-lisp-mQNqMU2je0?impressionId=594c0f05171ea&i_medium=docview&i_campaign=recommendations&i_source=recommendations
?後續討論結構化編輯器如何死亡:https://groups.google.com/forum/#!msg/comp.lang.lisp/D2Q5t8IEOkg/AqbNfOxZgUIJ
Maclisp結束了它,因為他們想要自定義代碼和注釋的布局。
這是1997年以來我最喜歡的這個話題的總結(內含非常多重要觀點)。https://groups.google.com/d/msg/comp.lang.lisp/dldLx8Yj7q8/u4y2zq19XIYJ
附錄
關於結構編輯的Non-Lisp討論
?意圖編程:https://www.youtube.com/watch?v = tSnnfUj1XCQ
類似於Interlisp(即基於結構的)
研究方法
從Paredit credits開始:
Paredit的原始靈感是Interlisp-D的結構編輯器「SEdit」——一個真正的結構編輯器,而不是像paredit這樣的俗氣仿製品和GNU Emacs項目下Guillaume Germain的sedit.el。
?查找郵件列表討論
?尋找lisp機器的官方參考手冊
?用deepdyve尋找相關文章
?問問周圍
總結:
?Lisp的演變似乎為今後的AI發展提供了一個很好的指引方向
?http://www.softwarepreservation.org/projects/LISP/
來源:https://github.com/
作者:shaunlebron


※鄧志東:人工智慧將助力自動駕駛產業落地
※工業領域首家AI企業天准 與近200家企業共推中國AI進程
※如何使用SparkNet進行分布式深度神經網路訓練
※如何使用深度學習重建高解析度音頻?
※CANs重磅發布,機器生成的「藝術作品」比人類藝術家更受歡迎
TAG:機器人圈 |
※「表裡不一」的進化,BJ40 PLUS真的只是PLUS
※五年持續進化之後,OPPO 想在 ColorOS 6 上帶來哪些不同?
※寫在發布會之前:蘋果iPhone的十年進化史
※深度首發定製+AI再進化,VIVO用戶福音來了
※OPPO手機十年進化論:回顧歷史,展望未來
※萬物演進,顛覆想像 全新Reebok DMX RUN 10 OG、DMX FUSION進化來襲!
※閃充鼻祖再次進化!OPPO的VOOC 3.O,有何新優勢?
※採訪比爾·蓋茨和LADY GAGA,他發現了99%的人不知道的進化捷徑
※OPPO官宣新旗艦R15,劉海屏再進化,比iPhone X好看太多!
※從YOLOv1到YOLOv3,目標檢測的進化之路
※vivo到底能把AI玩出什麼花來?vivo NEX即將發布:AI技術再進化!
※遊戲 AI 進化史,能阻止 AlphaGo 的或許只有狼人殺了
※沒有最懶-Vans 推出 Slip-On 懶人進化版
※屏下指紋+AI+5G:解讀vivo的進化與佔位
※賽爾號最早幾隻boss的超進化,當年的SPT現在已經這麼強了?
※15秒看懂OPPO手機進化史,原來OPPO R15領先行業這麼多
※iPhone XR的R 究竟帶來了什麼進化?
※iPhoneXR的R究竟帶來了什麼進化?
※我在 CES 體驗了戴爾新 XPS 13,它都有哪些進化?
※爆髮式進化的路跑鞋,ALTRA TORIN 4.0評測