说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Objective-C之父Brad Cox访谈:我的编程之路

HTML文档下载 WORD文档下载 PDF文档下载
Objective-C是苹果Mac OS X 上开发的首选语言,也正因为如此促就了它的辉煌。日前,作者Dave Dribin采访了Objective-C之父Brad Cox,一起来了解下这位大神级人物,是如何看待他的编程之路的。

众所周知,Brad Cox与Tom Love一起创造了iOS/MAC平台的首选开发语言Objective-C。构建于C语言之上的Objective-C其理念来自于公认的第二个面向对象的程序设计语言和第一个真正的集成开发环境的Smalltalk。日前,原文作者Dave Dribin采访了Brad Cox,一起来了解下这位大神级人物,是如何看待他的编程之路。


Brad Cox和他的爱犬

Q:请您简单做个自我介绍以及与Objective-C的关系,谢谢。

Brad Cox:我之前在ITT实验室工作,在那里结识了Tom,我们都有兴趣为人们带来高效的协作系统,但不同于邮件和实时通讯等应用;现在人们习惯称呼这类系统为Groupware(群组软件)。我们发现在C语言上很难实现想法,当接触了Smalltalk以及面向对象的概念后,我想我们是时候要做出改变了,我们要创造一个更好用的基础平台。初期版本是有关Sed和AWK的工具集合,后来发展为基于lex和yacc的语言。而今天它还可以作为汇编语言的生成工具。

Q:方括号可以说是Objective-C的特色,请问这是您的杰作吗?

Brad Cox:是的,其实我就想看看有什么还没使用过的,花括号有了,圆括号有了,最后就是方括号了,我希望人们使用时不会与C语言等类似的混淆。

Q:有什么功能您当初想添加的,但限于当时的技术和时间等制约因素,而最后没有完成?

Brad Cox:的确曾有过不少想法。例如Smalltalk中的闭包概念,垃圾回收机制,解释型语言等。这些想法后来通过不同形式被实现了,但是没有任何一个类在C语言中是绝对适合的。

今天这些的确都一一成为了现实。在Mac OS X 10.5中,给出了垃圾回收机制;在10.6中,也就是雪豹版本,在Objective-C中添加了闭包处理。

Brad Cox:是的,我一直是闭包的拥护者,但是要进入调用者的堆栈的确是需要一定的技巧。

Q:在静态和动态还一直争论不休的时候,Objective-C做了个跨界整合,动态的运行时环境和静态的编译。这是故意而为还是意外行为?

Brad Cox:事实上,很多功能是在我之后发布的。而当时我直接参与的,是在C的静态基础上简单地添加动态支持。而后来,静态支持是在这之后发展起来的。Objective-C的功能都是希望为大家带来非常轻量级的工具,这也是Objective-C一直追求的。

与纯静态的C++和Java相比,Objective-C的动态类型支持的确非常好用。

Brad Cox:可能是多了一种轻巧的预设组件方式组合。

Q:苹果iPod和iPhone的销量超过了3千万,看到如此多的手持设备运行在Objective-C之上,那感觉是怎么样的?

Brad Cox:这感觉美妙极了。

Q:语言的设计是非常呆板的。过去20多年间出现Java、C#、Python及Ruby等都与Objective-C有很大不同。函数式语言似乎稍稍打破了沉闷的环境。对于语言设计的下一个重大事件或功能,您有什么看法呢?

Brad Cox:嗯,函数式语言现在变得热门了。我也曾尝试过,但是语法这个环节我就碰了壁。可能还欠点缘分。

Q:您觉得是语言的选择影响了最终软件质量,还是说全部的面向对象语言其实都大同小异?

Brad Cox:我想他们大体上都是差不多的。

Q:从您近期发布的消息和您的新作品<<Superdistribution>>一书中,不难看出您关注的焦点转移到了软件组件部分。请问能更多地讲述您现在的兴趣点吗?

Brad Cox:其实我没有转变焦点,请记得,为人们带来轻巧实用的功能是我创造Objective-C的初衷。对于我有关组件的关注,其实是我希望能找出有效帮助打造协作系统的办公自动化组件,所以说我并没有转变,只是希望帮助语言设计找到一个绕弯的方法到达相同的目的地。有关组件方向的更多介绍,请进入我的个人博客进行了解。

另外,我对OSGi模块化架构有非常大的期待。一旦流行起来,它将扮演非常重要的角色。虽然上手有一定难度,但是尽早学习是我的建议。

Q:可以分享更多有关OSGi的看法吗?

Brad Cox:好的。OSGi运行在Objective-C上可能不太合适,但是在其它的Java平台运作良好。一些主流的IDEs开发平台,如Netbeans和Eclipse,是一个能实现过渡到基于OSGi组件的中间平台。而随着技术的日渐发展和逐步成熟,将来或会成为人们日常工作的一部分。

Q:OSGi会替代jars吗?还是会与jars相结合?

Brad Cox:我倾向于后者。

Q:是metadata提取物?

Brad Cox:是的。一个OSGi bundle可以看成是一个metadata的jar提取物。因此也可以说是在JVM中的小型SOA(基于服务架构)服务。他们拥有自己的生命周期,能实现离线等待等处理。

Q:这样一来,能实现在线组件更新而不用把整个系统关闭?

Brad Cox:没错。一个典型的做法是在虚拟机中运行OSGi,然后等候它来完成升级过程。这需要花时间来熟悉。这个模型与Java中不断创建—销毁的过程不太一样。

英文出自:Mactech

(责编/夏梦竹)

逗你玩?淘宝开放平台从4月1起开始全面收费 出现编程疲劳?千万别纠结 “编程竞赛界王子”教你更好的招聘程序员 SA:三星全球智能电视市场份额达26% Cocos2d-x 3.0分语言包发布 最新进展即将披露 友盟:社会化分享成为APP开发“标准配置” 从“简单”的封面设计剖析Netflix背后的数据哲学 与Linus Torvalds“并列”,虚拟化天才程序员法布里斯贝拉 让超级计算机和数据中心“飞”,Intel推800Gbps神器MXC 【OSTC讲师专访】Debian开发者李道兵:平静地理解开源 红帽推出开源业务流程管理套件:JBoss BPM Suite 6 科学研究证明:程序员快乐才能更好的工作 ChocolateChip-UI:能“逆转”的跨平台应用开发框架 分享12款最佳的Bootstrap设计工具 Apache Flex 4.12发布,支持iOS 7 智能手机应用挑战Web平台,看W3C如何反击? 电信级数据流量与监控系统部署案例分享 TCL联手Mozilla,HTML5智能电视真的要来了! 先睹为快:Unity亚洲开发者大会虚拟游览展示 OSTC&#183;2014 演讲日程出炉,Perl创始人来了! Unity将收购Applifier,并引入Everyplay和GameAds两大平台 《近匠》从Cubieboard到radxa:汤亮的第二次硬件创业 九头蛇与大象之争,Hydra或将取代Hadoop 喜讯:中国安全团队Keen成功在Pwn2Own 2014黑客大赛上攻破64位Mac上的Safari OCP黑客马拉松冠军:24小时头脑风暴背后 新时代应用程序设计及MongoDB的十个深入理解 借助“开源”东风 英特尔打造卓越“软实力” 深圳综合交通设计研究院张鹍鹏:智能交通设备领域已成红海 信息化是发展趋势 25个可遇不可求的jQuery插件 Web设计中对视差设计的误区 直接拿来用,九个超实用的PHP代码片段(二) 赶快来尝试一下吧! 如何在 View 类中编写press any key to continue功能模块 Vc++下应用Matlab数学函数库出错 如何用VB实现自动登录? 赶快来尝试一下吧! ado的问题! 如何传递带“%”的参数? 有全套的ERP源代码为你提供,助你在开发过程中更上一层楼 字符串str=" aaa ",如何变为"aaa" 怎么没有人理俺泥?? 关于dw的问题 如何读入数据库中的HTML格式的正文呢? 一个在阅读<<深入浅出MFC>>中遇到的问题 !!!!急 新手,说找不到mfc42d.dll文件 怎么没有人理俺泥?? 关于dw的问题 FAST.lib 2000 for windows是个什么东东 请问各位一个非常简单的问题 jdk和jvm 笨蛋 大家有什么建议吗? ASP.net如何刷新另一个页面 有一年delphi工作经验的程序员在全国各地的待遇如何?哪个城市有发展前途(钱途)? 100分求解!!!这个问题大家都来看,来者有分!!! 告诉我几个地方,给你几十分,简单吧 :-) 有没有关于VPN的书籍 Interbase源码分析 西瓜是Plmm哎~! 一个字符串替换的小问题。。。 还有一个问题需要问大家。。。特别急。。。 我变成了大家的一员 哪儿有在jbuilder中让三键鼠标可以使用滚动功能的驱程? 我想把ODBC的所有数据源列出来显示,不知道用哪个函数,谁能告诉,多谢了!来就有分 两台机器怎样用一个asdl宽带猫上网 我的vc编译器在我的一个程序就是不出自动变量填补功能,在其他程序上可以,不知为什么 我想把ODBC的所有数据源列出来显示,不知道用哪个函数,谁能告诉,多谢了!来就有分 怎么复制程序自己? 小小问题 我喜欢在等人的时候抽根烟!(在车站接哈尔滨来的哥们) 我想把ODBC的所有数据源列出来显示,不知道用哪个函数,谁能告诉,多谢了!来就有分 如何在SQL服务器端编程截获SQL客户端从工作站机器上的登陆 大家的公司都用ASP做什么?????我一直想问这个问题。 我只有 .ora文件,怎样恢复数据库? 急 关于游戏编程! J2EE的配置问题!! 请帮忙 !!!多谢了!一定给分!!!! 什么类型的共享软件最挣钱? 请教各位大虾一个DLL问题 如何恢复oracle数据库,先安装好oracle,之后再安装了develop2000,修改了oracle_home后oracle就启动不来了。 SDI程序中,如何在MainFrame里,得到文档的指针? Delphi入门提问 请教各位大虾一个DLL问题 是输入IE网址不对还是Apache对该文件common.jsp设置了访问权限? ${java_home}/.. 汽车空调蒸发器温度传感器的工作原理 铁遇到空气会不会生锈回答的越详细越好 初二物理物态变化的知识结构图 请问蒸发器的工作原理和作用有哪些? 二氟一氯乙烯生成四氟乙烯的化学方程式如题 一块石碑体积为5m3,取一小块作为这块石碑的样品,测得它的质量是130g,用量筒装100cm3的水,再把石碑样品完全浸入水中,水面升高到150cm3处,求整块石碑的质量. 高一生物必修1所有实验现象最好是有实验流程,所用试剂及现象,对实验最不熟悉, 铁生锈与空气有关吗?,为什么? 什么是动能,机械能,内能 酒精与钠的反应 高一必修一生物实验总结 表格 铁会生锈是因为空气中的什么? 钠与酒精如何反应? 高一生物必修一第五章总结 蒸馏水是由什么成分组成的,可以饮用吗.自己可以弄吗. 钠在酒精中的反应我可不可以认为 钠在水中反应比在酒精中反应更加剧烈而可以得出水中的羟基更易断水中的羟基比乙醇中的羟基更活泼(我来确认一下理论知识有没有错.) 什么化学药剂和什么化学药剂发生化学反应会变成红色的液体.好像是初3上学期的题 甲乙两烧杯中分别放入0.1molna2o,na2o2,然后各加100ml水,是固体完全溶解.则甲乙的质量分数关系是甲=乙甲 敞口放在空气中一段时间后不会变质的是A:CaO B:NaCl C:NaOH D:Ca(OH)2 氧化镁的熔沸点为何比氧化铝高?按照离子晶体熔沸点变化规律应该是氧化铝的比氧化镁的高? 蒸馏水煮沸了再煮好吗 敞口放置在空气中的氢氧化钠溶液,时间久了会变质敞口放置在空气中的氢氧化钠溶液,时间久了要变质.现有一杯已部分变质的氢氧化钠溶液,其中OH-与Na+(不考虑水的电离)的个数比为3:7,则 用化学键能与晶格能解释为什么金刚石的熔沸点高于氯化钠?为什么高于氧化镁?C-C键的键能是357.7 kj/mol ,NaCl晶格能是738 kj/mol 左右 蒸馏水能饮用吗 用什么方法检验乙醇与钠反应的所产生的气体? 1氧化钠 2氧化镁 3三氧化二铝 的熔沸点高低说明一下原因 老师讲的是 2>3>1 铁在氧气中燃烧和铁生锈,虽然我们看到的什么不同? 可以用什么方法检验乙醇与钠反应所产生的气体? 水蒸气蒸馏分离的原理,有何实用意义?安全管和T形管的作用? 用自来水制取蒸馏水的操作是煮沸还是蒸馏? 23克的钠和足量乙醇反应,生成多少升气体 蒸馏水的沸腾书上说水沸腾时冒出的泡泡是因为水温升高此时气体溶解度降低,说以溶于水的气体就又冒出来了.那我很好奇如果加热的是蒸馏水(或者纯净水),那水沸腾时还会冒泡泡吗? 乙酰苯胺的制备反应瓶中白雾是什么 洗车循环水设备的功能及用途谁知道? 水蒸气蒸馏的适用范围及操作要点? 生铁和铁哪个更容易生锈 戴口罩带橡胶手套接触三氯甲烷会中毒吗? 制取蒸馏水时,水沸腾了会爆炸吗 NaO+H2O生成NaOH,那NaOH会加热分解成NaO和H2O么? 我老公冬天的时候用塑胶手套开了三氯甲烷的瓶子,过几个月后,我又用塑胶手套刷碗,请问会不会中毒 银会和酒精发生反应吗? NaOH可吸收H2O吗 多少氯仿会导致中毒? 能否用水蒸气蒸馏分离以下各组混合物 (1)硝基苯、苯胺 (2)溴苯、铁、三溴化铁 乙酰苯胺的制备中根据反应式计算,理论上能产生多少毫升水?为什么实际收集的液体量 科学实验心得怎么写 硝基苯水蒸汽蒸馏实验中,最后蒸馏硝基苯时为什么不能蒸干?同题 乙酰苯胺的制备反应完成应产生几毫升水,为什么实际收集液体远多于理论量,除用醋酸 怎样可以买到丙酮? 为何不电解氢氧化镁,氧化镁而是电解氯化镁呢 一冰醋酸为酰化试剂合成乙酰苯胺的合成原理是啥? 在西安那里可以买到丙酮啊 "工业上一般用电解「氯化镁」晶体制镁,而不是「氧化镁」"这句话为什么不对,不是问为什么不用氧化镁,而是问为什么不用氯化镁晶体 1,‘下列氯化物熔点高低顺序错误的是 A LiClMgCl2 C SnCl D ZnCl2 在那里可以买到丙酮?北京海淀哪里有? 氯化镁为什么不能一步生成氧化镁 补充锌元素的食物. 薄膜蒸发器的工作原理是什么样的? 煮沸腾的水是蒸馏水吗 哪些食物可以补充锌元素?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘