首先我们来聊聊信息的传递,信息可以分为很多种,比如说话发声,写字传信,标志暗号传递给对方。这些都有一个信息的标准,类似发音是表示“我”wo,写作的文字,比如你现在阅读的这文章,就是在一种“标准”,或者说是一直约定,你这样写/这样发声,我就知道你要表达什么。计算机里采用二进制进行存储,之所以采用这个,是因为一方面二进制简单,计算机硬件容易模拟,计算机也容易理解,不厌其烦地去数…000011111000…,另一方面是二进制具有一定的容错性。举个例子,我们现在在野外,彼此通过喊叫都听不到对方的话,这个时候如果我们手上有两盏灯,那么这个时候我们约定,点亮一盏灯表示“我在”,不亮灯表示“我过去”,亮两盏灯表示“快过来”。那么我们就可以通过这两盏灯进行通讯啦。。。虽然有些简单而且好像并没有传递到什么实质性内容,咳咳,这不是重点!!!这样就是有2^2,4种信息可以传递啦!
那么计算机呢,又可以分为IO(输入输出部分,如键盘鼠标输入,屏幕,音响等输出etc),运算器,主存(也就是你常说的内存啦),控制器,运算器又经常和控制器结合在一起,构成了CPU这部分。讲完了硬件的基本组成,你可以直接在硬件上调度啦,比如你设置一个指令让电脑播放“bibi的声音”,但是这样就效率太低了对不对,每次都要去手动地标识我要调度哪?那肿么办嘞?这个时候我们就想起了你现在的操作系统啦~比如Win,Linux,Mac,iOS,Android。。。操作系统帮助我们去实现这些繁杂重复的东西,因为机器只能识别机器码,如00000101010101010这样的0,1序列,我们人看这些可能真的是无法理解。。。但是对于计算机来说,前面谈过,计算机就认识二进制,这就涉及到编码的问题啦,常用的编码有ASII,UTF-8,Unicode,也就是说:我们用一个特定的0,1组成序列给每一个字符进行编码,比如我们让000 000 01表示‘a’这个字符。所以上古时代的程序员的代码都是这种戳孔形成的0,1纸带啦,所谓从前有个大神,用针戳出一个操作系统~然而,这样是非常不科学的,容易出错嘛,然后就有了汇编语言(ASM Language),由特定的汇编器把汇编语言翻译成机器语言,但是汇编语言和我们说的语言还是有较大的区别滴,所以有提出了高级语言(C,C++,Java,Python,JavaScript…),由各自编译器,如gcc去给我们生成诸如ASM,机器语言的东西,但是光编译不够啊,操作系统还会给你加些料再让机器去执行,这就是为什么有系统移植性的问题,。