序言
设计模式是编程语言的负空间,这些技术是开发人员为了撬动某一编程语言,以补偿它的不足而想出来的。不管是有意还是无意,其实我们都在使用设计模式。出自四人组(Gang of Four,GoF)的Design Patterns: Elements of Reusable Object-Oriented Software收录了我们已经使用的设计模式,并进行分类编目,更重要的是,该书命名了常见的设计模式,这样开发人员就可以轻松快速地理解常见模式。它给软件开发这个行业的工具提供了共同语言。
传统的设计模式书籍都以熟练掌握编程语言为前提,几乎只专注于模式本身,而本书兼顾Julia编程语言的优势和不足。本书介绍模式所依赖的编程语言特性,即使那些不熟悉Julia编程的读者也能快速上手。此外,本书将深入讨论那些被Julia魔法化的著名的设计模式。当你读完本书,一定会掌握这门编程语言。不过话说在前头,与其他经典的编程书籍一样,你可能需要反复阅读才能完全掌握本书内容。
创建一个被广泛使用的编程语言,有趣的一点是看到人们利用它做出非凡且令人惊讶的事情。这包括人们用Julia构建的令人难以置信甚至会改变世界的应用程序——从指定FAA的下一代防撞系统到绘制所有可见宇宙的天体,再到以前所未有的准确性和分辨率对气候变化进行建模。它还包括人们想出巧妙的编程技巧来帮助自己达到目标。
我最喜欢的是(Tim)Holy Traits技术,它利用了Julia可以根据需要有效分配任意数量的参数这一特性,以解决该语言缺乏多重继承的问题,这一点我们将在第5章中讨论。Julia不仅能做好工作,而且很多时候都能超出预期。比如特质(trait)可以依赖于类型的计算属性,允许表示多继承不能表示的关系等。这表明Julia仅用一个聪明的设计模式就成功解锁了这个语言的强大功能。
Tom的背景使他对编程语言及设计模式提出了专业、细致且平衡的观点。他最开始使用BASIC编程,但是从那时起,他就在专业环境中使用多种语言,包括C++、Java、Python、TypeScript、Scheme,还有Julia。他也将这些编程语言应用到了诸多行业,如金融、搜索引擎、电子商务、内容管理和资产管理。Julia在许多领域都获得了广泛认可,特别是那些有密集计算需求的领域,这可能并不是巧合。
我们的个人经历往往造就了我们看待这个世界的方式,有时你会发现某个新的工具就是为你量身打造的。某个时候,你遇到一个新的编程语言,突然意识到这就是你一直梦寐以求的编程语言。对Tom和许多人来说,Julia就是这样一门语言。期望它对你来说也一样。
无论你是第一次尝试Julia编程,还是已经使用Julia多年,如果想学习更多的高级技术,你会在本书中找到你想要的。享受用Julia编程的乐趣吧!
Stefan Karpinski
Julia语言联合创始人
Julia计算公司(Julia Computing,Inc.)联合创始人
[1] 该书已由机械工业出版社引进出版,书名为《设计模式:可复用面向对象软件的基础》,书号为978-7-111-61833-1。——编辑注