9.5 KiB
与 Emily Morehouse 的 Python 社区访谈
我很高兴本周能邀请到艾米莉·莫尔豪斯。
Emily 是 CPython 核心开发团队的最新成员之一,也是 Cuttlesoft 的创始人和工程总监。Emily 和我谈论最近的 CPython 核心开发人员 sprint,以及她在大学同时完成三个专业的事实!我们还将了解她对编译器和抽象语法树的热情。
让我们从显而易见的开始:你是如何进入编程的,你是什么时候开始使用 Python 的?
Emily: 我的编程之路是从爱上英格玛机器开始的。真的,我是在大学期间偶然接触编程的。我最近把我的一个专业从生物化学转到了犯罪学,而且该系刚刚启动了一个计算机犯罪学项目。
我被鼓励去尝试编程入门课程,看看我有多喜欢它。我们的一个最终项目是建造一个 Enigma 机器模拟器(注意,是用 C++),我被吸引住了。我决定增加第三个专业来获得一个完整的计算机科学学位(稍后会有更多的介绍!).
由于计算机科学课程理论性很强,而且侧重于 C 和 C++等语言,我开始在课程之外寻找方法来学习不同的东西。我在周末学习了 Python,在 web scrapers 上工作,并最终被聘为研究员,在那里我们使用 Python 从各种网站收集和分析公共数据。
对我来说,编程跨越了广泛的挑战性逻辑和技术问题,以及更抽象的概念,如人类如何思考和与机器互动,以及技术如何改善我们的日常生活。它填补了学术和艺术之间的空白,我不知道我需要或者能够填补这个空白。
正如你已经提到的,你曾就读于佛罗里达州立大学,并在那里获得了计算机科学学位。还有犯罪学学位。另一个在剧院…你睡觉了吗?一个学位很难,但是一下子三个?我真的很想知道你的秘密,以及当你有这么多其他事情要做的时候,学习和学习编码的任何时间管理技巧。
艾米莉:我肯定没怎么睡觉。除了所有的学校作业,我还做了一份近乎全职的工作,甚至还在我们当地的咖啡店做夜班经理,同时还参加戏剧排练和演出。
我在计算机科学系找到了一个研究职位,消除了一些压力。我很幸运地以大量的学分开始了大学生活,并通过了一些课程的测试,所以从技术上来说,我已经领先了一年,这给了我更多的自由去尝试像编程这样的课程。
我就是这样长大的。从很小的时候,我就知道我的一天从早上 7 点左右开始。我从学校直接去排练和舞蹈课,然后必须做作业,直到我睡着。我必须学会如何记住信息并快速解决问题——我必须保持条理,所以我列了很多清单。
我问过父母我是怎么变成这样的,他们只是耸耸肩!我一直觉得我能很好地控制自己的时间,以确保这是我想做的事情,我认为在如此忙碌的时候这很重要。你必须想尽一切办法,否则事情就会半途而废。
我明确建议找到一种方式来保存待办事项清单,并对你的时间进行优先排序。我使用一个名为 Bear 的应用程序(类似于一个简化的 Evernote,但具有程序员友好的主题和 markdown 支持)以及许多任务优先级排序。
我还发现,通过多次记下来,我学东西很快。我用这个方法来记忆表演的台词。我会涂掉我的台词,然后回去,凭记忆把它们写在一张单独的纸上,冲洗,然后重复。我到了这样一个地步,如果我把一件事写下 1 到 2 次,它就会坚持下来。
你是卡特尔软件公司的联合创始人和工程总监。看起来好像你在大学毕业前就开了这家公司。你大学一毕业就开始创业而不是申请初级软件开发员的动机是什么?
艾米莉: 卡特尔软件是一个环境问题。我从未想过我会经营自己的公司,尤其是不会和我现在的丈夫弗兰克一起经营。我处于一个奇怪的时间空档,我比预期提前完成了我的本科学位,这意味着我错过了所有研究生院的最后期限。
FSU 同意让我在那里开始我的硕士课程,我打算呆一年,然后转到其他地方,在那里我可以继续从事解析器、编译器和形式验证方面的工作。我也被大型科技公司录用,我有点迷恋住在旧金山或波士顿的想法。(那时我只在佛罗里达住过。)
但后来,弗兰克和我在塔拉哈西找到了进入这个萌芽中的创业生态系统的方法。我们遇到了一些人,他们成为了伟大的导师,在我们开始工作之前,我们已经有了第一批客户。我想,“为什么我要离开所有这些对我的未来和成功投资的人,去成为其他地方成千上万人中的一员?”
我想我应该抓住机会开始自己的事业,并继续沿着这条快速发展的道路前进。我知道我会在更短的时间内学到比在任何地方都要多得多的东西。所以我在研究生院第一学期结束后就退学了,把所有的时间都投入到了 Cuttlesoft 上。
回想起来,我想象不出一条不同于我的道路。在我拒绝那些工作机会后不久,苏珊·福勒的故事就曝光了。我不禁想,“那可能是我。”我真的相信一家公司的文化是自上而下的,我很高兴能为一家公司做出贡献,在那里我可以以积极的方式产生巨大的影响。
今年,你实现了一个梦想,在 PyCon 大会上演讲,题目是《AST 和我》。我承认,有些东西超出了我的理解范围,但我仍在学习。我得到的印象是,语言内部让你着迷。对于刚开始编码之旅并想了解更多香肠制作方法的人,你有什么建议?你会推荐什么资源?
**艾米莉:**是的!在大学里,我是个古怪的孩子,喜欢几乎所有人都讨厌的课程(编程语言、编译器、计算理论……)。我会花几个小时画出非确定性有限自动机和状态机作为我的课程笔记。
我是 Bruce A. Tate 的《七周七种语言:学习编程语言的实用指南》的超级粉丝。龙书(编译器:原理、技术和工具)是一部经典著作,也是我们今天仍在使用的许多书籍的支柱。(Python 的编译器就是基于此。) Philip Guo 关于 CPython 内部的视频系列也很棒,在我深入了解 Python 如何工作的过程中帮助了我。
Ricky: 祝贺你被提升为 CPython 核心开发者!你一定很激动。最近 CPython sprints 的印心怎么样?有什么激动人心的事要分享或有什么故事要讲吗?别担心,我们会保守秘密……
**艾米莉:**谢谢!CPython Sprint 非常有趣。我们很少让这么多核心开发人员在同一个房间一起工作。我们都非常感谢 PSF 和今年的 sprint 赞助商微软对 CPython 的支持。
我能够参加 PyCons past 的 sprint 和语言峰会,并有机会了解这个团体的很多情况,所以这次 sprint 感觉非常正常,但能亲自看到每个人并与他们一起工作真是太酷了。
在 Guido 的指导下,我花了 sprint 的大部分时间来实现 PEP 572 ,著名的赋值表达式 PEP。无论你对赋值表达式持何种态度(或者我现在亲切地称之为海象操作符),向语言中添加新语法并深入内部以使变量作用域按预期工作都是非常酷的。它将在明年早些时候出现在 3.8 的 alpha 版本中,所以请密切关注!
sprint 中我最喜欢的部分之一是了解更多关于 CPython 的历史。自从我开始核心开发之路以来,我发现听到别人如何成为核心开发人员的故事真的很有趣,所以我尽可能地向每个人提出这个问题。
了解每个人(尤其是那些从很早就开始参与的人)为一个项目投入如此多时间和精力的历程和动机,是了解如何继续发展团队和增加多样性的重要一步。
现在是我的最后一个问题:除了 Python,你还有什么其他爱好和兴趣?有你想分享和/或插入的吗?
艾米莉:我在业余时间尽量利用科罗拉多州的一切优势——来自佛罗里达州的我仍然完全迷恋落基山脉,喜欢徒步旅行。丹佛也是一个伟大的美食城市。
当我腾出时间的时候,我也真的很喜欢瑜伽、阅读、听播客、玩视频游戏(尽管我还在慢慢研究最近的《战神》),并试图让我的室内植物存活下来。我也喜欢和我的丈夫和我们的狗在一起——他们是我的世界。
谢谢你,艾米丽,这周和我在一起。你可以在 Twitter 或 Github 上关注艾米丽的工作。点击了解更多关于她的公司,卡特尔软件。
如果你想让我在未来采访谁,请在下面的评论中联系我,或者在 Twitter 上给我发消息。
