编程语言的分类
按照编程技术难易程度分类
高级语言
高级语言采用易于识别和记忆的字符来作为关键字,也更接近人类的思维方式,编写容易读写性好,开发效率更高。
例如:
- C
- Cpp
- Java
- Python
越是高级的语言对人类越是友好,越是符合人类的思考方式,因此开发效率高。
低级语言
- 机器语言
- 汇编语言
越是低级的语言对机器越是友好,越是符合机器的思考方式,因此执行效率高。
按照编程范式分类
面向过程语言
面向过程语言是以过程或函数为基础的,这种语言对底层硬件,内存等操作比较方便,但是写代码和调试维护等会很麻烦
- C
面向对象语言
面向对象语言(Object-Oriented Language)是一类以对象作为基本程序结构单位的程序设计语言,指用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。语言中提供了类、继承等成分。
- java
- Cpp
脚本语言
脚本语言并不是一个明确定义的编程语言类型,而是一种用途广泛的编程语言,用于编写脚本以自动化任务或简化特定任务。很多解释型语言也被用作脚本语言。
- python
- shell
- php
- javascript
- ruby
函数式语言
逻辑编程语言
按照用途分类
通用目的编程语言
GPL General-Purpose Language 通用目的编程语言是一种设计用于解决广泛问题和任务的编程语言。它们在各种领域都有应用,并且可以用于开发各种类型的软件和应用程序
- Python
- Java
- C++
- C#
- JavaScrip
- Ruby
- Go
领域特定语言
DSL Domain-Specific Language 领域特定语言是一种针对特定领域或问题域而设计的编程语言。它们专注于解决某个特定领域的问题,因此通常具有更高的表达能力和易用性,比通用目的编程语言在特定领域更有效。DSL 可以更接近于领域专家的自然语言,因此可以更容易地表达和解决特定问题。
- SQL (用于关系数据库查询)
- HTML/CSS (用于网页标记和样式)
- Regular Expression (用于字符串匹配)
- GraphQL (用于数据查询)
- Makefile (用于构建软件)
- LaTeX (用于排版科技文档)
按照执行方式分类
解释型语言
解释性语言是一种在运行时逐行解释并执行程序代码的语言。在解释性语言中,代码不需要预先编译成二进制代码,而是通过解释器逐行翻译成机器代码,并立即执行。解释性语言的代码可以直接在计算机上运行,而不需要先进行编译。每当程序运行时,解释器都会逐行解释代码,并将其转换为计算机可以理解的指令来执行。
- python
- javascript
- lua
- ruby
编译型语言
编译型语言是指在运行之前需要先将源代码编译成机器代码的语言。编译过程由编译器完成,它会将整个源代码转换成等价的机器代码文件(通常是二进制文件),然后可以直接在计算机上执行。编译型语言的运行速度通常较快,因为代码在执行之前已经被完整地翻译成机器代码
- C
- Cpp
- Go
- Rust
编译+解释型语言
- java
按照语言类型分类
强类型
强类型语言是指在编程过程中要求严格定义和处理数据类型的语言。在强类型语言中,变量的数据类型必须在声明时明确指定,并且不允许进行隐式类型转换。如果要进行类型转换,通常需要显式地进行类型转换操作。这种严格的类型检查能够提高代码的安全性和可靠性,但也可能需要更多的类型转换代码
强类型语言,一旦一个变量被指定了某个数据类型,如果不经过强制类型转换,那么它就永远是这个数据类型。你不能把一个整形变量当成一个字符串来处理。
- java
- Cpp
弱类型语言
弱类型语言是指对数据类型较为宽松,允许在一定程度上隐式地进行类型转换的语言。在弱类型语言中,变量的数据类型可以根据上下文进行自动推断或隐式转换,这样的特性可以方便开发者,但也可能增加代码出错的可能性。
数据类型可以被忽略,一个变量可以赋不同数据类型的值。一旦给一个整型变量a赋一个字符串值,那么a就变成字符类型。
- javascript
- python2.x
动态类型语言
动态类型语言是指在运行期间才去做数据类型检查的语言,说的是数据类型,动态语言说的是运行是改变结构,说的是代码结构。动态类型语言的数据类型不是在编译阶段决定的,而是把类型绑定延后到了运行阶段。
静态类型语言
静态语言的数据类型是在编译其间确定的或者说运行之前确定的,编写代码的时候要明确确定变量的数据类型