地图书
首发于地图书

文科生自学Python编程(二):人脑和电脑的交流

上回说到,自学编程非难事,何况现在有Python。不过我不准备一来就告诉你怎么安装Python程序,讲解Python的基础概念,而是希望告诉你,如果说人脑、电脑都是“脑子”,而你是团队领导,电脑是你团队中最勤勉,却又最不善言辞的成员,双方平时应该如何有效的沟通,正确描述任务。

人脑和电脑在亲切友好的沟通

你的脑子太铁,我给你修理修理

之前我说到了很多关于自然语言、编程语言和机器语言的区别。人类的自然语言机器听不懂,机器语言人类又看不明白,所以就诞生了一种的编程语言。

人脑和电脑的交流时,首先将自然语言翻译为编程语言,之后电脑执行另一种叫编译器的程序,将高级语言再翻译成机器语言。有了机器语言后,就有了真正的可执行程序,这个程序既可以在本机运行,也可以通过网络分发到其它电脑。

当人脑下达程序启动命令后,电脑才会按机器语言中的指令开始执行任务,如果程序没有漏洞的话,电脑之后会输出一致的运行结果。比如你按下电脑开机按钮,硬盘中的操作系统程序才会被启动,正常情况下每次都会进入桌面,此后你启动电脑中其它应用程序的指令,以及得到的运行结果,其实都是由操作系统程序代为传达。

电脑还会把运行产生的机器码结果根据程序代码中的约定,翻译成人类可阅读的内容,比如文字、图片、视频,或者你玩游戏正爽时,弹出一个付费二维码什么的,并等待付款结果作为程序下一步的输入数据。如果你没有氪金,就Game Over,否则就允许你复活,这样人脑和电脑双方,就可以亲切友好的沟通,致以最诚挚的慰问了。

老大,我根据你设定的程序救你来了

伪代码

但学习一门新语言还是挺难的,自然语言 、编程语言和机器语言的跨度又很大,所以很多逻辑思维正常的人学不会编程,没学会和电脑沟通,就是卡在了这个学习过程。于是聪明的人类就想出了一种叫伪代码的东西,这是一种介于自然语言和编程语言之间的语言,我们可以先将自然语言先翻译成伪代码,再由伪代码翻译成编程语言。

那么伪语言编写的程序,到底是什么样子?实际上我在上一章已经给你展示过了,现在我要给你展示完整的自然语言到机器语言的翻译过程。

古代汉语:

杀人者死,伤人及盗抵罪。

现代汉语:

如果杀人,则判处死刑;如果伤人或者盗窃,则判处有期徒刑。

伪代码:

如果 犯罪行为 等于 杀人
    刑罚 等于 死刑
如果 犯罪行为 等于 伤人 或者 犯罪行为 等于 盗窃
    刑罚 等于 有期徒刑

程序代码:

if 犯罪行为 == '杀人':
    刑罚 = '死刑'
if 犯罪行为 == '伤人' or 犯罪行为 == '盗窃':
    刑罚 = '有期徒刑'

机器码(胡乱打的,反正看不懂):

010001010100010100011101011111011010101110010
100010100011101010010101010101110101000101011
100010110010101111000101000010101010001000001
010010101111010001001010100111001101010101000
010111010100100101011011011110010101110000010
111100001010100010101011101000100101011011010...

伪代码并不能真正的在计算机上执行,他的格式也没有严格的标准,而Python语言由于其简单易学的特性, 号称是可执行的伪代码语言。有了伪代码后,加上编译器,人脑和电脑的沟通过程,就成了“自然语言 - 伪代码 - 编程语言 - 编译器 - 机器语言”这样一个更长的链条,每个环节的跨度变小,就容易迈过去,其中可能还有操作系统程序、网络通信程序、数据库程序等多方的参与。

天子固然富有四海,但治理天下只靠皇帝一人其实啥事都干不了,他得先把旨意传达给亲随,京城中枢的臣工们再去组织详细的流程,好比是操作系统一样,把政令一级一级的下达到地方。地方上的办事政绩,又逐级汇集到中央,亿万子民的劳作,最终报告到皇帝耳中的,不过是一份报功的奏折而已。

数据、输入和输出

程序编写好后,下一步就该执行,但我不得不说,上面我们编写的程序,即便执行也是毫无用处的。我们编程,是为了做事情和解决问题,做事情,总涉及到材料数据的输入和结果数据的输出。熟话说,巧妇难为无米之炊,比如煮饭,输入的数据是米和水,输出的数据是饭,如果不给米和水,又或者煮出来饭也不给你吃,那煮饭程序再精妙也是无用的了。

上面的程序,只对犯罪行为做了判断,并没有说明犯罪行为到底是什么,为此我们要给上面的伪代码程序添加一些输入和输出数据。这次我们尝试用更接近Python的方式来写伪代码。

犯罪行为 = '杀人'

if 犯罪行为 == '杀人'
    刑罚 = '死刑'
if 犯罪行为 == '伤人' or 犯罪行为 == '盗窃'
    刑罚 == '有期徒刑'

打印(刑罚)


我们通过赋值,将犯罪行为指定为杀人,然后程序根据行为做了判断,得到刑罚等于死刑,最后通过打印输出执行结果。翻译成Python代码后为:

犯罪行为 = '杀人'

if 犯罪行为 == '杀人':
    刑罚 = '死刑'
if 犯罪行为 == '伤人' or 犯罪行为 == '盗窃':
    刑罚 = '有期徒刑'

print(刑罚)

上面的示例中,数据是固定不变的,如果我们要真正的设计实用程序,需要动态的输入数据,所以还可以再稍微改一改,将上面的代码修改为:

伪代码:

犯罪行为 = 等待输入()

if 犯罪行为 == '杀人'
    刑罚 = '死刑'
if 犯罪行为 == '伤人' or 犯罪行为 == '盗窃'
    刑罚 == '有期徒刑'

打印(刑罚)

Python代码:


犯罪行为 = input()

if 犯罪行为 == '杀人':
    刑罚 = '死刑'
if 犯罪行为 == '伤人' or 犯罪行为 == '盗窃':
    刑罚 = '有期徒刑'

print(刑罚)

以上已经是一个能在电脑运行的完整Python程序了,同样,我们也可以把这个Python程序翻译成自然语言,让这个程序通过人肉计算机运行:

告知主审官吏嫌犯的犯罪行为,如果嫌犯杀人,则判处死刑;
如果嫌犯伤人或者盗窃,则判处有期徒刑,之后将嫌犯的刑罚结果记录在案。

现在你大概已经明白,人脑和电脑是如何沟通交流的了。要学习人和人的沟通技巧,光看书是不行的,需要大量的实际练习,甚至可以说练习远比学习理论更重要。想要学习编程,同样需要大量的练习,且一定要多过你看教程的时间。鹦鹉学舌,丫丫学语,模仿别人的代码示例是第一步,根据示例,结合自己的小目标不断模仿改进是第二步,本章就在第一章的基础上,完成了第二步过程。

本章到此为止,且听下回分解。

编辑于 2019-08-25

文章被以下专栏收录