计算机是实现计算目的机器。计算?有数值计算(比如1+1等于2),图形计算(比如现在的人脸识别,图像处理),娱乐计算(各种游戏伤害数值的计算,各种精美画面在屏幕上的展示),行星运行轨迹的计算。(个人感觉 数据+方法+强大的算力 = 预测未来)
       计算是通过已有的数据,按照一定的方法一步一步去执行,最终获取结果的过程。计算是一个过程,它不仅仅是一个结果。人为的计算需要按照方法去一步一步的执行,受限人的计算能力和环境的影响,计算速度慢,容易出错。但是对于计算机来说所有的计算都是按照自己内部已经记录的方法(程序)以相同的步调,高速进行,并且不会出错。
       计算机从诞生之日起,好像就与0,1这两个数值绑定在了一起(也就是我们所说的二进制),个人感觉可能是因为当时造就计算机时,觉得这两个数据在精度允许的范围内能够描述一切数据,同时在自然条件允许的条件下能构找到承载0,1这个两个抽象数值,并完美将这种抽像数值,转化为状态信息的物理设备(二极管,三级管)。最奇妙的事,这个世界上的所有事物在无限拆分的情况下总可以用某个原子单位去描述(10是由10个1构成),而由无数个单位组合在一起就能刻画现实世界的任意事物(实际表示数,抽象的描述物)。
    早期的计算机采用二级管,三级管去搭建一些模块,学过模电的人应该知道通过一些门电路可以搭建运算电路,实现加减运算,如果再加上一些模拟电路就能实现复杂的乘除,平方,开方运算。如果把这些模块电路组合在一起,然后通过二进制开关进行控制。那只要我控制这个二进制开关的顺序,理论上就能实现我想要的任一个计算过程。而这些控制二进制开关顺序我可以使用一串二进制码标识(比如00000000代表+,000000001代表减,000000010代表乘)。这些硬件电路模块估计可以算是早期的指令集电路了吧。而00000000,000000001,000000010就是指令集了。我们又把000000010表示指令的方法叫做机器码,言外之意就是只有机器能读懂的编码。
    早期我们采用纸带的方式,将我们希望进行的计算过程,用机器码的形式去编辑,并保存这些纸带。这些纸带上的各种机器码组合就是早期的程序,而 纸带本身就是程序存储介质(类比现在的flash,rom)
                  

python脚本一机一码_开发语言

    现实世界中如果说只有加减乘除这几种简单运算,那么我想这个世界也不会如此复杂了。假如只有加减乘除,我们只需要有00000000,000000001,000000010,00000011去对应就好,但是实际上我们用于计算的公式方法实在是太多了,早期因为计算机还没发展起来,只是用来研究和进行一些简单的计算,所以指令种类不多,过程也不复杂。把程序(计算过程)编制成上面图片这样,我还能接受。但是随着科技进步,以及人们日益增长的对于计算能力的需求,迫使人们慢慢的需要简化 机器码 编程所带来的不易识别,不易使用,操作复杂的问题。
    为此汇编语言诞生了。汇编语言的诞生得益于两个事物,一个是助记符的概念,一个是汇编器的诞生。助记符举个例子就是之前0000000代表加法运算,现在用add这个英文串代表加法。至于其他的sub代表减法,mov代表数据移动等等。用这种助记符编写的代码,我们就叫做汇编代码。我们编写完的汇编代码,然后经过通过汇编器翻译(一般不同的厂家生产的硬件电路不同,对应的机器码不同,汇编器可以看作是集合了各个厂家机器指令集,并能将我们些的汇编代码翻译成指定机器可以使用的机器码的一个程序,这玩意我一直都认为是最繁杂的工具软件,最底层应该是由机器码实现的,怎么实现的我还没研究过)。有了汇编代码后,就大大的简化了我们编程的难度,至少在程序的读写,编程简易度上有质的提升。
                                                                MOV SI,1000 
                                                                CALL NUMBER 
                                                                MOV SI,100 
                                                                CALL NUMBER 
                                                                MOV SI,10 
                                                                CALL NUMBER 
                                                                MOV SI,1 
                                                                CALL NUMBER
    但是慢慢的人们发现了一个问题,使用这种汇编语言呢虽然能更容易读懂程序,也更容易使用了。但是随着计算需求增加,计算复杂度的增加。汇编代码越来越大并且越来越长。最让人头疼的是,针对不同的厂家生产的微控制器(芯片),其因为硬件指令集不同(有的能力强有的能力弱,使用限制不同)往往使用的汇编语言也是不同的。各个公司有各自的汇编语言的语法规则,这就给我们代码的跨硬件平台移植带来了巨大的困难。为此更加高等和易用的语言就应运而生了。
    VB及C语言就是为了解决汇编语言的短板而创造的(他们的诞生离不开各种编译器的支持)C语言在本质上也是一种助记符语言,只是这套语言更简单,方便。并且有专门统一的国际组织负责维护修订C语言的语法规则。全世界的软件开发人员都在遵守这一套规则进行着软件代码的开发。我们把用c语言开发的代码,经过C编译器工具链(常用的GCC、针对特定单片机的ARMCC)编译就能生成我们想用的对应硬件平台的汇编代码。(所以牛的不是用C写代码的人,是写 把C语言根据不同硬件平台转换成汇编代码的这个编译器工具链的人)
    C语言元素简单,规则统一,与硬件无关。完美的解决了汇编代码的相对的不易阅读,不太适用编写复杂逻辑,不能跨平台移植的问题。所以得到了广范的推广和使用。
    后续人们随着使用场合的需要,在c的基础上进行了一些扩展,给c增加了一些数据结构类型,操作方法(类、继承以及一些其他的概念),由此诞生了C++。
    现在编程语言千万种,什么python,java等等语言,实际上都是为了简化一定编程场景所面临的问题,不断演变出来的程序语言。比如python用于跨系统实现应用功能,Java倾向于编写网页等等,为的就是在某些场景下能够更加方便,快捷,高效的实现代码的编写,实现运算的过程。(这些语言都离不开对应语言编译器工具链的支持)。这些更上位的语言往往有自己的语言规范,但是与C大同小异。

备注:
机器码是所有计算机底层使用的语言,这是种硬件语言,由指令集+数据构成。
汇编语言是为简化机器码发明的助记语言,需要汇编器的翻译才能转化成对应的机器语言。
C语言是克服了汇编语言不易移植问题并且统一规范更加简化的编程语言,需要C编译器工具链才能翻译成汇编语言。
C++对C的资源进行了扩展,能够实现更复杂的功能。
python,java针对使用场合进行了优化扩展的编程语言。

多说一句,上面的文章里其实也能简单的解释了为什么要编译程序,以及程序编译的几个阶段(除了链接):

python脚本一机一码_后端_02

    举个例子感受下,编程语言进步带来的优化,假设我们以前计算1+1
    机器码:
    00000000
    00000001
    00000002
    
    汇编代码:
    ADD 1,1
    
    C语言
    1+1
    
以上就是自己整理的,单纯的想理理思路,如果能给刚入门的的小伙伴提供到帮助就更好了,如果有不对的欢迎各位大佬来纠错。