A.编译型语言与解释型语言B.动态类型语言与静态类型语言C.强类型语言与弱类型语言_opp_h1

opp_h1 A.编译型语言与解释型语言 B.动态类型语言与静态类型语言 C.强类型语言与弱类型语言

A.编译型语言与解释型语言运行编译型语言

根据语言根据运行的方式的不同来划分
1.编译型语言
相对于解释型语言存在的,编译型语言的首先将源代码编译生成机器语言,再由机器运行机器码(二进制)。运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些
代表语言:C/C++、Delphi、Pascal、Go等等

优点:
1.执行速度快 ,由于运行时不用重新翻译,所以执行速度会比解释型语言快。
2.占用的内存更少,有利于大型工程的运行。

缺点:
1.兼容性差;由于编译器与解释器的区别,代码更加难写,修改了某一个模块就得重新编译,对平台兼容性要求较高。
2.安全性不足;编译型程序不支持代码中实现安全性,一个编译型程序可以访问内存的任何区域。

2.解释型语言
程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次。因此效率比较低。比如Basic语言,专门有一个解释器能够直接执行Basic程序,每个语句都是执行的时候才翻译。(在运行程序的时候才翻译,专门有一个解释器去进行翻译,每个语句都是执行的时候才翻译。效率比较低,依赖解释器,跨平台性好。)。代表语言:Java、JavaScript、Python、VBScript、Perl、Ruby、MATLAB 等等

优点:
1.解释型语言提供了极佳的调试支持,debug更加方便
2.平台独立性与兼容性
3.高度的安全性
缺点:
1.每次运行都需要解释一遍,性能上不如编译型语言
2.解释型应用占用更多的内存和CPU资源

总结:由于两者区别,像开发操作系统、大型应用程序、数据库系统等时都采用编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言。但随着硬件的升级和设计思想的变革,解释型语言的使用范围超过编译型语言也是必然的

B.动态类型语言与静态类型语言

是以否提前直接声明变量类型来划分的
1.动态类型语言
不需要直接指定变量类型,在解释的时候,转换为目标代码和运行程序一步到位。代表语言:Python、Javascript、Ruby等

2.静态类型语言
变量的类型在编译之前就需要确定,在编译的时候需要先编译,将源码转换成目标代码,然后需要运行目标代码程序才能运行。代表语言:C++、C、Java、Delphi、C#等

总结:静态语言运行时因为只需运行目标程序,所以运行速度快,但是因为要注意变量的类型,需要多注意一些东西,而动态语言比较自由,可以将思想更多的集中在我们所开发的东西上。同时也因为动态语言的灵活性太高,当代码数量太大时,很多东西将变得不可控,不如静态语言稳定,所以当开发大型项目时,要优先选用静态语言。

C.强类型语言与弱类型语言

以变量类型是否可变来划分
1.强类型语言
强制数据类型定义的语言,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。代表语言:Python、Java。

2.弱类型语言
数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言);JAVA是静态语言,是强类型定义语言(类型安全的语言)。代表语言:JavaScript、C++ 。

总结:强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值