设万维读者为首页 万维读者网 -- 全球华人的精神家园 广告服务 联系我们 关于万维
 
首  页 新  闻 论  坛 博  客 视  频 分类广告 购  物
搜索>> 发表日志 控制面板 个人相册 给我留言
帮助 退出
kshdjj的博客  
不信邪不盲从。享受的是自己的努力与成果,不要其他一切。  
        https://blog.creaders.net/u/8284/ > 复制 > 收藏本页
网络日志正文
华人十二年实现“软件工程”革命 2014-02-28 05:59:52

                           逻辑学家十二年实现“软件工程方法”上的革命

                        回答美国伊利华报报社记者提问 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)  


浏览(3254) (1) 评论(18)
发表评论
文章评论
作者:求真知 留言时间:2021-02-26 17:25:21

抱歉,博主,请删去我的贴。第一次没看全是因为没有打开。

回复 | 0
作者:求真知 留言时间:2021-02-26 17:22:10

似乎未完,后面的部分如下:

“程序归纳法”(数理逻辑中的广义归纳原理给了我很大帮助)。整个程序就不断地向前验证。到此你就能理解,这个方法是最自然最简洁的实用方法,明显是一个最佳的途径。在程序验证方法论解决之后,再留在那儿就无意义了。除了把最核心最奇特的“程序归纳法”一套图纸,寄给北京来到华东师大软件学院搞研究的朋友之外,不再接触程序验证具体系统。你搞了这么多的计算机理论研究,怎么会去搞与理论研究毫无关系的软件工程革新呢?编制一款电脑软件,基本状况是:时间长,错误种类多,可靠性低,结果带来价格贵。 大家都知道“企业经营管理”方面的软件产品,是大中小应用软件公司的主要收入。看看 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)

回复 | 0
作者:小树 留言时间:2021-01-15 18:45:32

您是天才大牛,上帝赐予您聪明. 我的朋友的导师计算所的魏道政等,都是数学出生.

回复 | 0
作者:kshdjj 留言时间:2014-03-03 10:20:40
【回答just4look】谢谢你有兴趣阅读网的文章。因为我极忙,一般在博客里只谈一般原理,没有正对你的提问回答你,很抱歉。有些技术性太细节的问题,一般博客没兴趣。可转到唐同诰的Email 里谈。听说,有公司曾经找唐同诰,要了解核心理论与系统。但都失败了,公司不容许公司内个人对外泄露公司的核心理论与系统。一般公司都这么做,请你谅解。再次,谢谢你化时间写评论。
回复 | 0
作者:just4look 留言时间:2014-03-03 05:30:38
好象没有争论,只是说如果你声称的事是对的,那至少需要让人知道更多事实,而不是嘴上不断发出的断言。真不知道你们的目的是什么?

等待会说话的事实,其他没有意义。
回复 | 0
作者:kshdjj 留言时间:2014-03-02 21:59:42
我曾经问过一位美国印度裔的哲学博士,“一件发生的事情大家都看到,争论的双方说理时也是头头是道,但是结论不一样。 为什么?”。 为什么?争论的双方都以“事实+徧见” 作为出发点的”公理“,双方推断出来的定理结论, 当然不一样。所以,我每每警惕并提醒自己,讨论问题不预先带有偏见。

(1)关于 SDDA 技术。唐同诰的技术小团队的一名顾问成员告诉他说:”任何话多说都无用, 就让软件产品说话吧“。从2004年唐同诰在网页中宣称试验成功;2006年对外 demo;直至 2013年出版书籍提供软件教学使用。

(2)关于 SDDA 或者 Model-To-Code 的“关键的核心技术”。各大软件公司的高层技术领导都知道,要彻底攻克 SDDA的难题需要解决 ”Pattern Technology“。这是公开的秘密。九五年后出版的高级软件书籍的书名,往往带有词语 ”XXX And Pattern Technology“,说明作者的书对解决 ”Pattern Technology“ 是有帮助的。
回复 | 0
作者:just4look 留言时间:2014-03-02 07:18:23
谢谢博主的回帖,不过从博主的文章来看,没有涉及任何关键点,离目标是远不可及啊。等作者拿出有说服力的论据,再来看这件事也不迟。
回复 | 0
作者:不必当假 留言时间:2014-03-01 17:52:03
多谢博主给了详尽的回答。当年物理学家费曼开量子计算的课用的就是Lisp。想来Lisp一定有它的特殊性能。
回复 | 0
作者:kshdjj 留言时间:2014-03-01 15:30:36
有人成功了,各个大公司不必担心,都可做自己的 SDDA 技术。

【【想多知道几点信息】】
(1) 今年 可视化D++语言第二册(视窗软件设计和开发自动化)出版后, 唐同诰将去上海举办短训班一星期(28年没回中国,拿过香港基金几千美金,举办一次讲课作回报也应该)。它的免费中文版软件是由完整英文版软件转化而来的。英文版软件将在 “Visual D++ Language” 一书出版后,才对外供应。

(2)为各公司之间有一个公平合理的竞争,共同促进大小电脑软件事业的发展。过分保守保密不利软件事业繁荣昌盛,望各位把本博客内容告诉同事,告诉CEO,自己也能开发自己的 SDDA 技术。如果有位 CTO不满意或怀疑博客介绍的结果, 可以请他看一个 Video(二年前录像,英语很差,内容仅供参考):
http://www.modeltosoft.com/htdocs/Auto_Internet_Design.avi (可用复制地址)

录像中介绍一种更为先进的正在不断改进的技术:电脑 的SDDA工具对于网页平台(Server 端)的所有 CGI软件,不但能自动生成软件的机器码,就连原来客户需要填写的 “软件要求”(即:初始软件设计文件),在没有填没有说的情况下,也能预先自动生成软件设计文件。好像炫了,CTO无话可说,非常有意思。








回复 | 0
作者:color99 留言时间:2014-03-01 15:10:03
谢谢博主回贴。认真读了主帖并回帖的,一般不会是门外汉。已经掌握了半打计算机语言的,也不在乎多掌握一门。从回答看,这东西就是个忽悠。
回复 | 0
作者:kshdjj 留言时间:2014-03-01 15:02:45
【回答color99】文艺书内容要用眼看,数学书内咯要用脑想,软件书要动手试。各们学科有各的学习方法。
今年出版了 可视化 D++语言第二册之后, 有兴趣的话,边读边试它,收获就不一样了。

谢谢读我的博客文章。
回复 | 0
作者:kshdjj 留言时间:2014-03-01 14:46:56
【回答不必当假】

Lisp 语言的 CMU的二位创作人(遗憾,都过世了),为此都获得 Turin 奖。Lisp 语言主要用在人工智能方面,因为它既可使用一般程序语言的过程语句,又可使用一般程序语言没有的逻辑规则。但它的致命弱点是“速度太慢”。听我朋友说,新版本的Lisp 语言已经使用了 Compiler“编译器”,速度不慢了。正像 新版本“Java”, “Visual Basic", 也声称使用了 Compiler“编译器”,速度不慢了。

真实的结论是,它们执行的速度有很大提高,但与 C 语言向比,还差很多。为什么? 不管有关语言的公司怎么花言巧语,只要这个语言中有常用的语句是需要在软件执行时,要”动态(临时)解释的”,这就要浪费时间,速度会下来。为什么要用电脑,原因是它的快。慢了,有朝一日会淘汰。

有关Lisp 语言争论太多,我不宜下断言。你已经用了Lisp, 或者你的 Boss 要你用 ,你就继续用。

我的一位是List 专家,你寄信给我 kshdjj@gmail.com
我把他的 Mail 地址告诉你,他会告诉你 Lisp 新版本的情况。
kshdjj
回复 | 0
作者:kshdjj 留言时间:2014-03-01 14:01:54
【回答 justlook】请寄信 kshdjj@gmail.com. 唐同诰抽空会回答你的问题。谢谢。
回复 | 0
作者:color99 留言时间:2014-03-01 10:20:39
讲了一堆杂七杂八的东西,正题没有讲清楚。我看了对D++语言的简介,也不知道这个语言能干什么。你号称有理论,又能编程,就讲讲你那个D++语言能做那些事,有哪些局限。计算机这个行当对新技术新理论接收极快。在这个行业,有真本事,新理论技术真管用,想怀才不遇都难。
回复 | 0
作者:不必当假 留言时间:2014-03-01 09:57:39
请问博主Lisp是属于哪一代,80年代用过,不知后来有没有发展,现况如何?谢谢!
回复 | 0
作者:just4look 留言时间:2014-03-01 08:34:29
博主:我也是学数学教数学的,十几年前就开始做类似的研究,不过几年前停止开发了。我很有兴趣看看你们到底做了些具体的研究,谢谢。
回复 | 0
作者:kshdjj 留言时间:2014-03-01 00:59:38
Dr. 马, 谢谢您读了我的此篇博文,欢迎您的评论。

(1)在回答Dr. 马的提问之前,先解开一下多位读者的疑问:“在报道中,被访问者唐同诰在回答记者的提问的话语中,是否有点过分自负?”。
所知
他此前很少谈论有些事实与成就,(a) 这次记者要了解他真实的身份与科研成就,他就像其他长期生活在美国的普通人一样,坦率真诚地回答他所知道的事实,(b) 他也间接地 回答了个别不满者对可视化D++语言一书的评价:说“某程序语言是由 美国著名的Bell 实验室研究员创作的,唐同诰是什么实验室的?他创作的编制程序语言,人们会相信会用吗?”。读了报道文章后,知道报道中提到的华人不但资历不比Bell 实验室软件研究员差, 比大部分软件研究员高深的多。

(2)Dr. 马 的第一个问题:“谓词逻辑的不完备性怎么办?”
【回答】数理逻辑中的 “命题逻辑(演算)” 和“谓词逻辑(演算)” 都是完备的。它们使用的是“元”语言。
当一门新的纯粹考虑作为推理用的逻辑理论提出时,先要解决“合理性”与“完备性”问题。

刚入门时,唐同诰对逻辑的完备性感兴趣,曾为计算机科学建立了二个如下的新逻辑,并证明了它们都具有完备性定理。
(i)A Completeness Theorem of First-Order Temporal Logic with the Equality, Scientia Sinica (series A), Vol.XXVIII, No.5, May 1985.
(ii) Temporal Logic CTL + PROLOG, Journal of Automated Reasoning 5 (1989) 49-65.
以后,他转为“对逻辑的实际应用感兴趣”。
(3)Dr. 马 的第二个问题:“可计算性考虑了吗?”
【回答】唐同诰曾教了一次“可计算性理论引论”,又教了一次数理逻辑的 “可计算性理论”。(有趣地提一下:有一位隔壁班级的学生要求到唐同诰的“可计算性理论引论”课旁听,唐同诰同意了。后来,听说他担任了微软总部任专管应用软件与网页技术的副总裁)

“可计算”性可以简单地说是”有一个(必定会结束的)算法”。我们不谈简单的可计算的问题,一般复杂的可计算问题往往存在一个用“广义的归纳原理”的算法。

在你为杂志审查复杂系统和理论时,要严密分析作者的设计使用的广义的归纳原理,是否有错误。否则,复杂系统是完不成的,理论是错误的。唐同诰也曾用广义的归纳原理,创造了一种“程序归纳原理”,把它塞进 “Compiler”,实现了通用,简单,高速的真正实用的 “程序验证” 方法。(这里仅仅为了强调一下“广义的归纳原理”很重要。)

(4)Dr. 马 的第三个问题:“Prolog语言使用什么演绎方法”
【回答】Prolog语言使用的是“带有变量的命题演绎”规则。但是它的演绎结果能获得的变量值,因而也可以说它“实现了谓词演绎”的基本功能。
回复 | 0
作者:老马识途 留言时间:2014-02-28 15:44:32
可计算性考虑了吗?谓词逻辑的不完备性怎么办?Prolog语言使用什么演绎方法?完备吗?
回复 | 0
 
关于本站 | 广告服务 | 联系我们 | 招聘信息 | 网站导航 | 隐私保护
Copyright (C) 1998-2020. CyberMedia Network /Creaders.NET. All Rights Reserved.