登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入 新註冊 | 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / EMS,時效:出貨後2-3日

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

2023年08月出版新書

2023年07月出版新書

2023年06月出版新書

2023年05月出版新書

2023年04月出版新書

2023年03月出版新書

2023年02月出版新書

『簡體書』自己动手写Python虚拟机

書城自編碼: 3377553
分類: 簡體書→大陸圖書→計算機/網絡程序設計
作者: 海纳
國際書號(ISBN): 9787512429758
出版社: 北京航空航天大学出版社
出版日期: 2019-06-01


書度/開本: 16开 釘裝: 平装

售價:NT$ 498

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
晚清洋务运动始末
《 晚清洋务运动始末 》

售價:NT$ 447.0
美索不达米亚神话
《 美索不达米亚神话 》

售價:NT$ 391.0
别害怕吵架:教孩子在冲突中学会正向沟通
《 别害怕吵架:教孩子在冲突中学会正向沟通 》

售價:NT$ 274.0
这个甜甜圈不能卖:奇思妙想爆笑绘本(全2册)
《 这个甜甜圈不能卖:奇思妙想爆笑绘本(全2册) 》

售價:NT$ 447.0
生活中的民法典实用全书:应知应懂的法律常识
《 生活中的民法典实用全书:应知应懂的法律常识 》

售價:NT$ 498.0
饲渊
《 饲渊 》

售價:NT$ 223.0
现金为王:把利润留下来,把成本降下去
《 现金为王:把利润留下来,把成本降下去 》

售價:NT$ 386.0
经纬度丛书·巴勒斯坦人的故事:流亡者的悲情、绝望与抗争
《 经纬度丛书·巴勒斯坦人的故事:流亡者的悲情、绝望与抗争 》

售價:NT$ 493.0

建議一齊購買:

+

NT$ 743
《 垃圾回收的算法与实现 》
+

NT$ 309
《 深入理解Python特性 》
+

NT$ 435
《 Python算法详解 》
+

NT$ 579
《 现代编译原理 C语言描述 修订版 》
+

NT$ 518
《 Python编程快速上手 让繁琐工作自动化 》
+

NT$ 1062
《 PHP经典实例(第三版) 》
編輯推薦:
本书内容新颖、通俗易懂,读者只需懂得相关的类C语言即可阅读。
內容簡介:
本书按内容分为六个部分,*部分介绍语言虚拟机的基本概念,并实现字节码解释器;第二部分,实现内嵌类型,如整数、字符串、列表和字典等;第三部分,实现了函数;第四部分,实现自定义类、对象和方法;第五部分,实现垃圾回收,也就是自动内存管理;第六部分,模块和迭代。本书的章节内容之间都有很强的依赖性,后面的章节内容都是在前面章节的基础上去实现的,所以读者必须按部就班地从前向后阅读,才能保证阅读的流畅。
本书适合的人群包括:在校大学生可以通过本书掌握很多计算机工作运行的核心知识,以及对编译器,编程语言感兴趣的人。
關於作者:
海纳,曾就职于人大金仓、网易游戏,现就职于华为编译器实验室。长期从事编译器和编辑语言虚拟机的研发工作,擅长编译器后端和垃圾回收机制。
目錄
第1章编程语言虚拟机1
1.1编程语言的发展1
1.2编程语言虚拟机2
1.3开发环境5
第2章编译流程6
2.1Python字节码6
2.2词法分析7
2.3文法分析10
2.4抽象语法树13
2.4.1构建AST14
2.4.2递归程序的本质16
2.4.3访问者模式21
2.4.4用Visitor重写AST29
第3章二进制文件结构32
3.1pyc文件格式32
3.2加载CodeObject34
3.2.1准备工具36
3.2.2创建CodeObject41
3.3整理工程结构47
3.4执行字节码49
第4章实现控制流55
4.1分支结构55
4.1.1条件判断56
4.1.2跳转59
4.1.3True、False和None60
4.2循环结构62
4.2.1变量62
4.2.2循环内的跳转67
第5章基本的数据类型75
5.1KlassOop二元结构75
5.2整数78
5.3字符串82
第6章函数和方法85
6.1函数85
6.1.1栈帧86
6.1.2创建FunctionObject89
6.1.3调用方法92
6.2变量和参数96
6.2.1LEGB规则96
6.2.2函数的参数104
6.2.3参数默认值107
6.3Native函数111
6.4方法115
第7章列表和字典122
7.1列表122
7.1.1列表的定义122
7.1.2操作列表126
7.2字典154
7.2.1字典的定义154
7.2.2操作字典157
7.3增强函数功能165
7.3.1灵活多变的函数参数165
7.3.2闭包和函数修饰器172
7.4总结179
第8章类和对象180
8.1类型对象180
8.1.1TypeObject180
8.1.2object185
8.1.3通过类型创建对象189
8.2自定义类型191
8.3创建对象196
8.4操作符重载206
8.5继承215
第9章垃圾回收223
9.1自动内存管理223
9.1.1概念定义223
9.1.2引用计数224
9.1.3图的知识226
9.1.4Tracing
GC231
9.2复制回收234
9.2.1算法描述234
9.2.2算法实现235
9.2.3建堆237
9.2.4在堆中创建对象243
9.2.5垃圾回收247
第10章模块和库261
10.1import语句261
10.1.1ModuleObject262
10.1.2加载模块264
10.1.3from子句266
10.2builtin模块268
10.3加载动态库271
10.3.1定义接口27
10.3.2实现math module277
第11章迭代281
11.1异常281
11.1.1finally子句281
11.1.2break和continue287
11.1.3Exception291
11.2自定义迭代器类306
11.3Generator309
11.3.1yield语句309
11.3.2Generator对象311
11.4总结317
附录APython2字节码表318
附录B高级算法321
B.1字符串查找321
B.2排序算法325
B.2.1快速排序325
B.2.2选择排序328
B.2.3堆排序329
內容試閱
编程语言是每个程序员每天都要使用的基本工具,现代的主流编程语言以 Java、javascript 和
Python 为代表,都是运行在语言虚拟机之上的,很多人都很想知道语言虚拟机的内部构造。我从2017年开始在知乎撰写专栏《进击的Java新人》,专栏中对 Java 语言虚拟机的字节码和垃圾回收做了一些简单的介绍,很多读者发私信给我,表示非常想知道更多的细节。在这样的背景下,我开始了本书的写作。我希望在这本书中和读者一起从零开始构建一个完整的编程语言虚拟机,它将会涉及到字节码的解析执行、对象系统、语言内置功能和垃圾回收等多个主题。
本书适合的人群包括:
1. 在校大学生,大一大二的同学可以通过本书掌握很多计算机工作运行的核心知识

2. 对编译器和编程语言感兴趣的人。相比起直接将一门语言编译成机器码,将其编译为虚拟机上的字节码文件会简单很多,所以掌握一门虚拟机字节码,甚至自己实现一个虚拟机对学习编译器、了解编程语言特性有很大的帮助。
本书的内容虽然很新颖,但是对读者门槛的要求并不高。读者只要简单地掌握一些Python或者某一门类C语言(例如Java)即可。在本书中,我选择了使用C来实现语言虚拟机。这主要是由于在内存操作方面,C可以更精准地表达作者的意图。C是一门很难的语言,相比起 Java、Python和PHP 等语言,流行度也不高,但是读者不必有畏难情绪,本书在使用 C 的时候是比较克制的。本书并没有使用很多 C 的高级技巧,最多只涉及到类和一点点的模板编程的知识。C是一门多范式的编程语言,我们不可能在一个工程中使用所有的编程范式。本书中所涉及的代码,读者只需要有任何一门面向对象的语言的编程经验即可顺利阅读。
如何使用本书:
本书共分为六个部分,第一部分介绍语言虚拟机的基本概念,并实现字节码解释器;第二部分,实现了内嵌类型,如整数、字符串、列表和字典等;第三部分,实现了函数;第四部分,实现自定义类、对象和方法;第五部分,实现垃圾回收,也就是自动内存管理;第六部分,模块和迭代。其中第二、第三和第四部分的实现并不是完全独立的,而是相互嵌套依赖的。比如完整的对象系统必然依赖函数,而 Python 中的函数本身也是对象,这就产生了循环依赖,解决这个问题的办法是先实现一套相对简单的对象系统,然后基于此也实现一套简单的函数系统,再回过头来补充完善对象系统这样螺旋式地上升,最终完成整个系统的搭建。
本书章节的内容之间都有很强的依赖,后面章节的内容都是在前面的章节的基础上去实现的。所以读者必须按部就班地从前向后阅读,才能保证阅读的流畅。本书为了节约篇幅,对于一些逻辑比较简单的代码,就都省略了。读者可以在https:gitee.comhinuspythonvm 里找到全部的代码,包括该项目最近的更新以及各种提交记录。在提交记录中,读者可以清晰地看到本项目的进化过程。
感谢出版社编辑剧艳婕的耐心审校,尤其还要感谢专栏《进击的Java新人》的读者,是你们的精彩评论和学习反馈引发了这本书的创作。
实现一个高效的编程语言虚拟机是一个十分复杂的问题,从Hotspot虚拟机的发展过程中就可以看出来。书中难免有讹错纰漏之处,欢迎读者及时指出。书中如果有描述不清的地方,也欢迎读者来信交流,可发至邮箱:hinus@163.com。

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.