SIST 1A104 Mon May 10 2021 18:00:00 GMT+0800
Welcome to GeekPie_HPC 讲座系列! 未来我们将邀请各界科技人士来我校讲座, 敬请关注。
对于相当一部分人认为用上设计模式之后代码会变得复杂与冗余,千里冰封个人感觉不是这么一回事。首先,IDE可以帮助用户建立设计模式的模型,将所有成员变量都建立好;但是也会有人认为自动写起来方便,读起来却很麻烦。设计模式的代码其实都是一个模子里刻出来的,一个几百行的文件,有的时候读到前三行你就能知道代码的全貌。这意味着如果作者严格遵循设计模式,不仅能够提升代码的可读性,还能够降低整个代码的维护成本。对于后一种观点,我们可以站在类型系统的角度来解释。这个问题能够通过不同的类型系统来解决:不同的类型系统下会拥有不同的设计模式,在我看来设计模式就是就是你想完成一件事,然后把代码写成一个特定的格式,这是一个感性的定义。比如说异常在一般语言中是语言特性,但是在Haskell和Rust中没有这个语言特性,它们都是用库完成的。设计模式我个人感觉都可以是在学编程时自己发现的,因为有的设计模式实在是太简单了,以至于Haskell社区许多时候都不把这些东西叫做设计模式,而是单独使用名字来称呼他们,比如 Profunctor Lens, Tagless Final, MTL, Extensible Effects还有 Agda 那边的totally free等。有一些复杂的设计模式可能难以自行发明,这时候可能才就需要去学习这些前人总结的设计模式。
本次讲座,将从type system 基础出发,带领大家进入一个type free 的境界。如涉及宗教战争,欢迎来怼。