感谢一路走来给予我帮助的所有人。
首先,感谢Manning出版社的两位编辑,他们是负责帮助我将手稿从最初的稿件转换为符合出版社要求的Helen Stergius,以及在过去几年里一直致力于推进本书出版的Jennifer Stout。没有他们的帮助,就没有本书的顺利付梓。很高兴能与你们合作,感谢你们的帮助、所提的宝贵建议以及对我的耐心!
感谢本书的两位技术编辑!非常感谢已经加入团队好几年的Arthur Zubarev,你提供了大量出色的反馈,并不断鞭策着我前进,非常荣幸能与你合作。特别感谢我的朋友Aurelio De Rosa。在着手写作本书之前,我们曾一起在一个JavaScript网站上发表帖子,我也有幸让他担任了那里的编辑。除了教给我很多关于技术写作的知识,他对本书的贡献也是巨大的。他是本书的第一位技术编辑,除了为整本书指明方向,他还指出了需要纳入其中的主题,并对代码进行了审查。此外,当我找出版商时,他向我推荐了Manning出版社。
还要感谢Manning出版社的其他所有人,他们与我一起参与了本书的制作和推广,本书的成功离不开整个团队的努力。感谢审稿人Andrei Formiga、Christoffer Fink、Christopher Haupt、David T. Kerns、Eddu Melendez、George Thomas、Jim Amrhein、John Montgomery、Lucas Gerardo Tettamanti、Maciej Jurkowski、Matteo Gildone、Michael Jensen、Michael Kumm、Michelle Williamson、Rasmus Kirkeby Strbk、Riccardo Noviello、Rich Ward、Richard Vaughan、Timmy Jose、Tom Jenice、Ursula Cervantes、Vincent Zaballa以及Zachary Fleischmann。感谢你们早在手稿的编写阶段花费大量的时间阅读并给出宝贵建议。
感谢我的家人和朋友,感谢你们这些年来对我的支持和耐心。写这本书花了我大量的时间!如果你也有过这样的体验,就会明白这意味着占用许多可以去郊游、与朋友聚会或做家务的晚上、假期及周末,因为所有的这些时间都需要用于手稿上。如果没有家人及朋友的帮助和理解,我是不可能完成本书的。
最后,我还要特别提及一些人。正是因为他们,我才能成为计算机科学家。
感谢我在卡塔尼亚大学求学期间遇到的老师们。想要感谢的老师太多了,囿于篇幅,在此我只列出如下三位导师:Gallo教授、Cutello教授以及Pappalardo教授。在这个大学学位的含金量受到质疑的时代,人们总想找到比取得大学学位更快、更实用的替代方案,但我仍然认为对导师和母校这么多年来所做的出色工作给予认可是非常重要的。大规模开放在线课堂(Massive Open Online Course,MOOC)和代码训练营的确是很好的替代之法,正是因为它们对授课地点和学生身份不设限,才让教育朝着惠及大众的方向迈出了一大步。但我觉得,如果没有上大学的经历,我一定会错过对批判性态度的培养。批判性态度让我们能够知道如何推理问题,以及如何获得更全面的技能知识,而不仅仅是满足找工作的需要。
不得不承认,我也曾对像线性代数这样的数学课程持怀疑态度。在从事开发工作时,我根本意识不到会在什么时候用到它们。不过在毕业若干年后,当我开始接触机器学习时,所有的这些数学知识都派上了用场。
最重要的是,我要感谢在我早年的生活和学习中不断支持我的一个人——我的母亲。为了能让我完成学业,以及满足我继续深造的愿望,她做出了巨大的牺牲。有了她的支持,我才能实现自己职业生涯中的所有目标,包括写这本书。因此,从某种意义上讲,这本书的成功和她密不可分。