科技: 人物 企业 技术 IT业 TMT
科普: 自然 科学 科幻 宇宙 科学家
通信: 历史 技术 手机 词典 3G馆
索引: 分类 推荐 专题 热点 排行榜
互联网: 广告 营销 政务 游戏 google
新媒体: 社交 博客 学者 人物 传播学
新思想: 网站 新书 新知 新词 思想家
图书馆: 文化 商业 管理 经济 期刊
网络文化: 社会 红人 黑客 治理 亚文化
创业百科: VC 词典 指南 案例 创业史
前沿科技: 清洁 绿色 纳米 生物 环保
知识产权: 盗版 共享 学人 法规 著作
用户名: 密码: 注册 忘记密码?
    创建新词条
科技百科——欢迎光临全球最大的互联网博物馆
  • 人气指数: 8340 次
  • 编辑次数: 1 次 历史版本
  • 更新时间: 2010-07-05
高兴
高兴
发短消息
相关词条
戴夫·海厄特
戴夫·海厄特
最佳编程语录大全
最佳编程语录大全
程序员笑话大全
程序员笑话大全
下一代程序员
下一代程序员
女程序员
女程序员
彼得·诺维格
彼得·诺维格
Russ Cox
Russ Cox
15名程序员界性感的奇葩
15名程序员界性感的奇葩
Mike Kruzeniski
Mike Kruzeniski
Jeff Fong
Jeff Fong
推荐词条
希拉里二度竞选
希拉里二度竞选
《互联网百科系列》
《互联网百科系列》
《黑客百科》
《黑客百科》
《网络舆情百科》
《网络舆情百科》
《网络治理百科》
《网络治理百科》
《硅谷百科》
《硅谷百科》
桑达尔·皮查伊
桑达尔·皮查伊
阿里双十一成交额
阿里双十一成交额
王健林电商梦
王健林电商梦
陌陌IPO
陌陌IPO
最新词条

热门标签

微博侠 数字营销2011年度总结 政务微博元年 2011微博十大事件 美国十大创业孵化器 盘点美国导师型创业孵化器 盘点导师型创业孵化器 TechStars 智能电视大战前夜 竞争型国企 公益型国企 2011央视经济年度人物 Rhianna Pratchett 莱恩娜·普莱契 Zynga与Facebook关系 Zynga盈利危机 2010年手机社交游戏行业分析报告 游戏奖励 主流手机游戏公司运营表现 主流手机游戏公司运营对比数据 创建游戏原型 正反馈现象 易用性设计增强游戏体验 易用性设计 《The Sims Social》社交亮 心理生理学与游戏 Kixeye Storm8 Storm8公司 女性玩家营销策略 休闲游戏的创新性 游戏运营的数据分析 社交游戏分析学常见术语 游戏运营数据解析 iPad风行美国校园 iPad终结传统教科书 游戏平衡性 成长类型及情感元素 鸿蒙国际 云骗钱 2011年政务微博报告 《2011年政务微博报告》 方正产业图谱 方正改制考 通信企业属公益型国企 善用玩家作弊行为 手机游戏传播 每用户平均收入 ARPU值 ARPU 游戏授权三面观 游戏设计所运用的化学原理 iOS应用人性化界面设计原则 硬核游戏 硬核社交游戏 生物测量法研究玩家 全球移动用户 用户研究三部曲 Tagged转型故事 Tagged Instagram火爆的3大原因 全球第四大社交网络Badoo Badoo 2011年最迅猛的20大创业公司 病毒式传播功能支持的游戏设计 病毒式传播功能 美国社交游戏虚拟商品收益 Flipboard改变阅读 盘点10大最难iPhone游戏 移动应用设计7大主流趋势 成功的设计文件十个要点 游戏设计文件 应用内置付费功能 内置付费功能 IAP功能 IAP IAP模式 游戏易用性测试 生理心理游戏评估 游戏化游戏 全美社交游戏规模 美国社交游戏市场 全球平板电脑出货量 Facebook虚拟商品收益 Facebook全球广告营收 Facebook广告营收 失败游戏设计的数宗罪名 休闲游戏设计要点 玩游戏可提高认知能力 玩游戏与认知能力 全球游戏广告 独立开发者提高工作效率的100个要点 Facebook亚洲用户 免费游戏的10种创收模式 人类大脑可下载 2012年最值得期待的20位硅谷企业家 做空中概股的幕后黑手 做空中概股幕后黑手 苹果2013营收 Playfish社交游戏架构

Brad Cox,Objective-C之父。
Objective-C是由科学家、软件工程师Brad Cox于20世纪80年代早期编写的。它的设计方式是将Smalltalk语言的功能特性引入到C语言的编程环境中。iPhone的框架库中的大部分都是用Objective-C编写的,不过因为这种语言被设计为兼容C语言,所以你同样也可以在应用程序中使用C和C++。Objective-C的主要应用平台是Mac OS X和GNUstep(一个开源的自由OpenStep环境)。有许多编程语言,例如Java和C#,都从Objective-C这门语言中汲取了养分。Mac桌面平台上的Cocoa框架极为大量地使用Objective-C,这一框架也被移植到了iPhone上。
目录

[显示全部]

个人简介编辑本段回目录

Brad Cox is a computer scientist and Ph.D. of mathematical biology known mostly for his work in software engineering (specifically software reuse), software componentry, and the Objective-C programming language.

He received his Bachelor of Science Degree in Organic Chemistry and Mathematics from Furman University, and his Ph.D. from the Department of Mathematical Biology at the University of Chicago.

书籍
Object Oriented Programming: An Evolutionary Approach. Addison Wesley. 1991. ISBN 0-201-54834-8. 
Superdistribution: Objects as Property on the Electronic Frontier. Addison Wesley. 1996. ISBN 0-201-50208-9.

个人主页
http://www.virtualschool.edu/cox/

从Objective-C的排名看移动开发的火爆程度编辑本段回目录

 对大多数人来说,Objective-C都是陌生的,原因在于它的走红过程太短。但透过Objective-C的火爆,我们就不难理解苹果程序商店的应用程序为什么轻易就突破了十万个。

  Objective-C的走红过程

  TIOBE编程语言排行榜,是业界公认的编程语言的实力榜。2009年8月,Object-C自7月份上升至21位以后,又在8月份打进前二十名。这是一个信号,然而多数业界人士因为不熟悉Objective-C,并没有读懂这个信号意味着什么。

  时间过入到2009年10月,这个信号得到了解读。就在这个月,AppStore(程序商店)中的程序数量超过了10万。当时业界认为对于一款手机而言,除了强大的硬件支持以外,最受用户关注的便是后续软件支持。这也是智能手机之所以能够一跃超过非智能手机成为市场宠儿的最大原因。不少专家认同这样一个观点:凭借着为数众多并且力作不断的程序支持,苹果iPhone在后期程序扩展能力方面的优势要明显高于其他品牌产品。

  显然,当时的人们更爱从iPhone硬件的角度去解读AppStore的成功。

  接下来的问题是,苹果仍将研发出第四代以及后续iPhone产品,同期的程序数量更是为数可观,那么接下来,AppStore的数量上限到底是多少。显然,要想问答这一问题,单从硬件角度考虑,已是远远不够了。因为智能终端已经发展成一个平台,并且这一平台显然在未来的某一天要和PC、笔记本电脑等平台平起平坐。

  何为Objective-C

  也许相当数量的人,是从2009年8月以后认识Objective-C语言的。但在此之前,Objective-C的发展历史着实有些惊人,因为它诞生于多数人都不知电脑为何物的1986年。

  Objective-C是苹果Mac OS X 上开发的首选语言。Mac OS X技术源自NextStep的OpenStep操作系统,而OPENSTEP的软件架构都是用Objetive-C 写成的。这样,Objective-C就顺理成章地成为了Mac OS X上的最佳语言。

  1986年,Brad Cox在第一个纯面向对象语言Smalltalk基础上写成了Objective-C语言。这之后,Brad Cox创立了StepStone公司从事Objective-C的推广。1988年,Steve Jobs的NextStep采用Objective-C作为开发语言,1992年GNU GCC编译器中包含了对Objective-C的支持。这以后的相当长时间内,应用Objective-C语言的都是日后编程界的大腕,象Richard Stallman、Dennis Glating等人。

  还回到AppStore的数量上限这一问题,如果我们拿Objective-C当做一个参照指标来看,是再合适不过了。

  Objective-C的辉煌

  时间进入到了2010年5月,Objective-C又给了我们一个惊喜。因为Objective-C历史性地打进了TIOBE编程语言排行榜的前十名。也许会有人对此不以为然,但别忘了,2001年6月TIOBE编程榜发布以来,总体只有13个编程语言曾经进入前十名。

  而且还有一点不容忽略,这就是Objective-C语言自1986年发布以来,并没有出现革命性的创新。Objective-C语言是唯一一种可以为iphone和ipad编程的语言,它的火爆完全是因为基于Mac OS X平台和iPhone平台移动开发的热度升高所致。

  尽管Objective-C语言挤进了TIOBE编程语言排行榜的前十名,但我们不得不说它的发展潜力还非常大。原因很简单,Objective-C语言的实际使用率只有0.08%。但另一方面,我们不得不说,Objective-C语言从第二十名挤进第十名只用了九个月时间,但接下来再前进一步都是困难极大的,因为它的竞争对手已变成了C、Java、C++、PHP等老牌编程语言。

  在接下来的时间里,Objective-C语言如果能再把自己的名次往前提,完全可以说是:Objective-C语言前进的一小步,就是移动开发产业的一大步。

2010年2月编程语言榜单:Objective-C高歌猛进编辑本段回目录

  Tiobe今日发布了2010年2月份的编程语言排行榜,在上月的榜单中,Go语言增长最多 ;本期榜单我们关注在2009年得到蓬勃发展的另一门编程语言——Objective-C,在年度编程语言评选中,它仅以0.01%的差距落后于Google Go。

  2月编程语言排行榜TOP20


2010年2月编程语言排行榜TOP20

  请留意排名第12位的Objective-C,在2008年1月和2009年1月发布的年度榜单中,Objective-C分别排名第47和37位。短短三年,Objective-C何以有如此快速的成长?


2002-2009年Objective-C趋势走向

  Objective-C的发展历程

  与C、C++、Java这样的语言相比,我们可能对Objective-C有些陌生。其实,早在上世纪80年代Objective-C就已诞生。1980年代初,就职于Stepstone公司的Brad Cox发明了Objective-C,Brad当时想打造一门流行的、可移植的C语言与优雅的Smalltalk(关于Smalltalk的语言特性请参考Smalltalk之父的报道)的结合体。

  Objective-C是C语言的一个扩展集,以C为基础,并在其中增加了一些重要的特性。Objective-C是讲究实用和效率的语言,使用过C++或者Java的开发者一定会惊叹Objective-C的程序如此简短,一般,Objective-C写成的程序通常不会比其原始码大很多。另外,Objective-C还继承了Smalltalk语言的优雅和面向对象特性,而其经过改造的函式库却不像Smalltalk那样需要过大的内存资源


Objective-C创始人Brad Cox

  1985年,被赶出苹果公司的Steve Jobs成立了NeXT公司,致力于开发强大且经济的工作站。NeXT选择Unix作为其操作系统,并创建了NeXTSTEP Toolkit软件包,这个工具包用于开发用户界面,功能强大,其使用的编程语言就是Objective-C。1993年,NeXT中止了硬件业务,转为专注与OpenSTEP软件市场,并推出了一套网络程序架构WebObjects用于进行动态页面的生成。1996年,苹果公司以4亿美金收购了NeXT,NeXTSTEP被重命名为Cocoa,WebObjects则集成到Mac OS Server和Xcode中。Objective-C自然而然成为Mac平台的首选开发语言,并受到Macintosh编程人员的广泛认可;Cocoa成为苹果免费提供的开发工具,提供Mac平台应用开发的环境。

  Objective-C的咏叹调

  由于苹果公司的市场定位和Mac平台的特殊要求,Objective-C一直在编程语言领域保持一种低调的形象。与Windows平台下的应用开发技术和编程语言的繁盛景象相比,Objective-C更像是孤独盛开在Mac平台上的技术奇葩。


Mac平台上的应用开发

  但iPhone的发布改变了这一切。基于App Store模式的iPhone软件开发不但为iPhone用户提供品类丰富的应用程序扩展,还为众多软件公司和独立开发者提供机会(详细请参考51CTO之前的报道《独立软件开发者,你准备好了吗》)。09年7月,App Store上线一周年后,软件数量已达到6万,每日新上线近千款iPhone软件。考察一门编程语言是否受欢迎,其应用场景和项目需求是最重要的一点;iPhone应用开发的火爆带动Objective-C语言的繁荣。众多软件开发者由其他语言或平台转向Objective-C开发iPhone应用程序,一时之间,Objective-C和iPhone的开发书籍持续热销。

  这种热度还将持续。苹果公司最近发布了采用iPhone OS的iPad,51CTO曾就苹果iPad发布背后的意义做过报道,虽然业界对这一款产品也是褒贬不一,但是这一点也不妨碍iPad的扩展应用成为App Store的下一个热点。行业、市场需求和应用场景的广泛性将决定一门编程语言的流行程度。可以预见,Objective-C将迎来在iPad上进行应用开发的高潮,在移动开发的舞台上唱响更动听的技术咏叹调。

  在本期的编程语言排行榜中,TIOBE指出,Scratch、Scala、 Erlang和JavaFX Script这几种编程语言正在向前20名挺进,让我们看看他们目前的排名。

  编程语言排行TOP 21-50

  请留意下表中标注红色的语言,其中,Scala和Erlang两种语言51CTO已经有过专题报道,详细请参考《Scala编程语言》专题和《因并发而生 因云计算而热:Erlang专家访谈实录》;关于Scratch和JavaFX Script两种语言我们会在后面的编程语言排行榜中为您介绍。

PositionProgramming LanguageRatings
21Lua0.506%
22Scratch0.498%
23D0.485%
24Scala0.459%
25Erlang0.446%
26COBOL0.437%
27JavaFX Script0.435%
28Transact-SQL0.415%
29Fortran0.377%
30Ada0.367%
31Alice0.360%
32RPG (OS/400)0.352%
33Logo0.350%
34Bourne shell0.342%
35S-lang0.339%
36FoxPro/xBase0.323%
37Forth0.296%
38NXT-G0.274%
39Tcl/Tk0.266%
40Groovy0.261%
41Prolog0.255%
42Smalltalk0.254%
43Caml/F#0.244%
44CL (OS/400)0.226%
45PowerShell0.221%
46PL/I0.212%
47J0.203%
48Haskell0.202%
49VHDL0.194%
50MAX/MSP0.187%

  下面是排名第51-100的编程语言

  ABC, AD, Algol, APL, Applescript, Awk, Beta, Boo, C shell, cg, Clean, Clojure, cT, Dylan, Eiffel, Euphoria, Factor, Falcon, Focus, Icon, IDL, Informix-4GL, Io, LabVIEW, LabWindows/CVI, Lingo, MAD, Maple, Mathematica, ML, Modula-2, Modula-3, MOO, MS-DOS batch, MUMPS, Natural, Occam, Oz, Postscript, Progress, Q, R, Revolution, REXX, SIGNAL, SPSS, SuperCollider, VBScript, Verilog, XSLT

  编程语言类型走势

CategoryRatings Feb 2010Delta Feb 2009
Object-Oriented Languages53.8%-2.5%
Procedural Languages41.7%+2.2%
Functional Languages2.9%-0.1%
Logical Languages1.6%+0.4%

CategoryRatings Feb 2010Delta Feb 2009
Statically Typed Languages59.4%+0.4%
Dynamically Typed Languages40.6%-0.4%


动态与静态类型语言走势

胡子决定运程?编辑本段回目录

Brad Cox,曾尝试把OO加入到C中,于是Objective-C诞生。然而,Objective-C 也是命运不济,目前只有在Mac操作系统中还能看到它的踪影。 与之相对,另一位所做的相同尝试却大红大紫,这就是Bjarne Stroustrup所写的C++。其实,看看 Stroustrup的脸就不难明白为什么这两种语言的命运会如此不同。 

objective-c.gif 
Objective-C之父Brad Cox

c++.jpg 
C++之父Bjarne Stroustrup

到这里,你能猜出点规律来吗? 

答案揭晓:有大胡子——有旺运;没胡子——只有干瞪眼!

软体尚方宝剑(Silver Bullet)何在编辑本段回目录

——Fred Brooks 和Brad Cox的不同观点
欧阳进(台湾)

前言
二十年来,人们一直寻找解决软体危机的方法,包括结构化、人工智慧、物件导向等方法;但软体大师Fred Brooks 在1986年发表的文章裏预言在10年内找不到解决软体危机的尚方宝剑,历经了十年,果然不幸被他言中。1995年裏,Brooks与Cox两位大师分别再深思软体尚方宝剑,Brooks仍持怀疑态度,而Cox 则相当乐观。

本文以时间的前后,依序交叉介绍两位大师的见解,期能引起读者对软体未来的些微兴趣。由於笔者的学养和功力远不如两位大师,只能介绍他们文章裏的精华,并未添加笔者的阐释或见解以免您受到笔者有限能力的误导或局限您的思想和视野。希望您有空细读两位大师的原文著作,培养您自己的思维和创意。

介绍

二十年前(1975),IBM大型电脑之父——Fred Brooks 出版一本书:"The Mythical Man-Month"。 收集了他在1960年代领导1000多人共同发展OS/360大型软体系统的心得和经验。从实际经验中,他体会到开发大型软体过程中,难以汇集参与人员的设计理念然后提供给使用者一致的设计概念(conceptual integrity),因而导致软体的高度复杂性,使得大型软体系统往往会进度落后、成本暴涨及错误百出,就是所谓的软体危机(software crisis)。

经过了10年(1986),Brooks发表了一篇著名的论文——"No Silver Bullet: Essence and Accidents of Software Engineering"

他断言:
「在10年内无法找到解决软体危机的尚方宝剑(银弹)」 (There will be no silver bullet within ten years)。

这文章激起许多软体专家的讨论与争辩,而"No Silver Bullet"也成为脍炙人口的名词。Brooks认为软体专家所找到的各种方法皆舍本逐末,解决不了软体的根本困难——即概念性结构(conceptual structure)的复杂,无法达到概念的一致性,软体自然不亲切不好用!

到了1990年,曾首先提出"Software IC"名词的OO大师——Brad Cox针对Brooks的观点而发表了一篇重要文章—— "There Is a Silver Bullet"

说明他找到了尚方宝剑——即有些经济上的有利诱因会促使人类社会中的文化改变(culture change),人们会乐於去制造类似硬体晶片(IC)般的软体组件(software component),将组件内的复杂结构包装得完美,使得组件简单易用,由这些组件整合而成的大型软体,自然简单易用;软体危机於焉化解了。

在1995年初,Brooks的上述名著第二版出炉了,书中含有一篇关於尚方宝剑的新文章—— "No Silver Bullet Refired"。文章裏,Brooks赞扬Cox的文章,但他认为Cox误解了他的本意。

尽管历经了十年,软体开发方法也有所进展,但Brooks 仍然认为尚方宝剑仍未出现;大型软体系统的开发工作仍然困难重重,只能渐进地改善,不要奢望短期内会出现尚方宝剑,一举解决软体的困境。

在1995年底,Brad Cox发表了新文章——"No Silver Bullet Reconsidered"。这文章裏,Cox更深刻探讨文化和思维变迁(paradigm shift)的话因与效果,从人类文化的观点阐释软体危机的原因,而得到乐观的结论——软体的尚方宝剑是可能的。

过去10年,Brooks的预测是千真万确的,果真软体的困境不但未解决,反而更加严重。那麼下个十年又会如何呢?有趣的是,大家来欣赏一下两位大师的深思灼见,然后再看看您个人的见解,也许会激励出许多新创见也说不定,不是吗?

1975
Brooks在"The Mythical Man-Month"书中之看法该书是论文集,其中有一篇文章叫"The Mythical Man-Month",他就以此作为书名。在1956~1965 之间,Brooks实际领导IBM 360 大型电脑的开发计划,包括硬体结构及庞大的OS/360作业系统在内,因之他具有「IBM 大型电脑之父」之尊称。由於OS/360是多达1000位程式师共同合作的大型软体开发工作,让他深刻了解到大型软体开发的技术和管理上所面临的种种困难和挑战。於是,他就将其领导开发OS/360软体系统的经验心得收集在这本书裏。

人们常拿Man-Month (多少人,做多少个月)来计算软体的工作量,但是Brooks发现软体的开发工作是需要人与人之间密切沟通的,使得设计工作不易分割,所以Man-Month 为单位的计算方法是有问题的(mythical)。也就得出著名的Brooks法则—— 「对於进度已落后的软体开发计划而言,若再增加人力,只会让其更加落后。」(Adding manpower to a late software project makes it later)这是该书名称的涵义。

Brooks从经验中深深感觉到参与人员之间的概念一致性(conceptual integrity)是软体设计中最重要的一环(conceptual integrity is the most important consideration in system design)

。一旦软体师们有一致的设计概念,其所共同创造出来的软体才有可能达到简单(simplicity)及好用(straightforward) 之效果。

为了达到这效果,Brooks主张应注重软体的主架构(architecture),并将它与实施
细节(implementation)分开来。所谓主架构,就是:对使用者介面之完整而详细之
叙述(the complete and detailed specification of the user interface) 。

主架构汇集各软体师的不同思绪,融合成为一致的概念,然后呈现给使用者,让使用
者感觉软体是源自于单一的设计理念(single philosophy) ,而不是基於庞杂无序的
众多思绪。将主架构与施行细节分开来,是让大型软体计划获得一致性概念的有力途
径(separation of architectureal effort from implementation is a very
powerful way of getting conceptual integration on very large projects)。

1987
Brooks在"No Silver Bullet"文章中的看法
自从"The Mythical Man-Month"一书上市以来,历经了十年,尽管软体专家们努力研
究新方法来解决软体的困难;但是Brooks认为这些方法,包括高阶语言、OOP 、AI等
皆舍本逐末,只解决了一些概念的表达(representation)技巧而已,并无法解决根本
性的概念结构(conceptual structure)问题。在"No Silver Bullet"文中,他藉亚裏
斯多德(Aristotle)的用词而将软体之困难分为两种:

●Essence ——此为概念上(conceptual)的根本困难。

●Accidents ——此为将概念转换为电脑表示法时,在表达(representation)上之困
难。


例如,OOP 上的抽象资料型态(即类别)观念,只是改进了设计的表示方式而已,所
以抽象时只去除掉表达性(accidents)的复杂和困难,但并未去除掉任何根本性的复杂。
由於没办法解决这种根本性的困难,使得原本单纯可爱的软体,逐渐演变为进度落后
、成本暴涨、错误丛生等,像恶梦中的狼群般蜂踊而至,於是哀号而希望有种「银弹」
(silver bullet 又译为尚方宝剑)能即刻平息它们。然而Brooks认为:

「不仅眼前找不到尚方宝剑,由於软体的本质使然,未来也不太可能找得到。」
(Not only are there no silver bullets now in view, the very nature of
software makes it unlikely that there will be any)

Brooks列出的根本性困难包括:

●复杂性(complexity)——「复杂」是软体的根本特性,可能来自于程式师之间的沟
通不良,而产生结构错误或时间延误;也可能因为人们无法完全掌握程式的各种可能
状态;也可能来自新增功能时而引发的副作用等等。
●一致性(conformity)——大型软体开发中,各小系统之介面常会不一致,而且易於
因时间和环境的演变而更加不一致。
●易变性(changability) ——软体的所处环境常是由人群、法律、硬体设备及应用
领域等各因素融合而成的文化环境,这些因素皆会快速变化。
●不可见性(invisibility)——软体是看不见的,既使利用图示方法,也无法充分表
现其结构,使得人们心智上的沟通面临极大的困难。


这些是软体的本性,Brooks认为没有捷径可解决之(there is no royal road)。但可
以渐进式地改善之。他认为可行的方案有:

*买来装配(buy and build) ——软体的建造尽量使用现有零组件,不要一切都从头
做起。
*快速雏型(rapid prototyping) ——使用重复式的开发方法(iterative development)
来渐进地改善软体的雏型,裨逐步厘清使用者需求。
*有机成长(growing organically) ——有生命的东西皆是由小慢慢长大的,建造大型
软体的方法应该是逐渐成长,而不是一次建造完成。
*优秀设计者(great designer) ——人是软体设计的核心,良好的方法可改善人的创造
过程,但无法激励人的原本创造力,须藉重有创意的人。

1990
Cox在"There Is a Silver Bullet"文章中的看法
Cox 在文章开头就提到Brooks在"No Silver Bullet"一文中的悲观看法,Cox 写道:
And in "No Silver Bullet: Essence and Accidents of Software Engineering,"
he(Brooks) argues that the difficulties are inevitable, arising from
software's inescapable essence--not from accident, but from some deficiency
in how programmers build software today.

(在"NSB" 文中,Brooks声称这些软体的困难是无法避免的,是源自软体上无法逃避的
根本质——亦即不是来自一些旁技细节,而是今日程式师设计软体时缺点)

接著,Cox 针对Brooks所提的软体困境所在,Cox从新的观点来阐释之,而得到乐观的
结论。

Cox认为软体危机是必然会面临的(irresistible)的困境,但并非是无法克服
(immovable)的。当全球经济进入资讯时代,市场对资讯殷切需求而产生的经济诱因
(economic incentive),将促成人们社会中的文化改变(cultural change)
。加上目前遭遇的软体困境:成本过高、品质不良、以及人们无力去改善它们。使得
人们对软体的看法和思维产生巨大的变迁(paradigm shift),从过去一行一行撰写指
令的土法炼钢方法转而尝试去建立可重复使用的标准组件(standard component)以及
组件交易市场(market)。在这种新环境中,软体的价值体系(value system)、权力结
构(power structure) 、以及软体师与消费者关系重新定位;彻底从过去重视程式的
撰写过程(process) 转而重视组件价值、拥有、及买卖系统等基本文化要素、而导致
软体产业的革命(software industry revolution)。

软体组件类似於硬体的晶片(IC)一般,把组件的复杂封装起来,对使用者而言,调组
件再也不复杂了。因之,建立软体晶片市场,让人们不再受困於组件内程式撰写的复
杂,而专注在组件本身的使用、价值和买卖上,软体的复杂和困难就自然烟消云散了。

因之,文化和思维的变迁将是一把尚方宝剑,能克服软体的困境;而且这种变迁是即
将来临的,并非海市蜃楼!


1995
Brooks在"No Silver Bullet" Refired文章裏的看法
自从1987年Brooks发表"No Silver Bullet"一文之后,激发了许多人对到底有没有尚
方宝剑的讨论与争辩,例如前述的Cox 之"There Is a Silver Bullet"文章,以及Harel
的"Biting the silver bullet"文章等等。
Brooks在理解各方的反应,以及检验当今各种软体设计方法之后,他仍认为尚方宝剑尚
未出现(the magic solutions are not just around the corner)。

Brooks赞扬Cox 的"There Is a Silver Bullet"文章是一篇极佳的文章,可是他认为
Cox 误会了他的本意,误解之处有二:

《1》 如上节所述,Cox 在文章中写道:
"...but from some deficiency in how programmers build software today."
Cox 把根本性困难解释为软体建造方法上的缺失,事实上Brooks所谓的根本性困难是
指软体上概念性的复杂所导致的,无论使用什麼方法,无论在任何时刻,皆必然呈现
的软体固有特性。
《2》如上节所述,Cox 在文章中写道:
"...Brooks argues that the difficulties are inevitable..."
事实上,Brooks认为他自己只是持怀疑之态度,并非认为尚方宝剑是完全没希望的。
例如,Brooks认为软体系统的复杂是可分层次(level) 的,若软体下层的小组件
(object)组成上层的大组件,再由大组件组成更大之组件,层次分明地组织起来,则
复杂度就可以减低了。还有,当软体由小而大渐进地有机成长时,虽然复杂有系统地
增加,但可确保软体的正确性。导致这种困难的原因仍可藉渐进式地改善或去除,只
是没有捷径罢了。

Brooks认为OO是个有希望的途径,但由於牵涉到人们思维方式的转换,使得企业组织
必须先投下资金(front-loaded cost) ,才能逐渐回收其利益(down-stream benefits)
,因而OO的进展会是慢如蜗牛。既使它可解决软体危机,也不会是在眼前。

1995年底
Cox在"No Silver Bullet" Reconsidered 文章中的看法
Cox 认为Brooks所谓的根本(essential)困难——complexity、conformity、
changability 及invisibility——并非最根本,而是由一个隐藏在深处的病因(cause)
所造成的症状(symptoms)罢了。这个病因就是:

目前文化中缺乏有利的诱因来鼓励企业公司生产、买卖软体的组件(component)以及更
少的子子孙孙组件(subcomponent)。
如果买卖各层组件者皆有利可图,自然会想尽办法将组件封装得简单易用,则Brooks所
指的软体困难自然消失了。
Cox 觉得Brooks的观点是以技术为核心(technocentric) ,而他的观点则是以人为核心
(human-centric) 。由於观点的差异,对软体危机的阐释自然会获得不同的结论。他的
结论是:尚方宝剑是可能的,只是这把剑是软体思维的变迁(paradigm shift),而不是
技术(technology)。


想一想,造铅笔的公司卖掉了一支铅笔,就少了一支铅笔,亦即少了这铅笔的各小组件,
如铅笔擦、笔心等。为了要再造另一支铅笔,就得付费去购买铅笔擦和笔心,使得制造
笔心等小组件之企业公司也有利可图。因之,铅笔到铅笔擦、笔心等制造者皆会用心去
把组件包装好,使其简单易用!
但是,在软体中,制造试算表软体的公司,卖出一套试算表软体,只是个拷贝动作,并
不会少掉一个位元;不必再向小组件的制造者购买,使得小组件制造者无利可分,自然
无法进行生产、包装和买卖了;这是目前软体业的困境。

在未来新文化之中,使用者(end user)每使用一次某物件(object),就必须付一次费用
给这物件的生产者,而这生产者则必须付一次费用给其内部各次物件(subobject)
的生产者,依此类推到最小的组件为止。在此环境中,各层次物件之复杂结构皆封装得
完义无缺,使得各层物件皆简单好用,软体的复杂与困难就迎刃而解了。

结论
在前言中已提到,本文只是介绍Brooks与Cox 的文章精华,笔者因能力所限而不做推
论,当然不会有结论,盼您在细读过这两位大师的原文后,才做出您自己的结论。如
果您愿意,也盼您有所结论时,能与笔者分享,自当感激不尽!再会了。

[参考资料]
[1] Brooks, Frederick. The Mythical Man-Month. Reading, MA:Addison-Wesley,
1975.
[2] Brooks, Frederick. "No Wilver Bullet:Essence and Accidents of Software
Engineering," IEEE Computer(April 1987"), PP.10-19.
[3] Brooks, Frederick. The Mythical Man-Month, the 20th anniversary edition.
 Reading, MA:Addison-Wesley, 1995.
[4] Cox, Brad. Object-Oriented Programming:An Evolutionary Approach,
Reading,MA:Addison-Wesley.
[5] Cox, Brad. "There Is a Silver Bullet." Byte(October 1990), PP. 209-218.

[6] Cox, Brad. Superdistribution "Objects as Property on the Electonic
Frontier. Reading, MA:Addison-Wesley, 1995.
[7] Cox, Brad. "'No Silver Bullet'" Reconsidered," American Programmer
(Novermber 1995), PP.2-8.
[8] Harel, D. "Biting the silver bullet:Toward a brighter future for
system development," IEEE Computer(January 1992), PP.8-20.

Fred Brooks 在1956-1965 之间领导IBM System/360大型电脑的开发计划,建立了IBM
在商业电脑市场上的盟主地位。目前任教於University of North Carolina at Chapel
Hill。
1975年他出版的"The Mythical Man-Month"一书,是软体设计方面的经典名著。历经
20年,该书第二版终於在1995年上市,一出炉就发行250000册。1986年,他发表了重
要文章——"No Silver Bullet",激起众多人士对软体危机与奇迹的好奇与争论,一
直持续到今天。
Brad Cox是著名的OO大师,他的重要著作—— “Object-Oriented Programming: An
Evolutionary Approach"
家喻户晓的「软体IC」一词就是来自他的著作。他是Objective-C 语言的创造人;目
前任教于Geoge Mason 大学。他最近出版一本新书-- “Superdistribution:
Objects as Property on the Electonic Frontier”
探讨在朝向全球性资讯密集产业过程中所面临的各种问题和困难。Cox相信化解软体
危机的尚方宝剑是文化的改变,即人类思维模式的变迁(paradigm shift),而不是
技术(technology)。

参考文献编辑本段回目录

http://en.wikipedia.org/wiki/Brad_Cox
http://doc.chinaunix.net/java/201002/384661.shtml
http://news.yesky.com/204/11330704.shtml

→如果您认为本词条还有待完善,请 编辑词条

词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。
0

标签: Brad Cox

收藏到: Favorites  

同义词: Objective-C

关于本词条的评论 (共0条)发表评论>>

对词条发表评论

评论长度最大为200个字符。