1.1 编程的语言

1.1 编程的语言

1.1.1 高级语言

在我懵懵懂懂的少年时期(好吧这个少年时期有点长),我并不知道电脑上那些花花绿绿的程序是怎么做出来的。我只知道有一个叫编程语言的东西,是人类和电脑沟通的工具。那是不是每一个游戏都用的是它自己设计的编程语言?非也。现在主流的编程语言就那么几个。你可能没听过CC++(顾名思义就是C的升级版)、Python,但是Java你总会听过,就是玩我的世界必须装的那个玩意(现在不知道还要不要)。

上面提到的四门语言就是编程较主流的几门语言。当然还有RubySwiftObjective C,等等等等。当然你会听到一句名言叫“PHP是最好的语言”,PHPJavascript这些就主要是用在写网站上面啦,我们以后再说。哪门语言最好也是程序猿界亘古不灭的争论,我们初入门者看看热闹就好啦。

此外,编程的语言还分编程语言和脚本语言,但界线不太清晰。

编程语言的特点是人和机器都容易看懂。例如我们用Python写一个hello world(程序猿界风俗:第一个程序必为hello world):

print('hello, world!')

会点英语的同学都知道print就是打印,这句话就是要让电脑在屏幕上打印”hello, world!”这句话。就这样,没有想象中那么难吧?

不过编程语言也是一步步发展成现在这样的。在最开始的时候程序猿通过在电脑上输入0和1来编程。为什么?因为电脑只认识0和1,CPU上有密密麻麻的小开关,可以通电和断电,于是人们将断电定义为0,通电定义为1,也就是经常听到的二进制(具体可以看看高中数学必修三)。这种语言叫做机器语言。后来出现了更方便的汇编,再后来聪明的程序猿们发明了高级语言,但最本质的还是机器底层的0和1。

如果感兴趣,你也可以去了解一下各门语言的历史。顺便,也可以了解一下计算机的发展史(可以百度几个名字:阿兰·图灵;冯·诺依曼;ENIAC)。

那么,作为一个程序猿,我们只需要掌握一门语言就够了吗?那到底选择哪一门语言,哪门语言好找工作呢?事实上,我们学习编程语言,只是为了学习一种思维,学习机器是如何思考的。当你掌握一门语言的时候,会发现学其他语言十分轻松,达到事倍功半的效果。所以,别想那么多了,赶紧选一门语言入门吧。

1.1.2 计算机是如何理解我们写给它的代码的?

上面我们说电脑其实只认识0和1,那么它如何才能理解编程语言呢?这就涉及到操作系统的知识了。如果你是计算机专业的学生,操作系统是必修。

那么我们先来简单了解一下——计算机中从实际要解决的问题到电路实现大致分了七层:问题——算法——语言——ISA指令集——微结构——逻辑电路——元件(《计算机系统概论(第二版》)。

从问题到算法就是我们写代码的过程,而代码是怎么变成程序的?这就需要一个叫编译器的东西(有的语言是编译器,有的是解释器)把代码转换成指令。ISA指令集就是一组指令,例如加啦与或啦赋值啦啥啥的。你看看你的“此电脑”的属性,CPU那里会写着“基于x64/x86的处理器”,玩手机的也经常会听说arm v7 v8的CPU,就是说它的指令集是x86/x86-64/arm的了。

我们说指令是机器语言,是一组01二进制。由于太长不好记,我们把这些指令都起了名字。用这些名字来编程就是汇编语言,把汇编语言翻译成指令的过程就是汇编。由于是非常底层的语言,汇编语言的效率最高。当然它还是很不好写所以现在基本没人用的了,但学习汇编能帮助你更好地理解计算机的运行原理。

再往下看,要实现指令集,要使0000是加载0001是存储,需要靠微结构。在CPU上用一堆逻辑电路,什么与门啊或门啊非门啊,来实现这个微结构。为了保证软件的兼容性,CPU厂商不会经常地调整指令集,只是改变其下的微结构。

至于我们说的0和1的实现,其实是通过一种叫mos的小管子来实现的。这种小晶体管呢,如果你给它加一个高电压(2.9V)或者加一个低电压(0V),它会通电或者断电(有两种不同的mos,表现完全相反)。正是这种小管子使逻辑门电路成为可能,才有了强大的计算机。当年发明晶体管的几位科学家也因此获得了诺贝尔奖。

总结一下,计算机就是一个不断抽象的过程。低电平高电平抽象成0和1,01抽象成指令,指令抽象成语言。我们处理好了底下一层,就不再考虑它,只考虑上一层。最终我们的用户玩电脑,也不会考虑软件是怎么做的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值