Talk is cheap. Show me the code. —Linus
提起程序员,人们可能想到的是电影里邋里邋遢,对着电脑狂敲键盘,最后改变世界的牛逼人物。提起编程,人们脑子里闪过的可能是满屏幕跳动的字符,根本看不懂是什么的高大上的东西。
编程,从字面理解就是编写程序,那我们就先看看什么是程序。当然了,在此我们只讨论计算机程序。
不知道大家有没有想过,当你敲击键盘上的某个键的时候,它到底做了什么,为什么电脑屏幕上会有相应的反应。在这里,我想做一个有意思的解释。
本来是想从动物以及人类发展历程来解释这个问题,但一想这样一来又要涉及到信号学、心理学等等问题,还是算了,就从一个最简单的例子开始:电灯。当你打开开关的时候,电灯会亮,关掉开关,电灯会灭。这个时候一个电灯可以记录两种状态,我们可以赋予其含义,比如高低、好坏、有无等等。那么如果我想用电灯表示更多的状态呢?可以用更多的电灯,两个可以表示四种状态,三个可以表示八种状态,四个十六种,依此类推。学过数学的应该知道,n个电灯,就可以表示2的n次方种状态。
生活中常用的计数方式是10进制,从0到9有10个状态,而四个电灯可以有16种状态,所以可以用四个电灯来表示这10个数字,我们把4个电灯排成一排,编号,从右到左分别是1号、2号、3号和4号(为什么从右到左呢?暂且认为是习惯好了。)从1到4为🌑 🌑 🌑 🌕表示1,🌑 🌑 🌕 🌑表示2,🌑 🌑 🌕🌕表示3,以此类推。可是这样就太麻烦了,要记住很多组状态才能识别出是数字几。大家过马路的时候肯定见过红绿灯的倒数灯,大概长这个样子
接下来,我们可以想的大一点,比如将一万个电灯,摆成一个100*100方阵,然后就可以通过控制开关来显示图案、文字了,哈哈,这不就是屏幕么!不过问题是如果有一万个电灯,就得需要一万个开关,按照上边的想法,需要有2*10000种控制器来控制这么多种可能,不过好在我们需要的并没有这么多,比如显示26个英文字母,那我们只需要26个控制器就可以了。不过这样还是很麻烦,其实我们可以制作一个存储器,这个存储器可以存储26种状态,然后用一个控制器从这个存储器中读取这26种状态,再将其反应到一万个灯泡上,于是,一个简单的计算机就问世了(同样,这个存储器什么原理,有兴趣的可以看看《大话存储》,还有控制器如何制作以及原理本人就不做解释了,因为并不熟悉。)
基于以上的想法,再加入更加复杂的控制器,存储器,显示器,就可以制作一个完整的计算机了。O(∩_∩)O哈哈~,当然了,以上纯粹只是个人对于计算机的理解,其实计算机的每一个部分都是复杂的技术,没有系统学习,是很难深入的。
好了,现在回到正题,说说开篇提到的编程。
上边提到了存储器,我们可以把一系列的状态存入存储器,需要的时候读取出来反映到屏幕或者其它电子器件上,可是怎么读取?如何反应?这就需要我们人类来制订一套规则,可以这样理解,这套规则就是程序,而制定规则的过程就是编程。比如要计算1+1等于几,需要向存储器存入两个1,然后再让两个1相加,最后屏幕上出现结果2。这一整个过程需要一套规则来实现,我们制定这个规则的过程,就是编程(上边这个过程看似简单,实际上水很深,实在不敢也没有能力往深了讲,不过以后会尽力出文章来讲解)现在的高级编程语言已经屏蔽了太多的底层实现,以至于很多程序员只是机械的搬砖,完全不知道背后发生了什么,不过这样也有很大的好处,就是猿们可以将精力放在功能、业务的实现上,为用户打造更好的体验。
这只是我个人的想法,下面是百度的解释:
编程是编写程序的中文简称,就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到相应结果的过程。
为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。
好了,暂时就到这里吧,如感兴趣,请关注后续文章。
最后,附上文章开头引用的出处: https://lkml.org/lkml/2000/8/25/132