学习笔记1-编程语言的分类

编程语言主要从以下角度进行分类:
(1)编译型和解释型;
(2)静态语言和动态语言;
(3)强类型定义语言和弱类型定义语言。

1、编译型和解释型

一个负责翻译的程序对我们的源代码进行转换,生成相应的可执行代码,这个过程,就称为编译(compile);执行编译的程序称为编译器(compiler)

注:不知道你有没有理解这句话。首先什么是源代码? 源代码是指采用某种编程语言编写的计算机程序,人类可读,比如:result = 2 + 3,我们很容易知道是将2加3的结果赋予给result。什么是可执行代码? 可执行代码,也称目标代码,是计算机可以识别并执行出结果的代码。一般人类不可读,设计CPU、计算机的专家能够读懂。什么是编译? 将源代码转成计算机可执行代码时,有两种程序执行的方式,一种是编译,一种是解释。编译就是将源代码一次性转换成目标代码的过程。在这里插入图片描述 - 若我们写的程序代码都在一个源文件中,那么通常编译之后就会直接生成一个可执行文件

  • 若为一个比较复杂得项目,为了方便管理,通常把代码分散在各个源文件中,作为不同的模块来组织;这时编译各个文件就会生成目标文件(object file),而不是前面说的可执行文件。

注:
一般一个源文件的编译都会对应一个目标文件。
这些目标文件里的内容基本上已经是可执行代码了,但由于只是整个项目的一部分,所以我们还不能直接运行;待所有的源文件编译都大功告成,我们就可以把这些半成品的目标文件打包成一个可执行文件。

这个工作由另一个程序复制完成,称为链接(link),负责链接的程序叫做链接程序(linker)

链接程序除了链接目标文件外,还可能包括图像、声音等各自资源,还要负责去除目标文件之间的冗余重复代码等。链接完成后,一般得到我们需要的执行文件。

总结(好好理解下面这两句话):

  • 编译型:一次把所有的代码转换成机器语言,然后写成可执行文件;

那么什么是解释型语言呢?

  • 解释就是将源代码逐条转换成目标代码同时逐条运行的过程。在程序运行的前一刻,还只有源程序而没有可执行程序,而程序每执行到源程序的某一条指令,则会有一个称之为解释程序的外壳程序将源代码转换成二进制代码以供执行。

解释型程序中,由于程序总是以源代码的形式出现,因此只要有相应的解释器移植(比如,将同一个py文件,放入pycharm或者spyder都可以运行)就不是问题。
编译型程序虽然源代码也可以移植,但前提是必须针对不同的系统分别进行解释,当工程复杂时,会消耗大量时间。解释型程序节省了等待漫长的编译步骤,修改调试也非常简单。

强调:
由于解释型程序是将编译的过程放到执行过程中,这就决定了解释型程序注定要比编译型慢上一大截。

对比:

  • 编译型语言由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,如C/C++、Pascal/Object Pascal、VB等;
  • 而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释型语言,如Java、Javascript、Python等。

2、静态语言和动态语言

  • 动态类型语言:指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。
    Python就是典型的动态类型语言。
  • 静态类型语言:与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。

举例:

# 在python里对变量类型的确定是在赋值过程中确定的
x = 3
type(x)
# 在C语言中变量类型是提前确定好的
int x
x =3

可见:
主要是对变量的数据类型的处理方式不同。

3、强类型定义语言和弱类型定义语言

  • 强类型定义语言:即强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它永远是这个数据类型了。强类型定义语言是类型安全的语言。如Python。
  • 弱类型定义语言:数据类型可以被忽略的语言,如一个变量可以赋予不同数据类型的值。

强类型定义语言可能在速度上稍微逊色弱类型定义语言,但在严谨性上能有效避免很多错误。

我们总结出:
Python是一种动态解释型的强类型定义语言。

语言综合如下
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值