大神解惑|程序员国的语言

在训练小白写循环语句的时候,大神给了小白这么一个练习题:写一段程序,找到 5 在 list [1, 2, 3, 5, 8] 中的位置。然后,小白给出了让大神感觉匪夷所思的代码(为了保护小白,大神在这里隐去了小白的小白程序)。大神让小白用人类的语言来描述一下自己想干什么,小白的描述如下(已被简化):

让 x 从 0 开始计算,直到找到 L[x] = 5。

用人类的大脑理解的话,当然是没有问题的。但程序员国的人并不这么思考,或者说并不这么说话。于是大神让小白把后半句换个说话再描述一下,小白想了想说:

直到发现 L[x] = 5

大神还是不满意,让小白再试一下,痛苦的小白又想了半天,给出了这样一个描述:

当 L[x] = 5 成立时,输出 x 的值

虽然小白在完成最后一次描述之后,写出了正确的程序,但他其实说的还是不对。

程序员国的人是怎么说话的

在程序员国存在很多俚语,这些俚语看起来和人类的语言差不多,但实际上这些俚语对应了程序中的一行或者一段代码。程序员们使用这些语言交流,并可以直接翻译成对应的代码。所以,这些语言又有着与表面不太一样的意思。大神在这里总结一些常见的程序员的语言,只有学会了这些表达的方式,小白才能融入到程序员的世界,和他们无缝的交流。当然,学会了这些语言,并且使用这些语言思考,也就大概学会了基本的程序写法。

1. = 怎么说

小白在学 Python 的时候,第一课就学了变量。但程序员的世界里,这个不读“等于”,这个读作“赋值”。意思和数学里的“设”差不多。所以在读题目的时候,常常会看到“设 x = 1”,或者“给定 L = [1, 2, 3, 4, 5]”,其意思是给一个变量赋了对应的值。

2. if 是什么意思

if 是代码里最常见的单词,只要需要对一些条件进行区分,就需要这个单词。在程序员的世界里,这个不读成“直到”,也不是“发现”和“当”。这些都是错误的表达。这个就是字面的意思:如果。看下小白上面的语言表述,其实大神就是想引导他表达“如果”这个意思:

让 x 从0开始计算,如果 L[x] == 5,就打印 x 的值。

当脑子里想的“如果”,就不会写出奇怪的代码了。其实如果和程序多交流就会发现,他们很喜欢说“如果”这个词,因为这就是他们每天的工作(职业病)。

if 配对的 else,在程序员国被说成:否则。这样,比较完整的的表达就是:如果……,那么……,否则……。这些表达虽然很呆(所以程序常常都给人很呆的印象),但很实用,因为直接对应了程序中的片段。

3. for 是什么意思

for 也是也程序里很常用的单词,本质上这个词表示重复。不过,翻译成程序员国人的语言,这个应该这么说:对于每个……,做“一些事情”。比如 Python 中的 for

for x in range(0, 10):
    print(x)

翻译成人类的语言就是:对于 [0, 10) 这个区间里的每个值 x,打印 x 的值。

4. while 是什么意思

在小白的几个表达中,使用了一个“当”的说法,但其实while在程序员国表表示“当”的意思。还是举一个 Python 里的例子:

x = 10
while x > 0:
    print(x)
    x = x - 1

这里,翻译成人类的语言就是:当 x 的值大于 0 的时候,就打印 x 的值。可能有些朋友因为受计算机二级考试的毒害,还知道一个“直到”的说法。不过,这个在 Python 里并不存在,也不是必须品。比如上面这个代码,也可以翻译成:打印 x 的值,直到 x <= 0。显然这个需要脑抽一下把条件翻转过来(是不是有点虚拟语气的意思)。

鉴于小白目前的学习进度,了解这些说法暂时够用。以后学习了更多的内容,再来总结吧。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 129,808评论 18 137
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 12,651评论 0 38
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 165,150评论 24 700
  • 今天,有一个陌生的朋友通过电话要安利产品,她告诉了我地址。 我听见财政局几个字就明白了,说:“我知道了。” 车到小...
    自由耕读阅读 161评论 0 3
  • 握不到你的手, 但感觉到你的温柔。 看不到你的脸, 但能想起你的笑容。 想见你, 却是在梦里。 想说爱你, 却只能...
    名字什么的最烦了阅读 73评论 0 0