韩林涛老师:译者编程知识30天×300字写作计划 | Day 6

在学习编程的过程中,有一些错误即便老师反复提醒,反复举例说明,但同学们还是会在写代码的过程中出错,举几个有趣的例子:

例一:大小写

通过本书的学习,大家应该知道网页上显示的许多内容并不是代码里敲出来的,而是我们通过代码从数据库中获得的。

从获取数据的角度来看,我们应该首先连接到一个远程的服务器上,然后选中这个服务器上的一个数据库,然后选中这个数据库中的数据表,而这个数据表长得就像一张Excel表格,表格的第一行有好几列,每列都有自己的名字,我们称之为字段名。

比如有个字段名叫:ID

如果我们想获取到这个字段名对应列下的数据,我们在代码中就要写要从哪个字段中去获取。

我经常会遇到有同学在代码中写:id

显然,这个时候数据库不知道id是哪张表的哪个字段,所以你的代码自然无法运行正确。

我们的同学这个时候就非常疑惑:什么时候大小写是功能等同的,什么时候又不是呢?

这种大小写敏感的例子非常多,在我们书中就有很多,比如你写的SQL语句大小写就不敏感,你写的HTML代码大小写也不敏感,可偏偏就是SQL语句里你要指定的字段名大小写敏感。

为了直观理解,你可以认为凡是要点名指姓的东西大小写都是敏感的,因为你想去找小王打架时如果找到了大王,吃亏的概率就会比较大。

例二:标点符号的先后顺序

这也是一个初学者很讨厌的知识点。今天一位学员遇到了个问题,TA的表格没有显示完整,不知道哪里出错了。我仔细一看,原来是表格的尾巴(/table)放到了循环里头:

已经开始学本书的同学应该知道我在说什么。在上面这个例子里,用于打印表格的(table)元素是一对的,我们的表格只有一个(table)和一个(/table),而在上面的循环语句中,花括号{}定义了循环的循环体部分,这里面的东西会根据条件来重复运行。因此,很有可能会出现(/table)被多次打印,这个时候我们的表格肯定无法正常显示。

可初学者在看到这个例子的时候,搞不清楚哪儿错了,根本原因在于while循环的标点符号起到了什么作用还没有搞明白,(table)元素怎么把表格显示出来的还比较陌生。

以上两个例子都非常有代表性,这种错误初学者肉眼怎么看都看不出来,我称这种错误为初学者的坑码,跳进去自己跳不出来的,必须要求助场外观众。

教材中无法将所有出现的错误都呈现出来,每个人遇到的错误可能会非常个性化,需要我们一起来解决问题,一起往前走。

读者群的作用就是这样,一堆人在帮你解决问题,所以遇到问题就大胆提出来,让更多人看到,共同学习。

作者:韩林涛,北京语言大学高级翻译学院教师,《译者编程入门指南》作者