[徵文] 黃易小說自生軟體系統,以FORTH為例

看板Soft_Job (軟體人)作者 (影斯作業系統)時間4年前 (2020/03/23 00:05), 編輯推噓2(201)
留言3則, 3人參與, 4年前最新討論串1/1
很久以前看到黃易有兩部小說提到:"自生軟體系統"的觀念,也就是讓電腦程式 自己改寫自己來演化。 多年前用這個關鍵字找到中國電腦雜誌的兩頁圖檔,對照原創教授的名字, 找到相關的論文和BASIC程式。用現代的觀點來看,那個程式只是用交談式的問題, 產生符合使用者特定需求的新BASIC程式而已,能夠申請數百萬美元的研究經費 真是厲害。 很久之前人工智慧是用LISP電腦語言來開發,日本投入大量資源來研究, 結果失敗了。我個人比較喜歡用FORTH電腦程式語言來做研究。 原文(2014年找到及上傳的): https://sites.google.com/site/imehouse/Home/ching 3BFC27061090156069.pdf 簡介: 永不過時的電腦軟件—自生軟件系統 作者:鄭佑 來源期刊:《電腦應用時代》1991年 第4期 格式:PDF 頁數:2頁 自生軟件是一個軟件自動化概念,它的目的在於把目前所有的軟件都加以改寫, 轉化成一種永久的、不會被計算機科技發展淘汰的形式。它可以永遠不需要重寫, 因為計算機會自動將其修正或改進。自生軟件模仿有機體細胞的衍生原理,控制信息 均來自細胞內部,不受外界影響。自生軟件系統預先設置了許多子程序, 根據硬件的變更、用戶的新需求自行修正,一切控制來自軟件內部,使軟件脫離硬件 而獨立,簡化了計算機的應用。自生軟件一旦推廣,將一改現今計算機語言、操作系統 和其它軟件的面貌。 原作者自誇的文章: 後科學之父鄭佑 - Postscience http://www.postscience.com/pschina.pdf (1)機器人觸摸的問題(觸摸碰撞而無反彈)是牛頓和所有的科學家在過去300年 錯過了一個問題。日本第六代計算機科學的失敗主要是因為機器人不能觸摸。 只有吳大猷和鄭佑能思考並解決這個25變量的問題。 (2)第二個問題是是經濟學,美國聯儲局沒有預測到的兩次金融危機,而後科學 創始人鄭佑的估值系統公開預測儲蓄和貸款危機和次貸禍。如何在包含五十種經濟 因素的供應和需求中取得經濟均衡? 只能在嚴格的數學基礎上和不可能違反的自然 法則的無限電子估值系統中計算求得。 (3)第三個問題是軟件的複雜性危機,只能用全面性,完全自動化的永久自生軟件 系統來解決。 包含原本的 BASIC 程式的部分介面內容。 原作者的 slides: http://www.slideshare.net/hughching 過期的專利在這: Completely automated and self-generating software system https://patents.google.com/patent/US5485601 Compeletely Automated And Self-generating Software System http://www.jumpulse.com/ http://www.jumpulse.com/chineser.pdf http://www.jumpulse.com/new.bas 之前實際執行的結果: 01/21/2014 17:42 50,090 new.bas 01/21/2014 17:42 50,090 old.bas 01/21/2014 18:37 127 TEST.BAS C:\temp>more TEST.BAS 1 PRINT "hello hello" 2 LOCATE 25,1: PRINT "Type the <Enter> key to go to the main program..."; :LINE INPUT A$:CHAIN "NEW" 從目前還存在的 new.bas 可以看出原作者的做法: 運用問答的方式產生新的 TEST.BAS 再串接原有的 old.bas 複制成的 new.bas 62080 MISNUM=62080!:G$="LOCATE 25,1: PRINT "+CHR$(34)+ "Type the <Enter> key to go to the main program..."+CHR$(34)+"; :LINE INPUT A$:CHAIN "+CHR$(34)+"NEW"+CHR$(34):GOTO 61009 62090 MISNUM=62090!:ON VAL(ANSWER$(ANSNUM)) GOSUB 62091,62092,62093 :GOTO 61009 要做到相同的功能,用古老的 LISP 和現代的 Python 都能達成。 但是最容易實作這種系統的語言是 FORTH。 https://skilldrick.github.io/easyforth/ FORTH 的程式碼由 ':' 開始定義 ';' 結束定義。 一個指令一個動作。 字串由 s" 開始 " 結束。 資料基本上是使用堆疊來運作。 FORTH 有特別的指令 evaluate 可以直接執行字串中的程式碼。 https://repl.it/languages/forth : main ." hello hello" cr ; main : test s" 1 2 3" evaluate ; test words : test pad 1+ 127 accept pad c! pad count type ; test https://www.tutorialspoint.com/execute_forth_online.php : test s" 1 2 3" evaluate .s ; test require random.fs utime drop seed ! : main 10 0 do i cr . 10 random . loop ; main FORTH 有關鍵字,沒有保留字,可以預先重定義數字: : 1 9 ; : test 1 2 3 + + . cr ; test 將 1 定義成 9,1+2+3 的結果是 14 昨天找到一篇論文,跟我想像中的解決問題方法雷同: 也比這篇文章的原始實作方法更接近實務。 Genetic algorithms in Forth https://arxiv.org/pdf/1807.06230.pdf Abstract A method for automatically finding a program (bytecode) realizing the given algorithm is developed. The algorithm is specified as a set of tests (input data) → (output data). Genetic methods made it possible to find the implementation of relatively complex algorithms: sorting, decimal digits, GCD, LCM, factorial, prime divisors, binomial coefficients, and others. The algorithms are implemented on a highly simplified version of Forth language. Keywords: Genetic algorithm, Linear genetic programming, Evolutionary programming, Forth. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.104.13 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1584893125.A.213.html

03/23 08:59, 4年前 , 1F
看FORTH就推。
03/23 08:59, 1F

03/23 12:40, 4年前 , 2F
以前玩過genetic programming,概念很好但是很難收斂
03/23 12:40, 2F

03/23 21:48, 4年前 , 3F
記得以前有個編譯器線上課,版上有一堆高手去上過
03/23 21:48, 3F
文章代碼(AID): #1UTup58J (Soft_Job)
文章代碼(AID): #1UTup58J (Soft_Job)