• 2004-07-15

    自掘坟墓

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/dreamhead-logs/268364.html

    Darwin就XML处理的问题给我打了个电话,他现在考虑的是很早以前和我提到过的可执行的UML。说得明白一点,他想要的是一个通过拖拖拽拽做出UML图,然后可以生成应用。因为他的强项不在于做界面,所以,他准备将内核处理和界面显示分离,先来完成内核部分,而把界面部分推迟。可能二者不是由一种语言,也许内核是C/C++的,而界面则由Java完成,这里就涉及到了二者之间的数据交换。考虑到数据交换的格式,想来想去,Darwin觉得XML是最合适的。文本化是Unix带给人们的一个重要思想,所以,二进制文件首先遭到淘汰。至于文本的格式,与其费尽心思自定义,不如选择大家都熟悉的XML,而且XML可以很好的表现出对象之间的关系,这一点在我大规模的在项目中应用Spring,写了无数XML配置文件之后,体会更加深刻。

    想说的不是这些,不知道你看了Darwin的想法是否有这种感觉,这个东西很像MDA,包括以UML做模型,以XML做数据交换。我对MDA只是有个概念上的了解,但Darwin第一次和我提起这个东西时,我就想起了MDA。Darwin产生这种想法完全是来自他对编程方式的思考,与MDA本身一点关系都没有。MDA的概念,他还是对我说起他的想法之后,听我提及的。
    我不想评论Darwin的想法或是MDA有没有前途,毕竟这是需要时间作证的,不过这些思想和近来正在拜读的《Object-Oriented Analysis and Design with Applications》(中文版《面向对象分析与设计》)让我渐渐看清一个趋势:软件开发越来越倾向于问题领域。

    计算机的诞生就是为了解决问题的,所以,计算机所解决的问题也是随着其能力的提升不断发展,人们利用计算机的方式也随之不断发展。
    计算机刚刚问世的那会儿,对于这个神奇而陌生的东西,人们更多的是考虑如何发掘它的潜力,所以,软件开发多是在考虑计算机如何来做事情。现在要体会那种感觉最好是尝试一下汇编语言,那种面向寄存器内存的开发,使得我们不得不将大部分精力放在机器工作的细节上。

    随着计算机社会的进步,高级语言给了人们一个逃离与机器直接打交道的机会。Wegner曾根据语言最初引入的性质,将一些流行的高级编程语言按产生年代归类。计算机最开始多是用于科学与工程领域,所以,第一代的语言大多是数学词汇,这是软件开发迈向问题领域的第一步。社会继续进步,人们的关注点渐渐转向告诉机器做什么,于是,第二代程序语言就把重点放在了算法上。关注数据抽象的第三代程序设计语言得益于计算机处理能力飞速发展。可以解决的问题越来越大,人们把精力转向了处理更多类型的数据。就这样,程序语言离问题领域越来越近,而离机器处理越来越远。

    从面向过程到面向对象的过渡,也是人们解决问题方式的一个进步。我们不否认面向过程作用,但面向过程使我们更多的把精力放在了解决问题的步骤上。使用面向对象让我们的认识上了台阶,我们看到的是一个个对象,我们考虑的是他们如何协作,解决问题。站得高,看得远,我们所能把握的问题也随之增大。

    软件开发的过程也在不断进步,从最初的混乱到产生软件工程,再到质疑软件工程,提出新的开发方式。软件开发基本上走的是一条需求->分析->设计->编码->测试->发布->维护的路。现在就连这条路也收到了挑战,因为从需求和实现之间的距离太远,其中任何一步都会存在这样那样的偏差。我们都知道,这种累计是要用乘法来计算的,所以,除非完全不存在偏差,否则失之毫厘,谬以千里。既然我们不能指望完全不犯错误,通过减少中间步骤的方式,减小偏差就是一种恰如其分的方式了。
    Darwin的想法和MDA就是朝着这个方向迈进的一种尝试。在这种方式中,至少编码阶段是被逾越了的。

    看过《Borland传奇》的朋友想必还记得书中的几副图。一个是对比软件开发人员所掌握的技能,以前的程序也许只掌握开发测试等最基本技能就可以高高兴兴的过日子,而从今往后,分析设计等原本在外围的技能也被划入了基本技能之中。随着程序员职责范围的增大,仅仅能写出好代码,已经无法成为程序员们骄傲的资本。
    另外一个是软件开发时间的逐渐缩短,最后甚至是1天。起初我很奇怪,即便再高级的语言,再多的人,1天之内写出一个功能完备的软件也几乎是不可能的,就像不能指望10个女人在一个月内生出小孩一样。有了逾越编码的方式,只要把分析设计的模型拿过来,1天之内生成应用并非什么难事。

    由此推断,编码——这个让无数人废寝忘食的活动将逐渐淡出应用软件开发领域,当然,它不会就此消亡,就像现在还有人用汇编写程序一样,它总有其用武之地。
    进一步的推断恐怕更加恐怖,如果需求能直接到达实现,普通老百姓将可以自己完成自己需要的软件,程序员——我们的职业也许会逐渐消失。到那时,编写程序可能又将回归它的发源地——科研领域。
    难道程序员们是在自掘坟墓?呵呵,也许吧!毕竟谁也阻挡不了历史前进的车轮。

    分享到:

    历史上的今天:

    引用地址:

    评论

  • 昨天和朋友聊三种代码。


    一、功能性的代码


    这东西就是看手册就能学会的,例如printf等等,只用这个代码的人就是软件蓝领。而且这种人很有可能在不远的将来被自动化工具所代替。


    二、算法性代码


    这种代码要求高一些,一般性的高手,都是这种代码的作者。但是随着gp,stl的冲击,对这种代码高手的需求也越来越少了。


    三,结构性的代码


    来制定系统的架构,组件的接口,通讯的协议的人,uml这个角度来看也可以看作是结构性的代码。




    未来的趋势,在行业中,前两种人会逐渐的消失,就像你文中说的一样,我喜欢说,软件技术的发展,能让我们越来越关注问题的本身。
    回复tinyfool说:
    确实,现在越来越多的人开始谈架构,具体技术实现的作用已经不像早先那样引人注目了。
    2004-07-17 16:34:34