抽象的讲: 当接口越是在表达“要什么”辅助卡盟,就是越声明式;越是在表达“要怎样”,就是越命令式。
大家如果去线上数据库查过数据, 就会发现这是典型的在表达要什么(数据),而不是表达怎么弄出我要的数据如何设计脚本语言,所以它就很“声明式”。至于如何弄出数据就由下一层的应用或程序来完成.
简单的说,越是声明式,越简单可读,越意味着下层要做更多的东西来协助你的实现. 这也意味着越受到下一层的限制。越是命令式,意味着上层对下层有更多的操作空间,更大的自由度,可以按照自己特定的需求要求下层按照某种方式来处理。
当你运用范式的思想去编程的时候, 在构建自己的代码的时候,为了结构的清晰可读,你也一样在架构上可以把代码分层,层与层之间的接口尽量声明式。这样你的代码自然在上一层主要描述从人的角度需要什么, 下一层用计算机逻辑实现人的需要。
在这两大范式里面又可以细分为更详细的具体场景下的范式.
其中在后面的论述中要提到grasshopper的这种图表式编程范式叫做数据流编程(data-flow paradigm)
绝大部分的编程语言是文本的形式, 通常一种语言可以实现多种范式.
就python来讲可以实现:面向对象编程, 过程式编程, 函数式编程.[4]
脚本语言: 设计师与计算机的对话的接口
自世界上第一台通用计算机“ENIAC”于1946年诞生以来, 软件工程师们已经为设计人员开发出大量的软件, 单单从adobe,autodesk, dassault等巨头软件公司旗下就有大量的软件. 正如上面提到的那样, 这些软件大同小异的都是为绘图而存在的. 与此同时在工业化的生产流线的各个领域同样也有其他各类专业软件. 而脚本语言可以在这些软件应用层之上再建一层用户脚本层, 通过编写脚本把软件为你开放的接口关联起来为你的设计服务.
通过脚本语言, 设计师可以生成设计, 开发出设计原型,并快速迭代.
这类算法设计需求脚本语言具有以下计算机语言的特性:
● 能够在宿主软件(即脚本语言的下一层)中快速组装各种设计组件. 搭建生成设计的框架.
● 在组装过程中能够随时更改设计条件或设计流程, 快速迭代.
● 可以充分利用计算机已有的海量算法,快速判断这些算法是否可以用于设计原型中.
● 基于特定的需求, 能够自己编写算法解决问题
以下对grasshopper与python这两种语言哪个能够更好的达到以上四点快速设计原型方面的要求进行介绍并简单比较优劣.
Grasshoppper: 数据流范式
grasshopper是属于数据流范式[6], 也就是声明式范式中的一种类型. 通过上图右边的图表方式进行脚本的搭建来实现上图左边的功能, 该范式关注数据的流动, 把脚本分解为一系列的数据连接。明确定义输入和输出,而它们的功能组件(如上图中的 + / *)就像黑盒子一样(使用者不需要关注脚本是如何实现这些盒子的功能, 使用者需要告诉脚本你要什么样的盒子就可以), 当一个组件的所有输入条件都成为有效的时候, 脚本就会自动运行并返回结果给你.
优势:
这种脚本语言本质上是并行的(即可以多个组件同时运行,没有关联的各组构件之间不会相互影响干扰), 用户可以同时启动多组程序,进行多方案的比较与分析, 能够快速组装, 更改方便,快速迭代. 这种高效率的人机交互方式为快速的进行设计原型开发提供极大的方便.
grasshopper另外一个优势就是,声明式的范式的思维更接近人类语言的思维,上手容易,表述清晰,与python的学习曲线相比grasshopper的学习曲线更短,几个小时之后可能就可以上手了.
劣势(与python比较)