编程语言学习
overview
Classification

编程语言的分类

按照编程技术难易程度分类

高级语言

高级语言采用易于识别和记忆的字符来作为关键字,也更接近人类的思维方式,编写容易读写性好,开发效率更高。

例如:

  • 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

动态类型语言

动态类型语言是指在运行期间才去做数据类型检查的语言,说的是数据类型,动态语言说的是运行是改变结构,说的是代码结构。动态类型语言的数据类型不是在编译阶段决定的,而是把类型绑定延后到了运行阶段。

静态类型语言

静态语言的数据类型是在编译其间确定的或者说运行之前确定的,编写代码的时候要明确确定变量的数据类型