阅读更多

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

  • .2.【方法1】隐藏的弦图 (1)【课程出自拼多多店铺:北大网课资料店】

    .2.【方法1】隐藏的弦图 (1)【课程出自拼多多店铺:北大网课资料店】

  • 基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本115.0.5781.0)

    资源包括: 1.Java爬虫实战代码 2.selenium学习笔记 3.代码演示视频 4.谷歌浏览器chrom115.0.5781.0 chrome-linux64.zip chrome-mac-arm64.zip chrome-mac-x64.zip chrome-win32.zip chrome-win64.zip 5.谷歌浏览器驱动器Chromedriver115.0.5781.0 chromedriver-linux64.zip chromedriver-mac-arm64.zip chromedriver-mac-x64.zip chromedriver-win32.zip chromedriver-win64.zip 特别说明:Chrome 为测试版(不会自动更新) 仅适用于自动测试。若要进行常规浏览,请使用可自动更新的标准版 Chrome。)

  • 毕业设计参考-本科毕设时做的遥感影像分类

    毕业设计参考-本科毕设时做的遥感影像分类 本科毕业设计中的遥感影像分类是一个涉及遥感技术、图像处理和机器学习等多个领域的项目。遥感影像分类是通过计算机技术对遥感图像中的不同地物进行识别和分类的过程。以下是一个基于遥感影像分类的本科毕业设计建议: ### 1. 需求分析 - **用户角色**:确定系统的主要用户角色,如遥感影像分析人员、决策支持者等。 - **核心功能**: - 遥感影像预处理:包括影像的校正、裁剪、增强等。 - 特征提取:从遥感影像中提取有助于分类的特征。 - 分类算法实现:实现一种或多种分类算法,如监督学习、无监督学习、深度学习等。 - 结果评估:评估分类结果的准确性和可靠性。 ### 2. 技术选型 - **遥感影像处理**:使用ENVI、ERDAS Imagine等遥感影像处理软件。 - **编程语言**:Python(TensorFlow、Keras、PyTorch等)。 - **数据库**:MySQL、Oracle或PostgreSQL等。 - **服务器**:Tomcat或Jetty。 - **开发工具**:Eclipse、IntelliJ

  • 2024年箱包皮具行业分析报告.pptx

    行业报告

  • VUE + nodejs实战

    VUE + nodejs实战

  • 某三层流水别墅建筑施工图水电图2g-qd-pm.dwg

    某三层流水别墅建筑施工图水电图2g-qd-pm.dwg

  • 2024嵌入式面试资料通用程序员简历模板700M

    2024嵌入式面试资料通用程序员简历模板700M提取方式是百度网盘分享地址

  • 基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本115.0.5790.170)

    资源包括: 1.Java爬虫实战代码 2.selenium学习笔记 3.代码演示视频 4.谷歌浏览器chrom115.0.5790.170 chrome-linux64.zip chrome-mac-arm64.zip chrome-mac-x64.zip chrome-win32.zip chrome-win64.zip 5.谷歌浏览器驱动器Chromedriver115.0.5790.170 chromedriver-linux64.zip chromedriver-mac-arm64.zip chromedriver-mac-x64.zip chromedriver-win32.zip chromedriver-win64.zip 特别说明:Chrome 为测试版(不会自动更新) 仅适用于自动测试。若要进行常规浏览,请使用可自动更新的标准版 Chrome。)

  • 2024最新Simple Allow Copy中文版

    2024最新Simple Allow Copy中文版

  • 基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本115.0.5767.0)

    资源包括: 1.Java爬虫实战代码 2.selenium学习笔记 3.代码演示视频 4.谷歌浏览器chrom115.0.5767.0 chrome-linux64.zip chrome-mac-arm64.zip chrome-mac-x64.zip chrome-win32.zip chrome-win64.zip 5.谷歌浏览器驱动器Chromedriver115.0.5767.0 chromedriver-linux64.zip chromedriver-mac-arm64.zip chromedriver-mac-x64.zip chromedriver-win32.zip chromedriver-win64.zip 特别说明:Chrome 为测试版(不会自动更新) 仅适用于自动测试。若要进行常规浏览,请使用可自动更新的标准版 Chrome。)

  • Linux 平台下基于 Rust + GTK 开发的音乐播放器

    Linux 平台下基于 Rust + GTK 开发的音乐播放器

  • 毕业设计-毕设:一个血压实时监控app

    毕设:一个血压实时监控app,该app主要功能为与测量设备进行通信,获取测量数据并在客户端进行处理,由服务器进行数据 分析,为用户提供健康评估及建议。 目标 实现与蓝牙设备通信,获取使用者的心率数据和血压数据 实现数据可视化 实现将数据上传到服务器,并进行进一步分析 实现其它辅助性功能:个人信息,设置等 在完成上述功能之后,可以进一步实现其它功能,例如测量光照,温度,振动等数据 已完成功能 蓝牙功能 可以打开蓝牙并连接到指定设备获取数据流。 数据图表 已完成图表UI设计以及模块功能搭建,已实现图表数据的数据库读取功能。 个人设置 已搭建好UI,完成个人信息页面全部功能。已完成全部网络通信接口。 搭建好数据库模块以及网络通信模块 数据库功能已经实现并抽象,网络通信功能也已实现并抽象,服务器初步搭建了框架。 服务器和客户端已完成了关于User数据 和测量数据的上传下载以及清空等一系列操作,本机已通过花生壳映射到外网作为测试服务器。 服务器已有比较简单的UI可供查 询指定用户的测量数据。 状态计算 根据监控数据(振动,屏幕控制)计算用户状态,客户端算法已初步完成。 一些附加功能 已完成监听加

  • 基于SSM+Mysql的在线投票系统(源码+需求分析+演示视频).zip

    java语言,ssm框架,mysql数据库 前台+后台 前台界面 WU 后台界面:CQA+CQB 内容页 P2 前台 投票须知(固定IP不可重复投票) 用户注册 用户可以发起投票(包括题目,选项,单选/多选等都可以自定义) 投票主题查看,可以收藏 在线投票(按照主题投票)登录后可以操作,支持单选及多选,投票结果查看,统计(图表形式) 查看投票结果,登录后可以操作 在线留言(包括留言和管理员回复) 后台 管理员 管理员管理 注册用户审核 投票须知管理 投票主题管理 投票内容管理(选项的删除和添加) 系统管理(可以实现项目的删除和编辑以及系统配置的更新) 注册用户 个人资料修改 我的收藏主题

  • 鸿蒙座舱:人车交互新生态

    鸿蒙座舱:人车交互新生态 ——华为产业链深度系列研究

Global site tag (gtag.js) - Google Analytics