热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

人物访谈:***谈Ruby

2011年11月11日,图灵社区就Ruby的设计和中国程序员关注的诸多话题,采访了Ruby设计者***先生,以下为访谈内容。图灵社区:《***的程序世界》中文版上市之后,在程序员(

2011年11月11日,图灵社区就Ruby的设计和中国程序员关注的诸多话题,采访了Ruby设计者***先生,以下为访谈内容。

图灵社区:《***的程序世界》中文版上市之后,在程序员(不仅仅是Ruby)社区取得很好的反响,在此我们对您表示祝贺。在这本书里面,您以Ruby的设计为参照,讨论了编程语言设计与开发的很多知识,这是挺新鲜的角度。是否可以介绍一下,您是如何设计出这样的写作角度的呢?

***:我写过一本《面向对象的语言Ruby》,那本是专门介绍Ruby的,这一本(指《***的程序世界》)是介绍编程语言知识的。以这样的形式撰写,我还是头一次。这本来是写给《日经Linux》杂志的一系列专栏文章,最后汇总起来成书。

我主要想通过这些文章来告诉读者作为程序员所需要具备的背景知识,并帮助读者梳理编程语言的历史。作为一名程序员,不仅仅要懂得程序,还要懂得计算机的发展历程、编程的本质、计算机的性质和技巧等等这些看似跟语言没什么关系的东西。一般来说,程序员难以系统地学习这些知识。我在三十几年的工作中,一直在教别人这些内容。不是当老师,而是在工作中教别人,或者作为一种兴趣与别人交流。

对这本书上市之后取得的成绩,我个人也是蛮惊讶的。这本书在日本的反响不错,但在***地区的繁体中文版就叫好不叫座。中国内地读者可以选择并喜欢这本书,我觉得这是程序员群体迈向成熟的一个标志。

图灵社区:目前《日经Linux》的“***技术剖析”的连载,与《***的程序世界》的写作角度有什么差异?将来是否也会结集出版?

***:实际上,没有什么区别(笑)。因为出版《***的程序世界》之后,我又有许多新的认识,所以想继续深入探讨。

新的专栏(指“***技术剖析”)还没有出版的安排,可能会出吧。目前文章还不够多。收录到《***的程序世界》中的文章总共连载了3、4年。现在的这个专栏才刚刚开始不久。

图灵社区:您有一个很有意思的观点:“相对于数学来说,程序员更需要的是倾听能力和理解能力,最重要的是沟通能力。”是否可以结合设计Ruby的过程来阐述一下这个观点呢?

***:这主要来自个人经历吧。说起来惭愧,我小时候数学差极了。语文、英语什么的成绩比较好。可是我又特别喜欢计算机。在研究计算机的过程中,当然也有因为数学不好而遇到困难的时候,不过几乎不成问题啦。相对于数学来说,编程人员更需要诸如揣摩使用者的感受、使用者真正的需求等等的能力。在编程这个广阔的领域中,虽然也有不擅长数学就什么都做不了的部分,但大部分是与数学没有什么关系的。我个人就是这么感觉的。包括Ruby的设计过程,大部分都不用到数学,所以我能做出来。

图灵社区:Ruby的人性化,一直为人所称道。是否可以简要介绍,在设计Ruby的过程中,您是如何提炼并贯彻这一原则的?

***:在设计这个语言的时候,我首先想到的是:谁来用这个语言。然后换位思考:如果我是对方,我会需要什么,使用起来是什么感受。于是我就设计了一种我自己觉得用起来很舒服的语言。令我感到意外的是,许多用户的体验和我相似,他们也觉得这种语言用起来十分容易上手。

图灵社区:对于中国程序员来说,大家很熟悉您的“Ruby之父”这一头衔。不过,我们注意到,其实您同时在Ruby Association、Heroku等几个机构任职,一直在全方位地推广Ruby。可以简要介绍这些机构在Ruby的推广工作中的不同作用吗?

***:从2007年开始,在工作中使用Ruby语言的人渐渐增多,比如说为公司编写一个程序等等。在此之前,许多人仅仅将Ruby作为一种兴趣,用它编着玩儿。当他们真正在工作上使用Ruby的时候,就会开始问:“谁设计了这种语言?松本?松本是谁?”这个时候,商业开发者和使用开源软件的兴趣爱好者之间的矛盾愈来愈明显。为了解决这个问题,我创设了Ruby Association。这样可以给商业开发者提供一个付费的平台,使用起来有了商业保障。不过这个组织还很小,目前只在***内活动。当然创立当初是放眼全世界的。

说到Heroku则是另外一回事了。去年的12月,Heroku被Salesforce收购。我虽然有朋友在Salesforce工作,但是对Heroku完全陌生,只是听说了它被收购的消息。今年,Salesforce的Marc Beniof希望能接触一些Ruby的相关人士,于是便找到我说:“将来希望能用Heroku的资源来推进Ruby的发展。”过了一周之后,他邀请我与他一起工作。我答应了。这件事本身是他们主动来找我们,我们自己并没有说去寻求什么支持。以前,Ruby社区中有些人白天工作,晚上因兴趣而捣鼓Ruby。而现在到了Heroku工作,则一天到晚都能捣鼓Ruby了。Heroku提供了这样的平台。

图灵社区:您在书中提到过,日本的软件业比美国有所滞后。我们觉得,中国应该会比日本还滞后一些。请结合Ruby在日本和美国的发展,给中国的Ruby程序员指点一下未来之路。

***:我这么写了吗?如果有写的话,我忘记了(笑)。(注:请参见《***的程序设计》第14.2节。)

日本和美国的软件业,其实并不存在谁落后于谁的情况,因为二者有很大的差异性。当A和B在同一个方向上发展的时候,我们可以根据先后次序说A落后于B或者是B落后于A。但是日本和美国软件业的发展方向并不相同。日本在传统上比较偏重制造业,比如汽车、钢铁、船舶等等。到了软件业,也想照搬制造业的模式。但是,毕竟软件行业和汽车、船舶之类传统行业的还是有一定区别的,照搬的话,发展就并不是那么顺利了。我想如果大家通过使用Ruby能体会到Ruby的构思和编程的本质,明白软件业和传统制造业的区别,使日本的软件业走上正轨,我的目的就达到了。这也是我当时写《***的程序世界》的初衷之一。

图灵社区:中国目前的经济发展模式实际上和日本早期的比较相似,目前在国内有许多各种类型的代工工厂,传统的制造工业比较多,而软件行业还不是那么成熟。

***:好像有美国企业把软件放在中国生产吧?但它是没有放在日本的。中国的软件业还是和日本有区别。我想强调的是,在软件行业,最重要的是:是否有决定权。具体来说就是:第一,是否能够自己选择技术;第二,是否能够决定做什么;第三,是否能够决定在什么环节做出什么特色。

日本有一种职业叫做SE(System Engineer),你知道吗?他们一般都是听上头那些不写代码的领导的指示来做软件,而自己没有决定权。日本有大量这样的SE。作为软件的直接制造者,如果不能自己思考,我觉得那是蛮悲哀的。

我回头来想,中国会不会也有这种情况呢?比如那些做软件代工的企业,美国人或者其他国家的人决定了之后,这些企业就遵照美国人的指示做,可能是有这种情况的。那么我想给中国这些工程师的建议就是:一定切记要自主性、决定权和属于自己的思考。

图灵社区:作为开源/***软件的践行者,您是否可以对有志投入这一领域、但又担心如何为生的程序员提供一些建议?

***:这个问题好难回答。在日本,倒是愈来愈多的工程师因开源软件而开始变得有饭可吃了,当然不是很多,只是一部分。我做开源做了十几年了。

我举个例子吧,比如说渔民。刚开始他们捕鱼,鱼是现成的对吧?这就有点像开源。捕着捕着,鱼就渐渐少了,到后来就没有了。这时候就会有人想:如果一直能有更多、更好的鱼就好了。于是这个时候就出现了养殖业。

我觉得开源软件的发展也会出现类似的情况。刚开始很多企业都使用开源软件,唾手可得,也不需要付费。不过用着用着就会发现,好像这些软件都不能满足自己的需求。于是企业希望能够更适合自己的软件来解决问题。这个时候它们会花钱花人力让一些开源软件更加完善,或者将自己的软件开源。在美国有许多这样的企业,日本也有一些,好像欧洲也有。我想中国未来的情况应该也会差不多,我很期待的。

目前在世界上还是很少看到中国、韩国、印度的开源软件。中国有庞大的IT从业队伍,今天的Ruby大会也来了很多优秀的青年,希望他们将来能够使中国的开源软件享誉世界。

以下三个问题,分别来自图灵社区的读者Kraft、刘晓日和无锋之刃。

图灵社区:请问您如果再设计新的语言,会有什么特性呢?

***:除了Ruby吗?我目前没有其他计划啊。目前是计划2013年发布2.0版的Ruby。此后,Ruby还有好多东西要做,能做个10或者20年吧。之后会不会开发新语言就不知道了。

图灵社区:一门通用型编程语言必定会跟随着应用开发趋势进化,为了增强表达力又势必需要添加新的特性,而为了向下兼容又不能随意删除既有特性,那么在进化过程中将如何保持特性正交、减少特性之间的相互冲突、降低特性组合产生的新风险/隐患/漏洞?

***:这个……几乎无法解决(笑)。不过其实针对某种特定目的而开发的语言是比较少的。能举例的比如说PHP,是针对Web应用程序所开发的。它有它的专业性,也有局限性。说到Ruby,则不是针对某种特定目的开发的,虽然它诞生初期是一种处理文本的脚本语言,但是它不仅仅局限于这个功能。软件开发、教育、大型计算机等等Ruby都能派得上用场。Ruby并没有针对某些目的去特意地增加什么便利的功能,因为这样一来反而比较危险,会局限Ruby未来的发展。我在设计的过程中一直很注意这一点,不会去弄一个比如针对Web的Ruby。

图灵社区:猴子补丁是个很巧妙而又难以掌握的特性,请问是如何构思出来的?

***:实际上猴子补丁来自于Lisp,诞生于1958年。Ruby把它拿过来,并起了一个名字,叫做“猴子补丁”。有了名字之后呢,它就开始广为人知。刚开始,它叫做“杂牌军补丁”(guerilla patch),“杂牌军”就是自发参加的军队的意思。后来有人因为口误叫成“猩猩”(gorilla),再后来干脆就叫“猴子”(monkey)了。

这个“猴子”不是我自己起的名字,而是在社区里很自然地演变成“猴子”,从“杂牌军”到“猩猩”再到“猴子”。不过叫它“猴子补丁”是Ruby的创意。有了名字,大家就渐渐关注得多了。这个猴子补丁也不是很难掌握啦,只要理解就很容易了。

最后,***先生还寄语中国读者,一同为Ruby社区创造更美好的未来!


现场精彩图片

Matz大神演讲中

人物访谈:***谈Ruby

Matz大神在2011中国Ruby技术大会上挑选幸运的提问读者

人物访谈:***谈Ruby

会议组织者吕国宁先生向幸运读者送出图灵出版的“神棍节”Matz大神签名本《***的程序设计》

人物访谈:***谈Ruby

图灵公司日文图书策划编辑乐馨正在采访Matz大神

人物访谈:***谈Ruby

笔者与Matz大神合影

人物访谈:***谈Ruby

Matz大神近照

人物访谈:***谈Ruby


更多精彩请点击:http://www.ituring.com.cn/article/details/563


推荐阅读
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
author-avatar
天蝎騎著豬狂奔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有