菜鸟学习:编译型语言、解释型语言、静态类型语言、动态类型语言的概念与区别

编译型语言和解释型语言:

1、编译型语言
需通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言。一般需经过编译(compile)、链接(linker)这两个步骤。编译是把源代码编译成机器码,链接是把各个模块的机器码和依赖库串连起来生成可执行文件。
优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
代表语言:C、C++、Pascal、Object-C以及最近很火的苹果新语言swift

2、解释型语言
解释性语言的程序不需要编译,相 比编译型语言省了道工序,解释性语言在运行程序的时候才逐行翻译。
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
代表语言:JavaScript、Python、Erlang、PHP、Perl、Ruby

3、混合型语言
既然编译型和解释型各有缺点就会有人想到把两种类型整合起来,取其精华去其糟粕。就出现了半编译型语言。比如C#,C#在编译的时候不是直接编译成机器码而是中间码,.NET平台提供了中间语言运行库运行中间码,中间语言运行库类似于Java虚拟机。.net在编译成IL代码后,保存在dll中,首次运行时由JIT在编译成机器码缓存在内存中,下次直接执行(博友回复指出)
Java先生成字节码再在Java虚拟机中解释执行。
严格来说混合型语言属于解释型语言。C#更接近编译型语言。

动态语言和静态语言:

1、动态语言
是一类在运行时可以改变其结构的语言: 如新的函数、对象、代码,已有的函数可被删除或是其他结构的变化。 通俗讲 在运行时代码可以根据某些条件改变自身结构。
主要动态语言:Object-C 、C# 、JavaScript 、 PHP、 Python、Erlang。

2、静态语言
运行时结构不可变的语言就是静态语言, 如 Java、C、C++

动态类型语言和静态类型语言:

1、动态类型语言
动态类型语言的数据类型不是在编译阶段决定的,是把类型绑定延后到了运行阶段。
主要语言:Python 、Ruby 、Erlang 、Javascript、 swift、PHP、 Perl

2、静态类型语言
静态类型语言是指在编译期间确定的 也就是在运行之前确定的,编写代码的时候要明确确定变量的数据类型

强类型语言和弱类型语言:

1、强类型语言:
一旦一个变量被指定了某个数据类型,不经过类型强转,不能改变数据类型。
主要语言:Java、C#、Python 、 Object-C、 Ruby

2、弱类型语言:
数据类型可以被忽略,一个变量可以赋不同数据类型的值
主要语言:JavaScript、PHP

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值