因为本人有一枚可爱的老婆,她经常有很多奇怪的问题(我承认其实是我老想跟她分享),但是有些问题需要有一定的理论支撑,所以我就打算在这里一并告诉她。就是一些关于编程的前置知识的汇总,如果你也有这种对编程或者程序很感兴趣但是又离这个环境很远的朋友,可以分享给他。因为是想面对小白建立编程模型的文章,所以我必须尽量通俗易懂,如果大家看完还有什么想知道的也可以说出来。
主要围绕下面这些讲下
- 程序是什么
- 为啥要写程序
- 程序的原理
程序是什么
程序本质上就是提前写好的固定逻辑,比如你喊‘嘿siri’,手机就回你一句,这就是一段程序发挥的作用。
下面就是一个启动后就会在屏幕显示hello,world的入门程序,你仔细看下可能都能看懂,很多程序员写的第一段代码可能就是这个。
所以所有的程序都是一样的,小到空调里的程序收到了你按空调的开关就启动,大到火箭到了预定的高度就加速。程序就是一段固定的逻辑,这段逻辑一般是,你预设一个前提条件并预设满足条件后就去做的事情。
如果按照这个角度去看,在没有电脑程序之前就已经有很多程序了。水如果在高处就会往低处流,苹果在树上成熟了就会往下掉。。。这些可以理解为自然存在的程序,我们可以直接利用但是没办法改变。这也是人造电脑程序(下面默认讨论的都是这个)出现的意义,可以满足我们想要的需求,比如在游戏类程序里你就可以写好有人按了攻击键血条就会减少。
为啥要写程序
为啥要写这个程序,这个问题在程序员的角度就是,公司发现了一个需求,再通过一些人(一般是产品经理)的转换翻译成了程序员能听懂的工作,然后程序员就被通知说这个要做了。所以程序就是为了解决人的需求产生的,大家都想更方便的购物,所以一定会出现了淘宝,拼多多这样的程序。
当然也有人说程序解决的是重复性的工作,这个就属于从结果得到的好处的角度思考为啥要写程序了。那我们就来聊一下程序的好处。现在假设一下没有电脑程序,大家还是需要更方便的购物,那会发生什么呢?就是会有一家公司提供这样的服务,你可以打电话给他说你要买意见衣服,说下要求,他再紧急的打电话问提供衣服的这些卖家,有符合要求的衣服吗,多少钱。再转述给你,以上只是电商网站的搜索商品功能而已,单纯改成让人去做这些事情会非常麻烦,就像三体中秦始皇的人体计算机。机器取代的重复工作是没有数量限制的,就像如果人力去满足客户的购物需求,那每增加客户就需要多加一个人服务他,换成程序就刚好相反,一个淘宝开发完了,那一个人用和1亿个人用基本成本不变(增加的很少)。简而言之,程序可以替换所有能重复的工作而且不会因为重复次数的增加而增加成本。所以思考一下,有些重复的工作还没有换成程序可能只是因为他的次数不够多或者重复次数更多的还没被程序替换完。现在程序正在替换的工作都是有着很大的次数的这样的重复工作,但是不要以为程序只能替换简单的工作,其实理论上只要人类能够描述出来让别人理解的工作程序都可以完成,举个例子人知道怎么开飞机,他就可以描述给程序员,程序员就可以按照描述的内容开发程序出来自动开飞机了,那有人会问为什么现在没有这样的程序呢?大概就是首先这样的程序开发起来非常复杂(比如自动驾驶全行业搞了几十年还没搞出来),其次就算开发完了也就只是替换了全世界所有机长的工作而已,有点得不偿失。但是等程序把所有重复次数高的工作都替换完了(这要很久很久),程序员接下来又该干什么呢?
程序的原理
程序的原理主要分为两部分,第一如何让程序的载体(下面就用电脑代替,一般人只要理解为电脑就可以了)理解我们的意思,第二是如何让电脑进行逻辑处理
如何让电脑理解我们的意思
看上面我的截图就知道程序都是用英语写的,可能有人会问为啥程序基本都是用英语写的,这是因为第一批写程序的人用的是英语,后面我们为了学习和沟通就也这样做,再后面用英语做的事情有点多,如果要把在写程序中用英语做的事情用中文再做一遍那就太麻烦了,而且做出来也很难在人类中达到共识,就是大家再一起换成用中文写代码。所有其实非英语母语的人在写程序上确实难度更高一点。
言归正传,电脑要如何才能理解英语写的程序呢?这一块叫编码,简单讲就是把所有需要用到的字母用数字进行对应,下面是一个最基础的编码表,可以看到大写A在电脑中对应的就是65,小写a就是97,当然大家可能还知道电脑中是只有0和1的(为啥呢?马上要讲),所以还要转换成2进制的数字,所以在所有的电脑中大写A对应的表示方法都是1000001。
如何让电脑进行逻辑处理
这里我只讲最基础的一些东西,也希望所有人都能理解。
上面说到了为什么电脑中只有0和1,其实是因为电脑芯片所采用的材料刚好只有两种状态,就跟0和1对应上了。那如何计算呢?举个简单的例子,如果你想计算0和1相乘的情况,用到的就是与门,简单说假如有一个电路是由两个开关和一个灯泡组成,这三个组件简单的串联在一起,就组成了一个情况,只有两个开关都闭合灯泡才能亮起。现在假设开关闭合和灯泡亮起代表1,反之就是0,现在就能计算0*0 = 0,0*1 = 0,1*0 = 0,1*1 = 1这四种0和1的乘法计算了,这就是电脑芯片中最基础的一组与门,当然除了与门还有其他两种或门和非门,有了这三种门在进行相互组合就能进行所有的计算了,当然实际情况复杂的多,现在主流的芯片的门结构的个数都在百万级到千万级。这就是电脑进行逻辑处理的原理了,关于电脑逻辑处理原理详细点的可以参考【小白科普】为什么计算机只认识0和1?_集成电路