两周自制脚本语言

两周自制脚本语言 pdf epub mobi txt 电子书 下载 2026

出版者:人民邮电出版社
作者:[日]千叶 滋
出品人:图灵教育
页数:300
译者:陈筱烟
出版时间:2014-6
价格:59.00元
装帧:平装
isbn号码:9787115355645
丛书系列:图灵程序设计丛书·自制系列
图书标签:
  • 编译原理
  • 编译器
  • 计算机
  • 脚本语言
  • 编程
  • 计算机科学
  • 编程艺术
  • 软件开发
  • 脚本语言
  • 编程
  • 自学
  • 入门
  • 实战
  • 自动化
  • 编程语言
  • 开发
  • 基础
  • 实践
想要找书就要到 图书目录大全
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

《两周自制脚本语言》是一本优秀的编译原理入门读物。全书穿插了大量轻松风趣的对话,读者可以随书中的人物一起从最简单的语言解释器开始,逐步添加新功能,最终完成一个支持函数、数组、对象等高级功能的语言编译器。本书与众不同的实现方式不仅大幅简化了语言处理器的复杂度,还有助于拓展读者的视野。

《两周自制脚本语言》适合对编译原理及语言处理器设计有兴趣的读者以及正在学习相关课程的大中专院校学生。同时,已经学习过相关知识、有一定经验的开发者,也一定能从本书新颖的实现方式中受益良多。

作者简介

作者简介:

千叶滋

东京工业大学研究生院信息技术理工系研究科教授,兼任东京大学研究生院信息技术理工系研究科教授。著有《面向切面入门——从Java语言・面向对象步入AspectJ语言程序设计》《简明Java程序设计——Great Ideas for Java Programming》《GUI库机制——软件设计案例研习》等。

译者简介:

陈筱烟

毕业于复旦大学计算机科学与技术系,主要研究方向为跨设备人机交互理论。从大学时期开始接触Java、JavaScript程序开发,目前对Web应用及智能手机应用开发有浓厚兴趣,并参与Android开发文档翻译项目。业余开发的移动应用在Google Play商店中已有数十万次下载。译作有《JavaScript编程全解》《App,这样设计才好卖》等。

目录信息

第1部分  基础篇
第1天 来,我们一起做些什么吧  1
1.1 机器语言与汇编语言  2
1.2 解释器与编译器  3
1.3 开发语言处理器  5
1.4 语言处理器的结构与本书的框架  6
第2天 设计程序设计语言  10
2.1 麻雀虽小、五脏俱全的程序设计语言  11
2.2 句尾的分号  12
2.3 含糊不得的语言  14
第3天 分割单词  17
3.1 Token对象  18
3.2 通过正则表达式定义单词  19
3.3 借助java.util.regex设计词法分析器  22
3.4 词法分析器试运行  27
第4天 用于表示程序的对象  30
4.1 抽象语法树的定义  31
4.2 设计节点类  34
4.3 BNF  38
4.4 语法分析与抽象语法树  42
第5天 设计语法分析器  44
5.1 Stone语言的语法  45
5.2 使用解析器与组合子  46
5.3 由语法分析器生成的抽象语法树  53
5.4 测试语法分析器  59
第6天 通过解释器执行程序  62
6.1 eval方法与环境对象  63
6.2 各种类型的eval方法  65
6.3 关于GluonJ  69
6.4 执行程序  72
第7天 添加函数功能  75
7.1 扩充语法规则  76
7.2 作用域与生存周期  81
7.3 执行函数  83
7.4 计算斐波那契数  89
7.5 为闭包提供支持  90
7.6 实现闭包  92
第8天 关联Java语言  95
8.1 原生函数  96
8.2 编写使用原生函数的程序  98
第9天 设计面向对象语言  101
9.1 设计用于操作类与对象的语法  102
9.2 实现类所需的语法规则  103
9.3 实现eval方法  104
9.4 通过闭包表示对象  110
9.5 运行包含类的程序  114
第10天 无法割舍的数组  115
10.1 扩展语法分析器  116
10.2 仅通过修改器来实现数组  119
第2部分  性能优化篇
第11天 优化变量读写性能  123
11.1 通过简单数组来实现环境  124
11.2 用于记录全局变量的环境  127
11.3 事先确定变量值的存放位置  130
11.4 修正eval方法并最终完成性能优化  134
第12天 优化对象操作性能  137
12.1 减少内存占用  138
12.2 能否通过事先查找变量的保存位置来优化性能  141
12.3 定义lookup方法  144
12.4 整合所有修改并执行  147
12.5 内联缓存  152
第13天 设计中间代码解释器  156
13.1 中间代码与机器语言  157
13.2 Stone虚拟机  158
13.3 通过栈实现环境  167
13.4 寄存器的使用  170
13.5 引用变量的值  173
13.6 if语句与while语句  173
13.7 函数的定义与调用  175
13.8 转换为虚拟机器语言  177
13.9 通过虚拟机执行  184
第14天 为Stone语言添加静态类型支持以优化性能  187
14.1 指定变量类型  188
14.2 通过数据类型检查发现错误  193
14.3 运行程序时执行类型检查  204
14.4 对类型省略的变量进行类型推论  208
14.5 Java二进制代码转换  214
14.6 综合所有修改再次运行程序  226
第3部分  解说篇(自习时间)
第15天 手工设计词法分析器 229
15.1 修改自动机  230
15.2 自动机程序  233
15.3 正则表达式的极限  235
第16天 语法分析方式  236
16.1 正则表达式与BNF  237
16.2 语法分析算法  238
16.3 LL语法分析  239
16.4 算符优先分析法与自底向上语法分析  244
第17天 Parser库的内部结构  251
17.1 组合子分析  252
17.2 解析器组合子的内部  252
第18天 GluonJ的使用方法  263
18.1 设定类路径  264
18.2 启动设定  265
18.3 GluonJ语言  267
18.4 功能总结  268
第19天 抽象语法树与设计模式  271
19.1 理想的设计  272
19.2 Interpreter模式  273
19.3 Visitor模式  276
19.4 使用反射  282
19.5 面向切面语言  284
· · · · · · (收起)

读后感

评分

评分

在知乎的一个问题的回答里写了篇算是这本书的介绍文,放个链接过来: http://www.zhihu.com/question/34348804/answer/59455946 这本书的难度和覆盖面我觉得还挺适合初学入门时阅读的。 特别是它能够展现出一门语言的功能逐步扩展、性能逐步优化的过程中实现层面的演进,这个...  

评分

在知乎的一个问题的回答里写了篇算是这本书的介绍文,放个链接过来: http://www.zhihu.com/question/34348804/answer/59455946 这本书的难度和覆盖面我觉得还挺适合初学入门时阅读的。 特别是它能够展现出一门语言的功能逐步扩展、性能逐步优化的过程中实现层面的演进,这个...  

评分

全书围绕名为Stone的语言展开。使用Java设计实现了一个支持变量、函数、闭包、类的脚本语言。并且在靠后的章节设计实现了一个简单的虚拟机,然后也涉及了编译成Java字节码的实现。 内容比较丰富,也比较实用。对于很多特性的实现原理也描述得还算比较清楚。但是我认为最大的问...  

评分

不管是翻译还是行文的原因,代码与图示的不一致,为了翻个代码,需要把一节翻完,而且前前后后各种代码参见。 对话模式莫名其妙的,既然想拟人讨论,就好好取个名字,搞个鸡毛的abcdefg ,还不如正正常常的写本书呢。 文字描述根本无法表达代码意图,有时候,放在一起的文字,...

用户评价

评分

这本书在设计哲学上体现出一种强烈的“实用主义”倾向。它平衡了理论的严谨性和实践的可操作性。例如,在设计脚本语言的宏系统时,作者并没有直接跳到复杂的 Lisp 式宏,而是先构建了一个基于词法作用域的简单模板系统,然后逐步迭代,引入卫生宏(Hygienic Macros)的概念。这种渐进式的设计过程,极大地降低了理解难度,同时也展示了如何在实际项目中权衡简洁性与表达力。此外,书中对错误处理机制的讨论也极为细致,它展示了如何设计一套既能提供清晰调试信息,又不会过度侵入业务逻辑的异常抛出与捕获系统。这种对“好用”的执着追求,使得这本书不仅仅是学术性的,更是工程实践的典范。

评分

这本书给我的最大感受就是“野心勃勃”。它不仅仅是教你如何写代码,更像是在构建一个思想体系。不同于市面上许多注重快速上手的“玩具”语言书籍,这里的深度明显更高。它大胆地引入了 Continuation 传递风格(CPS)的概念,并展示了如何在设计脚本语言时利用它来实现更灵活的控制流。我记得有一章专门讨论了如何处理并发和并行问题,作者提出了一种基于 Actor 模型的简化实现方案,虽然只是一个概念验证,但其清晰的架构设计思路让我受益匪浅。阅读过程中,我感觉自己仿佛站在了一个高地,俯瞰着编程语言设计的全貌,而不是仅仅在代码的细节中打转。对于那些想要深入理解底层机制,不满足于仅仅停留在应用层面的资深开发者来说,这本书提供的视角是极其独特的。

评分

如果你是一个对“为什么会这样设计”比“如何使用”更感兴趣的程序员,这本书简直是为你量身定做的。它花了大量的篇幅去探讨“为什么”——为什么选择这种特定的操作符优先级,为什么采用特定的类型提升规则,为什么在某些情况下解释器会比编译器更具优势。它深入剖析了设计决策背后的权衡取舍,展示了在资源受限的环境下,如何用最少的代码实现最大的功能。我印象最深的是它讨论如何将脚本语言嵌入到宿主应用中的桥接层设计,作者详细比较了通过 FFI(外部函数接口)进行数据序列化和反序列化的各种陷阱和最佳实践。这本书不是教你如何成为一名脚本语言的用户,而是将你塑造成一个能够独立思考、并能设计出属于自己语言架构的“架构师”。

评分

这本书的结构安排简直是教科书级别的。从最基础的概念讲起,比如变量的声明和作用域,到后面逐步深入到函数式编程的范式,整个学习路径设计得非常平滑。作者似乎深谙初学者在面对新语言设计时的困惑点,总能在关键时刻提供非常直观的例子来阐释那些抽象的理论。我特别欣赏它在介绍语法解析器时所采用的自顶向下分析方法,讲解得深入浅出,即便是第一次接触编译原理的读者也能跟上节奏。尤其是关于类型系统的构建那一部分,它没有停留在简单的静态或动态讨论上,而是花了大量篇幅介绍如何通过简单的代数数据类型来实现更复杂的数据结构验证,这对于想要构建健壮系统的开发者来说,绝对是宝贵的财富。读完后,我感觉自己不仅仅是学会了一门“语言”的语法,更是理解了设计一门语言的核心思想和工程实践。

评分

坦白说,这本书的阅读体验是有些“硬核”的,但绝对物超所值。它的文字密度非常高,每一个句子都承载着大量的信息量,所以阅读速度不快,需要反复琢磨。我花了大量时间在研究附带的那个自制解释器代码上,作者没有使用任何现成的重量级库,而是坚持用最原始的方式来实现所有功能,这迫使我必须去理解每一个底层操作的细节。特别是关于内存管理和垃圾回收的章节,作者没有选择主流的引用计数或标记-清除,而是探索了一种基于区域分配(Region Allocation)的轻量级策略,这在脚本语言的上下文中是非常新颖和高效的尝试。如果你期待的是一本可以轻松读完的小册子,那可能会失望;但如果你渴望的是一场智力上的挑战和对计算机科学核心概念的深度挖掘,那么这本书不容错过。

评分

用Python改编了作者的代码,算是对编译原理有了个初步的了解

评分

把核心代码藏起来的方式实现语言

评分

很早前就听过这本书了,不过一直没看,主要是我实在想不通如何在300页内讲完编译过程中的一些算法,看到一半茅塞顿开,原来最难的那部分用一个库一笔带过了,那这样的书还有什么价值可言。

评分

有一说一,代码写的很不clean code

评分

看到一半放弃了,不合口味,为了写书而写书(作者自己也这样说)。大体讲两句,然后丢上一堆code给你,最烦这样的书了。既然是用java讲,为什么不把他当作一种design的project来讲呢?

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2026 book.wenda123.org All Rights Reserved. 图书目录大全 版权所有