• 当我读《自己动手实现Lua-虚拟机、编译器和标准库》时我在想什么


    写在前面

    • 这本书长这样

      

    • 这本书用Go语言实现Lua(包括虚拟机、编译器和标准库)。
    • 本书的章节设计是我看过的专业书中设计最用心的,共21章,每章在前一章的基础上实现一个内容;平均下来每章的页数差不多,如果时间充分,一天读完一章(包括写代码)也是可以做到的。
    • 本书的写作方式仍然是我喜欢的“谈话口吻”,非常详细,非常体贴我一个开头并不了解“虚拟机是什么”种种问号的人。
    • 我认为它可以归到“能顺顺利利读下来的专业书”一类。

    一些准备

    • 心理准备:在下定决心读完这本书前,我翻了翻前言,感觉是“要读此书,先需要会Go语言,需要了解编译原理”,但我不会Go,也不会编译原理,如果真想读完这本书,感觉要花很多时间先去学Go和编译原理!Go倒还好说,我学到能基本看懂Go代码的程度就差不多了,这个花不了多久,但让我先弄懂编译原理实在有难度,而且我再一搜《编译原理》,真是好厚一砖头书!这会不会和我“实现Lua”的目标南辕北辙呢?“到底要不要读完这本书”,做这个心理准备真的做了很久,最后下的决定是先读起来,Go和编译原理它要用到的时候再去另外看。结果我发现读起来的时候,Go语言我是推迟到第2章一半内容读过去了才开始学的,学Go期间也在每天读这本书,只不过阅读进度缓慢;至于编译原理,我发现完全不用提前学,因为这本书就是在教我什么是编译原理,虽然我还没翻过《编译原理》一书,无法和它做对比,但我觉得既然它已经教会我成功“实现一种语言”,那《编译原理》想告诉我的,这本书也同样告诉了我。
    • 搭建环境:“学一种语言,最难的一步就是第一步”,放在这里就是搭建环境,为了能成功跑出Lua语言和Go语言版的Hello World,我在搭建环境上花了不少时间,为此特意各写了一篇博文做踩坑记录( Lua:Windows快捷安装Lua ,Go:Windows用VSCode搭建Go环境 );读书到后期第19章,还需要先安装gcc编译器,不然会报无gcc错误,gcc编译器安装可以参考这两篇博文(博文1博文2)。
    • 命令行:因为此书是在Mac环境中敲的代码,而命令行内容在Mac和Windows上略有不同,我特意在G站上另外开了一个记录此书Windows相关命令行内容,方便不关心命令行差异的同学们直接复制使用就行。

    一些感想

    • 我出于想要了解“为什么Lua就能实现热更新”的目的,开始搜索Lua相关书籍,结果除了《Lua程序设计》,还有《Lua设计与实现》,而《自己动手实现Lua》一书是在前两本书的参考下写作出来的,于是我把这三本书都买下来,到手先翻了翻。《Lua程序设计》是我的入门书在此略过,《Lua设计与实现》更像分析Lua源码的理论书籍,而《自己动手实现Lua》有实践部分能让我留下印象,所以我才选择这本书开始阅读,但读完感觉此书并没有介绍到热更部分。不过我在《Lua设计与实现》一书目录上有看到热更部分,所以我的下一本书会是阅读《Lua设计与实现》。
    • 虽然阅读目的没有实现,但我顺便学会了虚拟机和编译器(我的成品)。
    • 此书已经极尽所能讨论且实现了Lua的重要部分,对于我关心的userdata类型,GC垃圾回收等内容没有讲述,在阅读过程中也有一些小问题没有解决,我还需要阅读其他资料,继续把Lua琢磨明白。

    参考

  • 相关阅读:
    centos已经安装了python2,同时安装python3
    linux下判断磁盘是ssd还是hdd
    Java中如何判断两个对象是否相等
    NPOI导出Excel和基于office导出Excel比较
    asp
    又找到了一个blog
    关于宋朝及中国历史的一点想法
    Android中实现EditText圆角
    Python小练习
    软件架构设计(三) 架构、架构师和架构设计
  • 原文地址:https://www.cnblogs.com/caiger-blog/p/12992580.html
Copyright © 2020-2023  润新知