这次的主持人同样是我们的美女璎珞天色(很奇怪,为什么只有这个我才会想起介绍主持人来呢?…tin兄勿躁勿躁…)和tin。由于人比较多,站立会议改成了抢麦会议,虽然比起之前的一分钟介绍,大家介绍自己的机会少了很多,但比较宽裕的时间竟然给我们带来了很多惊喜,包括上面提到的相亲大会,还有更接近于哲学的参禅论道(当然是真的咯),嗯,感觉这次Party有了更多的开放元素,我想这是个好现象。
每次的Topic贡献环节基本都是大同小异,但这次却出现了一个小小的超越――话题太多了,以致于个别得票少的排到了下一次;话题的方向也开始丰富起来,当然,站在椅子上翘首倚望的小刀兄的脖子也会更累一些…
并行的好处是给大家提供了更多的选择,而它的弊端则是我无法同时听到在时间上冲突的两个session,所以我尽量选择讨论自由度更高的话题(一些具体的话题可以私下与贡献者沟通,而讨论在这个时候无法重现)。
Groovy,嗯,一个很具体的技术,而我却是从另一个角度去参与了这个session。我非常喜欢那张倒三角的逻辑分层图(是我自己取的名字,不贴切还望指正),看到它的第一眼,我突然想到了上次准备贡献Topic而又因为太过抽象而放弃的DSL通用模型,虽然在这张图里,DSL是处于最上层,但相对于一个具体的坐标系,却是通用模型的一种具化――它是狭义的。
既然偶然(或者是必然)的相遇让我找到了问题的实质,那么是时候把那个冷落在角落太久的想法再次拾起了。
已经记不得是什么时候开始听到的一句话了,“道生一,一生二,二生三,三生万物”,或许是对我即将要说的最好的铺垫――道于无形,而一旦赋予它一个前提,道便会具有一个实实在在的形态,而两个相互矛盾的对立面则构成了最基本的系统,加之这个相对稳定的系统,我们得到了三个有着原子关系的基本单位(原子关系即横向的制约和纵向的归属),直至整个世界。
当然,你会认为我是不是因为那个参禅论道的话题而走火入魔,但事实却是如此的简单,我把它放在程序界来解释它的话(或许提起程序这两个字你会感到距离不是那么的远,嗯,本来就是这样的)或许更加通俗。
问题分解应该是我们设计中的家常便饭,是的,无论大小,一个问题最终会被我们归为一个领域的一对矛盾体:时间和空间、进度和质量、成本和风险…各种领域的矛盾体构成了我们收入的渊源。而如果我们想保住饭碗,解决问题的方法也最终会被分解为熟悉的面孔:前提和规则,更具体些,我们需要一段代码(规则)和一个执行环境(前提)来完成目标。
到这里,你或许丝毫感觉不到有关DSL的灵压(该死…这几天《死神》看多了),但不要着急,它就在眼前――规则即DSL,而前提则是我们熟悉的“领域”。前面提到的那句话实际是一个递归(难道早在N千年前,我们的老祖宗就已经学会了编程?残念…),那么学过程序设计的你就非常明了了,递归的内部代码是规则,而调用关系则是前提。或许下面的图能够更加直观的解释上面的话:
规则 |
前提 |
|
前提 |
规则 |
|
前提 |
规则 |
前提 |
|
规则 |
如果这个图还是无法让你把抽象和现实联系起来,你只需要把上面的“规则”改为DSL,“前提”改为VM即可(VM即运行环境):
DSL |
VM |
|
VM |
DSL |
|
VM |
DSL |
VM |
|
DSL |
怎么解释呢?其实相当简单,所谓DSL其实是一个相对的概念,是运行在某个特定环境(VM)上的领域规则(领域即规则的作用域,由VM提供),它可以成为更上层(递归调用)的特定环境,以支持更高层次的规则。这是广义上的DSL定义,似乎很多人认为广义就是虚无缥缈的空谈,但就如认识水是让你更好的把它放到自己特定的容器里一样,有广义才会有狭义。我们完全可以把系统分解为不同层次的DSL定义,当然有很多都已经被人定义好的,比如前面提到的分层图,它是复合系统设计领域的DSL分解图(分层图中的DSL是具体化的DSL)。
既然我们定义了这个万法归一的递归系统,就可以用它来解释我们手中的代码:机器码之于计算机体系、源码之于编译器、动态语言之于执行器、配置文件之于程序引擎…这些都是DSL在各自领域创造的具体规则。
那么我们明白了这些放之四海皆可用的东西(被人称为废话)有什么用呢?(如果没用真就成了废话了)其实很简单,我们设计人员只需明白一个原则即可:专注于一个特定领域并用合适的规则去描述它。这样,那些经常被人挂在嘴边上的“领域驱动语言”、“面向XX设计”在我们这都是理所当然的事情了。
写了这么多,自己都担心起来,进而是庆幸,如果把上面这大篇文字作为Topic来忽悠大家,恐怕连个全尸都难保,看来留到今天并顺梯子溜掉是个不至憋坏身体又免遭追杀的权宜之计,但愿我不会因为对DSL这个炙手可热的概念胡乱解释而遭到通缉,但愿…
当然这次Party还是有些遗憾,没有听到TW那位仁兄的“摄影用光”的Topic,还有我们亲爱的tin准备的CSS,不过只要OpenParty在,只要我们的热情在,一切都会有的,这个冬天我们并不冷。
PS:这次的PP我同样是用的cleverpig的相机拍的,所以这里没有贴出来,静等cleverpig兄放出来吧...