领域专用语言实战

领域专用语言实战
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美]
2013-10
版次: 1
ISBN: 9787115331748
定价: 69.00
装帧: 平装
开本: 16开
纸张: 胶版纸
字数: 479千字
原版书名: DSLs in action
80人买过
  •   DSL(领域专用语言)的要旨在于沟通。精心设计的DSL可以以一种从外观到内在都极为自然的方式,传达出其所表示领域的本质和真意,帮助消除业务与技术的隔阂,促进项目干系人与程序员的沟通。  《领域专用语言实战》不仅介绍如何使用DSL解决问题,还会使用Ruby、Groovy、Scala、Clojure等现代语言阐述DSL的设计与实现,针对这些语言所代表的不同编程范式深入讨论其在DSL设计上的优劣。《领域专用语言实战》共分三部分。第一部分定位DSL驱动开发环境,寻找其在应用程序架构中的用武之地,帮助程序员或架构师了解如何调整现有开发工具和技术,使之适应DSL驱动的新范式。第二部分带你设计优秀的语义模型,使之成为上层语言抽象的有力后盾。该部分主要指导开发人员按照优秀抽象的设计原则搭建领域模型,由浅入深讲解了DSL实现技术,如元编程、解析器组合子,以及ANTLR、Xtext等开发框架。第三部分主要展望未来趋势,重点讨论解析器组合子和DSL工作台技术的发展前景。  《领域专用语言实战》适合开发人员、架构师、领域用户学习参考。   Debasish Ghosh

      Anshinsoft公司 首席技术布道师,开发者推荐博客“Ruminations of aProgrammer”的作者,ACM协会高级会员。他拥有跨国IT企业20余年工作经验,擅长为各种客户(无论是中小型公司还是财富500强企业)交付企业级解决方案,对自己将软件设计和编程*实践制度化而引以为傲,热爱Java、Ruby、Scala、OO及函数式编程,关注DSL和NoSQL数据库。Twitter账号:@debasishg。

      译者简介:

      郭晓刚

      大学肄业,有过两次创业和创业失败的经验,从嵌入式硬件到企业软件开发皆无所成。作为爱好的翻译反倒坚持不辍,积攒了五六本独译、合译的作品。长期在InfoQ中文站从事编辑工作,顺带磨练了技术触觉和翻译、写作的技艺。现在家照顾本书拖稿期间出生的儿子。 第一部分领域专用语言入门

    第1章初识DSL

    1.1问题域与解答域

    1.1.1问题域

    1.1.2解答域

    1.2领域建模:确立共通的语汇

    1.3初窥DSL

    1.3.1何为DSL

    1.3.2流行的几种DSL

    1.3.3DSL的结构

    1.4DSL的执行模型

    1.5DSL的分类

    1.5.1内部DSL

    1.5.2外部DSL

    1.5.3非文本DSL

    1.6何时需要DSL

    1.6.1优点

    1.6.2缺点

    1.7DSL与抽象设计

    1.8小结

    1.9参考文献

    第2章现实中的DSL

    2.1打造首个Java DSL

    2.1.1确立共通语汇

    2.1.2用Java完成的首个实现

    2.2创造更友好的DSL

    2.2.1用XML实现领域的外部化

    2.2.2Groovy:更具表现力的实现语言

    2.2.3执行Groovy DSL

    2.3DSL实现模式

    2.3.1内部DSL模式:共性与差异性

    2.3.2外部DSL模式:共性与差异性

    2.4选择DSL的实现方式

    2.5小结

    2.6参考文献

    第3章DSL驱动的应用程序开发

    3.1探索DSL集成

    3.2内部DSL的集成模式

    3.2.1通过Java 6的脚本引擎进行集成

    3.2.2通过DSL包装器集成

    3.2.3语言特有的集成功能

    3.2.4基于Spring的集成

    3.3外部DSL集成模式

    3.4处理错误和异常

    3.4.1给异常命名

    3.4.2处理输入错误

    3.4.3处理异常的业务状态

    3.5管理性能表现

    3.6小结

    3.7参考文献

    第二部分实现DSL

    第4章内部DSL实现模式

    4.1充实DSL“工具箱”

    4.2内嵌式DSL:元编程模式

    4.2.1隐式上下文和灵巧API

    4.2.2利用动态装饰器的反射式元编程

    4.2.3利用buider的反射式元编程

    4.2.4经验总结:元编程模式

    4.3内嵌式DSL:类型化抽象模式

    4.3.1运用高阶函数使抽象泛化

    4.3.2运用显式类型约束建模领域逻辑

    4.3.3经验总结:类型思维

    4.4生成式DSL:通过模板进行运行时代码生成

    4.4.1生成式DSL的工作原理

    4.4.2利用Ruby元编程实现简洁的DSL设计

    4.5生成式DSL:通过宏进行编译时代码生成

    4.5.1开展Clojure元编程

    4.5.2实现领域模型

    4.5.3Clojure宏之美

    4.6小结

    4.7参考文献

    第5章Ruby、Groovy、Clojure语言中的内部DSL设计

    5.1动态类型成就简洁的DSL

    5.1.1易读

    5.1.2鸭子类型

    5.1.3元编程又碰面了

    5.1.4为何选择Ruby、Groovy、Clojure

    5.2Ruby语言实现的交易处理DSL

    5.2.1从API开始

    5.2.2来点猴子补丁

    5.2.3设立DSL解释器

    5.2.4以装饰器的形式添加领域规则

    5.3指令处理DSL:精益求精的Groovy实现

    5.3.1指令处理DSL的现状

    5.3.2控制元编程的作用域

    5.3.3收尾工作

    5.4思路迥异的Clojure实现

    5.4.1建立领域对象

    5.4.2通过装饰器充实领域对象

    5.4.3通过REPL进行的DSL会话

    5.5告诫

    5.5.1遵从最低复杂度原则

    5.5.2追求适度的表现力

    5.5.3坚持优秀抽象设计的各项原则

    5.5.4避免语言间的摩擦

    5.6小结

    5.7参考文献

    第6章Scala语言中的内部DSL设计

    6.1为何选择Scala

    6.2迈向Scala DSL的第一步

    6.2.1通过Scala DSL测试Java对象

    6.2.2用Scala DSL作为对Java对象的包装

    6.2.3将非关键功能建模为ScalaDSL

    6.3正式启程

    6.3.1语法层面的表现力

    6.3.2建立领域抽象

    6.4制作一种创建交易的DSL

    6.4.1实现细节

    6.4.2DSL实现模式的变化

    6.5用DSL建模业务规则

    6.5.1模式匹配如同可扩展的Visitor模式

    6.5.2充实领域模型

    6.5.3用DSL表达税费计算的业务规则

    6.6把组件装配起来

    6.6.1用trait和类型组合出更多的抽象

    6.6.2使领域组件具体化

    6.7组合多种DSL

    6.7.1扩展关系的组合方式

    6.7.2层级关系的组合方式

    6.8DSL中的Monad化结构

    6.9小结

    6.10参考文献

    第7章外部DSL的实现载体

    7.1解剖外部DSL

    7.1.1最简单的实现形式

    7.1.2对领域模型进行抽象

    7.2语法分析器在外部DSL设计中的作用

    7.2.1语法分析器、语法分析器生成器

    7.2.2语法制导翻译

    7.3语法分析器的分类

    7.3.1简单的自顶向下语法分析器

    7.3.2高级的自顶向下语法分析器

    7.3.3自底向上语法分析器

    7.4工具支持下的DSL开发Xtext

    7.4.1文法规则和大纲视图

    7.4.2文法的元模型

    7.4.3为语义模型生成代码

    7.5小结

    7.6参考文献

    第8章用Scala语法分析器组合子设计外部DSL

    8.1分析器组合子

    8.1.1什么是分析器组合子

    8.1.2按照分析器组合子的方式设计DSL

    8.2Scala的分析器组合子库

    8.2.1分析器组合子库中的基本抽象

    8.2.2把分析器连接起来的组合子

    8.2.3用Monad组合DSL分析器

    8.2.4左递归DSL语法的packrat分析

    8.3用分析器组合子设计DSL的步骤

    8.3.1第一步:执行文法

    8.3.2第二步:建立DSL的语义模型

    8.3.3第三步:设计Order抽象

    8.3.4第四步:通过函数施用组合子生成AST

    8.4一个需要packrat分析器的DSL实例

    8.4.1待解决的领域问题

    8.4.2定义文法

    8.4.3设计语义模型

    8.4.4通过分析器的组合来扩展DSL语义

    8.5小结

    8.6参考文献

    第三部分DSL开发的未来趋势

    第9章展望DSL设计的未来

    9.1语言层面对DSL设计的支持越来越充分

    9.1.1对表现力的不懈追求

    9.1.2元编程的能力越来越强

    9.1.3S表达式取代XML充当载体

    9.1.4分析器组合子越来越流行

    9.2DSL工作台

    9.2.1DSL工作台的原理

    9.2.2使用DSL工作台的好处

    9.3其他方面的工具支持

    9.4DSL的成长和演化

    9.4.1DSL的版本化

    9.4.2DSL平稳演化的最佳实践

    9.5小结

    9.6参考文献

    附录A抽象在领域建模中的角色

    A.1设计得当的抽象应具备的特质

    A.1.1极简

    A.1.2精炼

    A.1.3扩展性和组合性

    A.2极简,只公开对外承诺的

    A.2.1用泛化来保留演化余地

    A.2.2用子类型化防止实现的泄露

    A.2.3正确实施实现继承

    A.3精炼,只保留自身需要的

    A.3.1什么是非本质的

    A.3.2非本质复杂性

    A.3.3撇除杂质

    A.3.4用DI隐藏实现细节

    A.4扩展性提供成长的空间

    A.4.1什么是扩展性

    A.4.2mixin:满足扩展性的一种设计模式

    A.4.3用mixin扩展Map

    A.4.4函数式的扩展性

    A.4.5扩展性也可以临时抱佛脚

    A.5组合性,源自纯粹

    A.5.1用设计模式满足组合性

    A.5.2回归语言

    A.5.3副作用和组合性

    A.5.4组合性与并发

    A.6参考文献

    附录B元编程与DSL设计

    B.1DSL中的元编程

    B.1.1DSL实现中的运行时元编程

    B.1.2DSL实现中的编译时元编程

    B.2作为DSL载体的Lisp

    B.2.1Lisp的特殊之处

    B.2.2代码等同于数据

    B.2.3数据等同于代码

    B.2.4简单到只分析列表结构的语法分析器

    B.3参考文献

    附录CRuby语言的DSL相关特性

    C.1Ruby语言的DSL相关特性

    C.2参考文献

    附录DScala语言的DSL相关特性

    D.1Scala语言的DSL相关特性

    D.2参考文献

    附录EGroovy语言的DSL相关特性

    E.1Groovy语言的DSL相关特性

    E.2参考文献

    附录FClojure语言的DSL相关特性

    F.1Clojure语言的DSL相关特性

    F.2参考文献

    附录G多语言开发

    G.1对IDE的特性要求

    G.2搭建Java和Groovy的混合开发环境

    G.3搭建Java和Scala的混合开发环境

    G.4常见的多语言开发IDE

    索引
  • 内容简介:
      DSL(领域专用语言)的要旨在于沟通。精心设计的DSL可以以一种从外观到内在都极为自然的方式,传达出其所表示领域的本质和真意,帮助消除业务与技术的隔阂,促进项目干系人与程序员的沟通。  《领域专用语言实战》不仅介绍如何使用DSL解决问题,还会使用Ruby、Groovy、Scala、Clojure等现代语言阐述DSL的设计与实现,针对这些语言所代表的不同编程范式深入讨论其在DSL设计上的优劣。《领域专用语言实战》共分三部分。第一部分定位DSL驱动开发环境,寻找其在应用程序架构中的用武之地,帮助程序员或架构师了解如何调整现有开发工具和技术,使之适应DSL驱动的新范式。第二部分带你设计优秀的语义模型,使之成为上层语言抽象的有力后盾。该部分主要指导开发人员按照优秀抽象的设计原则搭建领域模型,由浅入深讲解了DSL实现技术,如元编程、解析器组合子,以及ANTLR、Xtext等开发框架。第三部分主要展望未来趋势,重点讨论解析器组合子和DSL工作台技术的发展前景。  《领域专用语言实战》适合开发人员、架构师、领域用户学习参考。
  • 作者简介:
      Debasish Ghosh

      Anshinsoft公司 首席技术布道师,开发者推荐博客“Ruminations of aProgrammer”的作者,ACM协会高级会员。他拥有跨国IT企业20余年工作经验,擅长为各种客户(无论是中小型公司还是财富500强企业)交付企业级解决方案,对自己将软件设计和编程*实践制度化而引以为傲,热爱Java、Ruby、Scala、OO及函数式编程,关注DSL和NoSQL数据库。Twitter账号:@debasishg。

      译者简介:

      郭晓刚

      大学肄业,有过两次创业和创业失败的经验,从嵌入式硬件到企业软件开发皆无所成。作为爱好的翻译反倒坚持不辍,积攒了五六本独译、合译的作品。长期在InfoQ中文站从事编辑工作,顺带磨练了技术触觉和翻译、写作的技艺。现在家照顾本书拖稿期间出生的儿子。
  • 目录:
    第一部分领域专用语言入门

    第1章初识DSL

    1.1问题域与解答域

    1.1.1问题域

    1.1.2解答域

    1.2领域建模:确立共通的语汇

    1.3初窥DSL

    1.3.1何为DSL

    1.3.2流行的几种DSL

    1.3.3DSL的结构

    1.4DSL的执行模型

    1.5DSL的分类

    1.5.1内部DSL

    1.5.2外部DSL

    1.5.3非文本DSL

    1.6何时需要DSL

    1.6.1优点

    1.6.2缺点

    1.7DSL与抽象设计

    1.8小结

    1.9参考文献

    第2章现实中的DSL

    2.1打造首个Java DSL

    2.1.1确立共通语汇

    2.1.2用Java完成的首个实现

    2.2创造更友好的DSL

    2.2.1用XML实现领域的外部化

    2.2.2Groovy:更具表现力的实现语言

    2.2.3执行Groovy DSL

    2.3DSL实现模式

    2.3.1内部DSL模式:共性与差异性

    2.3.2外部DSL模式:共性与差异性

    2.4选择DSL的实现方式

    2.5小结

    2.6参考文献

    第3章DSL驱动的应用程序开发

    3.1探索DSL集成

    3.2内部DSL的集成模式

    3.2.1通过Java 6的脚本引擎进行集成

    3.2.2通过DSL包装器集成

    3.2.3语言特有的集成功能

    3.2.4基于Spring的集成

    3.3外部DSL集成模式

    3.4处理错误和异常

    3.4.1给异常命名

    3.4.2处理输入错误

    3.4.3处理异常的业务状态

    3.5管理性能表现

    3.6小结

    3.7参考文献

    第二部分实现DSL

    第4章内部DSL实现模式

    4.1充实DSL“工具箱”

    4.2内嵌式DSL:元编程模式

    4.2.1隐式上下文和灵巧API

    4.2.2利用动态装饰器的反射式元编程

    4.2.3利用buider的反射式元编程

    4.2.4经验总结:元编程模式

    4.3内嵌式DSL:类型化抽象模式

    4.3.1运用高阶函数使抽象泛化

    4.3.2运用显式类型约束建模领域逻辑

    4.3.3经验总结:类型思维

    4.4生成式DSL:通过模板进行运行时代码生成

    4.4.1生成式DSL的工作原理

    4.4.2利用Ruby元编程实现简洁的DSL设计

    4.5生成式DSL:通过宏进行编译时代码生成

    4.5.1开展Clojure元编程

    4.5.2实现领域模型

    4.5.3Clojure宏之美

    4.6小结

    4.7参考文献

    第5章Ruby、Groovy、Clojure语言中的内部DSL设计

    5.1动态类型成就简洁的DSL

    5.1.1易读

    5.1.2鸭子类型

    5.1.3元编程又碰面了

    5.1.4为何选择Ruby、Groovy、Clojure

    5.2Ruby语言实现的交易处理DSL

    5.2.1从API开始

    5.2.2来点猴子补丁

    5.2.3设立DSL解释器

    5.2.4以装饰器的形式添加领域规则

    5.3指令处理DSL:精益求精的Groovy实现

    5.3.1指令处理DSL的现状

    5.3.2控制元编程的作用域

    5.3.3收尾工作

    5.4思路迥异的Clojure实现

    5.4.1建立领域对象

    5.4.2通过装饰器充实领域对象

    5.4.3通过REPL进行的DSL会话

    5.5告诫

    5.5.1遵从最低复杂度原则

    5.5.2追求适度的表现力

    5.5.3坚持优秀抽象设计的各项原则

    5.5.4避免语言间的摩擦

    5.6小结

    5.7参考文献

    第6章Scala语言中的内部DSL设计

    6.1为何选择Scala

    6.2迈向Scala DSL的第一步

    6.2.1通过Scala DSL测试Java对象

    6.2.2用Scala DSL作为对Java对象的包装

    6.2.3将非关键功能建模为ScalaDSL

    6.3正式启程

    6.3.1语法层面的表现力

    6.3.2建立领域抽象

    6.4制作一种创建交易的DSL

    6.4.1实现细节

    6.4.2DSL实现模式的变化

    6.5用DSL建模业务规则

    6.5.1模式匹配如同可扩展的Visitor模式

    6.5.2充实领域模型

    6.5.3用DSL表达税费计算的业务规则

    6.6把组件装配起来

    6.6.1用trait和类型组合出更多的抽象

    6.6.2使领域组件具体化

    6.7组合多种DSL

    6.7.1扩展关系的组合方式

    6.7.2层级关系的组合方式

    6.8DSL中的Monad化结构

    6.9小结

    6.10参考文献

    第7章外部DSL的实现载体

    7.1解剖外部DSL

    7.1.1最简单的实现形式

    7.1.2对领域模型进行抽象

    7.2语法分析器在外部DSL设计中的作用

    7.2.1语法分析器、语法分析器生成器

    7.2.2语法制导翻译

    7.3语法分析器的分类

    7.3.1简单的自顶向下语法分析器

    7.3.2高级的自顶向下语法分析器

    7.3.3自底向上语法分析器

    7.4工具支持下的DSL开发Xtext

    7.4.1文法规则和大纲视图

    7.4.2文法的元模型

    7.4.3为语义模型生成代码

    7.5小结

    7.6参考文献

    第8章用Scala语法分析器组合子设计外部DSL

    8.1分析器组合子

    8.1.1什么是分析器组合子

    8.1.2按照分析器组合子的方式设计DSL

    8.2Scala的分析器组合子库

    8.2.1分析器组合子库中的基本抽象

    8.2.2把分析器连接起来的组合子

    8.2.3用Monad组合DSL分析器

    8.2.4左递归DSL语法的packrat分析

    8.3用分析器组合子设计DSL的步骤

    8.3.1第一步:执行文法

    8.3.2第二步:建立DSL的语义模型

    8.3.3第三步:设计Order抽象

    8.3.4第四步:通过函数施用组合子生成AST

    8.4一个需要packrat分析器的DSL实例

    8.4.1待解决的领域问题

    8.4.2定义文法

    8.4.3设计语义模型

    8.4.4通过分析器的组合来扩展DSL语义

    8.5小结

    8.6参考文献

    第三部分DSL开发的未来趋势

    第9章展望DSL设计的未来

    9.1语言层面对DSL设计的支持越来越充分

    9.1.1对表现力的不懈追求

    9.1.2元编程的能力越来越强

    9.1.3S表达式取代XML充当载体

    9.1.4分析器组合子越来越流行

    9.2DSL工作台

    9.2.1DSL工作台的原理

    9.2.2使用DSL工作台的好处

    9.3其他方面的工具支持

    9.4DSL的成长和演化

    9.4.1DSL的版本化

    9.4.2DSL平稳演化的最佳实践

    9.5小结

    9.6参考文献

    附录A抽象在领域建模中的角色

    A.1设计得当的抽象应具备的特质

    A.1.1极简

    A.1.2精炼

    A.1.3扩展性和组合性

    A.2极简,只公开对外承诺的

    A.2.1用泛化来保留演化余地

    A.2.2用子类型化防止实现的泄露

    A.2.3正确实施实现继承

    A.3精炼,只保留自身需要的

    A.3.1什么是非本质的

    A.3.2非本质复杂性

    A.3.3撇除杂质

    A.3.4用DI隐藏实现细节

    A.4扩展性提供成长的空间

    A.4.1什么是扩展性

    A.4.2mixin:满足扩展性的一种设计模式

    A.4.3用mixin扩展Map

    A.4.4函数式的扩展性

    A.4.5扩展性也可以临时抱佛脚

    A.5组合性,源自纯粹

    A.5.1用设计模式满足组合性

    A.5.2回归语言

    A.5.3副作用和组合性

    A.5.4组合性与并发

    A.6参考文献

    附录B元编程与DSL设计

    B.1DSL中的元编程

    B.1.1DSL实现中的运行时元编程

    B.1.2DSL实现中的编译时元编程

    B.2作为DSL载体的Lisp

    B.2.1Lisp的特殊之处

    B.2.2代码等同于数据

    B.2.3数据等同于代码

    B.2.4简单到只分析列表结构的语法分析器

    B.3参考文献

    附录CRuby语言的DSL相关特性

    C.1Ruby语言的DSL相关特性

    C.2参考文献

    附录DScala语言的DSL相关特性

    D.1Scala语言的DSL相关特性

    D.2参考文献

    附录EGroovy语言的DSL相关特性

    E.1Groovy语言的DSL相关特性

    E.2参考文献

    附录FClojure语言的DSL相关特性

    F.1Clojure语言的DSL相关特性

    F.2参考文献

    附录G多语言开发

    G.1对IDE的特性要求

    G.2搭建Java和Groovy的混合开发环境

    G.3搭建Java和Scala的混合开发环境

    G.4常见的多语言开发IDE

    索引
查看详情
其他版本 / 全部 (1)
相关图书 / 更多
领域专用语言实战
领域驱动设计:软件核心复杂性应对之道(英文版)
[美]埃文斯 著
领域专用语言实战
领域知识工程学
罗建中 编
领域专用语言实战
领域驱动设计学习手册
[以色列]弗拉德·霍诺诺夫(Vlad Khononov)
领域专用语言实战
领域特定语言
[美]马丁·福勒(Martin Fowler)
领域专用语言实战
领域驱动设计与模式实战
[瑞典]Jimmy Nilsson 著
领域专用语言实战
领域驱动设计.Net实践
甄镭
领域专用语言实战
领域驱动设计精粹
Vernon(沃恩弗农) 著;[美]Vaughn、覃宇 笪磊 译
领域专用语言实战
领域语义信息检索研究——以竹藤领域为例
彭琳 著
领域专用语言实战
领域驱动设计 软件核心复杂性应对之道 英文版
[美]埃里克·埃文斯(Eric Evans)
领域专用语言实战
领域驱动设计:软件核心复杂性应对之道
[美]伊文斯(Evans E.) 著;陈大峰、张泽鑫 译
领域专用语言实战
领域自适应目标检测方法与应用
叶茂;唐宋;李旭冬
领域专用语言实战
领域法学社会科学的新思维与法学共同体的新融合
刘剑文 著
您可能感兴趣 / 更多
领域专用语言实战
无辜者的谎言(相信我!看到结局你一定会头皮发麻;全美读者推荐的悬疑神作,GOODREADS高分作品)
[美]A.R.托雷 著;梁颂宇 译;星文文化 出品
领域专用语言实战
孩子,把你的手给我1:怎么说孩子才爱听,怎么教孩子才肯学?帮助每一位3-12岁孩子的父母结束与孩子的所有冲突!
[美]海姆·G.吉诺特
领域专用语言实战
哲学、历史与僭政——重审施特劳斯与科耶夫之争
[美]弗罗斯特(Bryan-Paul Frost) 编;[美]伯恩斯(Timothy W. Burns)
领域专用语言实战
怎样做成大事
[美]丹·加德纳(Dan Gardner) 著;贾拥民 译;湛庐文化 出品;[丹麦]傅以斌(Bent Flyvbjerg)
领域专用语言实战
1200年希腊罗马神话
[美]伊迪丝·汉密尔顿
领域专用语言实战
爱情心理学(新编本)
[美]罗伯特·J. 斯腾伯格 (美)凯琳·斯腾伯格 倪爱萍 译
领域专用语言实战
黄金圈法则
[美]西蒙·斯涅克 著;磨铁文化 出品
领域专用语言实战
最后一章
[美]厄尼·派尔
领域专用语言实战
汤姆·索亚历险记 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]马克 吐温
领域专用语言实战
富兰克林自传 名家全译本 改变无数人命运的励志传奇 埃隆马斯克反复推荐 赠富兰克林签名照及精美插图
[美]本杰明·富兰克林 著;李自修 译
领域专用语言实战
汤姆素亚历险记:中小学生课外阅读快乐读书吧 儿童文学无障碍有声伴读世界名著童话故事
[美]马克·吐温
领域专用语言实战
国际大奖图画书系列 共11册(小老鼠的恐惧的大书,大灰狼,红豆与菲比,别烦我,下雪了 ,穿靴子的猫 ,先有蛋,绿 ,特别快递,如果你想看鲸鱼 ,一个部落的孩子 ) 麦克米伦世纪
[美]莱恩·史密斯 (英)埃米莉·格雷维特 (美)劳拉·瓦卡罗·等/文 (英)埃米莉·格雷维特 等/图 彭懿 杨玲玲 阿甲 孙慧阳 白薇 译