24小时热门版块排行榜    

CyRhmU.jpeg
查看: 767  |  回复: 1

yalefield

金虫 (文坛精英)

老汉一枚

[交流] 【转帖】消灭程序员需要百年吗?(I)已有1人参与

苏晓路

看到昨天CSDN首页的头条博文,《一百年后,人类怎样编程?》(http://blog.csdn.net/turingbooks/archive/2011/03/29/6285205.aspx)。

只是这个题目,就勾起心中无限感慨。文章没细看,内容大致是分析各种语言,以及其中各种语言现象,今后的发展趋势。

我对于语言的进步一直不感冒,对5年前就有很多人推崇的Ruby,至今也懒得抬眼皮看看,8年前被迫用过几天Perl,我就断定这是最糟糕的编程语言之一,因为它标榜自由,却又没法真正自由。时至今日,我仍然只用C++,C#,Java这三种语言,如果SQL也算的话就是四种。

对于达到一定程度的程序员而言,语言已经不重要了。不管做什么功能或者什么平台,只要不是初次上手,都应该有50%以上的代码可以自动生成出来,另外利用开源代码和商业化构件完成30%以上的工作,真正需要自己手工编写的部分绝对不应超过20%。不论是自动生成的代码,还是开源代码或构件,最大程度的可理解性和通用性是首要追求的目标,因此最通用的、和使用人数最多的语言才是最好的语言。

语言的进步对于提高编程效率确有一定帮助,我自己也深有体会,六年前我做C#项目的时候不得不自己写了对IList进行查询的功能,两年之后,LINQ成了语言自带的标准功能,后来的程序员显然可以节省开发这个功能的时间。但是,语言带来的效率提升,远远不如思考方式变化引起的编程效率飞跃来得大

从第一天编程开始,我就不喜欢这个工作,看到同事飞快地打键盘,屏幕不停地吐出一行行程序,觉得这件事实在傻透了。
她编的是FOXPRO,又是一种我很看不起的语言。她编的功能,无非就是横竖画上几根表格线,然后把一些数字和文字填到正确的格子里去,这就是公司里的编程高手所做的事情。
我曾经惊讶于这么傻的事情竟然真的需要人来做,可是如果不用人做,又能怎样呢?那时幸亏我利用一点小聪明,在还没有开始从事这种傻工作的时候,就改去研究解密算法了,后来又混上了设计师,小经理,总算没有傻掉,那时心里不免暗自得意和庆幸。

2000年,有幸目睹了一位当时国内最牛程序员的一次编程作业,从此彻底颠覆了我的想法。
先说说牛人的业绩:
一个工作日,基本没加班,完成一个复杂C/S软件的服务器端,用统计小工具数数代码,三万多行。这个软件经过简单的测试,第二天就上线实际运行了,每天数千人访问,没出过大问题。

再说开发过程:
开发环境是VS6.0,牛人很少动鼠标,大概嫌耽误时间,各种快捷键运用,让人眼花缭乱,程序基本上不是写出来的,而是粘贴过来,重新排列组合一番,再敲上几个语句补充修正一下,就算大功告成。搞定一个程序块的时间,基本上跟一般人写一条语句的时间差不多。

整个工作过程中,看不出明显用于思考的时间,只要不离开座位,键盘的声音就一直连续不停。

我想牛人之所以牛,关键就在这里,像运用语句一样运用语句块,程序不是写出来的,而是装配起来的,就产生了如同手工组装劳斯莱斯与模块化装配丰田之间的巨大生产率差异。

我那时和牛人不在同一层办公,平时很少机会接触,又一次在楼下食堂吃饭正好坐邻桌,听到牛人讲起一件往事:

牛人多年来,不论在哪里工作,都要带一块自己的硬盘,里面有几GB以往做的程序--他的 code base ,有一次这个硬盘突然卡壳了,牛人就跟老婆说,咱们准备回老家改行干别的吧,结果没过太久,那个硬盘自己又恢复了,所以牛人终于没有回老家去。可见,如果没有 code base ,牛人立刻就不牛了。

后来,我又见过不少优秀程序员,使用自己的 code base 装配出一个个巨大复杂的程序,这种做法局限性也很明显,自己的 code base 终究有限,总有不够用的时候。既然如此,利用别人的 code base 不就解决问题了吗?

理论上是这样,但现实中却完全不是这么回事,我很少见到大量利用别人 code base 的编程高手,倒不是这些高手清高,而是他们常常觉得:与其看懂人家的程序,还不如自己写来得快,节省一点打字的时间,就要为了适应别人的思路花更多时间思考,得不偿失。

可以说,到了这个程度,code base  的大小基本上决定了水平的高低,顶级的牛人都有上百万乃至数百万行规模的code base ,俺到今天才攒了50万左右,离牛人们还差得很远。按照这个道理,只要时间足够长,总会有一些牛人可以积攒一个足够大的 code base,穷尽当代人类能够想象到的所有程序,这个时候就没有编写,只有装配了。如果软件由编写变成装配,那么接下来一个自然的发展就是装配也要自动化,2000年的时候,代码自动生成工具还不发达,到2005年,基于模板的代码生成工具已经遍地开花了。然而这一切似乎只是历史的重复,模板语言似乎变成了又一种高级语言,仍然需要人工编写,导致牛人们的 code base 当中又多了一些这种模板而已。而且也总有一些例外情况,用模板做起来复杂无比,还不如干脆留着手工完成。

计算机是否可以自己组装程序呢?现在看来,似乎已经很接近了,至少从UML生成代码框架已经很成熟了,而框架里面需要填入的东西,正是 code base 的内容。现在缺少的,只是找到正确的代码块,作一些必要的修正,填入框架中正确的地方的问题。如果 code base 中所有的代码块都有正确的形式化描述,代码框架的每一处地方也都有这样的形式化描述,把二者做一个匹配不就完成了装配工作了吗?至于需要必要的修改的地方,通常用编译器检查就能找到。如果真是这样,那么这件事早就成功了,像IBM这样的公司,一直就想做成这件事,而且他们并不乏完成这些工作所需的任何资源。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

peaksmile

新虫 (初入文坛)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
微尘、梦想(金币+2): 欢迎常来程序语言版…… 2011-04-11 11:39:19
谢谢高人,后来者,也有同感……“写程序就是一个装配的过程”经典!
2楼2011-04-11 11:18:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yalefield 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见