最近Jerry参加了一次Toast Master,我担任的角色是Joke master,需要在5分钟内讲一个英文笑话。正好几天前我在“程序猿”微信公众号上看到这个搞笑的gif图片。文章题目是“当你的正则表达式按照你的期望工作的时候”,正文没有文字,只有这张gif图片。我本人觉得很搞笑,于是我就想在Toast Master上用英文讲这个笑话。

但讲的结果非常糟糕,现场没有一位同事get到点,没有一位同事觉得这个笑话好笑。明天我会在诸葛亮和我的1:1 sync会上对我5分钟的presentation做一个retrospection,找出问题所在。

尽管参加Toast Master的同事里,除了开发岗位上的同事外,我熟悉的鲁尼,因扎吉,舍普琴科这些同事也有深厚的开发背景,但还有很多同事是非开发背景,没有接触过正则表达式。所以我需要花点时间简单介绍下到底什么是正则表达式。

我先把要讲的这个Joke的script用中文写下来:

"正则表达式是计算机科学的一个概念,通常被用来检索、替换那些符合某个模式(规则)的文本。大多数现代编程语言都支持利用正则表达式进行字符串操作。我们用一个简单的例子来介绍为什么要使用正则表达式。假设我们被要求开发一个客户注册的网页,客户注册时需要输入自己的手机号。那么网页必须对客户输入的手机号进行检查确认其合法性。如果用常规编程方式,我们会写一系列IF语句来判断,例如:

如果输入字符包含非数字字符,不合法
如果输入字符总个数不为11,不合法
如果第一个字符不为1,不合法
如果前三位不为联通,移动和电信的任意一种组合,不合法

而如果使用正则表达式的话,我们可以省去这些繁琐的校验代码,只需要按照正则表达式的语法,用包含字母,数字和特殊符号的组合来定义一个规则,这个规则描述了一个合法手机号的特征。正则表达式的处理器接收到输入字符串,使用程序员定义好的规则进行匹配,如果匹配成功,说明该字符串代表一个合法的手机号。

尽管正则表达式功能强大,然后其定义规则的语法同自然语言有很大差别,晦涩难懂。我相信大部分程序员都记不住所有的语法,至少我不行。每次我进行正则表达式开发时,都会打开包含语法的在线网站作为字典来用。另外,在开发复杂的正则表达式时,即使很有经验的程序员也很难保证一次成功。我自己的习惯是打开一些正则表达式测试工具,对规则做一些修改-测试-发现不工作-继续修改-测试,不断重复这个过程。有时要让一个复杂的正则表达式能够完美工作,也需要一点点运气。

图中这个警察巧妙地射击,通过一系列复杂的步骤抓住了罪犯,就像程序员在一个复杂的正则表达式里做了最后一处修改,完美地完成了字符串匹配的任务。"

写完后我发现script里花了太多篇幅介绍正则表达式本身,如果全部讲出来大家一定觉得太枯燥,没有趣味性。而且script里80%的篇幅再讲正则表达式,只有20%提到了图片。如果听众没有开发背景,是不可能把这两者联系起来的。于是我就把第一版里拿正则表达式进行手机号输入验证的细节删掉了,只用一个话带过,然后由我告诉听众:图中警察射击行为和正则表达式有四个共同点。然后我把修改版翻成了英语:

Title: When your regular expression works as you expect

Regular expression is a concept in computer scenience used to search or replace text which fulfills a given kind of pattern.

Let me use an example to explain the use case of it. Suppose we need to develop a web site for user registration, and our users are asked to input their mobile phone number in the page. So we use regular expression for validation purpose.

Regular expression has completely different grammar compared with natural language and difficult to learn and read. For the development of complex Regular expression, it’s almost impossible even for an experienced developer to achieve it at the first attempt. My own best practice is to open a test tool, change my regular expression rules and test there. If test fails, change and test again. Repeat this process till test succeeds. I do believe that sometimes a little luck is really needed to make it work.

If I was asked to give some keywords on the regular expression, my answer is: cool, amazing, tricky, and difficult.

The same keywords could be applied to this guy. The policeman in this picture made a very smart shoot, and captured the criminal with a series of complex steps, just as a programmer finishes a very complex regular expression and make it work perfectly at one shot, it’s unbelieveable!

但讲完我发觉,因为我把正则表达式来验证用户手机号输入的具体细节删除了,很多同事对正则表达式这个概念就更模糊了,所以更难理解笑点。我觉得在Toast Master里打出来的一页slide里,左边写20行用传统方式校验的代码,右边用正则表达式一行代码。用20:1的悬殊对比,能够让非开发同事对正则表达式的强大有更感性的理解,然后就容易地和图里警察的酷炫操作结合起来了。可惜我误以为TM讲Joke时不能用slide,所以没这样做。

  • 星矢: 看了视频回放仍然没有听懂

  • 张飞: 题材不平易近人

  • 马超: 中国笑话和外国笑话的笑点不一样

  • 曹操: 前面听懂了,最后结尾的部分一不留神就过去了。没get到点。讲笑话太难了。我也不知道应该怎么讲。和一般的英语演讲比起来,慢一些更清楚一些,尤其将要抖包袱的地方(因为一般包袱在上下文意思上转折的比较厉害,也比较短)应该会更好一些。

  • 贾诩: 题材不够大众化,没听懂。gif有点帮助。

  • 宋江:

能看得出你尝试跟大家在做互动,讲的时候也显得比较的放松。只是,我真的没有get到那个笑点在什么地方,我知道regular expression,可是我没有听出来他跟你发的那个图片有什么样的一个关系,可能下次的时候,你需要事先再多想一想,怎么样把这两个东西的关系能够讲的更清楚一些,让大家更容易理解一些,尤其是没有这个背景的一些同事。

如果你想让大家看到这两个东西类似,那你就一定要有那么一两个点,让大家很准确的感受到这两点的相似程度,这一两点很清楚明白。你上面的四个关键字主要是通用啦,太普世啦,所以说不合适。

  • 高俅: 我之前在网上看到过一个公式,段子=铺垫+包袱。今天的这个joke,我个人感觉铺垫是够了,但是包袱不足。

包袱,可以理解为意外。举个栗子,大家都应该热爱小动物,因为他们非常好吃。

后面这句话就出人意料了。今天的joke里讲了正则很难,一次做对就跟图片里的动作一样难。感觉上像是用图片来形象化说明有多难。

但后面就没有出人意料的部分了

  • 李小双: Jerry作为Toastmaster八月1日这一期的Joke master,做了充足的准备。分享了一个在程序员中很能产生共鸣的笑话,配上动图让这个笑话更通俗易懂。同时这个笑话也被分享到twitter, 获得了相当的关注度。但是,为了在Toastmaster上更好的起到暖场的作用,下次笑话的笑点需要更明显。

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

程序猿如何练习用英语讲好一个笑话?相关推荐

  1. @程序猿(媛),如何过一个不俗套的中秋节?

    价值回归,技术先行,随着"区块链泡沫"一词近期被推上了风口浪尖,越来越多的投资者.爱好者开始将视线转移至区块链技术本身,区块链也逐渐回归理性和技术本质,这也同时给大肆炒作区块链的机 ...

  2. 程序猿如何高效的学习英语

    大家好我是林志强,一个不安分的程序猿.作为一个英语四级都没过的英语智障,被逼无奈又开始再一次的英语学习之旅了.之前学习英语都是下个百词斩啊.英语流利说之类的APP,然后开始狂背单词,然后就没然后了.我 ...

  3. 做程序猿的老婆应该注意的一些事情

    转自:http://www.jianshu.com/p/492903fb7005 十一年前我和程序猿第一次见面,还是大一军训期间.我甚至不确定程序猿是否记得那是第一次见面.当时不小心装伪文艺参加了吉他 ...

  4. 千万不要嫁给程序猿,我是认真的

    Linux编程点击右侧关注,免费入门到精通! 有一回,鄙人的丈夫(简称"鄙夫")发现家里墙壁脏了,跟公司请年假自己刷墙.经过一番调研,鄙夫发现了一个刷墙神器:一个自带吸泵,可以把涂 ...

  5. 漫谈程序猿系列:看看你离优秀有多远

    前段时间(大概是8月份吧)我最终拿到了驾照,科目一.科目二.科目三.科目四都是一次性过的,没有给教练塞钱也没有给教练递烟.考科目三(路考)时,有个女生没能通过还被陪考员讽刺,伤心地哭了,梨花带雨让人心 ...

  6. 程序猿媳妇儿注意事项 (转载)

    十一年前我和程序猿第一次见面,还是大一军训期间.我甚至不确定程序猿是否记得那是第一次见面.当时不小心装伪文艺参加了吉他社,想借一本吉他入门书,然后同在吉他社热心的海哥说他一同学有,就带着我去拿书了.于 ...

  7. 程序猿媳妇儿注意事项

    十一年前我和程序猿第一次见面,还是大一军训期间.我甚至不确定程序猿是否记得那是第一次见面.当时不小心装伪文艺参加了吉他社,想借一本吉他入门书,然后同在吉他社热心的海哥说他一同学有,就带着我去拿书了.于 ...

  8. 漫谈程序员系列:3D打印能打印出程序猿吗

    首先声明,本文是一本正经的胡扯,绝不是随随便便的胡扯,请您不要随便攻击我胡说八道,我要重复星爷在<喜剧之王>里的台词:其实,我是一本正经的喷子. 3D打印的定义 关于3D打印,下面是来自百 ...

  9. 程序猿炫起富来你们根本看不懂!

    一直以来我们对程序猿都有误解,认为他们只会写代码.穿格子衬衫.背双肩包.还秃顶,认为他们工作枯燥,生活低调,从不炫富. 不是程序猿不炫富,是炫起富来你们根本看不懂!!! 比如程序猿的三大信仰之一 -- ...

最新文章

  1. 和老同事的谈话:关于职业生涯以及MDA
  2. SpringBoot第十七篇:上传文件
  3. Charles抓包实战详解
  4. input的onkeyup效果 超级简短代码
  5. Java 中关于this、static、final 关键字的使用
  6. 2016.NET Core相关内容回顾
  7. Datawhale-零基础入门NLP-新闻文本分类Task04
  8. java中什么是task_20171018java总结——Spring任务调度task:scheduled-tasks
  9. 用soapUI测试webservice
  10. 爬虫python能做什么-Python除了能做爬虫之外还能做什么?
  11. Python字符串title()
  12. 【FZU 2277】Change
  13. 距7月30日PMP考试不足10天,应该做点什么?
  14. jquery全国省市县三级联动
  15. 【从零开始学架构-李运华】04|复杂度来源:高性能
  16. 用单片机实现流水灯(进阶版)
  17. oracle 级联外键,Oracle 级联删除外键
  18. 【翻译】Paparazzi: Surface Editing by way of Multi-View Image Processing
  19. 浅谈基于PLC和Modbus的配电室现场环境监控系统设计及产品选型
  20. Eclipse的乱码问题是如何解决的

热门文章

  1. plc实验报告流程图_plc实验报告(20140924)
  2. 1. debian telnet安装
  3. 计算机毕业设计、课程设计、实战项目之[含论文+源码等]SSM网上水果生鲜超市商城|电商系统[包运行成功]
  4. 创龙TI KeyStone C66x多核定点/浮点TMS320C6678 DSP开发板处理器、NAND FLASH、NOR FLASH
  5. 健康管理系统有那些比较好用
  6. java淘宝秒杀脚本(已自测)
  7. 非项目活动的时间怎么跟踪?
  8. 当前的程序自动修复(automated program repair)工具介绍
  9. 关于开始时间和结束时间
  10. java 记牌_JAVA入门第三季——简易扑克牌