领域特定语言这是本Java书或者C#书吗_领域特定语言这是本Java书或者C#书吗试读-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > 领域特定语言 > 这是本Java书或者C#书吗

领域特定语言——这是本Java书或者C#书吗

本书和我曾写过的大部分书一样,与编程语言没有多大关系。我最想做的事情是揭示一些与编程语言无关的通用原则和模式。因此,不管你用的是哪种流行的面向对象语言,本书里的思想都会为你提供帮助。 函数式语言可能会是一条代沟。虽然我觉得很多内容依然对函数式语言适用,但我在函数式编程中的经验并不足以让我做出判断,它们的编程范式到底会从多大程度上影响到书中的建议。本书对于过程式语言(即非面向对象的语言,例如C)的作用也很有限,因为我讲的很多技术都依赖于面向对象技术。 虽然我写的是通用原则,但为了能够把它们恰当地讲述出来,我还需要一些例子─于是需要一门具体的编程语言。在选择用哪门语言来写例子的时候,我的首要标准是有多少人能读懂它。于是绝大多数例子都是用Java或C#写的。这两门语言在业界广泛使用,有很多相似之处:类C的语法、内存管理,为人们提供各种便利的类库。但我的意思可不是说它们就是写DSL的最佳选择了(这里需要特别强调一下,因为我根本就不认为它们是最佳选择),只是说它们最能够帮助读者理解我讲的通用概念。我尽力让二者出现的机会均等,只有当使用某种语言更方便的时候,我的天平才会稍稍倾斜一下。虽然内部DSL的良好运用常常要用到某些另类的语法特色,但我也尽力避免使用一些需要太多语法知识才能理解的语言元素,着实挺困难的。 还有一些思想是必须使用动态语言才能满足的,没法用Java或C#实现。在那些情况下我就换用Ruby,因为这是我最熟悉的动态语言。它为我提供了很多帮助,因为它的特性完美地契合了编写DSL的需求。另外再强调一点,虽然我个人更熟悉某种语言,在选择时也考虑了个人偏好,但这并不能推断出这些技术换个地方就不能用了。我很喜欢Ruby,但如果你想看看我对语言的偏执,那只有贬低Smalltalk才行。 值得一提的是,另外有许多语言都适合构建DSL,尤其还有一些是专门为了写内部DSL而设计出来的。我之所以没有提到它们,是因为我对它们所知不多,没有足够的信心进行评价。你不要认为我对它们有什么负面观点。 另外还要提一句,在写这本书的时候,本来试图和语言无关,可大多数技术的实用性偏偏都要直接依赖于某种语言的特性。这是让我最苦恼的地方了。我为了实现大范围内的通用性做出了很多权衡,但你必须意识到,这些权衡可能会因具体的语言环境而彻底改变。

展开全文

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

《领域特定语言》其他试读目录

• 写书初衷
• 为什么现在写这本书
• 为什么DSL很重要
• 别畏惧这本大厚书
• 本书主要内容
• 本书读者对象
• 这是本Java书或者C#书吗 [当前]
• 本书缺少什么
• 章节引用
• 模式结构
• 致谢