精华内容
下载资源
问答
  • 松本行弘

    2014-09-01 11:52:00
    1995年,松本行弘将Ruby公开于众。反响极其热烈。 理念篇: 还是当怪才比较好 很多人都比较奇怪,我的数学怎么会那么差。高中时我甚至考过全班最低分。“擅长计算机的人数学就一定好”,这只是人们的臆想...

    生平:

    松本行弘(Yukihiro Matsumoto),1965年4月14日出生于日本鸟取县。1984年,就读于筑波大学第三学科信息学系。2年后休学,成为末日圣徒耶稣基督教会的宣 讲师。大学复学后,加入中田育男教授的研究室。1990年大学毕业。后在岛根大学攻读博士课程,修满学分后退学,未获学位。

    现任株式会社Network应用通信研究所研究员、乐天株式会社乐天技术研究所研究员、Ruby association 理事长、Heroku首席构架师。


    经历篇:

    高中时代:用自己设计的语言编程

    第一次接触电脑,是小学6年级。父亲给我买了一个口袋型电脑L-Kit16,当时真是激动坏了。到了初中3年级,父亲又给我买了Sharp PC-1210,这个时候我第一次知道“编程”这个概念。只要发出指令,计算机就能按照你的指令进行操作,真是有意思极了!

    我的父亲,是建筑公司的一个普通的上班族。他之所以买电脑,是用来计算建筑数据的。没想到这两台电脑成了我的玩具(笑)。

    回忆起小时候,感觉一天到晚都在看书。我家前面有一个书店,我天天都泡在那里。有时候朋友来玩,我让他到家里来,他却指着书店说:“那不是你家 吗?”那时候什么都看,科幻小说呀,漫画呀。百科全书全都记在脑子里。总之就是特别喜欢文字。实在没东西看,就看药品的说明书(笑)。

    上了高中之后,就迷上计算机了。成天看计算机杂志。能让计算机按照自己的指示来运行,这比什么都有意思。特别是对编程语言非常感兴趣。当时对汇编语 言、Basic都不喜欢,不想用它们来编程(笑)。于是我就开始自己发明语言,然后用这种语言来编程,写在笔记本上。不过这本笔记已经不知道去哪儿了,真 遗憾。当时连语言的名字都想好了。当然了,不是Ruby啦。不好意思说,哈哈。

    大学时代:不是去图书馆就是去研究室

    大学我考上了信息科学学院。在那里我接触了许多在书中看到但从未使用过的软件和语言。大学里的老师都是我高中读过的书的作者,简直太不可思议了。不过,研究室里我是最不听话的,老是猫在那里设计自己的语言(笑)。

    当时是日本泡沫经济崩溃的年代,但是我一点儿都没有闲着。整天泡在图书馆里,看了许许多多书。休息的时候就去电影院或者是书店(笑)。我不擅长运 动,也不关心身边的人都在干什么。我从小就喜欢读书,虽然最近拜网络所赐,读得少了(笑)。阅读各领域的书籍,对我的成长影响很大。 另外,我还常常关在研究室了。比如通宵在研究室里弄电脑,到了早上回家洗一下澡,然后再到研究室去(笑)。当时是80年代后期,研究室里已经连上网络了, 我常常看BBS、新闻什么的。能接触到很多聪明的人物,觉得非常有意思。

    当时是计算机的黎明期。我父亲是反对我考信息科学学院的。“什么计算机,什么编程,当个兴趣就得了。”不过我真是太喜欢计算机了。未来的出路我从未考虑过。可谓是义无反顾了。

    经济不景气,开始开发Ruby

    1990年毕业之后,我进了一家软件公司。我找工作有一个原则:坚决不在东京工作。我从小在农村长大,不喜欢人多的地方。花1、2个小时去上班,那 简直不可想象。我其实更适合在小地方工作,不过那样的话可以选择的公司就比较少。后来遇到滨松一家软件公司招聘,我就去了那里。

    我的主要工作是公司内部OA软件的开发。当时的电子邮件只能发送文字,我就弄一个可以粘贴附件的软件。有意思。公司一般会给我一个大致的范围,然后 让我自由地去发挥。因为喜欢这个工作,所以常常加班到很晚才回家。当时的梦想就是一辈子做一个程序员。即使将来当爷爷了,也要继续工作。

    过了几年,泡沫经济崩溃的后续影响开始显现出来。公司的业务一下子少了许多。时间非常充裕,于是我就想自己干一点事情,开始开发Ruby。这些我都是在公司弄的,也和同事交流过,同事亦给我许多帮助。

    1年之后,我去了另一家公司,叫做名古屋CAD vendor。因为原来那家公司的经营状况已经非常不好了。虽然我对工作很满意,环境呀、人际关系呀都很好,不过当时我结婚有了家庭,考虑的东西就会多一 些。万一公司倒闭了,那就比较惨了。而且我也想趁自己比较有优势的时候把自己推销出去。当时能做面向对象的脚本语言的人还是比较少的。

    1995年,松本行弘将Ruby公开于众。反响极其热烈。


    理念篇:

    还是当怪才比较好

    很多人都比较奇怪,我的数学怎么会那么差。高中时我甚至考过全班最低分。“擅长计算机的人数学就一定好”,这只是人们的臆想而已。

    在日本的教育体制下,学生都被培养成面面俱到可又面面平庸的“综合型”人才。不过,我遇到的成功人士,大多都是一些在某些方面特别强,但在某些方面 特别差的人。我的数学从来就是1(满分为10分),一旦到了程序语言的考试,我则有取得1000分的自信(虽然满分为100分)(笑)。 每个人的能力都有上限,综合型人才往往是全面发展,而那些怪才往往专注于磨练他的专长。这样的人走上社会之后,更容易成功。

    我开发计算机语言的初衷

    所谓软件,其目的就是让计算机为人类工作。正因为人类的大脑有一定的能力限度,所以需要让计算机承担大部分的工作,让人脑空出来去解决更难的问题。因此我开发了ruby这样面向对象的脚本语言。

    我为什么不自己创业

    我是一个数学很差的人(笑)。让我算钱,就更差了。很多人都会问我为什么不自己做公司,这是因为我实在不擅长。我现在的工作,能让我自由、专注地开发程序。这样就足够了。

    编程人员不需要擅长数学

    编程人员要做的其实就是倾听客户需求,写下来,然后借助计算机语言让计算机去执行相应的任务。这哪里需要数学嘛?大家不要被表象所迷惑。算术反正有 计算器,不用愁。而在计算机的世界里,比数学更重要的,是作为人本身所需要的一些技能。比如倾听能力、理解力等。其中最重要的是沟通能力。

    编程是一种体育运动

    很多人年轻时都热衷于体育运动,有些人上了年纪依然热衷。很不巧,我从小就不擅长体育,不过我能理解那些体育爱好者的感受。体育能够使人生变得丰富多彩。而编程其实与体育有着许多共同之处。 可能很多人觉得编程和体育根本不沾边。不过,请你试着想一想,棋类常常被归类为体育运动之一,这是为什么呢?因为它其实是一种脑力运动。

    说到编程和体育的共通点,第一,二者都需要通过反复练习才能获得技术上的提升。要想成为一名优秀的程序员,知识和经验都很重要。编程人员常常需要以苦为乐。

    第二,编程对美和速度的追求,与体育相似。优秀的程序言对自己“作品”中蕴含的程序之美,非常执着。另外,程序员在进行性能调优时的测定行为,以及对自我瓶颈的突破,和游泳以及田径选手有类似之处。

    编程是一种兴趣

    在日本,棒球爱好者可谓多如牛毛,可是真正成为专业棒球手的却是屈指可数。大多数人都是因为兴趣才接触棒球的。同样,有许多人爱好编程,于是世界上诞生了许多开源软件。同时,解决程序bug的过程,和解谜的过程一样,都是充满惊喜的。

    不过和专业的体育选手不同的是,很多专业程序员并不是因为喜爱编程才干上这一行的。这一点,着实是比较悲哀的事。

    编程是一种交流

    在大家的印象里,编程其实就是坐在计算机前敲打键盘。不过这个工作其实非常人性化。至今依然没有出现能够自我编程的计算机,这也说明了编程是一种人类活动,甚至可以说,只有“人”才能编程。 此外,程序编写出来是供给人类使用的。理解人的追求、人的感受,对于编程人员来说是非常重要的。另外,当一个团队联合进行编程工作时,团队成员之间的沟通能力也是不可或缺的。

    编程是一种创造

    多年来,我对编程的热爱从未有丝毫减少。其中最重要的原因是:编程是一种创造性的工作。 只要有一台计算机,就能从无到有,构建出一个新的世界。编程的世界中,没有重力、因果等等现实世界中的制约因素。如此自由的创造性活动,除编程外,别无他选。我能通过编程,创造出一个我想象中的世界。这是编程最大的魅力。

    编程是一生的事业

    和许多活动相比,编程不需要体力。如果你不去那些彻夜加班的公司,那基本上年龄和体力都不是问题。 编程更需要的是知识、经验、判断力等等,这些都不会因为年龄的增长而退化。换句话说,编程是可以干一辈子的。这一点,和那些专业体育选手略有不同。

    日本有一个说法:“35岁是程序员的退休年龄”。我的身边的确有许多30岁左右就渐渐远离编程的朋友。与其说是因为他们能力低下,不如说是社会因素 使然。在日本的IT界,优秀程序员的价值没有得到充分的认可,再加上论资排辈的传统以及职业价值的不平衡,35岁成为一个分水岭。

    实际上,国外许多著名的编程人员即使到了暮年也依然活跃在第一线。我的大学导师,退休之后依然高产,因为退休使他没有杂事的干扰,能够专心致志地干他想干的工作。干一辈子编程,也是我的梦想。 编程本来就是一件有趣的事。因为觉得有趣,所以进步很快,能编出优秀的语言来。如果你觉得编程只是一种谋生手段的话,那还是趁早辞职吧。快乐编程能使你的人生硕果累累,我相信。


    转载于:https://my.oschina.net/u/572632/blog/308661

    展开全文
  • 松本行弘:Ruby2.0

    2014-05-29 14:06:00
    松本行弘向大家介绍了如何使用Ruby2.0。
  • 松本行弘 (Matsumoto Yukihiro)简介 1965 年出生于鸟取县米子市。毕业于筑波大学第三学院信息学系。于 1993 年开始开发面向对象编程语言 Ruby ,于 1995 年发表。目前为网路应用通讯研究所 (NaCI) 研究员,并兼任...

     松本行弘

    松本行弘 (Matsumoto Yukihiro)简介

    1965 年出生于鸟取县米子市。毕业于筑波大学第三学院信息学系。于 1993 年开始开发面向对象编程语言 Ruby ,于 1995 年发表。目前为网路应用通讯研究所 (NaCI) 研究员,并兼任乐天技术研究所的研究员。以“ Matz ”的昵称为人所知。 讨厌东京、喜欢温泉。

      说起松本行弘(Yukihiro Mats-umoto)很多人并不陌生,他设计和实现了目前开发者社区最火爆的语言——Ruby。他是日本最为著名的开放源码传播者之一,但大家更爱亲切地称呼他的网名Matz。


     

    早慧少年

    和很多计算机界的泰斗才俊一样,1965年出生的松本行弘也很早慧。他中学时自学了编程,在父亲的电脑Sharp PC-1210上写出了第一个Basic程序。

    1984年松本行弘进入筑波大学第三学群资讯(情报)学类,中间甚至还休学两年,从事基督教传教工作。不过,松本行弘最终仍然选择回到校园完成学业,并于1990年毕业,获得了信息科学学位。此后,松本行弘一直从事程序设计语言和编译器相关的设计与开发工作。


     

    既高效又有趣的语言

    有创见的科学家,永远都是那些很有“想法”的人,哪怕最初看起来很奇怪或天方夜谭。松本行弘认为以往的编程语言过分强调运行速度,而忽视计算机真正的主人——“人”,他认为:“一个好的编程语言不仅可以执行程序任务,也应该帮助程序员形成更好的编程逻辑。”

    于是,松本行弘想发明一种使开发既高效又有趣的语言,这就是后来更人性化的编程语言Ruby。

    1993年,松本行弘开始Ruby语言的研发工作,试图集成脚本语言中最好的特点,基于C语言开发,但比Perl更强大,比Python更面向对象。1994年,松本行弘独立完成Ruby的第一个Alpha 版,那年他才28岁。


     

    “红宝石”语言

    松本行弘把它取名Ruby,也因这名字是一种美丽珍贵的红宝石之意。Ruby本身也极具魅力——这种解释型脚本语言,既有脚本语言强大的字符串处理能力和正则表达式,又不失解释型语言的动态性。

    此外,松本行弘还借鉴了Perl语言在文字处理方面的优势,由Ruby编写的程序不需事先编译即可直接运行,因此利于实现开发过程中的快速反馈,极大地方便了程序的调试。

    1995年Ruby脚本语言的第一个版本发布后,因其大大提高了开发者的工作效率,让编程更有乐趣,很快在日本非常流行。

    1997 年开始,松本行弘在“株式会社Network应用通信研究所”担任特别研究员,专注于Ruby的开发。2000年,Dave Thomas首次将这 Ruby介绍到了英文社区,很快掀起了Ruby语言的热潮。Ruby的灵活特性给动态编程语言注入了新的活力,逐渐获得全世界范围的程序设计者的喜爱。


     

    总有不完美

    世界上没有一种完美的语言,Ruby也一样。尽管Ruby很棒,但很多人还是觉得他的性能效率较低。不过好在后来开发者也通过一些扩展来弥补Ruby的瓶颈。

    2004年,丹麦人David Heinemeier Hansson用Ruby语言开发的一种Web框架Ruby on Rails,可达到J2EE开发速度的10倍以上,被很多人视为“软件开发的银弹”,Ruby开始在全球范围内流行。


     

    “不要忽略人的因素”

    Ruby颠覆了许多传统的观念,给程序员极大的灵活性,后来的Ruby on Rails更是打破了Web开发领域的固有观念,其便捷的开发方式被广泛接受,成为多家大型公司的开发语言。能取得这么大的成就,与松本行弘一贯的“不要忽略人的因素”的思想有关。

    他认为语言不但是表达思想的工具,也是人类进行思想的方法。“不要低估人的因素。仅仅想到我们是在计算机之前,他们是媒介。我们正在与人在交流,为人类而工作。”松本行弘说,“计算机并不介意我们如何与之交流,因此我们需要将焦点聚集于人类身上,聚集于人类如何关注编写程序或者在机器上操作应用程序,我们才是主宰者,它们是奴隶。”

    自Ruby诞生之日起,松本行弘一直身体力行自己的思想,2009年,松本弘行在推动Ruby的发展的成就得到了普通民众的认可,当选为日本松江市荣誉市民。

    转自:http://www.programmer.com.cn/4002/


    松本行弘:Ruby之父佳作《松本行弘的程序世界》图灵引进,即将出版


    松本行弘的程序世界

    前言

        本书的目的不是深入讲解哪种特定的技术,也没有就我开发的编程语言Ruby进行全面地讨论。本书从全局的角度对与编程相关的各种技术进行了考察。读者千万不要以为拿着这本书,就可以按图索骥地解决实际问题了。实际上,最好把它看成是一幅粗略勾勒出了编程世界诸要素之间关系的“世界地图”。

      每种技术、思想都有其特定的目的、渊源和发展进步的过程。本书试图换一个角度重新考察各种技术。读了本书,如果你能够感觉到“啊,原来是这样的呀!”或者“噢,原来这个技术的立足点在这里呀!”那么我就深感欣慰了。我的愿望就是这些知识能够激发读者学习新技术的求知欲。

      本书的第2章到第14章,是在《日经Linux》杂志于2005年5月到2009年4月连载的“松本编程模式讲坛”基础上编辑修改而成的。但实际上连载与最开始的设想并不一致,真正涉及“模式”的内容其实不多,倒是让技术内幕、背景分析等内容占了主流。现在想来,大方向并没有错。

      除了连载的内容之外,本书还记录了我对编程问题的重新思考和新的看法。特别是第1章“我为什么开发了Ruby”,针对“为什么是Ruby”这一点,比其他杂志做了更加深入的解说。另外,在每章的末尾增加了专栏。

      对于连载的内容,因为要出成一本书,除修改了明显的错误和不合时代的部分之外,力求每一章都独成一体、内容完整,同时也保留了连载时的风貌。通读全书,读者也许会感觉到有些话题或解说是重复的,这一点敬请原谅。

      因为我的本职工作是程序员,不能光是写书,最后无论如何总算是给赶出来了。非常感谢我家的人,她们在这么长时间里宽容着我这个情绪不稳的丈夫和父亲。

      稿子写完了,书也出来了,想着总算告一段落了吧,而《日经Linux》又要开始连载“松本行弘技术杀手”了,恐怕还要继续让家里人劳心。

     

    2009 4

    于樱花季节过后的松江

    松本行弘

     

     

     


    转载于:https://www.cnblogs.com/qianqian0313/archive/2011/04/02/2394900.html

    展开全文
  • 我与松本行弘

    2011-11-21 09:15:39
    学习Ruby,追星松本行弘!开心编程。 《松本行弘的程序世界》是我读过最棒的编程书籍! [img]http://dl.iteye.com/upload/attachment/592048/5b50f1c6-dd3f-3062-b6db-f24d591b4069.jpg[/img] ...
    学习Ruby,追星松本行弘!开心编程。
    《松本行弘的程序世界》是我读过最棒的编程书籍!
    [img]http://dl.iteye.com/upload/attachment/592048/5b50f1c6-dd3f-3062-b6db-f24d591b4069.jpg[/img]
    展开全文
  • 松本行弘的程序世界第4章 设计模式4.1 设计模式(1)4.1.2 设计模式是程序抽象化的延伸4.1.4 SingleTon(单件)模式 保证类的实例只有一个 4.1.5 Proxy(代理)模式 为某个对象提供代理对象 4.1.6 Iterator(迭代器)模式 ...

    [日] 松本行弘 ◎著 《松本行弘的程序世界》

    本书是作者在月刊杂志《日经Linux》上专栏《松本行弘:模式》各期(2005年5月号~2009年4月号)的合集,2011年8月第1版出版。

    目录

    1 我为什么开发Ruby

    1.1 我为什么开发Ruby

    • 编程语言的重要性
    • Ruby的原则
    • 简洁性
    • 扩展性
    • 稳定性
    • 一切皆因兴趣

    2 面向对象

    2.1 编程和面向对象的关系

    • 颠倒的构造
    • 主宰计算机的武器
    • 怎样写程序
    • 面向对象的编程方法
    • 面向对象的难点
    • 多态性
    • 具体的程序
    • 多态性的优点

    2.2 数据抽象和继承

    • 面向对象的历史
    • 复杂性是面向对象的敌人
    • 结构化编程
    • 数据抽象化
    • 雏形
    • 找出相似的部分来继承

    2.3 多重继承的缺点

    • 为什么需要多重继承
    • 多重继承和单一继承不可分离
    • goto语句和多重继承比较相似
    • 解决多重继承的问题
    • 静态语言和动态语言的区别
    • 静态语言的特点
    • 动态语言的特点
    • 静态语言和动态语言的比较
    • 继承的两种含义
    • 接口的缺点
    • 继承实现的方法
    • 从多重继承变形而来的Mix-in
    • 积极支持Mix-in的Ruby

    2.4 两个误解

    • 面向对象的编程
    • 对象的模板=类
    • 利用模板的手段=继承
    • 多重继承不好吗
    • 动态编程语言也需要多重继承
    • 驯服多重继承的方法
    • Ruby中多重继承的实现方法
    • Java实现多重继承的方法

    2.5 Duck Typing诞生之前

    • 为什么需要类型
    • 动态的类型是从Lisp中诞生的
    • 动态类型在面向对象中发展起来了
    • 动态类型和静态类型的邂逅
    • 静态类型的优点
    • 动态类型的优点
    • 只关心行为的Duck Typing
    • 避免明确的类型检查
    • 克服动态类型的缺点
    • 动态编程语言

    2.6 元编程

    • 元编程
    • 反射
    • 元编程的例子
    • 使用反射功能
    • 分布式Ruby的实现
    • 数据库的应用
    • 输出XML
    • 元编程和小编程语言
    • 声明的实现
    • 上下文相关的实现
    • 单位的实现
    • 词汇的实现
    • 层次数据的实现
    • 适合DSL的语言,不适合DSL的语言

    3 程序块

    3.1 程序块的威力

    • 把函数作为参数的高阶函数
    • C语言高阶函数的局限
    • 可以保存外部环境的闭包
    • 块的两种使用方法
    • 最终来看,块到底是什么
    • 块在循环处理中的应用
    • 内部迭代器和外部迭代器
    • 在排序和比较大小中的应用
    • 用块保证程序的后处理
    • 用块实现新的控制结构
    • 在回调中使用块

    3.2 用块作循环

    • 块是处理的集合
    • 块应用范围的扩展
    • 高阶函数和块的本质一样
    • 用Enumerable来利用块
    • Enumerable的局限

    3.3 精通集合的使用

    • 使用Ruby的数组
    • 修改限定范围的元素内容
    • Ruby中的哈希处理
    • 支持循环的Enumerable
    • 用于循环的each方法
    • 使用inject、zip和grep
    • 用来指定条件的select方法
    • 排序与比较大小的方法
    • 在类中包含(include)Enumerable模块
    • 列表内包表达式和块的区别

    4 设计模式

    4.1 设计模式(1)

    • 设计模式的价值和意义
    • 设计模式是程序抽象化的延伸
    • Ruby中的设计模式
    • Sigleton模式
    • Proxy模式
    • Iterator模式
    • 外部与内部,那一个更好
    • 内部迭代器的缺陷
    • 外部迭代器的缺点

    4.2 设计模式(2)

    • 模式与动态语言的关系
    • 重复使用既存对象的Prototype模式
    • 亲身体验Io语言
    • Ruby中的原型
    • 编写抽象算法的Template Method模式
    • 用Ruby来尝试Template Method
    • 动态语言与Template Method模式
    • 避免高度依赖性的Observer模式
    • Observable模块
    • Observer模式与动态语言

    4.3 设计模式(3)

    • 软件开发的悲剧
    • 开放-封闭原则
    • 面向对象的情况
    • 非面向对象的情况
    • OCP与Template Method模式
    • Observer模式
    • 使用Strategy模式
    • Strategy模式与OCP

    5 Ajax

    5.1 Ajax和JavaScript(前篇)

    • 同行及异步页面更新
    • 技术要素之一:JavaScript
    • 技术要素之二:XML
    • XML以外的数据表现形式
    • 技术要素之三:DHTML
    • JavaScript技术基础
    • 原型模式的面向对象编程语言
    • 使用prototype.js库
    • prototype.js的功能

    5.2 Ajax和JavaScript(后篇)

    • 巧妙使用DHTML
    • 获取document节点
    • 获取和更新标签数据
    • 设定时间处理程序
    • 追加标签节点
    • 本地HTML应用
    • 和服务器间的通信
    • 使用prototype.js的优点
    • 在服务器上保存数据
    • web应用的脆弱性
    • 使用JavaScript的感觉

    6 Ruby on Rails

    6.1 MVC和Ruby on Rails

    • 模型、视图和控制部分
    • 用秒表的例子来学习MVC模式
    • 生成视图和控制部分
    • GUI工具箱与MVC
    • 同时使用工具箱和MVC
    • MVC的优缺点
    • web应用中的MVC

    6.2 开放类和猴子补丁

    • 开放类
    • 猴子补丁的目的
    • 猴子补丁的技巧
    • 灵活使用开放类的库
    • 猴子补丁的几点问题
    • 其他办法
    • Ruby on Rails和开放类
    • ActiveSupport带来的扩展
    • 字节单位序列
    • 复数行和序数
    • 大规模开发和Ruby
    • 信赖性模型
    • 猴子补丁的未来

    7 文字编码

    7.1 文字编码的种类

    • 早期的文字编码
    • 纸带与文字表现
    • 文字是什么
    • 走向英语以外的语言(欧洲篇)
    • 英语以外的语言(亚洲篇)
    • Unicode的问世
    • 统一编码成16位的汉字统合
    • Unicode的两个问题
    • Unicode的文字集
    • 文字表示的不确定性
    • Unicode的字符编码方式

    7.2 程序中的文字处理

    • 文字编码有多个意思
    • 只能处理文字集中包含的文字
    • 纷繁复杂的文字编码方式
    • 影响力式微的Shift_JIS与EUC-JP
    • Unicode有多种字符编码方式
    • 为什么会发生乱码
    • 字符编码方式错误
    • 没有字体
    • 变换位内部码时出错
    • 发生不完全变换
    • 文字集的不同
    • 字节顺序错误
    • 从编程语言的角度处理文字
    • 以变换位前提的UCS方式
    • 原封不动处理的CSI方式
    • 使用UTF-16的Java
    • 使用UTF-8的Perl
    • 使用UTF-16的Python
    • 采用CSI方式的Ruby 1.8
    • 强化类功能的Ruby 1.9
    • 是UCS还是CSI

    8 正则表达式

    8.1 正则表达式基础

    • 检索“像那样的东西”
    • 正则表达式的语法
    • 3个陷阱
    • 正则表达式对象
    • 选项
    • 正则表达式对象
    • 选项
    • 正则表达式匹配的方法
    • 特殊变量
    • 字符串与正则表达式
    • split的本质
    • 字符串的扫描
    • 置换

    8.2 正则表达式的应用实例与“鬼车”

    • 解析日志文件的方法
    • 避免使用$的方法
    • 从邮件中选出日期的方法
    • 典型拼写错误的检索方法
    • Ruby 1.9的新功能“鬼车”

    9 整数和浮点小数

    9.1 深奥的整数世界

    • 整数是有范围的
    • 尝试位运算
    • 操作特定的位
    • 表示复数的办法
    • Ruby的整数
    • 挑战公开密钥方式

    9.2 扑朔迷离的浮点小数世界

    • 计算机对小数的处理
    • 固定小数点数不易使用
    • 科学计数法也有问题
    • 小数不能完全表示
    • 有不能比较的时候
    • 误差积累
    • 不是数的特别“数”
    • 计算误差有多种
    • 误差导致的严重问题
    • BigDecimal是什么
    • 能够表示分数的Rational类

    10 高速执行和并行处理

    10.1 让程序高速执行(前篇)

    • 是不是越快越好
    • 高速执行的乐趣与效率
    • 以数据为基础作出判断
    • 改善系统调用
    • 数据可靠吗
    • 只需改善瓶颈
    • profiler本身成了累赘
    • 算法与数据结构
    • 理解O记法
    • 选择算法
    • 调查算法的性能
    • 高速执行的悲哀
    • 性能优化的格言

    10.2 让程序高速执行(后篇)

    • 确认程序概要
    • 发现瓶颈
    • 使用更好的profiler
    • 高速优化之一:削减对象
    • 高速优化之二:利用立即数
    • 高速优化之三:利用C语言
    • 高速优化之四:采用合适的数据结构
    • 全部以C语言计算
    • 还存在其他技巧

    10.3 并行编程

    • 使用线程的理由
    • 生成线程
    • 线程的执行状态
    • 传递值给线程的方法
    • 信息共享所产生的问题
    • 数据完整性的丧失
    • 死锁
    • 用锁来实现对资源的独占
    • 二级互斥
    • 用队列协调线程
    • 锁模型与队列模型的比较

    10.4 前景可期的并行编程计数Actor

    • 何谓Actor
    • 操作Actor的3中处理系统
    • Erlang的程序
    • Pingpong处理的开始
    • 启动pingpong程序
    • Erlang的错误处理
    • Erlang的使用场所
    • 面向Ruby的库Revactor
    • Revactor的应用场合
    • 另一个库Dramatis

    11 程序安全性

    11.1 程序的漏洞与攻击方法

    • 4中软件漏洞
    • 因权限被窃取而成为重大问题
    • 安全问题的根源
    • “守护神”引起的问题
    • 多样化的攻击手段
    • 缓冲区溢出
    • SQL注入
    • Shell注入
    • 跨站点脚本攻击
    • 跨站点伪造请求
    • 社会工程

    11.2 用异常进行错误处理

    • 异常的历史
    • Java的受控异常
    • Icon的面向目标判断
    • Ruby的异常
    • 异常发生
    • 异常类
    • 异常处理的设计方针
    • 异常发生的设计原则

    12 关于时间的处理

    12.1 用程序处理时刻与时间

    • 时差与时区
    • 世界协调时间
    • 夏令时(DST)
    • 改历
    • 日期与时间类
    • 2038年问题
    • DateTime类
    • Time与DateTime的相互变换

    13 关于数据的持久化

    13.1 持久化数据的方法

    • 保存文本
    • 变换成文本的Marshal
    • 使用Marshal模块
    • 复制有两种方式
    • 仔细看Marshal的格式
    • 不能保存的3类对象
    • 使用PStore
    • 变换为文本的YAML
    • 用YAML制作数据库

    13.2 对象的保存

    • 高数的Object Prevalence
    • Object Prevalence的问题点
    • 使用Madeleine
    • 访问时刻信息
    • 让Madeleine更容易使用
    • Madeleine的使用例Instiki

    13.3 关于XML的考察

    • XML的祖先是SGML
    • XML是树结构的数据表现
    • 优点在于纯文本
    • 缺点在于冗长
    • 不适合重视效率的处理
    • 适合信息交换的格式
    • XML的解析
    • XML处理库REXML
    • XML的代替

    14 函数式编程

    14.1 新范型——函数式编程

    • 具有多种函数式性质的Lisp
    • 彻底的函数式编程语言Haskell
    • 延迟计算:不必要的处理就不做
    • 灵活的“静态多态性”类型系统
    • 尽带函数式语言之父OCaml
    • 强于并行计算的Erlang
    • 用Ruby进行函数式编程
    • 用枚举器来实现延迟计算

    14.2 自动生成代码

    • 在商业中利用的Ruby
    • 使用Ruby自动生成代码
    • 削除重复代码
    • 代码生成的应用
    • 代码生成的效果
    • 编写代码生成器
    • 也可以使用XML
    • 在EJB中使用代码生成

    14.3 内存管理与垃圾收集

    • 内存管理的困难
    • 垃圾收集亮相之前
    • 评价垃圾收集的两个指标
    • 垃圾收集算法
    • 引用计数方式
    • 标记和扫除方式
    • 标记和紧缩方式
    • 复制方式
    • 多种多样的垃圾收集算法
    • 分代垃圾收集
    • 保守垃圾收集
    • 增量垃圾收集
    • 并行垃圾收集
    • 位图标记

    14.4 用C语言来扩展Ruby

    • 开发与执行速度的取舍
    • 扩展库
    • 看例题学习扩展模块
    • QDBM函数
    • 初始化对象
    • 实现方法
    • 关于垃圾收集的注意事项
    • 其他的Ruby API
    • 扩展库的编译
    • 扩展库以外的工具

    14.5 为什么要开源

    • 自由软件的思想
    • 自由软件的历史
    • Emacs事件的发生
    • 开源的诞生
    • OSS许可证
    • 开源的背景
    • 企业关注开源的理由
    • Ruby与开源
    • 选择许可证的方法

    笔记

    第4章 设计模式

    4.1 设计模式(1)

    4.1.2 设计模式是程序抽象化的延伸

    4.1.4 SingleTon(单件)模式

    • 保证实例只有一个

    4.1.5 Proxy(代理)模式

    • 为某个对象提供代理对象

    4.1.6 Iterator(迭代器)模式

    • 提供按顺序访问集合对象中各元素的方法

      • 外部迭代器:外部Iterator由客户控制每一步遍历

      • 内部迭代器:内部Iterator只需要提交一个待执行的操作

    4.2 设计模式(2)

    4.2.2 Prototype(原型)模式

    • 明确一个实例作为一个要生成对象的种类原型,通过复制该实例来生成新的对象。
      • 在需要新种类对象的时候,首先复制一个既存的对象,给复制的对象直接增加方法或实例变量等功能,生成最初的第一个新种类对象。

    4.2.5 Template Method(模板方法)模式

    • 在父类的一个方法中定义算法框架,其中几个步骤的具体内容则留给子类来实现。

    4.2.7 Observer(观察者)模式

    • 当某个对象的状态发生变化时,依存于该状态的全部对象都自动得到通知,而且为了让它们都得到更新,定义了对象间一对多的依存关系。

    4.3 设计模式(3)

    4.3.7 Strategy(策略)模式

    • 定义算法的集合,将各算法封装,使它们能够交换。

    笔者按

    【笔者按】说是读书笔记,整篇文章基本是目录誊写,有点对不起大家。但我还是这样做的原因,一方面所谓提纲挈领提纲挈领,这篇文章且当提纲;另一方面,兼顾整体性,不至于显得“未完待续”。松本行弘的博客还整理成了另一本书《代码的未来》,可以看作是这本书的下篇。

    展开全文
  • 【日】松本行弘Ruby 的作者Ruby 社区的气质:热爱生活,追求编程的自由度,带点非主流的极客色彩。这本书是松本行弘从一个编程语言设计者的角度去看待各种各样的流行编程语言,分析它们有哪些特点,以及 Ruby 编程...
  • 松本行弘谈Ruby

    2011-11-20 17:40:00
    2011年11月11日,图灵社区就Ruby的设计和中国程序员关注的诸多话题,采访了Ruby设计者松本行弘先生,以下为访谈内容。(视频在此) 图灵社区:《松本行弘的程序世界》中文版上市之后,在程序员(不仅仅是Ruby)社区...
  • 生平:松本行弘(Yukihiro Matsumoto),1965年4月14日出生于日本鸟取县。1984年,就读于筑波大学第三学科信息学系。2年后休学,成为末日圣徒耶稣基督教会的宣讲师。大学复学后,加入中田育男教授的研究室。1990年...
  • 读书笔记《松本行弘的程序世界》

    千次阅读 2017-05-03 22:43:32
    松本行弘 是 Ruby语言的作者, 我没有学习Ruby语言, 只是特别崇拜他! 类是对象的模板,相当于对象的雏形。在具有类功能的面向对象编程语言5中,对象都是由作为雏形的类来生成的,对象的性质也是由类来决定的。通过...
  • 记录阅读松本行弘的程序世界一书的点点滴滴   方便自己回顾并于大家分享               勘误:   P202 --> 贪婪于懒惰--> 最后一中的“上面的字符串用模式.*:? 匹配时”句子...
  • 多重继承不好的观点是错误的 — 小评 松本行弘的程序世界
  • 松本行弘的程序世界》    这本书讲述了Ruby之父松本行动站在一个程序语言的设计者角度,分析了当今各种流行的编程语言的特点,以及他是如何在Ruby语言中权衡取舍的,读这样一本书,回过头来看各种编程语言...
  • 4月25日,云栖社区联合阿里云国际站,特别邀请了Ruby创始人Matz(松本行弘)、阿里云高级技术专家朴灵,来为开发者们分享干货。在本次活动上你可以了解到Ruby语言最新...
  • RUBY之父松本行弘:我的编程人生

    千次阅读 2017-04-06 11:52:02
    RUBY之父松本行弘:我的编程人生 转自:https://sanwen8.cn/p/122UHqm.html 生平: 松本行(Yukihiro Matsumoto),1965年4月14日出生于日本鸟取县。1984年,就读于筑波大学第三学科信息学系。2...
  • 松本行弘的程序世界》精彩书摘

    千次阅读 2011-11-10 18:49:29
    松本行弘的程序世界》精彩书摘 Posted on September 6, 2011 by lowerthan60 以下是2011年4月份在复审《松本行弘的程序世界》期间,随手摘录发表在微博上的精彩书摘。虽然都是只言片语,也没有上下文,但...
  • 人物访谈:松本行弘谈Ruby

    千次阅读 2011-11-14 13:31:42
    2011年11月11日,图灵社区就Ruby的设计和中国程序员关注的诸多话题,采访了Ruby设计者松本行弘先生,以下为访谈内容。 图灵社区:《松本行弘的程序世界》中文版上市之后,在程序员(不仅仅是Ruby)社区取得很好的...
  • 不管使用何种编程语言的程序员,每天能够编写的代码行数是一定的,因此编程语言的区别也就意味着开发效率的区别,比如500汇编和500Ruby代码之间的差距。 如果可以把伪码中非实质的东西去掉,只保留描述算法的...
  • [Ruby编程语言].弗拉纳根_松本行弘.扫描版.part1.rar 共2个文件
  • 代码的未来(松本行弘) 读书笔记:GC GC三种基本方式 进一步改良 数据库 多核编译 Nodejs 分布式GCGC三种基本方式 标记清除方式(Mark and Sweep) 从根开始将可能被引用的对象用递归的方式进行标记,然后将没有标记到...
  • 生平:松本行弘(Yukihiro Matsumoto),1965年4月14日出生于日本鸟取县。1984年,就读于筑波大学第三学科信息学系。2年后休学,成为末日圣徒耶稣基...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,601
精华内容 640
关键字:

松本行弘