我是一枚剑桥大学计算机科学系毕业的妹子,平时爱好各种新鲜事物,不会的都想学一点看一点。兴趣范围从技术、数学、金融到桌游、国标、英文书法、语言学、哲学、钢琴等范围极广,属于样样都知道一些的典型 jack of all trades。有收集德式桌游及大型乐高模型的癖好。
技术上主要擅长 JVM 语言,有几年 Java 经验,2010 年遇见 Clojure 之后顿时被其简洁的语法、简单的写法及极具表达力的特性深深吸引,2011 年得以开始专业 Clojure 5 年多,现于大摩写 Scala。主要用 Clojure 做数据流处理,但也曾用其做过网络应用乃至安卓应用。JVM 之外亦与 Python、Perl 等主流语言,以及 ML 等非主流函数语言打过交道。
约四年前开始与国内的 Clojure 社区有所接触,业余时间致力于解答 Clojure 相关问题,并希望能将 Clojure 的影响范围继续扩大。
静若处子,动若脱兔。对于从事编程工作的我们来说,动静之分又有另一番意义。我们写着静态语言往往想着动态语言的灵活,写着动态语言又容易想着静态语言的稳定和可靠。因此 IT 界又有俗话说:最好自己写的时候用动态语言,读别人写的用静态语言。静动态语言之争更是到如今仍然没有平息,两边各说各有理,似乎是肯定没有鱼与熊掌可以兼得的好事的。
常听到有人说,Clojure 确实优美,但动态语言实在驾驭不了啊!没有类型的帮助,在涉及到复杂的数据结构之后很容易失去对现有程序的理解,易读性也会急速下降,而这也确实是 Clojure 作为动态语言所造成的问题。但是部分解决这个问题的办法总是有的。core.typed 和 core.spec 两个核心库就可以帮助我们缓解动态语言太过野性框不住的问题,而本次演讲的任务就是向大家介绍这两个库,以及这两个库解决这一问题的不同角度。