本文适用于英语专业的学生,书呆子,文学爱好者以及有时会为以下问题而苦苦挣扎的人文背景的人:“您是否使用过英语学位?” 这也适用于那些向非STEM背景的同事提出这个问题的人,他们一直对某个人如何从心理学开始并最终以Python感到困惑。
事实是,技术与人文相距不远。 实际上,我们英语专业学生在论文论文中完善的许多概念在开发人员的日常生活中得到了运用。 本文不是关于程序员可以从人文专业学到的知识,反之亦然。 这表明了这两个学科之间的重叠。 研究它们的兼容性以及它们如何相互补充。
在成为德克萨斯大学奥斯汀分校的开发人员之前,我想成为一名英语教授。 我于2007年从奥本大学(Auburn University)取得了英语学士学位,而那时我在那里做了很多技术工作。 我是教授专业网站的网站管理员,该网站由Dreamweaver维护并存储在Zip驱动器中。 我还在技术中心工作,在那里我播放了一些视频,以教授教授如何使用Blackboard的视频,并以我认为很酷的方式帮助他们将技术集成到他们的教室中。
当我开始从德克萨斯农工大学攻读英语硕士学位时,我仍然想成为莱西教授并撰写有关文学的学术文章。 但是,我再次引导自己担任技术职务。 我不是在英语教学中心工作,而是在英语技术中心工作,我帮助教师进行了屏幕录像,制作视频,使用Moodle (Blackboard的开源版本)以及寻找将Google Docs集成到课堂中的方法。 我还为《 世界莎士比亚书目》工作 ,在那里我研究了有关莎士比亚的学术文章,然后撰写了有关这些文章的摘要。 我必须使用一些标记,以便管理员可以将摘要复制并粘贴到站点中,但是我不知道我是在编码。
2009年,我参加了有关TEI:文本编码倡议的研讨会。 TEI是特定于手稿的XML标记语言。 它为出版商提供了许多很棒的特定标签以及有关书籍的其他信息,但是它也提供了一些方法来讨论正在网上转录的手写手稿。 例如,您可以在标记中表示某些文本被刮擦并替换为不同的措词。 我想使用TEI建立一个网站,谈论简·奥斯丁的粉丝小说。
但是我觉得我不知道怎么做。 我确实对技术很感兴趣并且对技术很感兴趣,但是对技术却不太了解。 我不知道如何注册URL,不了解CSS是什么,如果有可用的教程,我也不知道如何找到它们。 我还认为这太难了 。 在开始之前我就患有冒名顶替综合症 。 所以我改写了一篇关于简·奥斯丁粉丝小说的论文。
猜测来源
因此,让我们玩一个名为Guess the Source的游戏。 我将在样式指南中引用一个报价,您可以猜测它的来源:
句子结尾后应使用两个空格。
这是来自PEP8还是Strunk&White?
我讨厌PEP8中的这一行,因为在您的常规写作中,永远不要在句点之后放两个空格。 不要这样 这是从等宽字体和排版的时代开始的,我们不再在Internet或印刷材料中使用等宽字体。
除代码外。 因此,请遵循此规则来编写代码,但要在其他地方破坏它。 PEP8是Python代码的样式指南,即编写代码与撰写研究论文或论文有关的第一个线索是:“编写英语时,请遵循Strunk&White。” PEP8甚至没有引用Strunk&White。 它假设您知道这意味着什么。 (对于那些不喜欢的人, Strunk&White指的是The Elements of Style ,这是1959年首次出版的美国英语风格指南。)
关于Strunk&White的广义点是,该指南旨在帮助人们编写更清晰,更简洁,更一致,更易读的英语。 PEP8还是帮助人们编写更清晰,更简洁,更一致且更具可读性的代码的指南。
情节驱动的开发
让我们来谈谈测试,因为测试是文学课中某些概念可能派上用场的完美示例。 也许您还记得故事弧的基础知识:
- 博览会是您学习角色是谁,角色在哪里以及正在发生的事情的基础知识的地方。
- 不断上升的行动是引入问题的地方,我们开始经历将导致我们进入高潮的事件。
- 高潮是情节中最令人兴奋的部分。 这就是改变主角命运的地方。 在《 傲慢与偏见》中 ,这是达西先生最终向伊丽莎白求婚的场景,然后她告诉他,如果他是地球上的最后一个男人,她不会嫁给他,然后她开始质问自己。
- 跌落的动作是事物开始瓦解并下落到位的地方。
- 结实的东西将所有东西绑在一起,整齐的小弓。 结束。
我们也可以在测试中利用称为Freytag金字塔的弧。 实际上,这就是我最初在DjangoCon Austin上进行演讲的想法,这篇文章基于此。 我当时在PyCon的 Harry Percival的测试工作坊中 ,意识到他所提供的功能测试示例就是Freytag金字塔应用于测试的完美示例。 功能测试具有:
- 展览:Harry向我们介绍了Edith,后者听说过一个待办事项应用程序。
- 行动起来:伊迪丝(Edith)转到该应用,找到自己的出路,并决定在待办事项列表中输入一个项目。
- 高潮:伊迪丝的命运永远改变。 她执行了至关重要的关键行动,即将项目添加到待办事项列表中。
- 掉落的动作:她已经输入了项目,她看到已经为她输入并保存了该项目。
- 结账:伊迪丝很高兴,正要入睡。
在Harry编写单个功能测试之前,他写出了完全遵循Freytag金字塔的用户故事。 这样,他就知道用户需要通过其网站走什么路,他们将遇到什么,他们将做什么,以及如何解决所有问题。 他可以编写测试以测试所有这些步骤是否都已完成,然后可以编写代码以通过这些测试。
Edith通过应用程序走的路就是她的用户故事; 伊迪丝本人是一个角色。 在另一个世界中,伊迪丝(Edith)可能是小说中的主角,而这一特殊旅程可能是我希望这是一个更加激动人心的故事的一章。 以前已经研究过角色开发和剧情开发,这有助于编写完整而令人信服的用户故事。 程序员需要对他们的代码应该做什么以及应该按照什么顺序发生有信心,以便对其进行有效的测试。
用户故事和功能测试还没有结束。 当应用中断时,我们希望Edith如何React? 我们是否要她像希腊悲剧一样撕头发并撕破衣服? 我希望不是。 如果可能的话,我们可能想为她提供纠正错误所需的工具,或者向她保证我们知道出了点问题并且已经解决了。 哪一个是更令人放心的错误消息?
需要创造性的思维来确定我们的代码可能在哪里中断,建立检查并返回有用的数据。 任何程序员都可以返回该错误消息,但是要编写一条有用的(而不是令人生畏的)错误消息,则需要一个既有创造力的思想家,又具有出色的书面和口头交流能力的程序员。
当您编写好的测试时,您正在建立世界:可访问性需要同理心,同情需要想象力。 当您迷失在一本书中时,可以利用那种令人敬畏的感觉,并通过使用代码使自己陷入人们的视线中,从而与主角保持一致。 想象一下他们的挣扎和挫折。 为他们创建一个角色。 修复妨碍或困扰您的应用程序的问题。
但是回到功能测试。 你知道这还像什么吗? 一份大纲。
你知道还有什么轮廓吗? 基本上,所有Python代码。 Python喜欢空格,缩进和漂亮的格式,甚至比英语专业的学生更喜欢。
Python代码实际上使用了与许多其他书面作品相同的格式,例如新闻报道,博客文章,小说,研究论文,甚至是Emily Dickinson的手写椰子蛋糕食谱 。 您的函数定义就像标题一样。 您的文档字符串就像是研究论文的摘要,或者是喜欢的小说的新版本的转发。 该文档字符串告诉您即将发生的事情,它使您可以窥见作者或程序员的想法。 然后中间有一切:函数的内容,文章或故事的段落。 最后,您得出结论。 您返回一些东西,并且通过此特定功能的旅程已经结束。
可读性计数
编写良好的代码段是可读的,但是那又意味着什么呢? 机器不需要代码即可读取,但是在PEP20:Python的Zen中 ,Tim Peters很清楚可读性很重要 。 只要代码有效,计算机或编译器(或其他任何东西)根本不会在乎。 但是你的同事在乎。 照顾您的人。 与您共享工作的人需要您的代码易于阅读。
编写可读的代码需要同理心,这意味着您关心同一个编码人员。 可读且认真评论的代码还可以帮助将来的程序员理解您所遇到的困难,或者为什么要以自己的方式做出决定。 注释甚至可以帮助您重新定位自己的代码。 我的一个朋友曾经说过:“评论就像对自己的爱情笔记。” 一位同事喜欢说注释使您在凌晨3:00时保持理智,当您接到电话后,发现发生了灾难性的错误。
欧蓝德系列 ( The Outlander Series )就是一个很好的例子,这基本上是一部完美的书籍系列。 《 Outlander系列》讲述的是第二次世界大战的护士,他偶然地回到了18世纪的苏格兰。 这个故事包括战争,浪漫史和奇妙的故事(现在这也是一部很棒的电视连续剧,但这不是重点)。 在第五本书的末尾, 《火热的十字架》(我敢保证这不是破坏者),我们的女主人公克莱尔(Claire)建于18世纪,是英里内知识最渊博的医学专家。 她对待一个快要死的人,她很确定这是因为她给了这个病人一种他们过敏的药。 她为是否将发生的事情写在日记中而感到困惑。 在该系列的前一本书中,当城镇居民用魔术错误地误解了她的医疗坏蛋时,克莱尔被当作女巫来审判,因此她不愿写下任何可能对她不利的东西。
克莱尔说:“这里的某些未来医师将面临同样的困境;进行可能的危险治疗,或者让患者死亡可能已经得救的人。那可能是谁?我擦了擦笔,思考着……。”然后,她思考了一下自己的孤独程度,有多少医生,没有多少医学院,然后她总结道:“我坐直了书,打开书。我蘸了笔,开始为了不知名的医生追随我,写上必须存在的台词。”
这就是我们编写可读代码的原因:为了未知的编码者,我们将继续关注我们。
结局
我上大学时,有个室友是新闻专业。 我和Niki互相编辑了彼此的论文,我会尝试让她使用更多的形容词,以使她的写作更加精彩。 她会告诉我剪掉我繁华的描述,然后说清楚。 大多数构图样式指南以及PEP 8和20与Niki都同意。
“忽略不必要的话。”
“简单胜于复杂。”
“写得很简洁。”
“稀疏胜于密集。”
这些是PEP20和Strunk&White的法令。 我不会指定哪个行来自哪个工作,因为这无关紧要(而且Python的Zen奉献者仍然可以选择它们)。 但关键是它们是如此相似。 好的写作简洁明了,简单易懂,无论您编写的是一段代码还是一篇文章,都可以做到。 我可以从Python的Zen中获得与代码无关的代码,然后将其通过电子邮件发送给我的作文指导老师,然后他们将它们打印出来并立即分发给他们的班级。 实际上,我应该这样做。
我们被称为编码人员 , 程序员或开发人员 。 我们整天做什么? 我们编写代码。 我们阅读请求请求。 我们编写测试。 我们阅读别人的代码。 我们写评论。 我们是读者和作家 。 作为代码的读写者,在课堂上阅读和写作文学的经验与我们息息相关。
“您会使用英语学位吗?” 我经常被问到。 是的,我每天都使用我的英语学位。
月
着重介绍首次Opensource.com贡献者的文章集 。
翻译自: https://opensource.com/business/15/10/jane-austen-on-python