Fork me on GitHub

从写博到出书:过程全记录

 

从读博士起,我对编程的兴趣忽然浓厚起来。当时做大规模并行运算,需要自己写很多程序和脚本。作为新进研究组的新人,我自觉负担起很多写程序的活儿。写得多了,兴趣也变得浓厚。


那个时候抓紧一切机会学习编程。在我读博的研究所里,有一位英国教授也喜欢编程。她叫爱玛·希尔(Emma Hill),教我们用编程语言处理地球科学的数据。有一天,我路过她的办公室。她问我最近的学习进度。

“准备学Perl呢。”我回答说,“感觉Perl在地理领域应用很广。”

“你为什么不学学Python呢?”爱玛问我,“这门语言发展很快。你学会了或许可以教教我。”


我之前听过Python的一些传闻,比如那句著名的“人生苦短,我用Python”。但我担心Python在地球科学研究方面不如Perl积累深厚。有了爱玛的鼓励,我下定决心去研究Python。Python学起来确实很快。没过多久,我就可以用Python来解决我在科研中遇到的大部分问题了。记忆比较深刻的是,有一次下载来自美国研究所的一批气象数据。我用Python中的多线程并发下载,创造了大学中网络传输的纪录。学习加实践,让我爱上了这门语言。


随后,我开始在博客园写一系列博客,记录自己学习Python的过程。这一系列的文章叫“Python快速教程”。我想在这些文章中呈现出Python简单易学的特点,以便让更多的人也来享受编程的乐趣。在写作过程中我意识到,要想讲明白一门编程语言,还要引入额外的背景知识。我的编程博客也从Python开始,拓展到网络协议、操作系统、算法、数据分析等方面。写的时间越长,收获的读者也越来越多。博客园的一位运营告诉我,有一段时间我的博客访问量保持在全站的前三。我的一位大学同学告诉我,他不但读了我的博客学Python,还成功在硅谷找到Python相关的工作。还有一次朋友向我推荐Python教程,才发现居然就是我写的这一份。所有这些都让我感到惊喜。因此,我非常感谢爱玛给我推开的这扇门。


完成博士学业之后,我需要在科研和编程之间选择。由于编程带给我的美好体验,我毫不犹豫地选择了编程。将近三十岁的我,和二十出头的年轻人一起做产品、调试、debug。我必须要非常努力,才能赶上这群富有天赋而精力旺盛的年轻人。但我并不觉得辛苦。辛苦是学习的台阶。在编程中,我享受着脑细胞的疯狂激活,享受着未知错误的折磨,以及苦苦思索之后的豁然开朗。更棒的是,我的伙伴总是以乐观的态度来看待技术,以享受的心态来享受编程。我从中受益良多。更何况,计算机浪潮已经并将继续改变世界。我很幸运,能加入浪潮中。


“Python快速教程”得到了不少编辑的认可。他们希望我能把博客文章改编成一本书。写书当然是莫大的荣幸,我很感谢每一位编辑的赏识。可在博士学业的压力下,我能抽出的时间实在有限。所以多次的出版计划都搁浅在拟定目录这一步。终于拖到博士毕业,我才开始认真整理之前的文章。把略显凌乱的博客文章改编成书,工作量比我想象的要大得多。在此期间,我也开始了一个新的项目,研发一款用于畜牧的智能芯片。生活的节奏又变得忙碌,能分给写书的时间大大减少。

 

这本书的最终诞生,有赖于许多人的支持。安娜是一位非常宽容的编辑。从签合约到完稿,我拖延了超过半年的时间。幸好安娜对我的拖延症格外包容。我在一个写作小组认识本书的插画师雷雨田。她绘制的精美插画,让枯燥的技术书变得生动有趣。在写作博客的过程中,很多人都指正过文章中的错误,或者对写作方向提出建议。我还有一个小小的编程讨论组。小组里的朋友,如王豪、周昕梓和黄杜立,都花时间审阅文章。正是因为他们的审阅,我才能放心的交稿。

 

即便有这么多人帮助,写完一本书不太容易。油墨印刷成字,还是很严肃的一个过程。即使是完稿之后,我还是重新过了三四遍稿子,改动了不少的地方。比如说,我在写对象名时,会习惯性地按照Java的代码规范写成thisObject,而不是PEP8规定的this_object。在我认为,thisObject这样的写法更容易让对象和函数区分开。我当然可以这么做,PEP8只是指导性的代码规范,而不是强制要求。但我又担心自己会误导读者。毕竟,代码不止是写给自己读的。如果用我的书写形式写成Python库,那么其他遵照PEP8的程序员在调用时会不会觉得奇怪?

 

反反复复思索了很久,直到有一天想到Python诞生时遵循的一个理念:

“如果常识上确立的东西,就可以遵照常识,没有必要过度纠结。”

于是,我选择了服从PEP8的代码规范,把书中的代码订正了一遍。

 

你瞧,Python的理念已经开始在指导我。Python吸引我的,正是这样一些旗帜鲜明的理念。在我现在的工作中,Python依然占据着重要的地位。我会用Python进行网站开发和大数据分析,还会用Python来写一些在单片机上运行的脚本。当然,我也离不开其他语言,比如处理数据库的SQL、编写安卓App的Java、网页前端的JavaScript等。但Python让我爱上编程。我也希望,这本书能让读者也爱上Python,并且继续像我的博客文章一样, 能帮助到那些想学习编程的人。在此存一个美好心愿。

 

文章改编自《从Python开始学编程》的前言部分。

 

 

posted @ 2016-11-23 18:02 Vamei 阅读(...) 评论(...) 编辑 收藏