友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
第三电子书 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

软件工程实践者的思想(PDF格式)-第2部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!


    7。    BOSS································································· 82  

    8。    上帝之手 ··························································· 84  

  

  



  


…………………………………………………………Page 9……………………………………………………………

                                             



7。 现实中的软件工程  



   1。    大公司手中的算盘 ············································· 87  



   2。     回到工程的关键点············································· 92  



   3。    思考项目成本的经理 ········································· 94  



   4。    审视 AOP ·························································· 97  



   5。    审视 MDA ························································100  

  



8。 是思考还是思想  



   1。    软件工程三个要素的价值 ·································103  



   2。    其实 RUP 是一个杂物箱 ···································104  



   3。    UML 与甲骨文之间的异同 ·······························105  



   4。    经营者离开发者很远,反之亦然 ······················106  



   5。    矛盾:实现目标与保障质量 ·····························107  



   6。    枝节与细节 ······················································108  



   7。    灵活的软件工程 ···············································110 



        


…………………………………………………………Page 10……………………………………………………………


…………………………………………………………Page 11……………………………………………………………

                               



            第1章  编程的精义  



     



      “虽我之死,有子存焉;子又生孙,孙又生子;子又 



有子,子又有孙。子子孙孙,无穷匮也。而山不加增,何 



苦而不平?”  



                   ——《愚公移山》,《列子·汤问篇》  



     



1。  编程的精义  



   仅仅就编程序来说,实在是一件很简单的事,甚至 



可以说是一件劳力活。两千年前的寓言中,已经成就 



了一位工程名家:愚公。在这位名家的身上,浓缩了 



项目组织者、团队经理、编程人员、技术分析师等众 



多角色的优秀素质。他的出现,远远早于计算机发展 



的历史,甚至早于一些西方国家的文明史。  

     

    汤问篇中所述的愚公移山这一事件,我们看到了原 



始需求的产生:  



    “惩山北之塞,出入之迂”  



   我们也看到了项目沟通的基本方式:  



    “聚室而谋曰”  



   然后,我们看到愚公确定了一个项目的目标:  



      

                                                …7 


…………………………………………………………Page 12……………………………………………………………

第 1 章  编程的精义  



   “毕力平险,指通豫南,达于汉阴”  



   并通过研讨,择定了一个井然有序的、可以实现的 



技术方案:  



   “扣石垦壤,箕畚运于渤海之尾”  

     

   在这个项目中,动用了三名技术人员和一名工程管 



理人员:  



   “( 愚公) 率子孙荷担者三夫”  



   并获得了一名力量较弱,但满富工作激情的外协:  



   “邻人京城氏之孀妻,有遗男,始龀,跳往助之”  

     

   基本上,这已经描述了“愚公移山”整个工程的概 



况。接下来,我们应该注意到愚公作为编程人员的基 



本素质。在与“河曲智叟”的对答中,他叙述了整个 



工程的实现程序:  



   “虽我之死,有子存焉”,这里描述了可能存在的 



分支结构,即“IF ”条件判断。  



   “子又生孙,孙又生子;……子子孙孙,无穷匮也”, 



这里描述了完成这个工程所必须的循环结构。  



   作为优秀的程序分析师,愚公论述了这个循环的可 



行性:由于“山不加增”,所以条件“山平”必将成立 



(  “何苦而不平”) ,所以这不会是一个死循环。  

     

   在愚公的论述中,我们看到了编程的根本:顺序、 



分支和循环。庞大若“愚公移山”这样的工程,都是 



可以通过这样简单的编程来实现的。这,就是编程的 



精义了。  



                                      …8 


…………………………………………………………Page 13……………………………………………………………

                                         『大道至简』  



                                                 



2。  会或者不会写程序的问题  



    我经常会被人问到“(我) 能不能学会写程序”这样的 



问题。  



    这个问题由来以久。上溯七、八年,程序员还是少有 



人从事的职业。听说的人少,真正了解的人也不多。而当 



一个程序软件被装在电脑里并开始运行时,人们便开始惊 



讶于程序员的厉害。所以“能不能学会写程序”甚至成了 



一些人对自己的智力考评,所以便有人向我这样发问。  



    愚公都能明白的编程精义,那些向我发问的智叟们又 



怎么会不明白呢?  



      



                                            …9 


…………………………………………………………Page 14……………………………………………………………

第 1 章  编程的精义  



   所以除了先天智障或后天懒惰者,都是可以学会写程 



序的。如果你能确信,自己知道在早上起床后需要:  



   )  如果天冷则先穿衣服后洗漱  



   )  如果天热则可反之  



   )  日复一日直到死亡  



   那么你就可以开始编程了。甚至,如果你认为以下条 



件成立:  



   )  如果有类似于生病、不能行动、以及意外的紧急 



      事件,则当日可以略过  



   那么你就可以开始向设计师发展。因为你已经具备了 



一项常人不具备的基本素质:折衷。  



3。  程序  =   算法  +   结构  



   编程作为一种行为,只需要知道其逻辑方法就可以 



了。所谓编程实际上是把一件事情交给计算机去做,你认 



为这件事该如何做,就用“程序语言”的形式描述给计算 



机。如果你原本就不明白如何去做,那么你也不要期望计 



算机去理解你想要做什么。  



   所以编程的第一要务是先把事情分析清楚,事件先后 



的逻辑关系和依赖关系搞清楚,然后再去代码实现。一接 



到任务就开始 Coding  的程序员,通常就是加班最多的程 



序员。  



   记住:积极工作和勤于思考都要占时间。  



     



   第一个完成关于编程本质的思考的人,提出了一个公 



                                  …10


…………………………………………………………Page 15……………………………………………………………

                                         『大道至简』  



式“程序  =   算法  +   结构”。这个公式的精彩之处,在于 



它没有任何的地方提及到 Code 。甚至可以说,在这个公 



式里,代码是不存在的。  



    存在的只是思想。  



      



    算法是对一个程序的逻辑实现的描述,而结构是逻辑 



实现所依附的数据实体。只要开发人员将这个程序的算法 



设计出来了,把结构描述出来了,那么程序就已经定型了。 



剩下的事,简而言之,就是劳力活。  



                                               

      



    在计算机专业所学的课程中,同时讲述算法和结构 



的,是“数据结构”。现在,你放下手边这本书,再去读 



读被你扔到不知哪个角落的《数据结构》,你仔细看看, 



在所有的算法描述中,有且仅有三种执行逻辑:顺序、分 



支和循环。简单若顺序表,复杂如树、图,它们的算法都 



是用上面这三种执行逻辑来描述的。  



                                            …11


…………………………………………………………Page 16……………………………………………………………

第 1 章  编程的精义  



4。  语言  



   当你熟悉了一门语言之后,你会发现,编程语言只有 



喜欢与不喜欢的问题,没有会不会的问题。任何的一门语 



言,你都可以在两周内掌握并开始熟练编程。因为任何的 



一门语言,他们的底层函数库都是那么的相似,而他们 



API 都是那样的依赖于操作系统。A 语言里有的,B 语言 



里也基本都有。  



   通常而言,语言的差别主要表现在适用范围上。一些 



语言适合做数值处理,小数点后可以精确到原子级,而小 



数点前则可以表达到宇宙之无穷;另一些语言则适合做图 



形处理,它的底层函数库比其它语言可以快上十倍或数十 



倍;还有一些语言则适合于做网页,要用它来做一个通讯 



薄软件都将是史无前人的挑战。  



   成天讨论这门语言好,或者那门语言坏的人,甚至是 



可悲的。不但是悲其一叶障目,更要悲叹于那种大愚若智 



的自得心态。  



5。  在没有工程的时代  



   在没有工程的时代,上面所说的就是一个程序员的全 



部。他们掌握了一门语言,懂得了一些生活中最常见的逻 



辑,他们用程序的方式思考和学习了一些算法,并根据前 



人的经验,把这些算法跑在了一些数据结构之上,最后, 



                              …12


…………………………………………………………Page 17……………………………………………………………

                                         『大道至简』  



我们就看到了他们写的程序。  



    在没有工程的时代,出现了非常非常多的人物。其中 



算法大师,有游戏大师,有语言大师,有挣钱的大师……  



    唯独,没有工程大师。嗯,可以理解嘛,那是没有工 



程的时代。好蛮荒,好远古的。  



     



                                            …13


…………………………………………………………Page 18……………………………………………………………

                         



     第2章  是懒人造就了方法  



    “ 道有蜀王兵      ,亦有神作大滩江中。其崖崭峻不 

     僰         蘭 



可破,(冰)乃积薪烧之。”  



                             ——《华阳国志》  



1。  是懒人造就了方法  



    战国时期的李冰凿了一座山。  



   史记中说是“蜀守冰凿离堆”,是说李冰在成都的时 



候凿出了离堆。一说是李冰将都江堰附近的玉垒山凿了一 



个大口子,叫宝瓶口,而凿的石头就堆成了离堆。另一说, 



则是李的确是凿了一座“(溷) 崖”,但是是在沫水,亦即 



是今天的大渡河。  



   在哪里凿的山,是史学家都说不清楚的事。但的确凿 



了一座山,而且方法是“( 因)其崖崭峻不可破,(冰)乃积 



薪烧之”。  



   我们已经看到事物的进化了。同是战国时代,《列 



子·汤问篇》里的愚公就要“碎石击壤”,而李冰就已经 



懂得“积薪烧之”了。  



   会有人说愚公是“碎石”,并没有说他“碎石”的方 



法究竟是“斧钺以凿之”,还是“积薪以烧之”。但想想那 



个时代,如果有人懂得了烧石头这个方法,哪能不立即载 



     

                                      …14


…………………………………………………………Page 19……………………………………………………………

                                 『大道至简』  



文志之,永世传承。  



   再说了,愚公嘛。愚者怎么会呢?这还需要分析吗? 



需要吗?  



     



   所以愚公会凿,而李冰会烧。那李冰又是为什么会用 



 “烧”这种方法来碎石的呢?如果李冰也象愚公那样日复 



一日地督促着他的团队凿石开山,那他一定没有时间来学 



习、寻找或者观察,当然也不会发现“烧”这种方法可以 



加快工程进度,使得一大座山短时间就被哗啦哗啦地给 



 “碎”掉了。  



   要知道李冰的团队可是成百上千人,要修堰筑坝,还 



要“凿离堆”,当然还要吃喝啦撒睡。所以李冰如果忙起 



来的话,他必然是“受命以来,夙夜忧叹”,必然食难下 



咽,睡无安枕。反之,李冰一定是个闲人,可以闲到没事 



去看火能不能把石头烧爆。  



   这么大个工程里,如果有一个人会闲到看火烧石头, 



那他一定很懒。那么多事堆着不去做,去看烧石头,你说 



他不是懒是什么。  



     



   正是一个懒人造就了“烧石头”这个“碎石”的方法。 



愚公太勤快了,勤快得今天可以比昨天多凿一倍的石头。 



或者在愚公的项目计划案的首页里就写着朱笔大字:“吾 



今胜昨倍许,明胜今倍许,而山不加增,何苦而不快。” 



但是越发的勤快,愚公将越发没有机会找到更快的方法,  
返回目录 上一页 下一页 回到顶部 1 1
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!