首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

设计的未来在哪里

“设计方法、设计原则、设计模式这些过程都是为了“半自动化”的产生代码,从设计、开发、测试到发现问题再反馈到设计的过程实际上一种人参与的强化学习

前面在探讨设计的价值时提到设计方法、设计原则、设计模式这些过程都是为了“半自动化”的产生代码,从设计、开发、测试到发现问题再反馈到设计的过程实际上一种人参与的强化学习

人的参与使得设计上会出现差异性,有些设计优雅被称作艺术,有些则非常糟糕不堪一用。更加不幸地是消除差异性的代价异常高(上面提到的原则、模式都是试图消除差异的探索,但显然没有完全做到),以致于常被神秘色彩笼罩,比如天赋、直觉。因此未来的道路究竟在哪里呢?

01

可能性的探索

对于未来的道路,前篇文章中“另一种可能性”提供了一种探索方向"系统的行为、约束和属性是严格、精确、抽象和简洁的,将设计过程自动化直接从系统行为、约束和属性产生代码"。这话听上去比较宽泛,下面用一个例子来说明。

语义的抽象

先来看这样一段代码。

这段代码很容易理解,是在用两种不同的方式说“你好”,条件分支是根据当前所处的国家来选择说英语还是韩语。这里我们发散一下,选择条件不仅可以根据国家来区分,还可以有很多其它的条件。如果从外部行为来看,好像就是有时在说韩语,有时在说英语,至于条件的内容我们并不关心,就像这样:

如果再进一步把说的内容抽象,比如我们不单单可以打招呼,也可以是任何其它事情,即不再关注具体的内容,可能是P也可能是Q,那么代码就可以演变为:

是否可以再抽象一点?比如:

这样是不是很抽象,可以表达的内容更多?从上述过程不难看出语义模型就是系统行为的集合,抽象是这个集合大小的度量,越抽象行为集合越大,比如我们说程序A是程序B的抽象,就可以记做

综上总结语义的抽象:

用不确定性忽略无关的行为

用状态变迁关系表达语义

状态变迁是初始状态到所有可能结束状态的集合

状态是变量到值的映射

从规格说明导出程序

一个简单的语言

语义定义

假如我们要用这个语言实现如下的规格说明,如何做?

句法的精化计算

程序推导

根据上面的精化计算规则如下,因为程序是推导出来的,所以其正确性是有保证的。

02

未来的一丝曙光

上面的例子使我们相信程序的自动导出是有可能的,要实现这个过程必须得有以下要素的帮助。

严格、精确的系统规格说明(目标)

行为、属性、约束

程序导出、变换(生成规则)

语义模型

抽象-精化(Abstraction-Refinement)

Equational Reasoning

在这些基础上,借助一些适当的方法与工具就可以有效、快速的生成源代码,帮助我们克服由人参与设计过程造成的瓶颈。现在这样的工具已经开始显现出来,比如机器学习,这就像黎明前的一道曙光,为我们的未来之路开辟了一种有力支撑的可能,因此未来值得期待!

03

结语

虽然设计未来的曙光已经开始显露,但在其完全揭示之前尚有一段较长的夜路需要摸索。对于我们而言,与其枯等它的降临不若为未来规划与准备,去打造抵御“诸神黄昏”的女武神。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180304G0NQ3200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券