阅读更多

众所周知,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

  • 大小: 196 KB
来自: CSDN
5
0
评论 共 1 条 请登录后发表评论
1 楼 mufaith 2014-11-26 10:15
虽然不太懂,但是很向往

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Objective-C之父BradCox访谈:我的编程之路

    日前,作者DaveDribin采访了Objective-C之父BradCox,一起来了解下这位大神级人物,是如何看待他的编程之路的。众所周知,BradCox与TomLove一起创造了iOS/MAC平台的首选开发语言Objective-C。构建于C语言之上的...

  • 消息转发机制

    前言Objective-C是在C的基础上扩展出的编程语言,它加入了OOP的基本概念和运行时消息转发机制,使得它的对象类型和行为是在运行时确定的(ps: 如果运行时类型和编译时类型不同,就可能产生多态),这是典型的动态...

  • 使用 ECMA 标准:Miguel de Icaza 访谈

    Unix 的大多数编程语言(例如 Perl、Python、Scheme、C++、Objective-C、Ada)都可以使用我们的 API。 后来,我们决定使用更好的方法来封装 API,于是就开始使用 CORBA 来定义组件的接口。我们还使用策略和一套 标准...

  • 震惊!22 岁直接性地对话苹果 CEO

    点击⬇️方“逆锋起笔”,公众号回复编程资源 领取大佬们推荐的学习资料 来源:新智元 编辑:Q【新智元导读】你22岁时在做什么?大部分人应该是往返在宿舍食堂教学楼的三点一线吧。可有的人,2...

  • java学习流程

    The Setup 是一个访谈性的blog,邀请各种geek谈他们的硬件和软件,以及梦想中的装备。这些geek来自各行各业,有教授,软件开发者,游戏开发者,创业者,音乐制作人,艺术家摄影师等等。当然最主要的还是计算机行业的...

  • 维基百科著名程序员列表大全

    - Objective-C Mike Cowlishaw - REXX and NetRexx, LEXX editor, image processing, decimal arithmetic packages Mark Crispin - inventor of IMAP, author of UW-IMAP, one of the reference ...

  • 数学建模拟合与插值.ppt

    数学建模拟合与插值.ppt

  • [net毕业设计]ASP.NET教育报表管理系统-权限管理模块(源代码+论文).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

  • mysql相关资源.txt

    mysql相关资源.txt

  • 利用HTML+CSS+JS的国漫分享网站(响应式)

    此项目为一个HTML+CSS+JS的国漫分享网站,用户可以在此网站中观看自己喜欢的国漫。此网站共有4个页面,分别为首页,最新动态,热门推荐,分类。页面动漫图片齐全,内容可更改。可用于期末课程设计或个人课程设计。

  • Python爬虫爬取漫画

    Python爬虫爬取漫画

  • C++语言编程用模拟退火算法解决旅行商问题

    模拟退火算法应用。C++语言编程用模拟退火算法解决旅行商问题。该资源包含模拟退火算法C++语言的源代码。模拟退火算法是一种基于概率的全局优化算法,最初来自于物理学中的退火过程。它通过模拟金属冷却时原子排列逐渐趋于最低能量状态的过程来寻找问题的最优解。模拟退火算法常用于解决非线性、组合优化问题,特别适合于大规模、复杂的搜索空间。

  • 传感器试题及答案.doc

    传感器试题及答案.doc

  • [net毕业设计]ASP.NET网上书店(源代码+论文).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

  • MongoDB数据表基本操作中文最新版本

    本文档主要讲述的是MongoDB数据表基本操作;希望对大家会有帮助;感兴趣的朋友可以过来看看

  • 1-全国各省废气、废水排放二氧化硫、氮氧化物、烟尘、颗粒物排放量统计数据2011-2021年-社科数据.zip

    本数据集提供了2011至2021年间全国各省废气和废水中主要污染物的排放量统计数据。数据涵盖了二氧化硫、氮氧化物、烟尘和颗粒物等关键污染物的排放量,为研究中国环境状况和污染物排放趋势提供了宝贵信息。数据显示,2011-2021年间,各省的二氧化硫排放量从数十万吨到数百万吨不等,其中广东、广西、海南等省份的排放量较高。氮氧化物排放量同样显示出地域差异,北京、天津等北方城市的排放量相对较低,而一些工业大省如河北、山西的排放量较高。颗粒物排放量统计显示,工业源和生活源是主要的排放源,其中工业源排放量占比较大。这些数据不仅对环保政策制定者具有参考价值,也为学术研究提供了实证基础。

  • 脉冲宽度测量单片机课程设计.doc

    脉冲宽度测量单片机课程设计.doc

  • [net毕业设计]ASP.NET在线毕业论文提交系统的设计与实现(源代码+论文).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

  • 求职与招聘(源代码+论文+说明文档).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

  • [net毕业设计]ASP.NET视频点播系统的设计与实现(源代码+论文).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

Global site tag (gtag.js) - Google Analytics