之前有几篇文章是关于太极图形编程语言的,虽然这个编程语言在圈里引发了不少的关注和点赞,不过还是有很多朋友不太了解,不太认可也罢,觉得不可思议想不通的也罢,甚至觉得就是Python语言,换皮之说的也有,反正评论什么的都有。而这款Taichi图形编程语言其实就是一种领域特定语言。
如果了解了领域特定语言,可能我们也就没那么多非议了,至少很多问题就能一下子弄明白。其实领域特定语言,和我们平时用C语言,JAVA或Python语言都不一样,它的确属于编程语言,然而它却不是通用编程语言。也就是说不具备很广泛的普适性,只作用于特定领域。
虽然说起DSL,有的了解前端的朋友会想到前端DSL,毕竟这个词在前端社区中中频频出现,诸如React啦Vue啦Angular啦这些现代框架的表现层设计往往就和DSL有较强的关联。也正因为如此,华为的声明式UI框架ArkUI组已宣布鸿蒙开始支持DSL开发。即便DSL和前端相关性比较强,但也不能说DSL就局限于web前端了。我们学习的Taichi不就是DSL嘛,它可不是前端语言。
说到底,DSL是一种为特定领域设计的,具有受限表达性的编程语言,在前端中开发可以是它,在高级语言本地开发也可以是它。我们用的JAVA啦C啦都是通用性编程语言,也就是我们可以用于多个不同的领域,普通应用编程啦,图形啦什么的,甚至还可以用于不同的平台终端,PC端移动端诸如此类。然而DSL语言则不一样,它不太通用,往往需要嵌入到其他编程语言中,机智客想到了寄生这个词,嗯,有点像,不赖。比如嵌入到Python语言中。我们学习的Taichi图形编程语言就是嵌入到Python中的DSL语言。
DSL语言算是一种“寄生”的语言,也就是寄生在宿主语言中。比如React或者Vue支持的JSX语法都属于DSL,这是一种DSL,“寄生”于前端HTML中,当然,由于鸿蒙新一代的UI框架ArkUI支持DSL,所以应该就是前端领域的DSL。而再比如太极图形编程语言,这就又是一种DSL,以我们大众开发者的视角而言,Taichi则是“寄生”于Python脚本语言中的DSL,Python是taichi图形语言的宿主语言。
因此,DSL算是我们应该了解的语言。可能我们很多人不从事前端开发,也未必就一定用类似Taichi这样的图形编程语言来实现一些功能。不过机智客个人觉得,这个在以后应该会越来越多,当然也可能是自己孤陋寡闻了。不管如何吧,即便我们未必用它,不过我们多了解一点它还是不错的。