目录

  • 知识回顾
    • 编程语言
        • (介绍之前,给大家介绍一部电影,卷福演的《模仿游戏》,讲的是“计算机之父”-艾伦·图灵的故事,有兴趣的可以去看看。)
      • 1.机器语言
      • 2.汇编语言
      • 3.高级语言
  • 小结

知识回顾

这篇我就将介绍一下我所学习到的——什么是编程语言。

编程语言

编程语言是一种可以让人与计算机交流的语言,实质上来讲是我们对计算机发出的指令,通俗点来说,就是程序猿敲的代码(当然不是程序猿也可以敲),也称为“计算机语言”。
编程语言有很多种,但大致上可以给它们分为3大类,哪3大类呢?
1.机器语言
2.汇编语言
3.高级语言(也是我们现在用的比较多的语言)

(介绍之前,给大家介绍一部电影,卷福演的《模仿游戏》,讲的是“计算机之父”-艾伦·图灵的故事,有兴趣的可以去看看。)

1.机器语言

机器语言,也是最早的编程语言,由简单的0和1组成。机器语言是运行速度最快的编程语言(注意:是运行速度),电脑的CPU可直接解读的(它只能识别这种语言)。
因为只由简单的0和1组成,所以用这种语言写起程序来,特别烦,特别慢,这也就是它的缺点:开发速度慢;另外,一串全都是0和1的代码,第一眼看上去论谁应该都看不出来这句代码到底要干嘛?所以,机器语言的第二个缺点:可读性差。下面是一些机器语言的示例:

1.指令部份的示例
0000 代表 加载(LOAD)
0001 代表 存储(STORE)
...
2.暂存器部份的示例
0000 代表暂存器 A
0001 代表暂存器 B
...
3.存储器部份的示例
000000000000 代表地址为 0 的存储器
000000000001 代表地址为 1 的存储器
000000010000 代表地址为 16 的存储器
100000000000 代表地址为 2^11 的存储器
...
4.集成示例
0000,0000,000000010000 代表 LOAD A, 16
0000,0001,000000000001 代表 LOAD B, 1
0001,0001,000000010000 代表 STORE B, 16
0001,0001,000000000001 代表 STORE B, 1

如果后面不加解释,不了解它的人第一眼看上去大概只是0和1吧。事实上现在大概存在着多至100000种这样的机器语言的指令,除非你…一目十行过目不忘,一般人不可能全都记下来。
这样敲代码肯定十分痛苦,所以早期机智的人们想到了一个办法,既然机器语言的可读性这么差,那么是否可以给它们加个标记,这个标记就代表着对应的这条机器语言的指令,看到这个标记就能知道这条指令大概是干嘛的。这就是汇编语言。

2.汇编语言

汇编语言,官方的(其实就是百度啦)解释是:

汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

汇编语言是一种比较低级的语言(只比机器语言高级一点点,机器语言是最低级的),优点同机器语言:运行速度快,缺点也一样:开发效率低。虽然可读性上有了一点提升,但实际上并没有用=。=
照例,给大家看一下示例:

DATAS SEGMENT
BuF DB 1,2,3,4,^^^^^^^,100
BuF2 DW ?
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV SI,OFFSET BuF
MOV CL,100
MOV AX,0
KK: ADC AX,[SI]
INC SI
LOOP KK
MOV BuF2,AX
MOV AH,4CH
INT 21H
CODES ENDS
END START

(网上Copy来的,有错的请指出来,反正我也看不太懂)
这段代码只做了一个简单的事情,1到100求和。
很烦吧…巨烦…
像我们这种向往自由的人类,怎么可能用这种语言嘛?(其实还是懒…),所以,一种开发效率更高的语言——高级语言,应运而生。

3.高级语言

作为向往自(lan)由(duo)的人类,发明了一种写起来容易,读起来方便的编程语言——高级语言。
之前我们讲过,计算机CPU只能读懂0和1的机器语言,那么高级语言它能读懂嘛?答案是肯定不能。所以,高级语言到最后还是会被“翻译”成机器语言,但是这个“翻译”过程就不需要我们操心了…我们只需要操心我们写的代码是不是有问题就行。

计算机语言具有高级语言和低级语言之分。而高级语言又主要是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。编写的程序称之为源程序。

高级语言——>低级语言,这中间有一个“翻译”的过程,而这个“翻译”过程又有所区别。我就用Alex的例子来讲:有两个中国作者甲和乙,他们各自写了一本书,有一天有两位外国朋友A和B来书店买书,A看上了甲的书,B看上了乙的书,但这两个外国朋友刚来中国不久,还读不懂中文,为了把自己的书卖出去,甲和乙分别请了一个翻译。甲和他的翻译说,我给你3个月时间,你把这本书翻译出来给这个外国朋友A。乙和他的翻译说,我想尽快让外国朋友买书,你这样,现在我读一句你翻译一句给外国朋友B听。为了卖书,甲和乙各自用了各自的方法。甲让翻译用三个月把整本书翻译成英文给A,乙当场读一句翻译一句给B。
在计算机语言中,我们将使用甲的方法的语言称为:编译型;将使用乙的方法的语言称为:解释型。这两种类型的官方定义是:

编写编译程序
编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如.exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了,因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。
解释型语言
解释性语言编写的程序不进行预先编译,以文本方式存储程序代码。在发布程序时,看起来省了道编译工序。但是,在运行程序的时候,解释性语言必须先解释再运行。比如解释性Basic语言,其专用的解释器在执行Basic程序时,会逐条读取解释每个语句,这个其实就是一个编译过程,然后再执行。一般来说,现有的解释性语言都是采用的逐行解释一句,执行一句这样的方式来构建的。这样解释性语言每执行一次就要翻译一次,效率比较低。

其实跟我讲的差不多啦,编译型语言(作者甲)通过一个编译过程(翻译三个月)将程序(书)编译为机器语言的文件(英文版的书);解释型语言(作者乙)运行时逐行将程序解释成机器语言(一句一句翻译成英文)。
所以,编译型和解释型的区别就体现出来啦:
编译型语言:运行速度快;
解释型语言:跨平台性好;
Q1:为什么运行速度快?
A1:因为运行之前已经将高级语言“翻译”成机器语言,运行时实际上运行的是机器语言,是CPU能够直接识别的,所以速度快。而解释型语言需要运行一句“翻译”一句,速度当然慢啦。
Q2:什么是跨平台?为什么跨平台性好?
A2:大家都知道windows吧,除了windows还有很多其他的系统,比如Linux、mac OS等,这就是不同的平台。世界上程序猿千千万,用的系统也五花八门,如果你在windows上写了个程序人家想要在Linux上直接用,不需要改任何东西,这就需要跨平台性足够好。那为什么说解释型语言跨平台性好呢?上面说过,解释型语言运行时逐句“翻译”的,“翻译”时解释器(翻译官)会根据自身的平台“翻译”成本平台可用的语言,而编译型语言编译后生成的机器语言文件只能在本平台上使用,放到其他平台上会有问题,需要去修改代码(作为向往自(lan)由(duo)的人来说,加班是不可能的,这辈子都不可能加班的…真香)。
像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等都是解释语言。
当然,我这里写的编译型和解释型的区别只是部分的,更多的我就不细说,大家可以自己去探索。

小结

Anyway,这些都是一些非常基础的基础知识,都是需要牢记的。这里我给大家小结一下:
编程语言可以分为三大类:机器语言汇编语言高级语言

机器语言由简单的0和1组成,是最底层的语言,运行速度最快。
汇编语言是用了标记的机器语言。
高级语言相对于机器语言更为人性化,可读性好、开发效率高。高级语言又分为:解释型编译型编译型运行速度快;解释型跨平台性好。

决战Python之巅(一)相关推荐

  1. 决战Python之巅——第一模块总结

    前言 本篇将对第一模块中的知识点做一个小总结. 知识总结 1.编程语言 编程语言分为三大类: 1.机器语言 2.汇编语言 3.高级语言 其中,机器语言与汇编语言是最底层语言,运行速度快,但开发效率低: ...

  2. 决战Python之巅(十二)

    前言 从这一章开始我们就要开始学习进阶的函数知识. 函数中比较重要的就是装饰器.迭代器.生成器这三样,我将分开3篇介绍. 知识回顾 装饰器 在讲装饰器之前,我们先讲一点补充知识. 命名空间 名称到对象 ...

  3. 决战Python之巅(十五)-面向对象(找名词、加属性、连关系)

    面向对象(找名词.加属性.连关系) 知识回顾 引言 面向过程 VS 面向对象 面向过程 面向对象 面向对象初识 类的相关 对象的相关 对象之间的交互 类命名空间与对象.实例的命名空间 初识面向对象小结 ...

  4. 决战Python之巅(十)

    前言 昨天将函数前半部分看完了,这里稍微做一下总结. 知识回顾 函数定义 函数的定义很简单,如下: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需要调用这个函数名即可 ...

  5. 决战Python之巅(二十)-MySql

    MySql 概述 数据库(DataBase) 数据库管理系统 数据库服务器.数据管理系统.数据库.表与记录的关系(重点) SQL MySql使用 用户管理 用户和IP 授权管理 所有权限 授权对象 特 ...

  6. 搞笑决战水源之巅收藏六 师傅

    六.师傅 我梦到了师傅.我之所以知道是个梦,是因为只有梦里他的容貌才能看得下去. 我们一起在水源潭边钓鱼.师傅屁股底下坐着三层小山羊皮垫子,而我站在雪里. "师傅啊,这么大冷的天,你说咱能钓 ...

  7. 决战奶酪之巅,剑指Big Cheeze

    导读:Dapper Labs继Crypto Kitties后的第二款区块链游戏Cheeze Wizard大逃杀即将开始.DR小伙伴参加了10月10号的Beta测试,为大家带来最新的游戏细节,希望能帮助 ...

  8. 虚拟局域网软件开源_软件定义汽车 (第十集):决战架构之巅

    前言: 汽车的智能化和软件化,就像一个巨大的漩涡,吸引着各方势力卷入其中.就像上一篇文章提到的一样,在大家构建软件能力过程中,一些危机也正在酝酿之中,在缺乏良好设计的框架下,一旦进入正常的车型迭代,就 ...

  9. 决战设计模式之巅01——设计模式导论

    "学会享受寂寞,那会让你学会思考自我." --加西亚·马尔克斯 一.设计模式概念与历史 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码 ...

最新文章

  1. Intel芯片组命名规则
  2. Java黑皮书课后题第3章:*3.20(科学:风寒温度)编写一个程序,提示用户输入一个温度值和一个风速值。如果输入值合法,那么显示风寒温度,否则显示温度或风速是不合法数据
  3. 《统计学》学习笔记之导论
  4. 如何删除多余系统引导项
  5. layui轮播图切换会有跳动_Layui中轮播图切换函数说明
  6. Rsync学习之旅上
  7. shell 基础知识
  8. Python元组的操作
  9. List 、Set、 Map有什么区别和联系
  10. 分布式系统故障容灾治理总结
  11. 一些快捷键的用法,linux终端操作下
  12. dw超链接标签_使用Dreamweaver制作网页超链接的详细图文教程--系统之家
  13. vscode远程连接提示过程试图写入的管道不存在
  14. [小白入门]SEO优化是什么意思?4步骤掌握SEO网站优
  15. FFMPeg代码分析:AVCodecContext结构体
  16. 智能手表产业迎来潜在的市场空间
  17. AnyMP4 iPhone Transfer Pro Mac破解教程
  18. 计算机通过变频器模拟输入控制电机正反转,用电脑控制的工频高压系统
  19. 严重性代码说明项目文件行 禁止显示状态错误 C4996 scanf
  20. 炉石android更新日志,炉石传说新版本一览_炉石传说更新内容

热门文章

  1. 用友NC创建表空间、用户、授权
  2. Spring MVC框架——Web开发框架
  3. 子线程设置的钩子(HOOK)为什么钩不到消息?
  4. c语言中fl,用C语言操作SPMC75内部FLSASH.doc
  5. 常用js的数组方法和对象方法
  6. 驱动调试-摄像头部分
  7. DocArray 0.21.0版本发布!新增OpenSearch后端存储,支持Redis后端存储的多语言文本搜索!...
  8. java 指针定义_Java中关于指针的个人理解
  9. 关于SSM(mybatis)入门01
  10. python坑爹的黑店_曝光米兰爱马仕黑店极其坑爹配货经验!大家不要再白白上当了!...