Fw: [讨论] n万行的code

楼主: ggg12345 (ggg)   2016-07-17 16:58:32
※ [本文转录自 Soft_Job 看板 #1NYmcWSk ]
作者: ggg12345 (ggg) 看板: Soft_Job
标题: Re: [讨论] n万行的code
时间: Sun Jul 17 12:29:18 2016
※ 引述《randomly (伦敦铁桥垮下来)》之铭言:
: (帮以前同学代po)
: 背景:四大资工硕,役退。
: 同学最近才刚工作两三个月
: 听他说一进公司,主管直接丢了一份project的source code给他
: 原本负责这个project的前辈已经离职了,所以当时是由主管代职,
: 这份source code林林总总大概有6~7万行
: 这么庞大的code,当然也是埋一堆bug,通通直接workaround
: 来一个打一个,来十个打十个
: 主管表示:试用期过后,这份code之后就交给你maintain了
: 所以他从第一天进公司开始每天都在看code
: 三个月也一转眼过去了,
: 刚刚吃饭听他说,上礼拜开会主管突然问他
: “某case发生时会有bug,请问是在哪个function什么原因造成的?”
: 同学自己也不熟,只好回说待会回去看一下再跟主管回报
: 主管只丢了一句话就离开了:
: “你前三个月试用期都在干嘛?
: 才问一个case也答不出来,之后你是要怎么开发,怎么maintain?”
: 各位认为这件事是我同学能力不足? 还是主管太严苛?
================================================================
软件业为何起不来?
=================
时代逐渐演变, 台湾也经历好几个变化. 但有件事却很明显地一直没有大的
改变. 维护, 除错改进, 从新开发, 这些软件工作里的一串生命周期演变,
我们的电脑业似乎总是不知如何处理.
维护, 除错, 改进一直是台湾电子制造业最害怕的事. 台湾自从把微电脑的
PC外销出去国外后, 最弱的事就是行销与售后服务.
美国卖场里的售后服务一直让台湾的顾客很羡慕. 但制造产品的厂商就是很
害怕. 从美国总是传回来这类的奥客事件, 一件成衣, 顾客在卖场付钱买了
回去, 顾客可能回去风光穿着去参加宴会, 隔两天却拿回卖场退货. 卖场也
不疑有他, 照样退了钱. 拆了包装的成衣当然就被卖场退货回制造商. 台湾
的制造商只能把退货的产品拿到工场外的路边再拍卖, 希望收回一些成本.
有加工出口区以来, 这类的事, 总是让一般的平民百姓在路边捡这些产品来
用. 而加工制造业的老板总是对直接行销国外(主要就是美国)避之唯恐不及.
这就是台湾"代工制造"留下来的形象.
成衣业为了对付这类的奥客, 在衣服包装上加了一些一次性使用的标签, 一
但拆了或剪开那就不能退货了. 软件业出名的套装软件就是用玻璃纸包装,
一但拆了封就是同意付钱成交. 但订制型的软件就如同老式的西装店, 西装
师傅总是要找客户试穿改型几次, 双方才会满意. 西装师傅总是把西装设计
制作得能做后续的小改, 才能让客户试穿才能改型. 但是一旦把西装布给裁
下去, 那是不能退货的.
台湾的软件业通常不做西装师傅的事, 不做试样, 也不给顾客定型. 顾客也
难以把需求讲清楚, 也就是规格不会写明白. 没有明确的草图规格, 做小部
件的学徒工当然就随性的制作, 也就毫无章法.
最早见识到的 Dirty code.
========================
1966年的成功大学才刚从省立改制为国立一年, 在经费与员额皆欠缺下, 从
美国特地为美苏太空卫星竞争而援助台湾成立的工程科学学系里, 挪用其成
立经费在工程科学研究中心引进了一台 IBM1130 的米你型主机. 成大与清大
那时才刚开始在大学里提供 FORTRAN 的电脑程式语言教学. 台湾对电脑的硬
体与软件要如何制造发展是一片荒漠.
当完一年的预官役回到系里当系主任的助教, 夏主任总不忘交代要到工程中
心常去看顾那台系里财产购制的主机电脑. 有天, 电算中心的王主任就把机
房一角办公桌的抽屉打开, 交代说韩助教过几天要出国留学去了, 就来这里
接替他的工作, 替电算中心维护与台南制盐总厂合作的薪水电脑程式. 大抽
屉就是一叠电脑程式的大报表纸, 右下角的铁柜就放著几盒的打孔卡片, 就
是原始程式所在. 韩助教从那时就没有再出现, 过几天就坐飞机出国去了.
快到月底, 制盐总厂的会计人员陪着王主任出现了, 说新的年度要执行每个
月的食物代金津贴与每月预扣所得税申报与扣缴. 会计主任说韩助教曾经答
应要事先完成这个程式. 王主任说只要照旧跑一次就可以了.
准备完制盐总厂送来的资料卡片, 挂好制盐总厂的硬盘卡夹, 刚开始要跑程
式, 就发现控制卡不齐全, 原始程式卡之后的执行卡需要有指明的档案名称
卡. 查遍了抽屉的程式 listing 都没有打印出来. 再查卡片柜, 有零落的
控制卡夹杂在不同的程式堆之间. 也不知道那一张才是. 最后是找到一张硬
碟夹打印的控制命令卡与报表清单. 就在那一堆的名称里, 靠着半猜半试才
让机器跑起来. 总算看见有所得税扣缴字段. 手忙脚乱中把结果报表缴了出
去. 第二天却传来电话是计算错了, 因为代金与扣缴公式改了. 会计主任很
好心的发动底下的会计人员用算盘把资料更正过来了. 总算勉强过了第一个
月的维护运作工作. 紧跟着用红笔更正过的报表送了回来, 扣缴的钱记在电
脑里, 隔年报税前要累计发出扣缴凭单, 所以那笔计算错误的程式要改过来
, 记录的资料也要改过来. 这就要去对那个程式做除错的工作了.
抽屉里的整叠报表程式, 每页大约80横行, 厚度大约有 4-5 英吋. 程式是
用 Commercial FORTRAN写的, 数字的表示法与计算是配合商用的十进制.
那时候的成大电算中心的IBM 主机只有 16K word, 是勉强能跑 COBOL 程式
, 但处理效率不高. 整个机器能量不能跟今天的 Inetl X86 机器相比. 她
是个控制卡的 Batch system.
逐行的扫过大程式段落, 找到一页有计算扣缴字段的计算式. 辛苦的把那页
程式给改过来了. 但重新编译过再跑, 却发现那个字段的资料跟旧的一样没
变. 这下整个人被吓坏了! 怎么改了计算式也没用?
最后用插桩打印法把那个字段有关的修改式子将结果印出来再逐步追踪. 栏
位的资料照修改的式子改了, 但最终的磁盘记录字段却是原来错误的结果.
就再从那修改的公式逐行往下找, 又找到一段程式, 变量名称改了, 不再是
原来的字段名称, 重新又看到一段程式重新又再再去找同样的资料把新的计
算结果到磁盘档覆蓋过去. 这段程式才是该要去修正的程式所在, 前面那段
算是蒙蔽白算的.
很难追踪除错的 自我更新程式码
=============================
这位韩助教是跟随前任电算中心石主任而来的另一系(非电机)助教. 当时的
社会状况正是引进加工出口区, 设立科学园区的时代, 大学找不到助教. 军
队的状况正因蒋经国开始接掌国防部逐步想改善的情况. 当时去当海军的预
官几乎只能窝在港内. 台湾军队的武器已过时, 大陆的军舰都装了俄罗斯的
漠河反舰飞弹, 除了运输舰都躲在港内. 因此, 毕业的同学有好几位去中科
院.
当时, 相对于澎勃发展的加工出口区, 没有人想当公务员, 教师. 国营企业
也因待遇太低没人想去, 大部分的大学毕业生都出国去了. 当预官时, 月薪
800, 除了兼排长还兼了营通讯官, 再加两份加给总共是月薪1600. 回去当
助教时, 就是月薪800. 每月在学校餐厅包饭就是300, 剩下的要应付衣住行
只能去抢学生宿舍住. 去电算中心工作时, 当年的机房操作员就谈到中心对
外争取合作的外快, 但从校长长官一路分下来, 经常黑函满天飞, 不时受到
调查局来追查.
软件有价, 从开始引进IBM的电脑到大学是大家早都知道的事. 但智财权保
护是在保护外国进来的软硬件. 不同公司来源的配备(含软件)是不能互通的
. 韩助教开发的发薪软件当然没有额外的报酬, 所以, 那个程式从来就不假
设会交给别人维护改进. 原来的程式功能不对, 不是注记说明替换掉, 而是
在别的模组段落另起一套, 甚至换掉结果的变量名称. 在后果上就是很难被
分析追踪, 程式变得很难看得懂, 也就不易更改维护.
只重科学计算模拟的电脑应用科技
像那个接受美援成立的工程科学系, 就是由美国参谋首长名分成立的傅尔布
莱特基金所支助的, 为了与苏联在太空争霸, 由于苏联史波之尼克人造卫星
的抢先发射, 美国想到要到第三世界国家去抢一些优秀学生到美国替他们做
研发, 所以就资助成立了这个系. 因为外太空环境很难在地面实验测试, 所
以很强调要用电脑估算模拟.
一个软件系统, 从构想到规划建立, 维护运作, 改进改版以至完成另一套新
的系统, 至少在学校的环境里没有被完整的执行过一次. 所以, 软件发展的
费用及过程, 在台湾都是没有可资借镜的前例可行. 有的都是买进一套国外
的软硬件系统, 作一些中文使用接口的改进, 前面努力的成果也无法累积到
后面使用.
作者: Ommm5566 (56天團)   2015-07-17 13:00:00
end
作者: SoftMen (软男)   2015-07-17 13:44:00
内容在写啥鬼 从旁叙述的乱七八糟
作者: robler (章鱼丸)   2015-07-17 13:50:00
公三洨
作者: a47135 (金属史莱姆)   2015-07-17 14:03:00
239P....竟然不是复制贴上文XD
作者: freeunixer (御剑客)   2015-07-17 14:46:00
真相总是残酷的~
作者: abccbaandy (敏)   2015-07-17 15:12:00
end+1....读起来好痛苦
作者: ddoll288 (风儿卿卿)   2015-07-17 15:23:00
很像上一篇讲的学术xx化石,被照顾的很好的化石
作者: micola (Logical way)   2015-07-17 16:12:00
故事写得有趣 有点历史话家常的味道
作者: EQQD (EQQD)   2015-07-17 16:47:00
老实说满好看的啊 有啥好嘘?
作者: ghost008 (0080)   2016-07-17 17:17:00
赘字好多......
作者: dslite (呼呼)   2016-07-17 17:45:00
写啥轨
作者: lichai (雷迪咖)   2016-07-17 17:56:00
不知所云
作者: Simonfenix (Livingfailure)   2016-07-17 18:12:00
google翻译?
作者: willy0206 (不成才小领队)   2016-07-17 18:20:00
还我5分钟生命
作者: Ommm5566 (56天團)   2016-07-17 19:33:00
作者: GuitarOcean (有为而无所求)   2016-07-17 19:58:00
我认得你...的ID,从dos讲起
作者: mtlin (憧憬一途)   2016-07-17 20:35:00
看这么多红有点感慨,不过曾教授您举的例子也太古旧了吧现代软件开发不管是技术或是流程都已经不可同日而语只讲设计师把程式写得难以追踪维护,那也是还太表面了真的因还牵涉到很多产品开发周期以及分工协作等影响当然甚至还没提到设计师本身的素质与经验等等个人因素觉得软件业没有真得起来获大家认可,不全然只是技术问题;)
作者: csco ( ARM 株式会社)   2016-07-17 22:22:00
还是推曾老师/曾教授的文一下...
作者: xvid (DivX)   2016-07-18 01:49:00
作者: longlongint (华哥尔)   2016-07-18 02:53:00
貌似画卡跑程式的年代
作者: csfgsj (切割对半)   2016-07-18 09:35:00
问题很久以前就是,人的观念到现在一样落伍我想这是作者想暗示的可惜现代年轻人的国文程度已看不了长文
作者: IhateOGC (我讨厌)   2016-07-18 23:03:00
呵呵,中科院
作者: Ommm5566 (56天團)   2016-07-19 10:04:00
说个笑话:老屁股说现代人观念落后老爷爷从国共内战开始讲古 然后说年轻人没耐心我很久之前就说过这里逻辑差到可以废版了
作者: sayya2311 (ya)   2016-07-19 20:26:00
拿modem拨接上BBS看这篇文, 会更有fu....
作者: mqqm ( )   2016-07-21 01:17:00
这是要出书吗?有重点吗?XD

Links booklink

Contact Us: admin [ a t ] ucptt.com