Scala:一种统治DSL的语言(II)

/**
 * 谨献给我最爱的Yoyo
 *
 * 原文出处:https://scalerablog.wordpress.com/2016/05/30/scala-one-language-to-rule-them-all-ii/
 * @author dogstar.huang <chanzonghuang@gmail.com> 2017-02-10
 */

你不会让一个门外汉来控制全新的380空中客车。如此一个强大的工具要求使用它的人员是有经过培训的;当Scala用于铸造新的能量环时,我的意思是,领域特定语言,Scala也类似是这样。经过前面的一些理论和大量动手的学习(learning by doing)我们已经掌握了一些理论,现在是时候通过从头开始构造一个DSL来进一步学习。

我们领域特定语言的目标

我们全新的DSL打算用于服务教学练习。然而,除了这个目的这外,它还需要有一个目标。那就是(或者是其中一个):

  • 一个治理的过程或系统。
  • 作为另一种语言的代理。

在我们的示例里,将采用第二种。

AWK简介

你是在开玩笑吗?这还需要介绍吗


继续阅读»»»

Scala:一种统治DSL的语言(I)

/**
 * 谨献给我最爱的Yoyo
 *
 * 原文出处:https://scalerablog.wordpress.com/2016/04/18/scala-one-language-to-rule-them-all-i/
 * @author dogstar.huang <chanzonghuang@gmail.com> 2017-02-07
 */

一开始,没有编程语言,只有机器代码。通过铸造能量环(即:编程语言)来统治机器,自动化编程拯救了我们所有人。他们多元化,启发了新的语言,构成了一个富生态系统。在它们中间涌现了一种高度有用的计算机语言:领域特定语言。

领域特定语言(DSL)

领域特定(计算机)语言已经存在有一段很长的时间了。对于这种语言,学术界的描述宣称它们是中心化的并且用于某一特定应用领域。领域特定语言简单而又简练,这意味着在描述动作、实体和应用领域内的关系过程中,它们会引导用户。更为重要的是,为了适配目标而制作它们。

如果我是从事统计研究的,为什么需要担心内存管理?

一点也不惊讶的是,这些迷你语言的整个王国已经进化并且接手了


继续阅读»»»

声明式编程:它是一个真实的东西?

/**
 * 谨献给Yoyo
 *
 * 原文出处:https://www.toptal.com/software/declarative-programming
 * @author dogstar.huang <chanzonghuang@gmail.com> 2016-05-15
 */

目前,声明式编程是诸如数据库,模板和配置管理这样广泛而多样领域的主导范式。

简而言之,声明式编程由需要指导一个程序需要做什么,而不是告诉它如何做到组成。在实践中,这种方法需要提供一个用于表达用户想要什么,并通过屏蔽底层结构(循环,条件,任务)实现期望的最终状态的领域特定语言(DSL)。

虽然这种模式在其必要的地方是有着显著的改善,但我主张,声明式编程有明显的局限性,此限制我会在本文中进行探讨。此外,我建议双管齐下,既抓住声明式编程的好处,同时又取代其局限性。

警告这篇文章是多年来个人在声明工具中奋斗的结果。许多我在这里的说法都是没有彻底证明的,有的甚至基于事实价值。一个适当的、批评的声明式编程会花费大量的时间,精力,并且我要回到过去使用很多这样的工具;我的心是


继续阅读»»»