编程语言相关概念

编译、解释型语言:编译型语言需要首先由编译器将源代码编译为机器代码,再由机器执行,即运行前有一个编译过程,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个晦涩特性
时间: 2024-10-30 20:50:42

编程语言相关概念的相关文章

Javascript中Closure及其相关概念

我相信学过Javascript这门语言的程序员应该都对Closure这个概念有所了解,然而网上以及各种Javascript书籍里面对Closure这个概念的定义有各种说法.我本人觉得很多地方对Closure这个概念的定义都是片面的,目前看到的比较全面准确的定义应该是Wikipedia上面的定义了,但是Wikipedia上面的定义不是很好理解. 我通过网上查阅了些资料后结合Wikipedia的定义,下面给出我自己对Closure这个概念的理解. 要想正确理解闭包必须要先对一些概念有所了解: 非本地

WebService的相关概念(1)

转自:https://www.cnblogs.com/xdp-gacl/p/4048937.html WebService的相关概念 一.序言 大家或多或少都听过 WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成 分.但是不得不承认的是WebService真的是一门新兴和有前途的技术,那么WebService到底是什么?何时应该用? 当前的应用程序开发逐步的呈现了两种迥然不同的倾向:一种是基于浏览器的

Apple Swift编程语言新手教程

Apple Swift编程语言新手教程 作者: 日期: gashero 2014-06-03 FROM:http://gashero.iteye.com/blog/2075324 文件夹 1   简单介绍 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 7   枚举与结构 1   简单介绍 今天凌晨Apple刚刚公布了Swift编程语言,本文从其公布的书籍<The Swift Programming Language>中摘录和提取而成.希望对各位的

DNS服务相关概念详解

实验环境:RHEL 32Bit DNS服务相关概念详解 DNS是一种域名解析服务,DNS服务的核心以及DNS服务的标准都是基于一个软件来实现的,这个软件叫做BIND(Berkeley Internet Name Domain),互联网上几乎所有的DNS服务都是由BIND来构建的,虽然也有其它的DNS服务构建标准,但是它们的使用语法以及工作机制都和BIND非常接近. ·Linux服务器和Windows服务器的比较 Linux服务器在没有SELinux的时候它的安全级别和Windows服务器的安全级

不要和一种编程语言厮守终生:为工作正确选择(转)

我们程序员在着手一个项目时,需要做的关键决定之一就是选择一种语言,或一组语言,用于实施该系统.这一决定不仅会影响系统的实现,也会影响设计.例如,我们应该使用面向对象的语言还是过程语言?选择什么语言对项目以及作为项目一部分的程序的生命周期有着深远的影响,很多次,我们基于一些非常善变的因素,没有思考太多就去选语言:这语言是我惯常用来实现这类系统的:这语言我了解得最透彻:这是我最喜欢的语言,我很享受于用这种语言编程:等等. 既然这个决定会导致深刻而长远的结果,那么我们是不是在做这个抉择时应该更加务实?

TIOBE Index for January 2016(TIOBE 2016年1月编程语言排行榜 Java拿下2015年度编程语言)

Java has won the TIOBE Index programming language award of the year. This is because Java has the largest increase in popularity in one year time (+5.94%). Java leaves runner ups Visual Basic.NET (+1.51%) and Python (+1.24%) far behind. At first sigh

8. 蛤蟆的数据结构进阶八哈希表相关概念

8. 蛤蟆的数据结构进阶八哈希表相关概念 本篇名言:"作家当然必须挣钱才能生活,写作,但是他决不应该为了挣钱而生活,写作.--马克思" 前些笔记我们学习了二叉树相关.现在我们来看下哈希表.这篇先来看下哈希表的相关概念 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47347273 1.  哈希表的概念 哈希表(HashTable)也叫散列表,是根据关键码值(Key Value)而直接进行访问的数据结构.它通过把关键

苹果新的编程语言 Swift 语言进阶(十四)--扩展

Swift语言的扩展是为一个已经存在的类.结构.枚举类型添加新功能的一种方式,包括为不能存取源代码的那些已经存在的类型添加功能.        扩展类似于Objective-C语言中的类别,与类别不同的是Swift语言的扩展没有名字.        扩展能够为已存在类型:     1)增加计算属性和计算静态属性:     2)定义新的实例方法和类型方法:     3)提... 请转移到此位置继续阅读,谢谢! 苹果新的编程语言 Swift 语言进阶(十四)--扩展 苹果新的编程语言 Swift 语

编程语言本身是怎么开发出来的?

在学习编程的过程中心中一直都有一个绕不开的迷雾 我有一个困惑,它已经纠缠我很长时间了,在此向高手们请教. 我们知道在计算机的历史上先出现的编程语言,后有软件. 我们今天开发软件都是在一定的软件环境(包括操作系统和开发工具)下, 用编程语言开发的.在"软件"出现以前,编程语言本身是怎么开发出来的? 它需要什么样的硬件环境和软件环境(有吗?)?在我们的PC上能开发编程语言吗? 编程语言是从低级语言向上发展成高级语言的,现在的编程语言大部分都是高级语言,最开始的编程语言是机器语言,它是由0