编程语言相关概念

 

编译、解释型语言:编译型语言需要首先由编译器将源代码编译为机器代码,再由机器执行,即运行前有一个编译过程,C++是典型的编译语言,GCC是C++的最流行的编译器;解释型语言不需要编译,运行时直接由解释器解释执行,典型代表如shell、Python;也有语言是这两种类型的混合,即既需要编译,又需要解释执行,典型代表如Java,Java代码首先由编译器编译为Java字节码,后由JVM(Java虚拟机)解释执行;需要说明的是编译、解释的界限并不绝对,例如Python代码解释执行前也可以被编译或者说优化为内部代码(.pyc格式文件)。

可移植性:指可以在多种环境(平台)下运行,C++具有可移植性,其可移植性由编译器可以将符合标准的C++代码编译为不同的目标平台而得到。

静态、动态类型:若类型是在编译时确定,则为静态,如C++,若类型是在运行时确定则为动态,如Python,一般来说,静态类型中变量类型确定之后就不能改变,动态类型中变量类型(在运行时)可以改变。

强、弱类型:强类型偏向于更严格的类型检查,更不容易进行隐式类型转换,弱类型则相反,C++、Python都可被认为是强类型。

显式、隐式类型:若类型是语法的一部分(例如,变量的带类型的声明、定义)则为显式,若类型是推导出来,非显式指定,则为隐式,C++为显式类型,Python为隐式类型。

类型安全、不安全:类型安全语言能正确解释内存区域的类型,即总能以和构建时相同(或兼容)的类型访问内存区域,由于指针的存在,一般认为C++是类型不安全的,Python是类型安全的。

C++是静态、强、显式、不安全类型语言,当然以上关于类型概念并没有严格定义,只是通俗的、大致的分类,参考文献2

内省、反射:内省(Introspection)是指程序运行时检查对象类型的能力,反射(Reflection)更进一步,指程序运行时可访问、检测、修改自身状态或行为的能力,参考文献3,C++通过dynamic_cast和typeid可实现内省。

闭包:又称词法闭包(Lexical Closure)或函数闭包(Function closures),由函数和与其相关的引用环境(变量)组合而成的实体(集合),是实现函数式编程的关键,参考文献3

编程范型(模型):过程、结构化、面向对象、泛型、函数式、并发、分布式等,参考文献4,C++可以实现过程、结构化、对象、泛型(通过模板)、函数式(通过operator()模拟)编程。

编程语言排行榜:TIOBE发布的编程语言热度指数给出了最热门的编程语言以及它们的份额。

 

参考文献:

  1. C++面向对象程序设计,龚晓庆等著,2011年;
  2. 弱类型、强类型、动态类型、静态类型语言的区别是什么?——知乎,另几篇:类型系统重要性
  3. Wikipedia条目:内省反射闭包
  4. The principal programming paradigms, Peter Van Roy, 更多关于:编程范型编程语言概念;
  5. Obscure C++ Features,中文翻译:C++语言的15个晦涩特性

posted on 2016-08-23 11:39  liangliangh  阅读(906)  评论(0编辑  收藏  举报

导航