编程语言主要类型
一、编译型和解释型
- 编译型
- 解释型
- 两者利弊
编译型与解释型,两者各有利弊。前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object 、Pascal(Delphi)、VB等基本都可视为编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如:Java、JavaScript、VBScript、Perl、Python等等。
因此编译型与解释型各有优缺点又相互对立,所以一批新兴的语言都有把两者折衷起来的趋势,例
如Java语言虽然比较接近解释型语言的特征,但在执行之前已经预先进行一次预编译,生成的代码
是介于机器码和Java源代码之间的中介代码,运行的时候则由JVM(Java的虚拟机平台,可视为解
释器)解释执行。它既保留了源代码的高抽象、可移植的特点,又已经完成了对源代码的大部分预
编译工作,所以执行起来比“纯解释型”程序要快许多。而像VB6(或者以前版本)、C#这样的语言,
虽然表面上看生成的是.exe可执行程序文件,但VB6编译之后实际生成的也是一种中介码,只不过
编译器在前面安插了一段自动调用某个外部解释器的代码(该解释程序独立于用户编写的程序,存
放于系统的某个DLL文件中,所有以VB6编译生成的可执行程序都要用到它),以解释执行实际的程
序体。C#(以及其它.net的语言编译器)则是生成.net目标代码,实际执行时则由.net解释系统(
就像JVM一样,也是一个虚拟机平台)进行执行。当然.net目标代码已经相当“低级”,比较接近机
器语言了,所以仍将其视为编译语言,而且其可移植程度也没有Java号称的这么强大,Java号称是
“一次编译,到处执行”,而.net则是“一次编码,到处编译”。总之,随着设计技术与硬件的不断发
展,编译型与解释型两种方式的界限正在不断变得模糊。
二、动态语言和静态语言
- 动态语言
- 静态语言
对于动态语言与静态语言的区分,套用一句流行的话就是:
Static typing when possible, dynamic typing when needed。
(在可能的情况下静态输入,在需要时动态输入)
三、强类型定义语言和弱类型定义语言
- 强类型定义语言
- 弱类型定义语言
强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有
效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有
联系的!例如:Python是动态语言,是强类型定义语言(类型安全的语言);
VBScript是动态语言
,是弱类型定义语言(类型不安全的语言);
JAVA是静态语言,是强类型定义语言(类型安全的语
言)。
推荐阅读
- 保姆有偿陪伴(雇主要求过分,保姆没自尊,53岁保姆果断离职)
- mysql|InnoDB数据页结构
- 接口|axios接口报错-参数类型错误解决
- 带你了解类型系统以及flow和typescript的基本使用
- 构建App(一)(框架与结构)
- 史前艺术的审美类型「清央美术」
- 1-Java基础知识
- 认识图表
- MySQL|MySQL 5.7参考手册_11.1 数据类型概览
- Day6:wxpython基础