20小时学会编程 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

像程序员般思考

程序员经常通过所谓的伪代码来思考问题:看起来或听起来像代码的语言,但尚未具体到能够让一部电脑实际执行。仅仅把它作为打草稿的一种形式。伪代码可以帮助你通过流程来思考问题的解决方法。

你可以使用我们刚才讨论过的基本编程概念来为普通的任务勾勒出简单的程序。

这里介绍一个有趣方法:找一个朋友帮你完成一件简单的任务,比如“做一份三明治”。唯一的规则就是你的朋友只能做你告诉他的事情,不多不少。他得假装什么都不知道,只能按照你吩咐的意思执行每个要求。

几分钟之后,你会发现自己正重复下面的对话。

你:拿起面包。

朋友:我不明白什么叫作“拿起”。

你:把你的手移到我说的地方,然后拿起它。

朋友:我不明白什么叫作“手”。

你:(叹气)这个东西在这里。(你指向朋友的手)

朋友:明白。

你:把你的手移到我说的地方,然后抓起它。

朋友:我不明白什么叫作“抓”。

你:像这样弯曲你的手指。(你演示、弯曲以及摊开你的手指)

朋友:明白。

你:把你的手移到面包那里,然后抓住它。

朋友:我不明白什么叫作“面包”。

你:这个东西在这里。(你指向面包)

朋友:明白。

你:把你的手移到面包那里,然后抓住它。

朋友:(把手移到面包那里,弯曲手指,然后摊开。面包无法移动。)

你:这简直是一个愚蠢的游戏!

这的确够蠢的!但是它非常接近编程的样子和感觉,特别是在刚开始的时候。

计算机就像你的朋友那样,如果你的定义不够明确,它就无法理解。记住:任何复杂流程的定义都需要特别的完整清晰

这就是编程的困难所在:一个歧义或偏题命令可以造成整个程序的失效。所以,代码必须从细节上精确表述。从这一点上来说,编程是一门无情的技术。计算机从不会为魅力或智慧所打动。一旦代码不完整或格式有误,那么就有可能会出现两种情况:要么你的应用瘫痪,所有数据都会消失;要么臭虫(bug,软件缺陷)出现,它的出现将会导致意想不到的或者不可预见的后果。如同数学一样,逻辑要么可行,要么不可行。

尽管如此,在编程这个领域里,编程问题不像数学问题那样有单一且通用的解决方案。在指定输入的基础之上,预期输出可以通过成千上万种方式获得。程序员必须基于可以使用的工具选择合适的编程方法。

计算机没有读心术,知道了这一点,你就应该开始学习如何下达系统可以理解的命令,同时你还应该学会如何清楚地为术语下定义,就像在之前的“三明治游戏”当中,在下达复杂的命令之前向朋友演示基本动作。