计算机编程语言的原理是啥,是否只要对计算机下达一定的指令,计算机就能做到,为啥他是咋做的呢
人们通常所知的编程语言都是高级语言,已经离机器比较远,所以的确不太容易理解语言是如何来控制机器的。所以我们先简单讲一讲高级语言和低级语言的关系,然后再看看低级语言是如何控制硬件的。
高级语言的代表是C语言。现在看来,C语言可能是相当“低级”的语言,因为从编程的难度上来说,Javascript、Ruby、Python哪一个都比它方便的多,就连Java、C#之类它也远远比不上。但是高级语言这个概念有特定含义,基本上可以理解为比汇编语言抽象层次高的语言都是高级语言。其间的区别可以理解为高级语言强调做什么,而低级语言强调怎么做,这个区分仍然是从机器的角度来看的。而高级语言通过编译的方法把代码转换为汇编语言然后再交给机器去执行。
所以问题的关键在于汇编语言是如何控制机器的。然而汇编语言代码仍然不能直接操作机器,它们只是一系列指令的名字,并不是指令本身,这时候要通过汇编器把汇编语言转换成机器码,这个过程比编译要简单,基本上就是把指令名字换成机器指令,也就是0和1的序列,最后把这些机器指令送到CPU去执行相应的操作。
CPU具体如何执行指令以及CPU如何控制其它硬件本身是一个比较复杂的过程,这里也没必要展开讨论,我们来了解一下机器指令如何驱动机器就可以了。这就涉及到了CPU或其它计算单元的原理。CPU是一种超大规模集成电路,简单地讲,就是把非常多的晶体管、电容、电阻等电子原件缩微到一个元件上,这是现代计算机的核心。而在过去计算机技术发展的初期,没有集成电路,都是晶体管等肉眼可见的电子元件,再往前连晶体管都没有,基本上是硕大的电子管。那时的编程工作现在恐怕很难想像,就是接线和拨开关,也就是说通过这些手工动作向机器发出指令(顺便一提,由于某些原因,当时的程序员几乎全部都是女性)。
没错,计算机语言控制机器实际上就是在拨开关(0,1),然后通过很多开关的组合实现复杂的计算以及控制。现在的计算机和最初的计算机并没有区别,只是把这个工作自动化了。
■网友
题主可以从「与或非」三个逻辑门开始思考。三种逻辑门可以由三种基础的电路组成,这样的话,我们控制逻辑的开关(通电/不通电,或者高电压/低电压)就可以作为逻辑输入,然后电路跑完会有一组结果,称为输出。
比如:输入 1 0 (高压、低压),通过与门后就会得到结果 0 (低压);输入 1 1 (高压、高压)通过与门后就会得到结果 1 (高压)。
基础的门电路就这三种,相互组合后可以有与非门,或非门等很多电路。其中「异或」电路可以设计成「加法器」,加法器分半加器和全加器两种,下面是维基百科的资料截图:
题主了解一下即可,不必太深入。有了加法器,就可以完成二进制的加法了。当然减一个数就等于加这个数的负数,所以也就有了减法器。乘法器虽然复杂一点,但也是这么设计出来的。另外,没有除法器,乘法和除法没有本质区别的。
【计算机编程语言的原理是啥,是否只要对计算机下达一定的指令,计算机就能做到,为啥他是咋做的呢】 如此一来就可以完成「计算」了!这就是计算机的最底层构造了。
我们看一下程序代码,一般而言有条件判断、循环、顺序执行三种结构,通过逻辑门已经可以实现了,然后其他的加加减减也都是可以完成的,那么一个程序就基本能跑了~
推荐阅读
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 大部分黑客或安全研究员读的是啥「大学专业 」
- 在哈尔滨工业大学计算机系就读是啥样的体验
- 计算机技术与科学专业怎样利用高中毕业的暑假
- 非计算机专业想要利用课余时间深入自学C++,想要找到比较体面的工作大概需要啥水平
- 有点计算机基础的人想尽快找份编程的工作。哪种编程的工作最好找还需要学些啥
- 硕士研究生选通信还是计算机视觉
- 华威大学计算机本科咋样
- 加拿大像滑铁卢,多伦多大学的计算机授课型研究生咋样
- 计算机进不了桌面,任务管理器也打不开,咋办