• 编程语言相关概念


    编译、解释型语言:编译型语言需要首先由编译器将源代码编译为机器代码,再由机器执行,即运行前有一个编译过程,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个晦涩特性
  • 相关阅读:
    bzoj 2178 圆的面积并 —— 辛普森积分
    hdu 1724 Ellipse —— 自适应辛普森积分
    洛谷 P4525 & P4526 [模板] 自适应辛普森积分
    bzoj 4530 大融合 —— LCT维护子树信息
    bzoj 3083 遥远的国度 —— 树链剖分
    CF 360 E Levko and Game —— 贪心+最短路
    「网络流24题」 9. 方格取数问题
    「网络流24题」 17. 运输问题
    [Luogu 1533] 可怜的狗狗
    「网络流24题」 2. 太空飞行计划问题
  • 原文地址:https://www.cnblogs.com/liangliangh/p/5798636.html
Copyright © 2020-2023  润新知