設萬維讀者為首頁 萬維讀者網 -- 全球華人的精神家園 廣告服務 聯繫我們 關於萬維
 
首  頁 新  聞 視  頻 博  客 論  壇 分類廣告 購  物
搜索>> 發表日誌 控制面板 個人相冊 給我留言
幫助 退出
kshdjj的博客  
不信邪不盲從。享受的是自己的努力與成果,不要其他一切。  
https://blog.creaders.net/u/8284/ > 複製 > 收藏本頁
我的名片
kshdjj
來自: Pittsburgh,kshdjj@gmail.com
註冊日期: 2014-02-26
訪問總量: 25,334 次
點擊查看我的個人資料
Calendar
我的公告欄
最新發布
· 它似乎是太超前的,不可相信的科
· 華人十二年實現“軟件工程”革命
友好鏈接
分類目錄
【可視化D++語言尋求設計幫助】
【技術創新與建議】
· 它似乎是太超前的,不可相信的科
· 華人十二年實現“軟件工程”革命
【社會進步與穩定】
· 它似乎是太超前的,不可相信的科
存檔目錄
11/01/2021 - 11/30/2021
02/01/2014 - 02/28/2014
發表評論
作者:
用戶名: 密碼: 您還不是博客/論壇用戶?現在就註冊!
     
評論:
華人十二年實現“軟件工程”革命
   

                           邏輯學家十二年實現“軟件工程方法”上的革命

                        回答美國伊利華報報社記者提問 Dec. 31, 2013)

 你能否通俗地介紹一下,你的 “軟件設計編程自動化”的SDDA技術是什麼?

真正製作電腦軟件的語言僅有三代:(1) 第一代是 “機器代碼語言”,依據記錄了客戶要求的設計文件,再人工編制“機器代碼程序”;(2)第二代是“編程語言”,依據記錄了客戶要求的設計文件,再人工編制“語言代碼程序”;(3)第三代是 “軟件設計語言”,它不需要人工編製程序,只要用它寫下客戶要求,這種記錄了客戶要求的“設計文件”,就能自動轉換成電腦上直接運行的“機器代碼程序”。這種強有力軟件設計語言都使用了SDDA (S軟件,D設計,D編程,A自動化)技術。

 我十二年的工作是創建了一種“模式邏輯”工具,用它首次突破了SDDA技術。這種SDDA技術,可以為任何系統任何種類的軟件,製作它的第三代的“軟件設計語言”。為了證明它“既強有力又有普遍意義”,我從二零零一年開始,為兩個最複雜的軟件系統:(1)為企業經營管理的Window視窗軟件,製作了軟件設計語言 SDDA_window ;  (2) 互聯網平台軟件CGI,  製作了軟件設計語言 SDDA_web.。 這兩種“軟件設計語言”工具都將在“可視化D++語言” 一書中介紹。

 當今時代的狀況是,一座工廠要成為 汽車製造廠,不必要去學習怎麼提煉橡膠,怎麼加工輪胎和加工汽車發動機。歷史悠久的專業廠已提供各種零部件,讓你選購。同樣,人們在進入第三代的 “軟件設計語言”時代之後,一般軟件人員也根本不需要學習怎樣製作數據庫和編制數據庫程序。你只要把你要的,是什麼樣的數據庫寫出來,就可以了。例如,你要建立一個圖書館目錄的數據庫,並還要有數據庫記錄的輸入輸出的軟件。現在, 用第三代的 “軟件設計語言”,你只要寫下你要的“數據庫表”的名稱是“圖書館目錄”一詞,不妨,再寫下它的每條記錄由“書目“與“作者”二個項目。總共,你只不過打了三個詞語,一個數據庫就產生,並且提供各種需要的輸入輸出操作軟件塊。所以,人們在進入第三代的 “軟件設計語言”時代之後,這種新技術已提供這樣的一種可能:一位普通人都可以為他熟悉的業務,製作他自己的電腦視窗應用軟件。在以前,這是不可想像的吧。

 這裡要指出的是,可視化D++語言是屬於一種 “通常的,用於軟件設計的各種基本工具”的大集成,它的操作使用方式,都屬於人們使用電腦的常識。它內部的高智能的協調管理,保證它使用非常非常簡單方便,又通用可靠。附帶地也指出一下:正象第二代語言能具有第一代語言的所有功能,第三代語言也能具有第二代語言的所有功能。因而,若有人問“能產生大軟件?能顯示美麗的畫面嗎? ”一類問題.,就可知這些問題都是次要的,都是不言而語的,

 你原來是復旦大學數學教師,怎麼會去搞計算機軟硬件的

 因為日本,美國解決了用計算機去“光順”船體數據,有了正確的船體模型數據,從而能用計算機去控制船體製造。一九六七年,上海的造船研究所和計算機技術研究所,邀請了復旦大學數學系三位老師和二位學生加入他們“船體計算機數學光順” 研究小組。二年下來,仍有一個特大難題解決不了。江南造船廠顧師傅組織領導了一次“攻克難題”大會戰。二個半月後,我在原有同事工作的基礎上,“模仿人工智能‘機器學習’的方法,使用加‘權’與精選‘權’的非傳統方法,使人的意願和數學公式相結合,攻克了電腦船型光順的會戰難關”(引自“可視化 D++ 語言 第1冊”一書的後言)。這使我看到了計算機的威力。我先打了一份報告,沒成功,後又補充打了一份報告,要求在復旦大學內建立“計算機製造廠”。感謝數學系領導的工宣隊張連長的支持,一九六九年,“復旦計算機製造廠”成立了。次年一九七零年,復旦大學“計算機結構”專業正式成立並招工農兵學生。當時,我是計算機製造廠廠長兼任計算機教研組組長,前後做了約十年。就這樣,我走上計算機的道路。嗨,中國的計算機製造廠成立比台灣宏碁和美國的 DELL早,但是做的都比他們差。我不同意做得差的原因是“工人吃大鍋飯”。簡單地說,中國大部分人,無論在國營企業,私營企業,以及在美國打工者,毋庸置疑大都是智慧與勤奮的。

 你十年搞計算機硬體之後,怎麼會轉去搞計算機理論科學?

 文化革命剛結束不久,新幹部與恢復工作的老幹部一大堆,每一位都得安排一個職位。一大批職位,又引出一大批職權。於是,大事小事都要經過層層不同職權的又不了解生產的人員批准。我也無可奈何,最後說“計算機工廠我上繳,你們去管理吧。” 。一九八零年,我加入了 朱洪老師為領導的新建立的“計算機理論”教研組。大家都知道,中國的計算機軟件,以及基於電子元件工業基礎的計算機硬件,與世界先進水準相差一大截。但是,不涉及工業基礎設施的計算機理論科學,要趕上世界先進水平,還是有可能的。一九八一年,我暗暗下決心,在計算機理論科學上,三年達國內先進水平,五年達國際先進水平。我把我的職責干好之外,不丟掉我的決心。即使領導安排我去做‘班主任’行政工作,但我 晚上也可為計算機系,數學系的學生開專題“討論班“。幾年後,我的願望達到了。復旦校刊登載了:唐同誥五年左右為學生開了五門新課,以及參加了某個討論班的“ 六人中有三位直升博士生,二位考取碩士研究生“(要說明一下的是,這些學生自己原先都很傑出)。另外,在我的時態邏輯文章在“中國科學”外文版上發表,又受到美國“數學評論” 評論員 (有關語言理論與邏輯)邀請。這樣的經歷,把我推入了計算機理論科學的陣地。

(我回憶了這些,不是我有什麼特殊智慧。事實上,中國聰明的人很多,只要選准方向,沉下心來幹上一二十,都能作出不錯的成績。)

 怎麼會來美國搞計算機理論研究?

 在我的時態邏輯文章在“中國科學“上發表之後,我已有足夠的理論基礎可以去國外進修。一九八六年,我曾經想去牛津大學學習和工作。有一次, 應中科院軟件所的的兩位資深研究員(文革後最早的院士)唐稚松和周巢塵的邀請,給他們的研究生介紹我在軟件時態邏輯方面的研究成果。會後,因為周巢塵老師常被邀請去牛津大學工作,我就請他引薦我去牛津大學計算機系工作,而他建議我去卡內基·梅隆大學計算機系,不去牛津大學計算機系。他對我說:“那兒的人是’大X’級水平,而你已是‘元X’級水平.。你應該去CMU”。此話僅是鼓勵,但他的建議我必須接受。回上海後,我帶着我的論文,請上海交大的孫永強老教授寫一封信,介紹我去CMU卡內基·梅隆大學的埃德蒙·克拉克教授(後為圖靈獎獲得者)那裡學習。孫老師先看了我的論文,然後在一張紙上寫了一句話,中文意思是“此人對你必有用”,簽了名後交給我。一九八六年底,我飛到匹茲堡機場,見到了克拉克 教授。他駕車把我帶到他的辦公室。我把孫永強教授的信轉交他。他問我“你能幹什麼?”,到了美國,我就不必要過分謙虛,我回答說“我能做你叫我干的任何事情”。過後想想,我的回答不精確,應該補充說,任何事情是指他的科研上的任何事情。如有一次,他建議我去XXX大學做教師,我就沒幹。因為,當時我的英語水平,只能看懂別人寫得,基本上聽不懂學生說什麼。

 在美國你得到的最大的收穫是什麼

 我到美國是一九八六年十二月底,克拉克教授交給我美國頂級計算機雜誌為他刊登一本專輯 (共有八章),說這本專輯是我到這裡進修的主要學習材料, 並說過了聖誕節後一月十日再談。到了一月十日,我去了克拉克 教授辦公室,他問我“你看過這本專輯的文章嗎?” 我說“看了,而且看完了”。他說“你有什麼問題要問我嗎?”。我說:“沒不清楚的問題。整篇文章的結論正確。不過,第八章的證明改寫一下更好”,他問我“哪兒?”。接着,我們就討論起來。以後,他不斷地送其他人的稿件給我,要我幫他初審一下,提個意見。這是我的工作,這些論文大都與我的研究領域無直接關係,有些是徧向代數領域,不太熟悉。為了正確審閱這些論文,有的結論查不到資料,我需自己動手證明,我需要花大量時間。事實上,我在 CMU  參加了三個有興趣的研究課題:軟件驗證,硬件驗證,以及人工智能的知識表達。這些需要的邏輯知識,但都沒有超出我以前已經掌握的知識。 對我而言,研究比審稿簡單,化的時間不多。要說我真正從CMU幾位美國教授那兒學到的,是學術上的“思想方法”,也就是“在計算機科學領域裡,對每一個概念,主意,想法,思想,方法,都要考慮用一個‘可計算的算法和程序’去描述和實現”。這方面,當時感覺CMU比斯坦福大學大學更強調一些  。因此,當我以後拿到論文,我就思考把它的內容要用可計算的程序寫一下。這種做法的結果,有時會令人感到意外。這兒僅僅舉一個例子。研究人工智能“機器學習”的人,很少人 沒讀過 某位極為著名的人工智能專家的有關“表達式學習”的論文 。此論文不長又有軟件,僅僅看論文,很難發現有錯誤。偶然機會,我參加的一個研究小組要用此論文的軟件。我拿來論文,依照論文提出的方法,用自編的程序去實現一下,發覺論文中有關“極限”概念錯誤,導致論文提出的算法錯誤。如果不用自編的程序去實現一下論文的內容,論文的錯誤很難識別(錯誤已在某會議 “ The 7th Australian Joint Conference on Artificial Intelligence AI-94 “上報道。但必須指出, 雖然論文給出的算法有錯誤,但論文的主體思想有創見,還是很了不起的)。又有一次,我為校外的一位教授的論文審稿。他在論文中提出一種複雜的理論,並在文末尾說:他已經根據他的理論,製作了 一個(軟件)系統。我在審稿時,用可計算的原理和程序,模仿他的理論。發現他的理論根本“不可計算”,隨後回復克拉克 教授說:此論文作者根本不可能製作了 一個(軟件)系統。一月以後,克拉克教授告訴我,他向論文作者要一個他製作了 的系統,作者回覆說,他的(軟件)系統才開始編。此時,教授才要我寫出,為什麽作者的理論不可能已製作出一個(軟件)系統。

在計算機軟件理論的研究中,你是否建立了與別人完全不同的新方法?

 計算機軟件理論科學中,早期提出了兩大難題:一是算法複雜性的NP問題,另一個是.程序正確性的驗證問題。在程序正確性的驗證的領域裡,為驗證軟件程序中的大大小小循環語句,人們想起完全類似的“數學歸納法”。研究人員都自然而然地使用數學工具,去研究程序正確性的驗證問題。此問題太困難了。因此,為驗證程序正確性而提出每一種能讓人理解而接受的,邏輯或公理化理論的創始人,一般都能獲得圖靈獎。但是,實際軟件程序太複雜,而在執行過程中產生的狀態也多的無法估量,用嚴謹的數學邏輯方法僅能驗證簡單的小段的程序語句。而且,用數學表達式去驗證簡單的程序語句,這些複雜的數學表達式更讓程序人員難於理解。

 我在不同的研究組幹了多年的程序正確性研究之後,我認為數學方法的潛力到此為止,就這麼一點能力,不能徹底解決問題。因而,人們需要化較長的時間,去探索,試試尋找其它的工程的方法,當然不會立竿見影,前幾年不會有結果。但一般的研究組的課題,往往以年填寫研究計劃,年年要求出一些成績,按年總結匯報。我要探索新的特殊有效方法,一,二年不會成功,只有成功了才能讓人相信。我只能化晚上以及假日,用了六年才完成。首先在匹茲堡大學張系國教授建議的一個學術會議上介紹,意在宣告成功。在給CMU 計算機系 Nana Scott 教授和他的一位助手演示我的工程化的程序驗證系統之前,Nana Scott 教授對我說:“用數學方法是不能解決程序驗證問題”。表明我們有同樣的看法。我的工程化驗證程序的路是走對了。

 那麼,什麼是我創建的能被程序人員使用的 “工程化方法”呢?在我辭職離開澳大利亞“軟件驗證研究中心”的最後一天,我在研究中心作了唯一的一次演講,並演示了我的軟件驗證工程化系統。我的方法就是讓普通的編譯器(輸入變量值為數字),增強為擁有“程序歸納法”機能的符號化編譯器(輸入變量值為代數表達式),再在程序設計語言裡加進六條左右,簡易的“前置條件”與“後置條件” 等程序語句。整個系統以“計算樹”的搜索方式運行: 遇到邏輯公式就套用“定理證明器”;遇到循環語句就套用我獨創的“程序歸納法”(數理邏輯中的廣義歸納原理給了我很大幫助)。整個程序就不斷地向前驗證。到此你就能理解,這個方法是最自然最簡潔的實用方法,明顯是一個最佳的途徑。在程序驗證方法論解決之後,再留在那兒就無意義了。除了把最核心最奇特的“程序歸納法”一套圖紙,寄給北京來到華東師大軟件學院搞研究的朋友之外,不再接觸程序驗證具體系統。

 你搞了這麼多的計算機理論研究,怎麼會去搞與理論研究毫無關係的軟件工程革新呢?

 編制一款電腦軟件,基本狀況是:時間長,錯誤種類多,可靠性低,結果帶來價格貴。 大家都知道“企業經營管理”方面的軟件產品,是大中小應用軟件公司的主要收入。看看 SAP,Oracle, IBM 等等應用軟件公司每年的億萬收入,就知道了。我完成了實用的程序驗證“工程化方法”之後。再搞原有的程序正確性的研究已無意義。我考慮把我的軟件理論知識與方法,用於軟件編程方法的改革上。另外,有兩件事的發生,更加強了我這方面的決心。一個是,我曾經在 美國第一個數據公司 參加一個信用卡軟件的項目,聽說單單設計費付了一千四百萬美金。而且,在我被借調到不同子公司編程時,各個項目的服務器的服務軟件,相差不大,可以自動裝配;另一個是,我想試用澳洲墨爾本的一款 PROLOG 編輯器軟件,他們告訴我,不但他們的編輯軟件我要付款,而且以後我自己編的程序,用他們編輯器加工後產生的軟件產品,也要付錢給他們。正如,我用買來的車床加工的螺絲,我把螺絲賣出後,還要付錢給車床工廠。這好像不太合理。沒辦法,自己做一個PROLOG 編輯器軟件。PROLOG 編輯器的程序也不小,而且我也沒多餘時間。動了一個腦筋,四個月創建了一個模式邏輯,用它可自動製作一個簡單能用的PROLOG 編輯器。我就不要買澳洲的PROLOG 編輯器軟件了。第一次能用一個模式邏輯去自動產生一個完整的軟件,我自己也驚奇與興奮。

 下面我引用某網頁公布的一段關於我的PROLOG 編輯器的技術討論:“大約在一九九六年前後,我 曾給CMU的埃德蒙·克拉克教授演示這種自動製作PROLOG編譯器軟件的技術。要構造一款PROLOG編譯器軟件,除了一般的編譯,還要用到幾種特殊算法。埃德蒙曾問了三個問題,(1你的編譯器是否使用了沃倫機器?”,我回答說:“不用,(2)“你的編譯器使用的垃圾回收算法是什麼?,我回答說:不需要'“(3)”在編譯器里,什麼是你的數學合併算法呢?,我回答說:”合併算法也不需要。我只是用一個簡單的一個數據到另一個數據的‘指向' 來代替複雜的合併算法突然,埃德蒙站了起來,說:是的,你是對的。就是平時這些新技術堆積,我才有基礎去考慮軟件工程的革新問題。

 你的軟件工程的革新方法是怎樣的,能讓我知道一個大概意思嗎?

 在真正確定軟件工程的改革方向之前,先要了解已有的軟件工程方法到底存在哪些根本性的問題。原來的軟件工程方法,說它是 “工程“方法,好像還差很遠,我們知道,以現代工程化方法建造一幢大樓,大樓是什麽樣子,完全決定於設計文件,而不依賴於哪個建築工程隊去做。一種先進的軟件製作技術也應該是如此。同樣一份軟件設計文件,由不同的軟件公司產生的軟件應該完全一樣。這種機械化工程化的製作過程,才真正實現了軟件工程化 ( Software Engineering )的原旨,但已有的軟件工程還不能做到此點。我決心探索,用建造一幢大樓的類似方式:根據設計文件,自動製作模塊,自動安裝模塊,來機械化建造軟件。想來,百年後軟件製作方法應該是如此。在一九九七年前後,我向我所在的美國第一個數據公司的子公司提交了我的這個建議。後來由於子公司撤銷,建議無回應。我化了幾年時間,分析了語言理論,實際編程,以及新業務的可行性之後,於二零零一年正式開始研製 SDDA技術和“可視化 D++語言”的設計與製作。於二零零四年,可行性方案測試成功。於二零零六年開始廣泛對外(限於同事,朋友的圈子)表演我的可視化D++語言工具。

 作為從軟件理論科學過來的人,總會想到,怎樣改變現有軟件工程產生軟件的“慢,差,貴”的現象。而這種現狀也主要是人工編製程序過程以及程序的複雜性兩方面引起的。其實,各大軟件公司都想過,直接從記錄客戶要求的設計文件(或稱 “業務模型”),不用編製程序 而直接生成編輯好的高速軟件代碼,該多好啊。擁有眾多軟件尖端人才的德國的大公司SAP, 美國的大公司Oracle & Peop[leSoft, 以及大公司IBM  (曾經收購了Rational Rose)  都做過這方面的巨大努力(有的已有二十多年的歷史了)。即使不談專用軟件,就是通常的企業經營管理軟件和網頁平台CGI ,都 實在太複雜了。要生成完整個軟件更是困難。這種困難現象,正如Software Development雜誌 [ 2006年4月卷。14日,第4期 ] 指出的:“實施模型到代碼和模型到模型轉換的任務,還需要做一些工作”。閱讀了該篇文章之後,我發Mail給該文作者,告訴他,我已成功“實施模型到代碼轉換”的技術。他回信說,希望我公開我的軟件代碼。當然,作為公司的財產,我只能以產品的方式,公開技術。

 你的“可視化D++語言”書出版後,你有什麼打算?

 電腦軟件製作人員是不斷地學習新語言,以適應工作的需要。正如前面提到的,真正製作電腦軟件的語言僅有三代 (1) 第一代是機器代碼語言;(2)第二代是編程語言,如C,JAVA, PROLOG等;(3)第三代是軟件設計語言,如使用 SDDA技術的 可視化D++語言。每代語言都有實質差別,一句話“一代比一代使用更方便有效”。

 寫完這本套 書“可視化D++語言”後,我打算給年輕學生上課,並提供的免費軟件。希望有利於年輕人創業。此套書也將會很快有英文版出版。

 這個先進的可視化D++語言發行後,對現有軟件行業有什麼影響與衝擊?

 電腦軟件製作人員是不斷地學習新語言,這是他們的習慣。所以,對程序員個人來說,他們能學到更強有力更方便的語言工具,使他們能化較少的時間製作更多的軟件。最終,有關的軟件人員會喜愛它的。但對大中型的應用軟件公司是挑戰。如果停遲不進 (當然很少可能),大中型的應用軟件公司的利潤,好多年後會分流給小公司群體。

 但是,我們也可預見到,在軟件歷史上臨時用於過渡的代用技術,將會逐漸萎縮。例如當網頁CGI軟件能自動生成,那麼ASP平台的歷史作用就完成了; 又例如,SAP公司 和 Oracle PeopleSoft 公司 採用的低速的“業務模型的解釋“技術,將會逐漸被簡便又高速軟件替代;又例如, 若主要功能是畫流程圖,又僅僅產生構架式的程序,又要讓程序員去填滿構架式的程序。那麼這種複雜而又昂貴的 IBM的 UML技術,它的使用會收到限制。總之,要存活,就要改革,

 還再補充一下,“可視化D++語言”軟件, 對不同的電腦操作系統有不同的版本,先發行的版本  SDDA_window 和 SDDA_web 都是為 MS Window 操作系統的電腦用的。為其它 計算機操作系統用的版本,肯定比大雜燴的Window 操作系統用的版本更簡單一些。大家一起干吧。(意見也可送kshdjj@gmail.com)  


 
關於本站 | 廣告服務 | 聯繫我們 | 招聘信息 | 網站導航 | 隱私保護
Copyright (C) 1998-2026. Creaders.NET. All Rights Reserved.