编程语言特性


Lua/Python  与  C#/Java  与  C/C++


Lua / Python

相比 C#/Java 与 C/C++ :
Lua/Python 是脚本语言、可直接跨平台解释执行,可以实时更改代码

Lua的特性:

  • 解释型语言,没有编译步骤,执行时会按照从上到下的顺序依次执行。
  • 强类型语言,动态类型语言、变量声明时无需指定数据类型。
  • 一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
  • 只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象。 间接实现了面向对象编程(包括封装、继承和多态)等常用编程范式。
  • 主要应用于游戏编程领域,除此之外,lua也应用于独立应用脚本,web应用脚本,扩展和数据库插件等。

Python的特性:

  • 解释型语言
  • 强类型语言
  • 是面向对象的动态类型语言
  • 主要用于Web开发、机器学习、数据分析和数据可视化等

C#/Java

相比 Lua/Python 与 C/C++ :
C#/Java 编译中间代码、通过“虚拟机”实现跨平台执行。

C#的特性:

  • 是编译型语言,有编译步骤,运行代码时,须等待一个编译步骤,即使只是进行了很小的更改。编写完成后会生成特殊文件,然后按照调用关系去调用函数。
  • 是强类型语言
  • 面向对象的静态类型语言
  • 本身与平台相关,但在unity中c#可通过mono运行时 实现跨平台

Java的特性:

  • 解释型语言(但Java需要经过编译)
  • 强类型语言
  • 面向对象的静态类型语言
  • 平台无关,编译内部中间代码,通过JVM虚拟机,不同的操作系统都可以来解释Java程序

C/C++

相比 Lua/Python 与 C#/Java :
C/C++ 是偏底层编程,执行效率高,但平台相关

C的特性:

  • 比汇编语言高级一点,但仍然可以有效操作机器层面的语言
  • 编译型语言
  • 面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。
  • 强类型语言
  • 静态类型语言
  • 可以通过指针对内存进行人为分配。

C++的特性:

  • "几乎完全兼容"C,再加上有更高级的能力
  • 编译型语言
  • 强类型语言
  • 静态类型语言
  • C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。
  • C擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C就适应的问题规模而论,大小由之。

知识补充


编译和翻译

语言翻译的方式有两种,一种是编译,一种是解释。两种方式主要区别在于翻译的时间不同。

编译:

编译型语言写的程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,再次运行不用重新翻译,直接使用编译的结果就行了,运行时不需要翻译。

解释:

解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,每个语句都是执行的时候才翻译。


脚本语言

脚本语言是为了缩短传统的编写-编译-链接-运行过程而创建的计算机编程语言。又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序。脚本语言是一种解释性的语言,不需要编译,可以直接用,由解释器来负责解释,每次都需要翻译。

脚本语言与一般编程语言的区别:

  1. 脚本语言不需要编译器编译,可以直接用,由解释器来负责解释,每次都需要翻译。大多数脚本语言都能够随时部署,而不需要耗时的编译/打包过程;而一般编程语言需要编译器。
  2. 脚本语言是动态的,可以实时更改代码;而一般编程语言不可以实时更改代码。

强类型与弱类型

强类型语言:

强类型语言也称为强类型定义语言。强类型语言是一种强制类型定义的语言,一旦某一个变量被定义类型,如果不经过强制转换,则它永远就是该数据类型了(不会进行类型隐式转换),强类型语言包括Java、Python、lua、C++等语言。

弱类型语言:

弱类型语言也称为弱类型定义语言。一种数据类型可以被忽略的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过显性强制转换。弱类型语言包括vb 、PHP、javascript等语言。


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

动态类型语言:

指在运行期间去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。

静态类型语言:

与动态类型语言相反,在编译期间检查数据类型,也就是说在写程序时要正确声明所有变量的数据类型。


本文章使用limfx的vscode插件快速发布