
1. 我为什么要翻译“ Ruby原理剖析”,其中包括一个小故事,值得分享.
2. 什么是“ Ruby原理剖析”,或者您可以从本书中学到什么?
3. 学习“ Ruby原则分析”有什么含义?
首先自我介绍. 我叫张汉东. 他是《 Ruby原理剖析》一书的翻译者,目前正在撰写《 Rust的编程方式》一书,该书预计将于今年12月出版. 目前,他正在开展青年心理教育领域的业务,并试图通过编程来改善心理教育.
大学是电子信息技术,但是从那时起,对编程的兴趣就一直在高中时期. 因此,在2005年大学毕业后,他开始从事软件开发工作. 最早使用的编程语言是VB和Java. 直到2006年底,我看到该国的人们都在推广Ruby on Rails框架. 我记得它仍然是2007年1月发布的Rails 1.2. 然后,我按照DHH的15分钟的Blog教程开始使用Rails. 所以我上了Rails车,开始了我的Ruby之旅.
当我第一次看Ruby时,我发现这种语言的表达与自然语言非常接近. 特别是Rails中的DSL方法使初学者可以一目了然地理解它所表达的语义. 当时,我觉得这个框架不仅仅是一个框架,更重要的是,它还包含了Web开发的最佳实践. 在学习Rails的同时,我对Web开发,和其他知识有了更深入的了解. 例如,当我看到has_many时,我会进一步考虑,为什么要这样设计DSL?通过查阅数据来解决此问题,我们对的设计有了深刻的了解.
就是这样,我对Ruby和Rails的兴趣越来越强,我决定使用它来工作. 因此,苦心经营的是当时称为国内第一家Ruby on Rails初创公司的公司,该公司现在是成都Nibilu Technology. 这样,Ruby开发一完成便完成了将近十年.
对我来说,这十年可以分为三个阶段.
第一阶段是新秀阶段. 尽管我以前有VB和Java的经验,并在Ruby上投入了大量的学习时间,但我仍然是新手程序员. 前三年的工作只是停留在移动砖头的阶段. 只要工作任务完成,每一天都是混乱的. 永远不要考虑工作的令人满意程度.
直到有一天,我开始感到自己的瓶颈日益严重,但是当我努力工作时,我不知道该去哪里. 这时候我很困惑. 在混乱时期,我还考虑过转行,自己去开一家餐厅,当然以失败告终. 因为您必须支付输入新字段的学费. 但是这种经历使我意识到了一些事情: 有时候人们不能走得太快,他们需要停下来冷静下来思考自己. 我之所以没有突破瓶颈,是因为我专注于如何突破薪水,而雄心勃勃的薪资追求使我完全忽略了自己的提高能力. 在此期间,他换了工作找工作. 他只看钱,不考虑自己的职业发展. 例如,我也做过Python,因为有一项Python工作. 解决了这个问题,我再次选择了Ruby.
我开始重新检查Ruby,并开始系统地学习Ruby. 在此期间,Ruby的父亲“ Matsumoto Yuhiro的程序世界”对我的帮助最大. 因为本书从Ruby之父的角度解释了Ruby的设计理念,所以它使我对Ruby的整个高层抽象有了新的认识. 随着研究的继续,我接触了“ Ruby Hacker Guide”. 这本书是对Ruby源代码的最早分析,但是版本有点陈旧,无法与时俱进. 系统不够. 因此,当我看到《 Ruby原理剖析》这本书时,那正是我的突破阶段.
那我为什么还要翻译《 Ruby原理剖析》一书?在听完我以前的很多旅行之后,每个人现在都应该明白,这是让我变得更好的自我.
事实上,至少有十个人问我,翻译一本书可以赚钱,但不能赚钱吗?除非它是畅销书,否则它不会赚钱. 像这样的利基技术基本上是在赚钱. 许多翻译人员,包括我在内,都不会赚钱.

如何翻译这本书,实际上背后有一个小故事.
翻译这本书花了一年时间,但实际上我花了近三年的时间. 当我在2013年看到这本书的原始版本时,我发现这本书真的很不错. 当时,我大概写了最原始的译文. 因为如果我不写译文,我几乎无法保证我已经读完了. 因此,翻译的初衷是让您完成阅读.
看了大约十章之后,我想到了翻译和出版它. 因此,我联系了图灵和仁友的老师等出版人员,他们没有介绍这本书. 当时我很失望,所以我放弃了.
直到2015年,华中科技出版社的徐定祥先生通过电子邮件将豆瓣寄给我,问我是否可以翻译这本书. 那时,我感到非常惊奇,因为豆瓣帐户是刚刚注册的,几乎没有记录. 我读过的唯一一本书是《 Ruby原理剖析》. 而已. 我马上就把它翻译了,翻译也没错.
现在回过头来看,它确实证实了这句老话: 如果您不忘记ruby语言用途,您将永远记住. 机会留给有准备的人.
{6: 2: d: b: 5: 0: 2: 2: 1: 1: f: 3: 8: b: 7: 0: 6: 4: 8: 5: 4: 6: 4: 3: f: 4: e: a: e: 2: 3: 3: f: e)
那么这本书追逐了我三年有什么好处呢?
我一直坚信一种观点: 书籍不是好是坏,主要是看人. 你为什么这么说因为任何一本书都涉及一个主题,并且针对特定的目标群体. 而且,读者的水平也不同,有些人是高水平的. 我觉得他会了解本书中的所有内容,当然这本书对他没有用. 有些人水平较低. 尽管书中的内容对他有帮助,但他无法理解. 实际上,当我读这本书时,我很困惑. 我知道它的内容对我非常有用,但我不理解. 多数来这里的人会因为不懂这本书而放弃阅读,但我却相反. 我只是看了,因为我听不懂. 因为学习本身就是因为你不懂,所以为什么要学习呢?
我听不懂,但我相信我可以通过某些方法来了解自己. 这实际上涉及到如何读书的问题. 在这里,我碰巧分享了我的阅读方法.
我的阅读方法分为三个阶段.
第一阶段已通读.
经过分析,我无法理解“对Ruby原理的分析”,因为我对此知识太陌生. 这种陌生感使我感到一种抵触感. 克服它的唯一方法是先让自己通读它.
通读有三个目的.

例如,如果您通读本书,您会发现它可以分为六个部分.
第一部分是解释Ruby的执行过程,分词,解析,编译等.
第二部分与对象模型和方法调用有关.
第三部分是Ruby语言中常用的哈希表的内部实现.
第四部分是闭包的工作机制.
第五部分是元编程. 实际上,在谈论这一部分时,您会发现元编程的机制没有太多的魔力,只是先前知识点的应用.
第六部分与GC有关.
最后,集中注意力. 主要是记录通读过程中发现的问题以及您不了解的知识点.
第二阶段是着眼于阅读过程的关键点,并一一突破.
第三阶段是对所学知识进行统一梳理,以形成结构化的知识. 在这一点上,阅读本书被认为是最好的用法.
那么本书包含哪些知识?只是露比吗?
不是. 这个世界上的知识并不是孤立存在的,它们之间有着千丝万缕的联系. 尤其是计算机编程领域的知识.
实际上,《 Ruby原理分析》一书至少包含三部分知识:
Ruby是一种编程语言,自然包含了编程领域的那些常识. 除了Ruby自身的原理外,它还包含有关编译原理的知识.

请记住,关于知识中的编译原理有很多问题,例如: “我想如何学习一些编译原理,但又不想读像《龙虎》这样的书,理论太多了,干吗? ” “这门课很无聊,我想很好地学习它,有什么建议吗?”,“编译原理的用途是什么?”依此类推.
实际上,“ Ruby原理分析”是对“ Compilation Principles”的简要介绍. 尽管它不能达到龙虎鲸书这样的水平,但它以Ruby虚拟机为例来了解编译原理的作用,这对于全面了解编译原理还是很有帮助的. / p>
此外,“ Ruby原理分析”还包含有关程序执行方式的知识. 阅读整本书后,需要自己完善这些内容. 这些是可以转让的基本知识. 当您学习其他语言时,有了这些知识,学习效率将更加有效.
特别是,“ Ruby原理分析”一书的内容组织非常注重此级别的Ruby原理知识. 从Ruby的执行过程到Ruby的对象模型和方法查找,再到模块系统,Mixin的机制,闭包,元编程和GC. 这些内容实际上是Ruby的核心知识.
有人说Ruby太灵活,太难了,还有太多东西. 读完本书后,您会发现Ruby语言的一致性实际上很高.
Ruby的对象模型实际上非常简单. 一切都是对象,对象通过消息传递进行通信.
除了底部的三章之绕一个主题(即对象如何通信)进行描述.
从第4章,控制结构和方法调度开始. 本章的内容是让您掌握Ruby代码的结构. 除了控制结构之. 实际上,不管条件分支,循环,块和其他结构如何,在Ruby的底部,在堆栈框架之间都有一些简单的指令被调用. 然后我讨论了方法搜索和方法调度. 我了解到,不管Ruby中有多少种方法,实际上它们的底部都会用不同的类型标记,除了搜索方法和调用条件不同之外.
第5章,在底部讨论Ruby的类和对象的性能. 在底部,Ruby的类实际上是C语言结构和一组方法. Ruby对象是另一种结构. 对于简单类型,您甚至不需要结构,它仅存在于堆栈中. 通过学习这一部分,您将认识到如何使用C语言结构来构建上层抽象,以表达松本优子计划的Ruby面向对象的思想. 您可能还会想,如果要设计一种面向对象的语言,您将如何实现它们的行为?
最重要的是,您对Ruby的类,对象和继承有基本的了解,并且加深了对一切都是Ruby对象的概念的理解. 如果您不看具体的实现,则可以理解Ruby中的所有内容都是对象的概念,但这就像一种玩法. 只有深入了解执行机制,您才能更加科学. 行为的判断将更加准确.
再次看第6章,它涵盖了方法查找的原理. 实际上,这是对对象如何在面向对象的思维中进行交流的基础支持. 在Ruby方法调用中,方法接收者是一个对象,无非就是显式接收者和隐式接收者. 当您看到一段Ruby代码时,其中包含对象或消息. 消息被发送到对象,并且对象必须检索可以在内部响应此消息的方法. 如果检索失败,将抛出方法丢失错误. 本章介绍了Ruby对象检索方法的规律. 本章非常重要. 掌握掌握方法的方法基本上就是掌握Ruby.
第7章主要说明Ruby中常用的数据结构哈希表. Ruby对哈希表的依赖性绝对比任何其他语言都强. 因此,您需要了解Ruby中哈希表的实现. 以前ruby语言用途,Ruby的Hash算法被暴露为安全漏洞,攻击者可以相应地发起DoS攻击. 如果您了解哈希表中的哈希冲突原理和相关算法,则可以很好地了解此漏洞的严重性.
第8章解释了闭包的基本机制. Ruby中的闭包是通过块结构(即块)实现的. Ruby的灵魂可以说来自块. 没有块,Ruby不是Ruby. 因此,掌握它的重要性不言而喻.
第9章介绍了元编程. 我们说过,Ruby的对象模式非常简单,即如何在对象之间传递消息. 对象使用方法查找来找到可以响应收到的消息的方法. 因此,如何定义方法决定了方法的外观,实际上决定了对象的行为. 元编程的关键点是元类,即Singleton类. 在我的书中,为了将其与单例模式区分开,我有意将其转换为单个类. 这不是单例模式. 实际上,我认为最合适的翻译是影子类,因为元类是普通类的影子,并且每个类都有这样的影子. 该影子类专门用于定义类方法,并且也从影子类中执行对类方法的搜索. 影子类遵循与常规类完全相同的方法. 所谓的元编程魔术实际上提供了一些操作,这些操作可以打开影子类或普通类以定义内部方法. 诸如class_eval,instance_eval等. 常用的method_missing是一种使用方法搜索的方法,该方法使对象在没有消息响应时使用method_missing来触发默认方法. 这里没有魔术.
最后三章主要介绍GC. 这三章的内容比《垃圾收集的算法和实现》一书要好. 因为“ Ruby原理剖析”一书仍然针对Ruby,所以如果您对Ruby有一定的了解,那么请阅读接下来三章的内容,您将对GC算法的工作原理有更深入的了解. ,因为您可以使用Ruby作为证明. 当然,如果从GC算法的角度来看,《垃圾收集的算法和实现》一书更好,那么您也可以在阅读《 Ruby原理分析》后深入该书.

阅读本书后,您会发现Ruby只是讲述了一个简单的故事:
读完本书,然后自己进行梳理之后,掌握Ruby并不困难.
除了Ruby知识外,本书还为我提供了有关编译原理的另一知识. 尽管我是在大学里学习编译原理的,但是由于我对学校的任何编程语言都不熟悉,所以基本上我学到的一切都归还给了老师,只剩下一点记忆. 在研究“ Ruby原理分析”时,尤其是前三章时,会更加痛苦.
但是,在我较早介绍了学习方法之后,我度过了痛苦的时期. 前三章详细介绍了Ruby代码通过特定的Ruby代码从文本到字节码的过程. 了解什么是词法分析,解析和编译.
然后,在编译字节指令之后,堆栈虚拟机如何执行这些指令. 并学习如何使用生成的字节指令分析代码. 在此期间,我还进行了很多广泛的阅读,相当于对汇编原理进行了系统的回顾,并且学到了很多东西. 而且这部分知识可以转让,而不仅仅是Ruby. 您可以在潜入其他语言时应用它. 例如,Rust.
事实上,除了Ruby知识和编译原理外,整本书的另一层知识是程序的执行机制. 主要涉及基础堆栈和堆内存管理,函数调用堆栈帧. 实际上,Ruby的虚拟机YARV本质上是操作系统的抽象. YARV以类似于CPU的方式执行编译指令. 调用堆栈和堆栈框架类似于操作系统. 这可以帮助您根据是否在乎自己来扩展基础知识.
如果您不了解“ Ruby原则”示例的说明,那么您将不了解此知识水平. 不知道也不可怕是可怕的. 学习是因为你不懂,所以学习是因为你不懂. 因此,您可以找到其他材料并补充您的知识. 继续读这本书.
只有全面了解Ruby原理,编译原理和程序执行机制的三个层次,才可以充分利用本书的潜力.
那么我从这本书的翻译中学到了什么?
除了前面提到的三个知识水平之外,我还收获了其他更有价值的东西. 首先,翻译书籍的整个过程改善了我的翻译经验,并使我成为一名合格的翻译. 其次,引发了写书的念头. 但是当时,我不确定要写什么书.
尽管我喜欢Ruby,但是Ruby的性能始终受到批评. 我一直在寻找像Ruby这样具有高度抽象性的语言,并且具有与C相同的强大性能. 我没想到会找到它. Rust 1.0是在2015年发布的. 我立即开始关注Rust. 正是“ Ruby原理剖析”使我踏上了低级探索的旅程. 我从这本书中学到的知识也帮助我快速掌握了Rust.
只有停留在抽象的层面上才能玩哲学,探索潜在的实现就是拥抱科学. 我希望每个人都能勇于突破自己的瓶颈,成为更好的程序员. 如果您还没有购买《 Ruby原理分析》,那还不算太晚!欢迎大家过来与我交谈.
感谢收看.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-145348-1.html
#宋茜4walls#
另外的都不能用