​编程的本质

2016-07-29作者:[日] 松本行弘编辑:招招M

在一部古老的电影《星际迷航4:抢救未来》中有这样一个镜头:从23 世纪的未来穿越时空来到现代(1986 年)的“进取号”乘务员,为了操作计算机(Classic Mac)而手持鼠标与“计算机”讲话。看来在星际迷航的世界中,用人类语言作为操作界面就可以指挥计算机工作了。

 

不过,现代的计算机还无法完全理解人类的语言。市面上也有一些可以用日语来操作的软件,但距离实用的程度还差得很远。计算机本来是为了运行由0 和1 组成的机器语言而设计的,但与此同时,对于人类来说,要理解这种二进制位所构成的序列到底代表什么意思,却是非常困难的。

 

因此,创造出一种人类和计算机都能够理解的语言(编程语言),并通过这样的语言将人类的意图传达给计算机,这样的行为就叫做编程。


binary-code-100358721-primary.idge.jpg


话虽如此,但是将编程仅仅认为是“因为计算机无法理解人类语言才产生的替代品”,我觉得也是不合适的。人类的语言其实非常模糊,有时根本就不符合逻辑。

 

Time flies like an arrow.

 

这句话的意思是“光阴似箭”(时间像箭一样飞走了),不过flies 也有“苍蝇”(复数形态)的意思,因此如果你非要解释成“时蝇喜箭”也未尝不可,只要你别去纠结“时蝇”到底是啥这种朴素的问题就好了。

 

另一方面,和自然语言(人类的语言)不同,编程语言在设计的时候就避免了模糊性,因此不会产生这样的歧义。使用编程语言,就可以将步骤更加严密地描述出来。

 

Keep-Your-Programming-Code-Safe-Obfuscate-It-480832-2.jpg

 

由于我几乎一整天都对着计算机,因此我的家人可能认为我的工作是和计算机打交道。然而,将编程这个行为理解成“向计算机传达要处理的内容”是片面的。这样的理解方式,和实际的状态并不完全一致。

 

的确,程序员都是对着计算机工作的,但作为其工作成果的软件(中的大部分)都是为了完成人类所要完成的工作而设计出来的。因此,“人们到底想要什么?想要这些东西的本质又是什么?要实现这个目的严格来说需要怎样的操作步骤?”思考并解决这些问题,才是软件开发中最重要的工作。换句话说,编程的本质在于“思考”。

 

fORBES4.jpg


尽管看上去是和计算机打交道的工作,但实际上编程的对象还是人类,因此这是个非常“有人味”的工作。个人认为,编程是需要人来完成的工作,因此我不相信在将来计算机可以自己来编程。

 

我是从初三的时候开始接触编程的。当时父亲买了一台夏普的袖珍计算机(PC-1210),可以使用BASIC 来编程。虽然这台袖珍计算机只能输入400 个步骤,但看到计算机可以按照我的命令来运行,仿佛自己什么都能做到,一种“万能感”便油然而生。创造世界的乐趣尽管已经过去了20 多年,但我从编程活动中所感到的“心潮澎湃”却是有增无减。

 

这种心潮澎湃的感觉,是不是由创造新世界这一行为所产生的呢?我喜欢编程,多少年来从未厌倦,这其中最大的理由,就是因为我把编程看作是一项创造性的工作吧。只要有了计算机这个工具,就可以从零开始创造出一个世界。在编程的世界中,基本上没有现实世界中重力和因果关系这样的制约,如此自由的创造活动,可以说是绝无仅有的。能够按照自己的意愿来创造世界,这正是编程的最大魅力所在。

 

computer_room.jpg


正如现实世界是由物理定律所支撑的一样,编程所创造的世界,是由程序员输入的代码所构筑的规则来支撑的。通过创造一个像Ruby 这样的编程语言,我对此尤其感触颇深,不过,即便只是编写一个很小的程序,其本质也是相同的。

 

因此,正是因为具有创造性这样重要的特质,编程才吸引了包括我在内的。

 

无数程序员,投入其中而一发不可收拾。将来,如果真能够像在《星际迷航》的世界那样,只要通过跟计算机讲话就可以获取所有的信息,那么编程也许就变得没有那么必要了。

 

其实,在搜索引擎出现之后,类似的状况已经正在上演了。拿我的孩子们。

 

programme.jpg


来说,他们也经常频繁地坐在电脑跟前,但却从来没有进行过编程。对他们来说,电脑只是一个获取信息的渠道,或者是一个和朋友交流的媒介而已。编程这种事,是“爸爸在做的一种很复杂的事”,他们觉得这件事跟自己没什么关系。

 

不过,通过编程来自由操作计算机,并创造自己的世界,这样的乐趣如果不让他们了解的话,我觉得也挺遗憾的。但这样的乐趣并不是通过强加的方式就能够感受到的,而且用强制的方式可能反而会在他们心里埋下厌恶的种子,对此我也感到进退两难。教育孩子还真是不容易呢。

 

编程所具有的创造性同时也有艺术的一面。在摄影出现之后,绘画已经基本上丧失了用于记录的功能,但即便如此,颇具艺术性的绘画作品还是层出不穷。将来,即便编程的必要性逐渐消失,可能我还是会为了艺术性和乐趣而继续编程的吧。其实,像《星际迷航》中的世界那样,“计算机,请给我打开一个Debian GNU/Linux 8.0 模拟器,我要写个程序”,这样的世界也挺有意思的不是吗?


内容来源:书问

作者[日]松本行弘
出版人民邮电出版社
定价79元
书籍比价

分享到

扫描二维码 ×

电子纸书

面向本质安全化的化工过程设计:多稳态及其稳定性分析

王杭州,陈丙珍,赵劲松,邱彤
清华大学出版社[2017] ¥38

区块链本质

陈鹏
清华大学出版社[2019] ¥25

回归教育本质

林格
清华大学出版社[2015] ¥21

孩子趣味学编程之Scratch篇

张文婧 乔陶鹏 刘芸 方亮
清华大学出版社[2019] ¥39

Android 9编程通俗演义

牛搞
清华大学出版社[2019] ¥53

乐学Scratch编程-轻松探索游戏动画奥秘

刘龙强
清华大学出版社[2019] ¥38

Python 3.7编程快速入门

潘中强 薛燚
清华大学出版社[2019] ¥35

趣味数学及编程拓展

杨克昌
清华大学出版社[2019] ¥43

Web编程基础——HTML5、CSS3、JavaScript(第2版)

任平红、陈矗
清华大学出版社[2019] ¥31

Python渗透测试编程技术:方法与实践

李华峰
清华大学出版社[2019] ¥43

出版业领先的TMT平台

使用社交账号直接登陆

Copyright © 2019 BookAsk 书问   |   京ICP证160134号


注册书问

一键登录

Copyright © 2019 BookAsk 书问   |   京ICP证160134号