- 浏览: 3049414 次
- 性别:
- 来自: 海外
文章分类
- 全部博客 (430)
- Programming Languages (23)
- Compiler (20)
- Virtual Machine (57)
- Garbage Collection (4)
- HotSpot VM (26)
- Mono (2)
- SSCLI Rotor (1)
- Harmony (0)
- DLR (19)
- Ruby (28)
- C# (38)
- F# (3)
- Haskell (0)
- Scheme (1)
- Regular Expression (5)
- Python (4)
- ECMAScript (2)
- JavaScript (18)
- ActionScript (7)
- Squirrel (2)
- C (6)
- C++ (10)
- D (2)
- .NET (13)
- Java (86)
- Scala (1)
- Groovy (3)
- Optimization (6)
- Data Structure and Algorithm (3)
- Books (4)
- WPF (1)
- Game Engines (7)
- 吉里吉里 (12)
- UML (1)
- Reverse Engineering (11)
- NSIS (4)
- Utilities (3)
- Design Patterns (1)
- Visual Studio (9)
- Windows 7 (3)
- x86 Assembler (1)
- Android (2)
- School Assignment / Test (6)
- Anti-virus (1)
- REST (1)
- Profiling (1)
- misc (39)
- NetOA (12)
- rant (6)
- anime (5)
- Links (12)
- CLR (7)
- GC (1)
- OpenJDK (2)
- JVM (4)
- KVM (0)
- Rhino (1)
- LINQ (2)
- JScript (0)
- Nashorn (0)
- Dalvik (1)
- DTrace (0)
- LLVM (0)
- MSIL (0)
最新评论
-
mldxs:
虽然很多还是看不懂,写的很好!
虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩 -
HanyuKing:
Java的多维数组 -
funnyone:
Java 8的default method与method resolution -
ljs_nogard:
Xamarin workbook - .Net Core 中不 ...
LINQ的恶搞…… -
txm119161336:
allocatestlye1 顺序为 // Fields o ...
最近做的两次Java/JVM分享的概要
之前看到老赵发的昨日搬至办公室的书籍,也想拍张照片跟跟风的。不过一拖就忘了……上周六出门前想起来,就拍了几张。本来这帖是上周六就想发出了的但是光发照片也未免无聊了点,还是带点简介的好。结果过了12点还没写完就放弃了,一拖又是一个星期orz
下面的图宽度比较大的请点击放大。
我的技术书基本上都扔家里了。辛辛苦苦花了近1K RMB才把那些书从学校搬回了家,再搬来杭州感到有点力不从心了。以后有机会回家再搬些过来吧。
把我带到杭州来的书,以及从部门图书室、一位师兄和Saito处借来的技术书堆在一起,大概是这么个样子:
我带过来的书主要与编程语言、编译器与虚拟机相关,跟Java开发关系并不是很紧密。不过这些知识还是可以发挥作用的,例如说最近有机会读一些线上系统的GC日志,此时就可以把以前积累的虚拟机相关知识运用到实战中;也有些需求是要写parser的,也正好可以运用上编译原理的知识。知识总是积累了之后才会发现它们的意义。
带来的书有很多是日文的,因为我知道过来这边要找身边的人借中文书或者英文影印版都还容易,要找我那些日文书就难了,所以就干脆自己带过来。
To同事们:对图中技术书有兴趣读的可以问我借。保持书的整洁还有记得还给我就行……
To还不是同事的朋友们:想读这些书的话可以过来跟我们成为同事 XDD
啊,突然想起我那本有Matz签名的The Ruby Programming Language有同事借了还没还给我……
我手上的书貌似不少在国内的阅读圈都不主流,但不主流跟“非主流”是不同的,跟“非主流”!
发扬我喜欢放链接的好传统,免去大家自己放狗的麻烦。
从左边开始:
1、阿里味儿
公司发的刊物。很明显这盒我还没拆开过,权当是收藏了吧。简短介绍如是说:
不知道什么时候会读一读里面的内容呢……
2、Introduction to Computing Systems - From Bits and Gates to C and Beyond
好书。大一的计算系统基础课的课本。原书的第一版。奠定了我对计算系统的知识的基础。循序渐进的介绍了计算系统的基础,从数据表示的方式,到基本电路,到简单的汇编,到简单的C,一步步带领读者进入计算机与编程的世界。
如果以后有时间专门写推荐书的帖的话我肯定要先写这本的,以表达我的敬意。
带这本书过来本来是想推荐给Saito同学读的。他经不住我的忽悠读了一点,结果后来买了原书第二版的中文版来读。
3、程序设计语言理论基础
好书。John C. Mitchell的Foundations for Programming Languages的中文翻译版。从lambda演算入手讲解编程语言的基础理论,后面也提到一些类型系统的性质之类的。定理证明很多,要真的深入学习编程语言的话还是需要像这样的一本书来巩固理论基础的。不想那么深究的话就别读这类书了,脑子会被定理证明塞爆的……orz
4、Implementation of Functional Languages
IFL 2000的论文选集。从coolspeed那儿买来的。虽然很薄不过还没全部读完。
一些实验性的idea非常有趣,所以才会吸引我买了这本。就算是收藏也好……要真为了读论文的话买这些论文集还是太贵了。还是直接从ACM抓论文下来读比较靠谱……
5、软件调试
好书。给人的第一感觉就是“厚”,沉甸甸的知识。知识的主线是以Windows/x86上的调试来串起来的,也包含了许多原理性知识和历史知识,CPU、操作系统、编译器与调试器是如何支持调试过程的都有详细的讲解。
不过也确实是厚了点,要读完的话很花功夫。我读了前面一关于历史的部分后就跳到后面Windbg的部分拿它当工具书读了,中间的部分在慢慢补……
6、程序员的自我修养——链接、装载与库
好书。其实跟上一本书涉及的概念是很类似的?这本则主要以Linux/x86与Windows/x86平台为例子入手讲解链接、装载与库的知识。整体感觉不错。
读的时候一些细节要留心不要被忽悠了,例如说6.5小节里说:
Java的.class文件开头不是C、A、F、E、B、A、B、E的8个ASCII字符,而是按big-endian顺序排列的0xCAFEBABE这个整型数字,4个字节。我猜很多读者快速阅读的时候根本不会留意到细节上有这种陷阱,所以大概不会太影响阅读吧。
7、JavaScript语言精髓与编程实践
好书。很佩服作者能花很多精力去判别各个JavaScript引擎间的行为差异,并能提出相对合理的解释。
引入upvalue,以及参考犀牛书引入ScriptObject、varDecl、funDecl等“名词”来解释概念或许也算是个不错的切入点吧,毕竟用一个假想的实现来讲解比完全抽象的讲解要形象写。但读了很多JavaScript引擎的源码后才读这本书,会觉得这种解释方式反而有点别扭。例如说“upvalue”一词确实是有“在闭包中已绑定值的自由变量”,在Lua里也有作为一个明确的概念被写到文档里,不过在JavaScript的规范、文档和JS引擎的源码里都没见过直接用这个词。
有些小细节也值得再斟酌一下。像4.5.1小节里说:
这段话前后都没什么问题,但ECMA-262里没有对普通函数调用时传参数的顺序做过任何规定。规范里规定了要遵循从左到右的求值顺序(ECMA-262 5th, 11.8.5),也规定了Function.prototype.call()构造argList的顺序(ECMA-262 5th, 15.3.4.4),但这些跟“传参顺序”其实都没关系。一个语言/语言处理器完全可以采用从左到右的求值顺序,同时采用从右到左的传参(压栈)顺序。上面引用的那段话要是不提传参顺序的话就好了。当然,实际上许多JavaScript引擎采用从左向右的传参顺序;刚看了下V8的源码确认了它在x86上是按这个顺序的。
对“JavaScript是否可编译”这点我保留自己的看法。
Qomo那章一直还没读……什么时候心血来潮再读吧~
8、Objective-C 2.0程序设计(原书第2版)
从Saito同学那边借来的。刚开始读,还谈不上什么看法。以前对Objective-C与NeXTSTEP/Foundation的了解很零碎,没有系统性学习过。最近或许会在睡觉前的时间读读这本书吧。
9、The Root of .NET Framework
嗯……也算是好书吧。作者荒井省三在微软日本工作,貌似是“传教士”……呃呵呵,“传教士”真是有趣的职业。
这是本讲解CLR的历史与一些设计理念、特性的书。有丰富的、可操作的例子,带领读者通过使用SOS扩展来探索CLR。看得出来作者也花了很多时间做实验来收集数据和整理相关原理。
反正很薄,才200页多一点的16开,读起来一点也不费力。跟随作者的引导去探索CLR的过程也挺有趣的。
10、まつもとゆきひろ コードの世界~スーパー·プログラマになる14の思考法
有趣的书。这是Ruby语言的创始人,Matz在日経Linux上连载的专栏整理而成的一本书。性质上跟《Java夜未眠》一样吧。
内容主要是入门级的,不过涉及的面比较广。有人说这是Ruby的fanbook。嗯,确实整本书透露这浓郁的Ruby气息。每次需要演示“冗长的代码”的时候就会拿Java开涮,哈哈。
对我来说这是本“了解语言设计者的想法”的一本好书,是怎样的思路带出了Ruby现在的设计,这点让我感兴趣。
共有14章:
第1章 我为何开发了Ruby
第2章 关于对象
第3章 关于block
第4章 关于设计模式
第5章 关于Ajax
第6章 关于Ruby on Rails
第7章 关于文字编码
第8章 关于正则表达式
第9章 关于整数与浮点数
第10章 关于程序的速度优化和并行化
第11章 关于程序的安全性
第12章 关于涉及时间的程序
第13章 关于数据的持久化
第14章 关于函数式编程语言(等)
11、Python源码剖析——深度探索动态语言核心技术
好书。这本和上面提到的三本国内作者原创的技术书我都觉得非常不错,值得推荐给对稍微底层一点的知识有兴趣的同学。
这本源码剖析的书可以说填补了国内关于虚拟机的书的一个空白,详细的讲述了CPython 2.5的虚拟机部分的设计与实现。它跟《Rubyソースコード完全解説》(英文名是《Ruby Hacking Guide》,JavaEye这边有部分中文翻译)的出发点相似,两者都是讲解一个动态语言的实现的书。对底层实现感兴趣的Python爱好者来说这本书肯定能带来很多乐趣。
主要涉及的内容包括运行时系统中的对象系统、加载机制、线程调度与内存管理,还有作为虚拟机核心的执行引擎等部分。Python源码级编译器在开头稍微提了一下。
不过话说回来,正是因为国内出版界一直没有什么关于虚拟机的好的原创书,我对这本书一开始的期待也是过高了——我原本期望它能在讲解CPython 2.5的基础之上能稍微扩展一下,提一下“如果不这样实现,更高效的实现方式会是怎样的”,因为CPython的实现错失了这十几年来虚拟机技术的发展,或者说是为了低成本维持可移植性,而使用了许多直观但并不怎么高效的实现方式。看看近两三年来各JavaScript发布新版本的时候宣传的相对上个版本的性能提高是多么夸张,就可以想像同样的技术应用在CPython上能带来多大的性能飞跃。而这些JavaScript引擎用的许多技术都是80年代末90年代初的了(如类型反馈优化),也有些2000年后的(如context-threading),除了trace-based compilation外其它大都不算新了。如果能有本书讲解这些技术会让我更加兴奋。
当然这跟本书的定位就不一致了,后来想想觉得这本书在自己的定位上已经非常不错了 ^_^
12、虚拟机——系统与进程的通用平台(英文版)
非常值得推荐的书。虚拟机方面的“集大成”之作。
印象中我是06还是07年在一个新华书店里闲逛的时候第一次看到这本书的,一看到就难掩惊喜马上买了本。难得在新华书店买本书orz
虚拟机,或者说“虚拟化技术”,在许多不同场合都有应用。因而“虚拟机”一词也有许多不同的解释方式。这本书最强悍的地方就是把“虚拟机”作为一个统一的概念来概括,介绍了其共性以及实现思想,然后在进程虚拟机、高级语言虚拟机、协设计虚拟机、系统虚拟机与多处理器虚拟化等方面再加以具体讲解,把整个领域中的概念流畅的串了起来。
这本书带到学校去读着读着不见了,又从同学那边买了一本,结果刚买第二本就找到了第一本 TvT 不过原来那本的第2-6章也已经给翻得有点残了,买本新的也好……
13、深入Java虚拟机(原书第2版)
Bill Venners写的《Inside The Java Virtual Machine》第二版的中文翻译版。
原书在它刚出版的时候是本非常值得推荐的书,配合JVM规范一起读可以帮助读者形象的理解规范里规定的“概念上的JVM”的各个方面。不过这本不是描述JVM实现技巧的书,想要看高效的解释器或JIT编译器是如何实现的话,这本不是合适的书。另外,这本书原书是2000出版的,有些描述现在看已经过时了。要是能出本新版就好了。
至于中文翻译版……每次提到都忍不住想吐槽。这次就不多吐了。没有引进影印版真是可惜。总之我的建议是如果能找到原版读就读原版吧,Artima上好歹有放出一些免费章节。
14、Shared Source CLI Essentials
本次重点推荐的书之一。对现实中的高级语言虚拟机的设计理念与实现方式有兴趣的同学,在条件允许的情况下请一定要读读这本书。我这本是有一次在China-pub上看到有这本的原版书卖才买到的。
Shared Source Common Language Infrastructure,简称Shared Source CLI或者SSCLI,是微软商用的.NET实现的一个子集。其中包括一个完整的CLI实现,也含有C#编译器、JScript.NET编译器和.NET的Base Class Library(BCL)。
《Shared Source CLI Essentials》主要介绍的是SSCLI中虚拟机部分,也就是CLI的实现。该实现很大部分的源码都与商用版CLR是一样的,特别是运行时支持的部分。SSCLI含有JIT编译器与GC的实现,不过这两部分与商用CLR不一样,是非常简单的版本。即便如此,其中的macro JIT编译器与分代式GC的实现仍然值得初接触高级语言虚拟机的人阅读,毕竟完整的实现出了功能,而且比CPython、CRuby等的解释器、GC实现高效多了。而这里介绍的这本书就是引导阅读SSCLI源码的利器。
所谓“条件允许”,是指阅读这本书必须要遵循SSCLI的许可证。SSCLI开放了.NET的CLR中许多关键源代码,但它并不是“开源”(大写Open Source)的——它的许可证只允许非商业目的的使用,主要支持教育目的的使用。如果想对Mono或DotGNU Portable.NET等项目贡献代码的话,就请不要阅读本书也不要接触SSCLI的源代码。
其实Sun的JDK(包括HotSpot VM在内)也有以Sun Community Source Licensing(SCSL)或Java Research License(JRL)许可证开放源码,与SSCLI一样不是“开源”的。现在Sun的JDK以GPLv2+CE开源了,人们就有更多机会探寻高效的、实用的高级语言虚拟机的内部实现了。不过一直没有好书像这本书一样介绍HotSpot的内部实现。
封面大图:
这本书在国内没有影印版,一直觉得很可惜。不过想读这本书的同学不用着急,因为后来微软非正式的放出了本书第二版的电子版。第一版对应2002年出的SSCLI 1.0,而第二版对应2006年出的SSCLI 2.0。后者在前者基础上新添了一些功能,最显著的是lightweight code generation(LCG)与泛型的实现;执行机制也有些改进,例如接口方法的分派改为使用stub-based virtual dispatch,等。SSCLI 2.0与现在还在广泛使用的.NET 3.5中的CLR在许多方面是一样的,现在去学习也尚未过时。
附带链接:SSCLI 2.0源码下载
15、やさしいインタープリタの作り方入門——オリジナルなインタープリタを作成する
不能行的一本书……买下这本书让我再次认识到我偶尔会明知山有虎偏往虎山行,明明已经看到这本书的评价很低了却非要买来看看到底是怎么个低法。诶要是不买就能先预览一下实际内容的话我或许就不会买了。
一半篇幅都是照贴代码,每过几段话就有一句这本的姐妹书やさしいコンパイラの作り方入門的广告。
感觉初学者要是读这本书的话会被带坏……居然用行解释器的方式去实现类似BASIC的语言,这么低效且混乱的方式早就不该推荐了。书中也提到可以用编译器-虚拟机的方式来实现解释器——但“请读姐妹书《やさしいコンパイラの作り方入門》”。可恶。在Amazon上看书评,那本姐妹书贴代码的比例比这本更多,简直就是恶劣啊。
16、スクリプトエンジン プログラミング——オリジナル言語の設計と実装
坂本千尋写的《脚本引擎编程》。之前买过该作者的另一本书,《Visual C++冒险游戏程序设计》,读了之后没觉得有什么特别出彩的地方,所以对这本原本也没抱多少期望。不过实际读了这本之后感觉倒还不错。
这本书主要通过范例介绍用C++实现源码级编译器与字节码解释器的方式,大量使用了STL,也有地方用到Boost。
作为入门书来说涉及的面挺广的。编译器方面,范例包括手写递归下降式解析器、通过bison生成LALR解析器,以及通过boost::spirit构造递归下降式解析器等;解析到AST后的代码(字节码)生成基本上都一样;范例实现的语言有一个类似BASIC的也一个类似C的。虚拟机方面,基于栈与基于寄存器的虚拟机都有实现范例。也有介绍到与Windows程序的整合,毕竟“脚本引擎”嘛嵌入到别的应用里提供脚本扩展功能是重要的应用场景。运行时支持方面稍微弱一些,没有详细介绍面向对象类型系统、GC等话题。
觉得这本书给脚本引擎的入门者读还挺不错的,比《游戏脚本高级编程》感觉废话更少,更充实些。
17、プログラミング言語を作る
前橋和弥写的一本书。他在出这本书前,在他自己的个人主页和hatena日记上一直在连载自己写原创编程语言的过程。然后终于有一天把这些整理成了一本书发出来,就是这里介绍的这本。我是08年开始关注他的主页和博客,一看到出书了就第一时间买了本支持下。
书中的两个主要范例是:
● Crowbar,动态类型、支持嵌套函数/匿名函数/闭包的语言,有标记-清除式的GC,后期加入正则表达式支持,类似JavaScript。解释器是树遍历式的。
● Diksam,静态类型的面向对象语言,与Java/C#类似。同样有标记-清除式GC。解释器是字节码解释器,字节码指令集很大程度上参考了JVM的。
书中范例是用C来实现的。解析器主要是用yacc/bison生成的,也有个简单的四则混合运算计算器是用了手写的递归下降式解析器。
这本书介绍的实现方式虽然也都比较入门级,不过里面穿插的作者对编程语言的一些见解倒是挺有趣的,像Java与C#在抛异常上的差异这种细节都能点出来,所以可以一读。这本跟前面的《脚本引擎编程》配合读的话正好就基本上能把解释器/虚拟机入门都了解到了。
18、Rubyで作る奇妙なプログラミング言語
用Ruby来实现奇妙的语言。或者说“诡异”的、“难懂”的语言。
这是本娱乐性相当强的书。开头介绍了三种现有的诡异语言,HQ9+、Brainf*ck、Whitespace的实现方法;然后发挥想像力,原创了Starry与Bolic两种诡异语言;最后介绍了一堆有名的诡异语言,像Shakespere、Unlambda、INTERCAL之类。其中Starry语言我以前发过一帖介绍。
抛开实现的语言的“语法表面”很诡异之外,内在的实现方式其实跟前面介绍的两本相似,主要都是源码级编译器+树遍历/字节码解释器这种组合,不过这本讲的浅一些。对习惯使用Ruby并且对语言处理器入门感兴趣的同学来说,这会是本有趣的书。
19、ふつうのコンパイラをつくろう
本次重点推荐的书之二。青木峰郎写的编译器入门书。如果你对作者的名字有印象的话——没错,他就是《Ruby Hacking Guide》的作者。3200日元的订价,买到的却是一本厚达672页A5纸、内容丰富、语言流畅的编译器入门书。要我用一个词形容这本书的话,那就是:“超值”。
书的内容是用Java实现一个简化·现代化版的C语言,称为Cb(读作C-flat,那个“b”是降音记号,正好跟C#的升音记号相对),对应平台是Linux/x86。作者的目标是把编译、汇编、链接、装载这样的实现编程语言执行的全过程贯穿在一起讲解。限定在Linux/x86上是为了能在开放且易于入手的环境中提供具体的例子来讲解概念。
书中介绍的Cb编译器的解析器是通过JavaCC生成的递归下降式解析器。解析出抽象语法树之后,接着是语义分析,主要是作用域检查和静态类型检查。然后生成中间代码;中间代码是参考了虎书的树形中间表示;在中间代码上会做少量优化。再接下来生成x86汇编,然后交由binutils的as生成ELF格式的目标代码,再由ld链接为可执行文件。
书中除了介绍编译器外,对x86体系结构、ELF文件的格式与其装载·执行,还有运行Cb所需的运行时支持系统都有详细的介绍。与龙书第二版相比,这本更加注重实践,更适合一步步跟着例子来学习。
封面大图:
20、高级编译器设计与实现
鲸书中文版。不需要多说,这本书只能用“彪悍”来形容。它侧重介绍传统编译器中的各种优化技巧,是写优化编译器必读的书。
有种说法是编译器相关三本最有名的书是虎书、龙书与鲸书。这就是那传说中的鲸书了。在学校的时候我是长期借这学院图书室的影印版来读,毕业后就靠这本中文版了,觉得翻译得还不错就没再买影印版。
21、编译原理技术与工具(第二版)
龙书影印版。传说中的龙书,也不需要怎么介绍了吧。
要说鲸书是进阶必读的话,那龙书就算是入门必读吧 >_<
内容跟第一版相比最大的变化恐怕就是增加了面向对象方面的内容,还有一章不错的GC入门,另外就是范例源码都变成用Java来写了。可怜的我刚买了本第一版的影印版没过多久就看到第二版的影印版出版了。
============================================================================
当然我也不是只收技术书。娱乐书也有的。这个就不都拖出来晒了……
To同事们:这些是不借的,谢谢。
● ななつのあしおと
名字该怎么翻译好呢,七彩足迹?七个脚印?
七尾留奈的第二本画集。内容以sola和Canvas 2为主,也有些版权画。
据说七尾主要只是画线稿,上色啊啥的都是让九尾和其他职员做的。不过这不重要,我只有看到漂亮的画就满足了……
● Fate/stay night 遠坂凛写真集
这个……好薄啊!同期入手的另外一本,劇場版Fate/stay night UNLIMITED BLADE WORKS 公式ガイドブック也是好薄 T T
● ゆびさきミルクティー 単行本8 & 9
传说中的指尖奶茶/少年美眉。给我带来治愈感的漫画。单行本1-7还在家里,这8和9是来到杭州之后才买的。时隔两年连载重开的时候湿了,听说要下一话就要被腰斩又湿了。
============================================================================
除了书之外的实体娱乐……钢普拉。
● HG蛋蛋(上)和HG蛋蛋七剑/G(下)
模型技术真是日异月新。现在连HG的可动性都如此好了。经常拿出来摆各种pose玩。
从家里带来杭州的只有上面那台HG蛋蛋,是最老的一款,不包括蛋Raiser。另外几盒蛋蛋都没带过来。七剑则是年后才买的。
============================================================================
================================= 强力分界线 =================================
============================================================================
从右向左数:
1、龙书第一版影印版
2、龙书第二版影印版,前面提过了
3、可变目标C编译器,讲LCC的。可惜翻译得实在恶劣,糟蹋了好书
4、鲸书中文版
5、虎书C版中文版。虎书还是ML版写得最好啊……
6、课本。学弟学妹们就幸福了,课本用龙书第二版,我们这本觉得不够好……
7、Engineering a Compiler
8、张幸儿老师写的计算机编译原理。这本的感觉其实不太能行,即便是描述概念的部分也不够好。
9、ふつうのコンパイラをつくろう,前面提过了
10、プログラミング言語を作る,前面提过了
11、Rubyで作る奇妙なプログラミング言語,前面提过了
12、Python源码剖析,前面提过了
13、深入Java虚拟机,前面提过了
14、Shared Source CLI Essentials,前面提过了
15、虚拟机——系统与进程的通用平台,前面提过了
16、Game Scripting Mastery的中文版。一些朋友觉得这本书非常不错。如果以“非常不错”的基准来评价它的话,我是觉得这本书的废话太多了,后面实现的脚本引擎的例子用的技巧也不够好。要是想编译原理入门的话还不如读龙书好了,运行时/虚拟机方面……总之也可以读些别的资料。
17、IFL 2000论文选集,前面提过了
18、Programming Language Pragmatics第二版的中文版。值得大力推荐。
原书的知识覆盖面非常广,而且形成了知识体系,可以协助读者将许多知识串到一起,启发读者进一步寻找资料深入学习。
裘宗燕老师翻译得也不错。虽然具体到一些技术词汇我习惯的译法跟裘老师的译法不同,但并没有影响阅读,整体感觉还是很流畅的。
19、Languages and Machines: An Introduction to the Theory of Computer Science,第三版的影印版。对我来说是重要的参考书。自动机理论方面讲得不错。
最近这个方面关注的书是《自动机理论与应用(影印版)》,或许更好。
20、Introduction to Automata Theory, Languages, and Computation,第三版的影印版。也是本强悍的书……
21、Foundations for Programming Languages的中文版,前面提过了
一些语言书
Ruby语言的话我就只推荐The Ruby Programming Language了。斧头书没啥爱。
JavaScript方面,最早买的一本犀牛书被翻烂了,只好又买了本新的不过就一直没拆过。
C++需要读的书太多了,语言入门的话还是The C++ Programming Language就行。
Java那本是课本。入门书,不过并没有留下特别好的印象。要推荐Java语言和标准库相关的书的话我会推荐Core Java系列。
VB……咳咳,这是大一的时候为了帮某人做VB作业才买了对应的课本。泪目。
Restful Web Service是真的把我引到Ruby世界的一本书。读这本书之前一直只是听说过Ruby但缺乏用它的动机,而为了深入学习这本书的内容我才开始真的学习Ruby,学了之后觉得很爽就把日常脚本性质的程序都转用Ruby来写了。想想以前用Java写那种程序真是杀鸡用牛刀……
操作系统、逆向工程之类的一些相对底层一点的书
最右边那本书名叫Cracking Bible,很厚,硬皮。因为内容很浅所以整本很快就读完了。涉及的面倒还算丰富,可惜都不够深入,达不到“bible”级啊。啊,不过要是跟国内的各种“宝典”书比的话那还是好多了。
数学书,还有一大堆《程序员》
04年底开始每期《程序员》都买了。在惯性驱使下最近也还在买——它是我现在唯一一本每月必买的杂志了。航空世界、兵器、兵器知识之类的都被我抛弃了。
编译、编程语言、算法、数学、游戏编程之类的
编译相关的书有些重复的就放这一格了。SICP也在这里。Code Complete我有好几本,放在这里的是收藏用了;有本中文版的送给同学了。
算法导论一直没读完……遗憾。
右边有些吉里吉里2和NScripter的使用技巧类的书,在国内没见过有出版。
有本叫ゲームエンジンプログラミング的书,书名翻译过来的话是《游戏引擎编程》,觉得写得还可以。书中用C来模拟面向对象编程,有分模块的思考,后面也做了个简单的脚本引擎,最终做出来的是一个简单的AVG游戏引擎。初学的话读这个感觉还行吧。
袖珍计算机实用程序
这书在豆瓣上没搜到,莫非在老书当中都算是不主流的?
小学的时候跟一个好朋友交换的书。好像是用一个遥控航模的书跟他换的。这本没记错的话是一些BASIC写的小程序啊游戏啥的,印象中有一个例子是打飞……高射炮的游戏(orz)。
换来这本书后在QB里抄了两三个例子之后就失去兴趣了。结果上大学前都没好好学过编程。浪费资源啊 T T
漫画、小说、CD和杂物
还有一格杂书,网络啊数据库啊之类的,没留下真相。
● Windows 7家庭高级版
过年的时候帮爷爷买的。爷爷控诉Vista不好用,跟我说周围很多人都建议他换回到XP。我是觉得爷爷那么新的电脑不应该再配年迈的XP了,决定还是升上Win7好了。反正爷爷的使用习惯是从Vista建立的,换到Win7应该不会太不适应吧。
● PG的蛋蛋
PG就是PG,品质一流。透明装甲和专用台架也入手了。只不过扔在家里不知道猴年马月才有机会组起来。过年在家的时候只够时间打开盒子看看说明书摸摸板件 T T
期待哪天毛笔同学回国来跟我先把之前还没组好的PG Strike先解决了 T T
没啊,好久没动过这帖。阅读器也有抽风的时候吧……要不然就是JE……
这本啊……英文版没见过,中文版要是有人翻译的话或许就有了吧(逃
不要逃啊,中文版就靠你了啊
这本啊……英文版没见过,中文版要是有人翻译的话或许就有了吧(逃
你是说哪本?
Introduction to Computing Systems - From Bits and Gates to C and Beyond
<< 在这个的话你不是也上了同一门课么……?
《ふつうのコンパイラをつくろう 》这本。日文我可是完全没辙了。
你是说哪本?
Introduction to Computing Systems - From Bits and Gates to C and Beyond
<< 在这个的话你不是也上了同一门课么……?
之前我从来没发过有这么多书的照片而已……虽说确实也是买了些新书
下面的图宽度比较大的请点击放大。
我的技术书基本上都扔家里了。辛辛苦苦花了近1K RMB才把那些书从学校搬回了家,再搬来杭州感到有点力不从心了。以后有机会回家再搬些过来吧。
把我带到杭州来的书,以及从部门图书室、一位师兄和Saito处借来的技术书堆在一起,大概是这么个样子:
我带过来的书主要与编程语言、编译器与虚拟机相关,跟Java开发关系并不是很紧密。不过这些知识还是可以发挥作用的,例如说最近有机会读一些线上系统的GC日志,此时就可以把以前积累的虚拟机相关知识运用到实战中;也有些需求是要写parser的,也正好可以运用上编译原理的知识。知识总是积累了之后才会发现它们的意义。
带来的书有很多是日文的,因为我知道过来这边要找身边的人借中文书或者英文影印版都还容易,要找我那些日文书就难了,所以就干脆自己带过来。
To同事们:对图中技术书有兴趣读的可以问我借。保持书的整洁还有记得还给我就行……
To还不是同事的朋友们:想读这些书的话可以过来跟我们成为同事 XDD
啊,突然想起我那本有Matz签名的The Ruby Programming Language有同事借了还没还给我……
我手上的书貌似不少在国内的阅读圈都不主流,但不主流跟“非主流”是不同的,跟“非主流”!
发扬我喜欢放链接的好传统,免去大家自己放狗的麻烦。
从左边开始:
1、阿里味儿
公司发的刊物。很明显这盒我还没拆开过,权当是收藏了吧。简短介绍如是说:
引用
十年了,市面上有无数关于阿里巴巴的书,但阿里味儿到底是个什么味呢?
历时两个月时间,汇集百余位阿里人的创作,收录了160余篇阿里巴巴十年来战略管理、文化发展、员工成长的精髓,重达2斤的《阿里味儿》终于新鲜出炉了!
整套书包括:《看想》、《故事》、《悟道》,共计三本。
阿里味什么味儿?请翻开你手中的这本《阿里味儿》,在油墨清香中寻找答案!
也许,你能了解一些重大历史事件的幕后,
也许,你能扒到几则重量级的“八卦”,
也许,你能在字里行间找到自己的影子……
你在阿里所看所思所经历,有18000名阿里人与你分享
历时两个月时间,汇集百余位阿里人的创作,收录了160余篇阿里巴巴十年来战略管理、文化发展、员工成长的精髓,重达2斤的《阿里味儿》终于新鲜出炉了!
整套书包括:《看想》、《故事》、《悟道》,共计三本。
阿里味什么味儿?请翻开你手中的这本《阿里味儿》,在油墨清香中寻找答案!
也许,你能了解一些重大历史事件的幕后,
也许,你能扒到几则重量级的“八卦”,
也许,你能在字里行间找到自己的影子……
你在阿里所看所思所经历,有18000名阿里人与你分享
不知道什么时候会读一读里面的内容呢……
2、Introduction to Computing Systems - From Bits and Gates to C and Beyond
好书。大一的计算系统基础课的课本。原书的第一版。奠定了我对计算系统的知识的基础。循序渐进的介绍了计算系统的基础,从数据表示的方式,到基本电路,到简单的汇编,到简单的C,一步步带领读者进入计算机与编程的世界。
如果以后有时间专门写推荐书的帖的话我肯定要先写这本的,以表达我的敬意。
带这本书过来本来是想推荐给Saito同学读的。他经不住我的忽悠读了一点,结果后来买了原书第二版的中文版来读。
3、程序设计语言理论基础
好书。John C. Mitchell的Foundations for Programming Languages的中文翻译版。从lambda演算入手讲解编程语言的基础理论,后面也提到一些类型系统的性质之类的。定理证明很多,要真的深入学习编程语言的话还是需要像这样的一本书来巩固理论基础的。不想那么深究的话就别读这类书了,脑子会被定理证明塞爆的……orz
4、Implementation of Functional Languages
IFL 2000的论文选集。从coolspeed那儿买来的。虽然很薄不过还没全部读完。
一些实验性的idea非常有趣,所以才会吸引我买了这本。就算是收藏也好……要真为了读论文的话买这些论文集还是太贵了。还是直接从ACM抓论文下来读比较靠谱……
5、软件调试
好书。给人的第一感觉就是“厚”,沉甸甸的知识。知识的主线是以Windows/x86上的调试来串起来的,也包含了许多原理性知识和历史知识,CPU、操作系统、编译器与调试器是如何支持调试过程的都有详细的讲解。
不过也确实是厚了点,要读完的话很花功夫。我读了前面一关于历史的部分后就跳到后面Windbg的部分拿它当工具书读了,中间的部分在慢慢补……
6、程序员的自我修养——链接、装载与库
好书。其实跟上一本书涉及的概念是很类似的?这本则主要以Linux/x86与Windows/x86平台为例子入手讲解链接、装载与库的知识。整体感觉不错。
读的时候一些细节要留心不要被忽悠了,例如说6.5小节里说:
引用
而Java的可执行文件格式的头4个字节为'c'、'a'、'f'、'e';
Java的.class文件开头不是C、A、F、E、B、A、B、E的8个ASCII字符,而是按big-endian顺序排列的0xCAFEBABE这个整型数字,4个字节。我猜很多读者快速阅读的时候根本不会留意到细节上有这种陷阱,所以大概不会太影响阅读吧。
7、JavaScript语言精髓与编程实践
好书。很佩服作者能花很多精力去判别各个JavaScript引擎间的行为差异,并能提出相对合理的解释。
引入upvalue,以及参考犀牛书引入ScriptObject、varDecl、funDecl等“名词”来解释概念或许也算是个不错的切入点吧,毕竟用一个假想的实现来讲解比完全抽象的讲解要形象写。但读了很多JavaScript引擎的源码后才读这本书,会觉得这种解释方式反而有点别扭。例如说“upvalue”一词确实是有“在闭包中已绑定值的自由变量”,在Lua里也有作为一个明确的概念被写到文档里,不过在JavaScript的规范、文档和JS引擎的源码里都没见过直接用这个词。
有些小细节也值得再斟酌一下。像4.5.1小节里说:
引用
在JavaScript中,函数参数值只支持一种调用约定。它的特点表现为:
■ 从左至右向函数传入参数;
■ 传入参数的引用,函数内对它的任何修改都不会被传出;
■ 传入参数个数(相对于函数声明时的形式参数)是可变的。
■ 从左至右向函数传入参数;
■ 传入参数的引用,函数内对它的任何修改都不会被传出;
■ 传入参数个数(相对于函数声明时的形式参数)是可变的。
这段话前后都没什么问题,但ECMA-262里没有对普通函数调用时传参数的顺序做过任何规定。规范里规定了要遵循从左到右的求值顺序(ECMA-262 5th, 11.8.5),也规定了Function.prototype.call()构造argList的顺序(ECMA-262 5th, 15.3.4.4),但这些跟“传参顺序”其实都没关系。一个语言/语言处理器完全可以采用从左到右的求值顺序,同时采用从右到左的传参(压栈)顺序。上面引用的那段话要是不提传参顺序的话就好了。当然,实际上许多JavaScript引擎采用从左向右的传参顺序;刚看了下V8的源码确认了它在x86上是按这个顺序的。
对“JavaScript是否可编译”这点我保留自己的看法。
Qomo那章一直还没读……什么时候心血来潮再读吧~
8、Objective-C 2.0程序设计(原书第2版)
从Saito同学那边借来的。刚开始读,还谈不上什么看法。以前对Objective-C与NeXTSTEP/Foundation的了解很零碎,没有系统性学习过。最近或许会在睡觉前的时间读读这本书吧。
9、The Root of .NET Framework
嗯……也算是好书吧。作者荒井省三在微软日本工作,貌似是“传教士”……呃呵呵,“传教士”真是有趣的职业。
这是本讲解CLR的历史与一些设计理念、特性的书。有丰富的、可操作的例子,带领读者通过使用SOS扩展来探索CLR。看得出来作者也花了很多时间做实验来收集数据和整理相关原理。
反正很薄,才200页多一点的16开,读起来一点也不费力。跟随作者的引导去探索CLR的过程也挺有趣的。
10、まつもとゆきひろ コードの世界~スーパー·プログラマになる14の思考法
有趣的书。这是Ruby语言的创始人,Matz在日経Linux上连载的专栏整理而成的一本书。性质上跟《Java夜未眠》一样吧。
内容主要是入门级的,不过涉及的面比较广。有人说这是Ruby的fanbook。嗯,确实整本书透露这浓郁的Ruby气息。每次需要演示“冗长的代码”的时候就会拿Java开涮,哈哈。
对我来说这是本“了解语言设计者的想法”的一本好书,是怎样的思路带出了Ruby现在的设计,这点让我感兴趣。
共有14章:
第1章 我为何开发了Ruby
第2章 关于对象
第3章 关于block
第4章 关于设计模式
第5章 关于Ajax
第6章 关于Ruby on Rails
第7章 关于文字编码
第8章 关于正则表达式
第9章 关于整数与浮点数
第10章 关于程序的速度优化和并行化
第11章 关于程序的安全性
第12章 关于涉及时间的程序
第13章 关于数据的持久化
第14章 关于函数式编程语言(等)
11、Python源码剖析——深度探索动态语言核心技术
好书。这本和上面提到的三本国内作者原创的技术书我都觉得非常不错,值得推荐给对稍微底层一点的知识有兴趣的同学。
这本源码剖析的书可以说填补了国内关于虚拟机的书的一个空白,详细的讲述了CPython 2.5的虚拟机部分的设计与实现。它跟《Rubyソースコード完全解説》(英文名是《Ruby Hacking Guide》,JavaEye这边有部分中文翻译)的出发点相似,两者都是讲解一个动态语言的实现的书。对底层实现感兴趣的Python爱好者来说这本书肯定能带来很多乐趣。
主要涉及的内容包括运行时系统中的对象系统、加载机制、线程调度与内存管理,还有作为虚拟机核心的执行引擎等部分。Python源码级编译器在开头稍微提了一下。
不过话说回来,正是因为国内出版界一直没有什么关于虚拟机的好的原创书,我对这本书一开始的期待也是过高了——我原本期望它能在讲解CPython 2.5的基础之上能稍微扩展一下,提一下“如果不这样实现,更高效的实现方式会是怎样的”,因为CPython的实现错失了这十几年来虚拟机技术的发展,或者说是为了低成本维持可移植性,而使用了许多直观但并不怎么高效的实现方式。看看近两三年来各JavaScript发布新版本的时候宣传的相对上个版本的性能提高是多么夸张,就可以想像同样的技术应用在CPython上能带来多大的性能飞跃。而这些JavaScript引擎用的许多技术都是80年代末90年代初的了(如类型反馈优化),也有些2000年后的(如context-threading),除了trace-based compilation外其它大都不算新了。如果能有本书讲解这些技术会让我更加兴奋。
当然这跟本书的定位就不一致了,后来想想觉得这本书在自己的定位上已经非常不错了 ^_^
12、虚拟机——系统与进程的通用平台(英文版)
非常值得推荐的书。虚拟机方面的“集大成”之作。
印象中我是06还是07年在一个新华书店里闲逛的时候第一次看到这本书的,一看到就难掩惊喜马上买了本。难得在新华书店买本书orz
虚拟机,或者说“虚拟化技术”,在许多不同场合都有应用。因而“虚拟机”一词也有许多不同的解释方式。这本书最强悍的地方就是把“虚拟机”作为一个统一的概念来概括,介绍了其共性以及实现思想,然后在进程虚拟机、高级语言虚拟机、协设计虚拟机、系统虚拟机与多处理器虚拟化等方面再加以具体讲解,把整个领域中的概念流畅的串了起来。
这本书带到学校去读着读着不见了,又从同学那边买了一本,结果刚买第二本就找到了第一本 TvT 不过原来那本的第2-6章也已经给翻得有点残了,买本新的也好……
13、深入Java虚拟机(原书第2版)
Bill Venners写的《Inside The Java Virtual Machine》第二版的中文翻译版。
原书在它刚出版的时候是本非常值得推荐的书,配合JVM规范一起读可以帮助读者形象的理解规范里规定的“概念上的JVM”的各个方面。不过这本不是描述JVM实现技巧的书,想要看高效的解释器或JIT编译器是如何实现的话,这本不是合适的书。另外,这本书原书是2000出版的,有些描述现在看已经过时了。要是能出本新版就好了。
至于中文翻译版……每次提到都忍不住想吐槽。这次就不多吐了。没有引进影印版真是可惜。总之我的建议是如果能找到原版读就读原版吧,Artima上好歹有放出一些免费章节。
14、Shared Source CLI Essentials
本次重点推荐的书之一。对现实中的高级语言虚拟机的设计理念与实现方式有兴趣的同学,在条件允许的情况下请一定要读读这本书。我这本是有一次在China-pub上看到有这本的原版书卖才买到的。
Shared Source Common Language Infrastructure,简称Shared Source CLI或者SSCLI,是微软商用的.NET实现的一个子集。其中包括一个完整的CLI实现,也含有C#编译器、JScript.NET编译器和.NET的Base Class Library(BCL)。
《Shared Source CLI Essentials》主要介绍的是SSCLI中虚拟机部分,也就是CLI的实现。该实现很大部分的源码都与商用版CLR是一样的,特别是运行时支持的部分。SSCLI含有JIT编译器与GC的实现,不过这两部分与商用CLR不一样,是非常简单的版本。即便如此,其中的macro JIT编译器与分代式GC的实现仍然值得初接触高级语言虚拟机的人阅读,毕竟完整的实现出了功能,而且比CPython、CRuby等的解释器、GC实现高效多了。而这里介绍的这本书就是引导阅读SSCLI源码的利器。
所谓“条件允许”,是指阅读这本书必须要遵循SSCLI的许可证。SSCLI开放了.NET的CLR中许多关键源代码,但它并不是“开源”(大写Open Source)的——它的许可证只允许非商业目的的使用,主要支持教育目的的使用。如果想对Mono或DotGNU Portable.NET等项目贡献代码的话,就请不要阅读本书也不要接触SSCLI的源代码。
其实Sun的JDK(包括HotSpot VM在内)也有以Sun Community Source Licensing(SCSL)或Java Research License(JRL)许可证开放源码,与SSCLI一样不是“开源”的。现在Sun的JDK以GPLv2+CE开源了,人们就有更多机会探寻高效的、实用的高级语言虚拟机的内部实现了。不过一直没有好书像这本书一样介绍HotSpot的内部实现。
封面大图:
这本书在国内没有影印版,一直觉得很可惜。不过想读这本书的同学不用着急,因为后来微软非正式的放出了本书第二版的电子版。第一版对应2002年出的SSCLI 1.0,而第二版对应2006年出的SSCLI 2.0。后者在前者基础上新添了一些功能,最显著的是lightweight code generation(LCG)与泛型的实现;执行机制也有些改进,例如接口方法的分派改为使用stub-based virtual dispatch,等。SSCLI 2.0与现在还在广泛使用的.NET 3.5中的CLR在许多方面是一样的,现在去学习也尚未过时。
附带链接:SSCLI 2.0源码下载
15、やさしいインタープリタの作り方入門——オリジナルなインタープリタを作成する
不能行的一本书……买下这本书让我再次认识到我偶尔会明知山有虎偏往虎山行,明明已经看到这本书的评价很低了却非要买来看看到底是怎么个低法。诶要是不买就能先预览一下实际内容的话我或许就不会买了。
一半篇幅都是照贴代码,每过几段话就有一句这本的姐妹书やさしいコンパイラの作り方入門的广告。
感觉初学者要是读这本书的话会被带坏……居然用行解释器的方式去实现类似BASIC的语言,这么低效且混乱的方式早就不该推荐了。书中也提到可以用编译器-虚拟机的方式来实现解释器——但“请读姐妹书《やさしいコンパイラの作り方入門》”。可恶。在Amazon上看书评,那本姐妹书贴代码的比例比这本更多,简直就是恶劣啊。
16、スクリプトエンジン プログラミング——オリジナル言語の設計と実装
坂本千尋写的《脚本引擎编程》。之前买过该作者的另一本书,《Visual C++冒险游戏程序设计》,读了之后没觉得有什么特别出彩的地方,所以对这本原本也没抱多少期望。不过实际读了这本之后感觉倒还不错。
这本书主要通过范例介绍用C++实现源码级编译器与字节码解释器的方式,大量使用了STL,也有地方用到Boost。
作为入门书来说涉及的面挺广的。编译器方面,范例包括手写递归下降式解析器、通过bison生成LALR解析器,以及通过boost::spirit构造递归下降式解析器等;解析到AST后的代码(字节码)生成基本上都一样;范例实现的语言有一个类似BASIC的也一个类似C的。虚拟机方面,基于栈与基于寄存器的虚拟机都有实现范例。也有介绍到与Windows程序的整合,毕竟“脚本引擎”嘛嵌入到别的应用里提供脚本扩展功能是重要的应用场景。运行时支持方面稍微弱一些,没有详细介绍面向对象类型系统、GC等话题。
觉得这本书给脚本引擎的入门者读还挺不错的,比《游戏脚本高级编程》感觉废话更少,更充实些。
17、プログラミング言語を作る
前橋和弥写的一本书。他在出这本书前,在他自己的个人主页和hatena日记上一直在连载自己写原创编程语言的过程。然后终于有一天把这些整理成了一本书发出来,就是这里介绍的这本。我是08年开始关注他的主页和博客,一看到出书了就第一时间买了本支持下。
书中的两个主要范例是:
● Crowbar,动态类型、支持嵌套函数/匿名函数/闭包的语言,有标记-清除式的GC,后期加入正则表达式支持,类似JavaScript。解释器是树遍历式的。
● Diksam,静态类型的面向对象语言,与Java/C#类似。同样有标记-清除式GC。解释器是字节码解释器,字节码指令集很大程度上参考了JVM的。
书中范例是用C来实现的。解析器主要是用yacc/bison生成的,也有个简单的四则混合运算计算器是用了手写的递归下降式解析器。
这本书介绍的实现方式虽然也都比较入门级,不过里面穿插的作者对编程语言的一些见解倒是挺有趣的,像Java与C#在抛异常上的差异这种细节都能点出来,所以可以一读。这本跟前面的《脚本引擎编程》配合读的话正好就基本上能把解释器/虚拟机入门都了解到了。
18、Rubyで作る奇妙なプログラミング言語
用Ruby来实现奇妙的语言。或者说“诡异”的、“难懂”的语言。
这是本娱乐性相当强的书。开头介绍了三种现有的诡异语言,HQ9+、Brainf*ck、Whitespace的实现方法;然后发挥想像力,原创了Starry与Bolic两种诡异语言;最后介绍了一堆有名的诡异语言,像Shakespere、Unlambda、INTERCAL之类。其中Starry语言我以前发过一帖介绍。
抛开实现的语言的“语法表面”很诡异之外,内在的实现方式其实跟前面介绍的两本相似,主要都是源码级编译器+树遍历/字节码解释器这种组合,不过这本讲的浅一些。对习惯使用Ruby并且对语言处理器入门感兴趣的同学来说,这会是本有趣的书。
19、ふつうのコンパイラをつくろう
本次重点推荐的书之二。青木峰郎写的编译器入门书。如果你对作者的名字有印象的话——没错,他就是《Ruby Hacking Guide》的作者。3200日元的订价,买到的却是一本厚达672页A5纸、内容丰富、语言流畅的编译器入门书。要我用一个词形容这本书的话,那就是:“超值”。
书的内容是用Java实现一个简化·现代化版的C语言,称为Cb(读作C-flat,那个“b”是降音记号,正好跟C#的升音记号相对),对应平台是Linux/x86。作者的目标是把编译、汇编、链接、装载这样的实现编程语言执行的全过程贯穿在一起讲解。限定在Linux/x86上是为了能在开放且易于入手的环境中提供具体的例子来讲解概念。
书中介绍的Cb编译器的解析器是通过JavaCC生成的递归下降式解析器。解析出抽象语法树之后,接着是语义分析,主要是作用域检查和静态类型检查。然后生成中间代码;中间代码是参考了虎书的树形中间表示;在中间代码上会做少量优化。再接下来生成x86汇编,然后交由binutils的as生成ELF格式的目标代码,再由ld链接为可执行文件。
书中除了介绍编译器外,对x86体系结构、ELF文件的格式与其装载·执行,还有运行Cb所需的运行时支持系统都有详细的介绍。与龙书第二版相比,这本更加注重实践,更适合一步步跟着例子来学习。
封面大图:
20、高级编译器设计与实现
鲸书中文版。不需要多说,这本书只能用“彪悍”来形容。它侧重介绍传统编译器中的各种优化技巧,是写优化编译器必读的书。
有种说法是编译器相关三本最有名的书是虎书、龙书与鲸书。这就是那传说中的鲸书了。在学校的时候我是长期借这学院图书室的影印版来读,毕业后就靠这本中文版了,觉得翻译得还不错就没再买影印版。
21、编译原理技术与工具(第二版)
龙书影印版。传说中的龙书,也不需要怎么介绍了吧。
要说鲸书是进阶必读的话,那龙书就算是入门必读吧 >_<
内容跟第一版相比最大的变化恐怕就是增加了面向对象方面的内容,还有一章不错的GC入门,另外就是范例源码都变成用Java来写了。可怜的我刚买了本第一版的影印版没过多久就看到第二版的影印版出版了。
============================================================================
当然我也不是只收技术书。娱乐书也有的。这个就不都拖出来晒了……
To同事们:这些是不借的,谢谢。
● ななつのあしおと
名字该怎么翻译好呢,七彩足迹?七个脚印?
七尾留奈的第二本画集。内容以sola和Canvas 2为主,也有些版权画。
据说七尾主要只是画线稿,上色啊啥的都是让九尾和其他职员做的。不过这不重要,我只有看到漂亮的画就满足了……
● Fate/stay night 遠坂凛写真集
这个……好薄啊!同期入手的另外一本,劇場版Fate/stay night UNLIMITED BLADE WORKS 公式ガイドブック也是好薄 T T
● ゆびさきミルクティー 単行本8 & 9
传说中的指尖奶茶/少年美眉。给我带来治愈感的漫画。单行本1-7还在家里,这8和9是来到杭州之后才买的。时隔两年连载重开的时候湿了,听说要下一话就要被腰斩又湿了。
============================================================================
除了书之外的实体娱乐……钢普拉。
● HG蛋蛋(上)和HG蛋蛋七剑/G(下)
模型技术真是日异月新。现在连HG的可动性都如此好了。经常拿出来摆各种pose玩。
从家里带来杭州的只有上面那台HG蛋蛋,是最老的一款,不包括蛋Raiser。另外几盒蛋蛋都没带过来。七剑则是年后才买的。
============================================================================
================================= 强力分界线 =================================
============================================================================
从右向左数:
1、龙书第一版影印版
2、龙书第二版影印版,前面提过了
3、可变目标C编译器,讲LCC的。可惜翻译得实在恶劣,糟蹋了好书
4、鲸书中文版
5、虎书C版中文版。虎书还是ML版写得最好啊……
6、课本。学弟学妹们就幸福了,课本用龙书第二版,我们这本觉得不够好……
7、Engineering a Compiler
8、张幸儿老师写的计算机编译原理。这本的感觉其实不太能行,即便是描述概念的部分也不够好。
9、ふつうのコンパイラをつくろう,前面提过了
10、プログラミング言語を作る,前面提过了
11、Rubyで作る奇妙なプログラミング言語,前面提过了
12、Python源码剖析,前面提过了
13、深入Java虚拟机,前面提过了
14、Shared Source CLI Essentials,前面提过了
15、虚拟机——系统与进程的通用平台,前面提过了
16、Game Scripting Mastery的中文版。一些朋友觉得这本书非常不错。如果以“非常不错”的基准来评价它的话,我是觉得这本书的废话太多了,后面实现的脚本引擎的例子用的技巧也不够好。要是想编译原理入门的话还不如读龙书好了,运行时/虚拟机方面……总之也可以读些别的资料。
17、IFL 2000论文选集,前面提过了
18、Programming Language Pragmatics第二版的中文版。值得大力推荐。
原书的知识覆盖面非常广,而且形成了知识体系,可以协助读者将许多知识串到一起,启发读者进一步寻找资料深入学习。
裘宗燕老师翻译得也不错。虽然具体到一些技术词汇我习惯的译法跟裘老师的译法不同,但并没有影响阅读,整体感觉还是很流畅的。
19、Languages and Machines: An Introduction to the Theory of Computer Science,第三版的影印版。对我来说是重要的参考书。自动机理论方面讲得不错。
最近这个方面关注的书是《自动机理论与应用(影印版)》,或许更好。
20、Introduction to Automata Theory, Languages, and Computation,第三版的影印版。也是本强悍的书……
21、Foundations for Programming Languages的中文版,前面提过了
一些语言书
Ruby语言的话我就只推荐The Ruby Programming Language了。斧头书没啥爱。
JavaScript方面,最早买的一本犀牛书被翻烂了,只好又买了本新的不过就一直没拆过。
C++需要读的书太多了,语言入门的话还是The C++ Programming Language就行。
Java那本是课本。入门书,不过并没有留下特别好的印象。要推荐Java语言和标准库相关的书的话我会推荐Core Java系列。
VB……咳咳,这是大一的时候为了帮某人做VB作业才买了对应的课本。泪目。
Restful Web Service是真的把我引到Ruby世界的一本书。读这本书之前一直只是听说过Ruby但缺乏用它的动机,而为了深入学习这本书的内容我才开始真的学习Ruby,学了之后觉得很爽就把日常脚本性质的程序都转用Ruby来写了。想想以前用Java写那种程序真是杀鸡用牛刀……
操作系统、逆向工程之类的一些相对底层一点的书
最右边那本书名叫Cracking Bible,很厚,硬皮。因为内容很浅所以整本很快就读完了。涉及的面倒还算丰富,可惜都不够深入,达不到“bible”级啊。啊,不过要是跟国内的各种“宝典”书比的话那还是好多了。
数学书,还有一大堆《程序员》
04年底开始每期《程序员》都买了。在惯性驱使下最近也还在买——它是我现在唯一一本每月必买的杂志了。航空世界、兵器、兵器知识之类的都被我抛弃了。
编译、编程语言、算法、数学、游戏编程之类的
编译相关的书有些重复的就放这一格了。SICP也在这里。Code Complete我有好几本,放在这里的是收藏用了;有本中文版的送给同学了。
算法导论一直没读完……遗憾。
右边有些吉里吉里2和NScripter的使用技巧类的书,在国内没见过有出版。
有本叫ゲームエンジンプログラミング的书,书名翻译过来的话是《游戏引擎编程》,觉得写得还可以。书中用C来模拟面向对象编程,有分模块的思考,后面也做了个简单的脚本引擎,最终做出来的是一个简单的AVG游戏引擎。初学的话读这个感觉还行吧。
袖珍计算机实用程序
这书在豆瓣上没搜到,莫非在老书当中都算是不主流的?
小学的时候跟一个好朋友交换的书。好像是用一个遥控航模的书跟他换的。这本没记错的话是一些BASIC写的小程序啊游戏啥的,印象中有一个例子是打飞……高射炮的游戏(orz)。
换来这本书后在QB里抄了两三个例子之后就失去兴趣了。结果上大学前都没好好学过编程。浪费资源啊 T T
漫画、小说、CD和杂物
还有一格杂书,网络啊数据库啊之类的,没留下真相。
● Windows 7家庭高级版
过年的时候帮爷爷买的。爷爷控诉Vista不好用,跟我说周围很多人都建议他换回到XP。我是觉得爷爷那么新的电脑不应该再配年迈的XP了,决定还是升上Win7好了。反正爷爷的使用习惯是从Vista建立的,换到Win7应该不会太不适应吧。
● PG的蛋蛋
PG就是PG,品质一流。透明装甲和专用台架也入手了。只不过扔在家里不知道猴年马月才有机会组起来。过年在家的时候只够时间打开盒子看看说明书摸摸板件 T T
期待哪天毛笔同学回国来跟我先把之前还没组好的PG Strike先解决了 T T
评论
22 楼
jiaotong286
2012-11-22
日文书好多
21 楼
campolake
2011-10-12
刚看到这么多好书,比老赵还猛,牛人咧
20 楼
zjt5916
2011-05-22
......无意中看到这贴 我就泪奔了.....
大大你是哪里毕业 什么学历呀... 是不是神童出身呀.....
大大你是哪里毕业 什么学历呀... 是不是神童出身呀.....
19 楼
RednaxelaFX
2010-05-03
glacjay 写道
嗯?更新什么了?怎么这帖又在我的阅读器里面冒出来了?
没啊,好久没动过这帖。阅读器也有抽风的时候吧……要不然就是JE……
18 楼
glacjay
2010-05-03
嗯?更新什么了?怎么这帖又在我的阅读器里面冒出来了?
17 楼
glacjay
2010-04-07
RednaxelaFX 写道
glacjay 写道
《ふつうのコンパイラをつくろう 》这本。日文我可是完全没辙了。
这本啊……英文版没见过,中文版要是有人翻译的话或许就有了吧(逃
不要逃啊,中文版就靠你了啊
16 楼
juvenshun
2010-04-07
南大的校友?握手!
15 楼
meiowei
2010-04-07
阿里的牛人 崇拜一下。
14 楼
RednaxelaFX
2010-04-07
glacjay 写道
《ふつうのコンパイラをつくろう 》这本。日文我可是完全没辙了。
这本啊……英文版没见过,中文版要是有人翻译的话或许就有了吧(逃
13 楼
glacjay
2010-04-07
RednaxelaFX 写道
glacjay 写道
那个之二,有中文或者英文版么?
你是说哪本?
Introduction to Computing Systems - From Bits and Gates to C and Beyond
<< 在这个的话你不是也上了同一门课么……?
《ふつうのコンパイラをつくろう 》这本。日文我可是完全没辙了。
12 楼
Sword-Breaker
2010-04-07
感觉书的类型不多,看来lz基本都是关心编译相关的东西.出现了凛写真集倒是让我很意外,不过个人觉得这本东西太烂了,跟非常good job的saber写真集没得比....
11 楼
RednaxelaFX
2010-04-06
glacjay 写道
那个之二,有中文或者英文版么?
你是说哪本?
Introduction to Computing Systems - From Bits and Gates to C and Beyond
<< 在这个的话你不是也上了同一门课么……?
10 楼
glacjay
2010-04-06
那个之二,有中文或者英文版么?
9 楼
ZangXT
2010-04-04
mark下。
8 楼
ZangXT
2010-04-04
请问在Java领域和CLR via C#差不多级别的书有哪些?
没有吧。
n年前一本《Inside JVM》,vm规范。
loveclan 写道
请问在Java领域和CLR via C#差不多级别的书有哪些?
没有吧。
n年前一本《Inside JVM》,vm规范。
7 楼
RednaxelaFX
2010-04-04
lwwin 写道
相比之前又多了不少~~
之前我从来没发过有这么多书的照片而已……虽说确实也是买了些新书
6 楼
lwwin
2010-04-04
相比之前又多了不少~~
5 楼
Colorful
2010-04-04
唯一感兴趣的是《软件调试》,可惜俺对大部头无爱,最近又迷上了 OllyDbg ,唉...
4 楼
loveclan
2010-04-04
请问在Java领域和CLR via C#差不多级别的书有哪些?
3 楼
glacjay
2010-04-03
好多日文书……
发表评论
-
《自制编程语言》的一些笔记
2013-11-24 00:20 0http://kmaebashi.com/programmer ... -
《深入理解Java虚拟机(第二版)》书评
2013-07-08 19:19 0值得推荐的中文Java虚拟机入门书 感谢作者赠与的样书,以下 ... -
豆列:从表到里学习JVM实现
2013-06-13 14:13 48368刚写了个学习JVM用的豆列跟大家分享。 豆列地址:http: ... -
最近想买的书
2011-01-23 12:09 0Inside the Java 2 Virtual Machi ... -
昨晚到购书中心去逛了一下
2010-02-18 01:30 3428如题。去工作之后已经 ... -
如何描述本质?
2009-05-11 12:23 0Bird and Wadler的第一版XXX是以概念来描述FP ... -
你可能不知道的.NET——读《你必须知道的.NET》
2009-05-11 10:02 0勘误表:http://www.cnblogs.com/anyt ... -
购书表
2009-05-03 12:28 0The Root of .NET Framework (単行本 ... -
List of books to read
2009-02-19 13:15 0Beautiful Code: Leading Program ... -
荒井省三的《The Root of .NET Framework》的试读
2008-12-26 22:22 0荒井省三的新书,《The Root of .NET Frame ... -
现在桌上的书堆
2008-12-11 23:11 3266不知道有没有人会对这个感兴趣呢…… 暂时堆在桌子上的就是 ... -
[购书] 买了三本好书
2008-06-19 23:54 0The Ruby Programming Language 编 ...
相关推荐
PPT的书堆模板,如果要PPT模板的,可以来下载哦
书堆main ver1-3.cpp
不错的商务PPT模版,国外名家制作,主题为:商务 信任 蓝图 远景 书堆 ...
- **示例解析**:假设一幅漫画展示的是一个人站在书堆上却无法阅读,标题可以是“知识的高墙”,寓意为“知识不应成为负担”。 #### 4. 漫画内容说明与寓意揭示 - **知识点**:说明漫画内容时要客观描述主要场景,...
- 问题1: 如果5本相同的书堆起来高米,要计算每本书的厚度,可以将总高度除以书的数量,即每本书厚()米 = 高度 ÷ 5。 - 问题2: 把平均分成4份,求每份是多少,实际上是在求的四分之一是多少。 - 问题3: 分数除以...
- 平衡力:在题目中提到的书堆问题中,迅速抽出一本书可能导致上面的书失去支撑而倒下,而缓慢抽出时,由于其他书之间的摩擦力可以平衡重力,因此不会倒下。 - 力的大小比较:抽取书时需要克服摩擦力,摩擦力大小...
一个比较简洁的模板,以书堆为背景,色调柔和
你需要设计一个算法来重新排列书堆,使得书的高度由小到大排列,同时保持书的顺序不变。理解栈的特性并巧妙利用其后进先出(LIFO)的原则是解决问题的关键。 2. **1552 - "Doubly Linked List"** 双向链表是此题目...
打字稿redux模式在制品跑步yarn storybook 参见故事书堆ReactRedux 打字稿样式化的组件更漂亮笑话故事书模式大量的WithRedux WithProvider执照麻省理工学院
该工程名为景区公厕改建项目,位于南村书堆、案山晓翠景区内,主要内容是公共厕所的改建,计划在90个日历天内完成,目标质量为合格。 三、施工方案 1. 基础施工: - 场地整理后进行定位放样,接着开挖基槽,依据...
辅导员学生和老师的课程...以防止其接触边缘,并在容器上弯曲以将其排列在100%-40px的列中桌面对于台式机,我们将以下两个组件用于响应式布局: 这为我们提供了一种非常灵敏的布局,可以像“书堆”一样堆叠其子级。表
2. 读书的意义:作者通过描述自己沉浸在书堆中的经历,表达了读书的乐趣和价值,特别是夜晚独处时,灯光下的阅读能带来深沉的心境和无尽的思考空间。 3. 书籍选择的重要性:文章强调了对书籍的取舍,提醒读者并非...
8. 动摩擦因数与最大静摩擦力:考虑书堆的稳定性,需要计算每本书及书堆整体的最大静摩擦力。根据动摩擦因数和压力,可以计算出能稳定夹住的书本数量。 9. 静摩擦力的应用:当两个立方体A和B静止时,A与B之间以及A...
13. 杠杆原理:在书堆中,下面的书受到的压力更大,所以抽下面的书更费力;拿走书后,压强不变,因为压力和受力面积同时减小。 14. 浮力与压强:浮力大小等于物体排开液体的重力,甲杯底部压强大于乙杯,因为鸡蛋在...
例如“堆”字的部首是“土”,音序是“D”,“书堆”中的“堆”是作为量词使用,而“一堆花籽”中的“堆”则是累积在一起的意思。 5. 组词与成语:这部分考察学生的词汇积累,如“碧绿”、“姑娘”、“寻找”、“吐...
栈常被比喻为一个只能在一端添加或移除元素的线性结构,就像图书馆的书堆,最上面的书最先被取走。栈的应用非常广泛,如表达式求值(逆波兰表示法)、深度优先搜索(DFS)、函数调用栈等。 队列(Queue)则是先进先...
例如,在给定的书堆中,至少有一本是语文书,当抽取3本书时,这是必然事件。 3. **不可能事件**:在一定条件下不可能发生的事件,其概率为0。如从12本书中(10本语文,2本数学)抽出3本全是数学书。 4. **随机事件...
此外,教材还提供了实际问题的解决,如计算一本故事书堆叠起来的总厚度,以及用2米长的木料锯成相同长度的4根凳子腿的高度。这些问题鼓励学生运用所学知识解决生活中的实际问题,提高他们的实践应用能力。 最后,...
直到过了很多天,也许你已从事java方面的开发工作,一天,从书堆里无意的见到它,拍拍灰尘看看,够厚,就作为工具书备用吧。 还有一种是像旺旺这样草根阶层(好听点叫实战派)编写的,这样的书凤毛麟角,因为大家都...
下午的阅读部分,作者在书堆中找到了一本漫画书并沉浸其中,强调了阅读的乐趣和吸引力。之后跟随妈妈去商店,这里可以教导写作中的时间过渡和场景切换。最后,回家后不顾一切地继续阅读漫画,显示了对阅读的热爱和...