编程语言的分类

1 抽象等级:机器语言、汇编语言与高级语言
编程语言经历了从低级到高级的发展,按照语言的抽象等级,由低到高分为机器语言、汇编语言与高级语言(详情见上文——编程语言的发展历史)。高中辅导 https://m.hfjy.com/baike/high/
2 执行方式:编译型语言和解释型语言
计算机不能直接理解高级语言,只能直接理解机器语言(二进制指令),所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的代码。翻译方式分为两种,一种是编译,一种是解释。简单来说,编译型语言是将所有代码一次性翻译然后执行,而解释型语言是则是翻译一句执行一句。具体如下:
编译型语言:需通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言。运行程序前一般需经过编译(compile)、链接(linker)两个步骤。编译就是把源代码编译成机器码,链接则是把各个模块的机器码和库文件串连起来生成可执行文件(如exe)。
优点:编译和执行是分开的,编译只做一次,以后再执行程序不用重新翻译,直接使用编译链接生产的文件即可。因此编译型语言的执行效率高,并且可以脱离语言环境独立运行(比如我们用C++开发的exe程序可以直接运行在其它同类型操作系统的电脑上,而无须安装运行环境)。
缺点:编译之后一旦需要修改某处代码,就需要整个模块重新编译,因此开发效率低。编译的机器码具有平台相关性,因此不同操作系统之间的移植性差。
代表语言:C、C++、Pascal、swift以及google开发的go语言等。
解释型语言:
源代码不是直接翻译成机器语言,而是先翻译成中间代码(字节码),再由解释器对中间代码进行解释运行(解释器具有跨平台特性)。解释型语言所编写的程序在运行时才逐行翻译,即翻译一句执行一句,不需要整体编译,相比编译型语言省了道工序(例如我们编写Python代码在IDE下可直接运行,而没有C++那样的编译链接步骤)。
优点:移植性好,有良好的平台兼容性,安装解释器(虚拟机)后,可以在任何系统环境中运行;没有编译过程,因此开发过程灵活高效,修改代码时直接修改即可。
缺点:每次运行的时候都要解释一遍,因此执行效率低。
代表语言:JavaScript、Perl、Python、Ruby、MATLAB 等。
其实还有一种混合型语言,它也具有编译过程,只是编译成中间码,同时需要虚拟机的支持来运行中间码,例如Java和C#。
3 结构特性:动态语言与静态语言
按照程序在运行时能否改变结构,分为动态语言与静态语言。运行时可以改变结构的为动态语言(脚本语言),反之为静态语言。改变结构指的是运行时代码可被动态改变,比如添加新的代码、更改对象定义(如为对象新增属性与方法);
4 变量类型:强类型语言与弱类型语言
按照变量是否需要指明类型,分为强类型语言与弱类型语言。
强类型语言是强制数据类型定义的语言,要求变量的使用要严格符合定义的类型,所有变量都必须先定义后使用。一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。
代表语言:Java、C#、Python
弱类型语言变量无需事先定义,数据类型可以被忽略,一个变量可以赋不同数据类型的值。例如可以给一个整型变量a赋一个字符串值,然后a就变成字符类型。
代表语言:JavaScript、PHP
注意:一个语言是不是强类型语言和是不是动态类型语言没有必然联系。例如Python是动态类型语言,是强类型语言;Java是静态类型语言,是强类型语言;JavaScript是动态类型语言,是弱类型语言。
5 设计方法:面向过程与面向对象
面向过程与面向对象是两种不同的编程思想或设计方法。面向过程是以过程或步骤为中心,将程序按照功能分为多个子模块,每个子模块完成相应功能,主过程通过调用各个子模块完成任务,如C语言是典型的面向过程。面向对象则是以对象或功能为中心,将待解决的问题所涉及到的功能类型或事物抽象为类,通过类定义对象来具体化事物,对数据与方法进行封装,通过接口进行通讯,整个解决问题的程序就是对象的集合,如C++是典型的面向对象。
这样描述对于没用过C与C++的小朋友可能有些抽象(类、对象、封装都是专有概念)。举个例子便于理解,实现开车这件事,面向过程的思想是将开车分成几个步骤:上车、系安全带、点火。。。每一个步骤是一个单独的模块(函数),通过依次调用函数实现开车;而面向对象的思想是将开车这件事所涉及的事物进行总结:司机和车。定义司机这个类(具有会开车的属性)和车这个类(有车门、安全带等属性),通过类定义两个具体化的事物(对象),从对象中取出相应的功能就实现了开车这件事。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值