c++到底是什么样的语言

在过去的几十年,计算机技术的发展令人吃惊,当前的笔记本电脑的计算速度和存储信息的能力超过了20世纪60年代的大型机。20世纪七十年代,C和Pascal语言引领人们进入结构化编程时代。20世纪80年代,人们见证了一种新编程模式的成长:面向对象编程(OOP)。

20世纪七十年代,贝尔实验室致力于开发UNIX操作系统;操作系统是能够管理计算机资源,处理计算机与用户交互的一组程序,为完成这项工作,需要一种简洁,能够生成简洁且快速的程序,并能有效控制硬件的语言。

传统上,程序员使用汇编语言来满足这些需求,汇编语言依赖于计算机内部的机器语言。然而,汇编语言是低级语言,它直接操控硬件,直接访问CPU寄存器和内存单元。因此汇编语言针对特定的处理器,要将汇编程序移植到另一种计算机必须实现对它的重写。高级语言致力于解决问题,而不注重硬件。于是他们在旧语言的基础上开发了C语言。

C++在C的基础上移植了新的概念。一般来说,计算机程序要处理两个概念——数据和算法。数据是程序使用和处理的东西,而算法是程序使用的方法。

过程性语言

C语言在最初面世时是过程性语言,这意味着它强调的是算法的方面。从概念上讲过程化编程首先确定计算机应采取的操作,然后使用编程语言实现这些操作。

相比于汇编语言,过程化语言毫无疑问是相对清晰的,易修改的,但是,弊端随着程序规模的扩大而显现,很多旧式程序的执行路径很混乱,各种分支语句使得它看起来像混乱的意大利面条,修改这种程序简直是一场灾难。为了解决这种问题,计算机科学家开发了一种更为有序的编程方法——结构化编程。

结构化编程

C语言具有使用这种方法的特性,例如,结构化分支限制为一小组行为良好的结构(for循环,while循环,do while循环和if else语句),另一个原则是自顶向下的设计。在C语言中,其理念是将大型程序分解成小型程序,以便于管理任务;如果小型任务过大,则进一步分解。这一过程将程序划分为小型的,易于编写的模块。它鼓励程序员开发程序单元(函数)来表示各个任务模块。结构化编程技术反映了过程性编程的思想,根据执行的操作来构思一个程序。

面向对象编程

虽然结构化编程的理念提高了程序的清晰度,可靠性,并且非常易于维护。但是,在编写大型项目时,仍然面临着挑战。为了解决这个问题,OOP提供了一个新的编程方法,与过程式注重算法的实现不同的是,面向过程编程强调的是数据,其理念是设计与问题相关的数据格式。在c++中,类是一种范式,它描述了这种新型数据格式,对象是根据这种规范结构的特性数据结构。通常,类规定了可使用哪些数据来表示对象以及可以对这些数据执行哪些操作。OOP程序设计方法首先设计类,它们准确的表示了程序要处理的东西。例如,如果我们设计一个公司人员管理系统,那么要定义人员的职称,人员的工号,人员的工资等,然后类定义描述了对类的可执行操作。从低级组织(类)到高级组织(程序)的处理过程叫自下向上的编程。

OOP编程并不是仅仅将数据和方法合并成类定义。例如OOP还有助于创建可重用的代码,这将减少大量的工作。C++真正的优点之一是:可以方便的重用和修改现有的,经过仔细测试的代码。

C++与泛型编程

它与OOP的目标相同,即使重用代码和抽象通用概念更加简单。泛型编程提供了执行常见任务的工具。术语泛型指的是独立于类型的代码。

总结:c++创始人Bjarne Stroustrup在谈到c++时曾说:“c++是为了我和我的朋友不必再使用汇编语言,C语言和其他高级语言而设计的,它的主要功能是可以更加方便的编写出程序,让编程序的人快乐!”我想,这就是c++的魅力吧。让程序员快乐!

c++概括的更多相关文章

  1. Hadoop概括——学习笔记<一>

    之前有幸在MOOC学院抽中小象学院hadoop体验课. 这是小象学院hadoop2.X概述第一章的笔记 第一章主要讲的是hadoop基础知识.老师讲的还是比较全面简单的,起码作为一个非专业码农以及数据 ...

  2. mysql、mysqli、PDO一句话概括比较

    mysql.mysqli.PDO一句话概括比较 1 mysql扩展 (注:原始的,较差) 2 mysqli扩展(面向过程式) (注:比上面多了更多功能) 3 mysqli扩展(面向对象式) (注:比上 ...

  3. Scalaz(3)- 基础篇:函数概括化-Generalizing Functions

    Scalaz是个通用的函数式编程组件库.它提供的类型.函数组件都必须具有高度的概括性才能同时支持不同数据类型的操作.可以说,scalaz提供了一整套所有编程人员都需要的具有高度概括性的通用函数,它是通 ...

  4. 字符输出流Writer简要概括

    偷个懒,直接参考上篇字符输入流Reader的形式,其实Reader和Writer本来就大同小异: 字符输出流Writer 本篇将对JAVA I/O流中的字符输出流Writer做个简单的概括: 总得来说 ...

  5. 字符输入流Reader简要概括

    字符输入流Reader组成结构 本篇将对JAVA I/O流中的字符输入流Reader做个简单的概括: 总得来说,每个字符输入流类都有一个对应的用途,如下: 字符流基类:Reader 字节流转字符流:I ...

  6. Hadoop概括——学习笔记<一>转

    前言 第一章主要讲的是hadoop基础知识.老师讲的还是比较全面简单的,起码作为一个非专业码农以及数据库管理人员,也能狗大致了解其特点 首先是概括图(以hadoop2.0为例)  一.Hadoop基础 ...

  7. mapreduce精简概括--转

    mapreduce精简概括 We want to count all the books in the library. You count up shelf #1, I count up shelf ...

  8. 一幅图概括Android测试的方方面面

    一幅图概括Android测试的方方面面,来自网络: 另外的一些测试技巧 1,测试应用程序时,环境是很大的一个影响因素:系统时间,网络情况,异常关闭等 2,测试应用程序时,第三方嵌入程序也是有影响的.如 ...

  9. iOS开发——适配篇&App适配简单概括

    App适配简单概括 1:适配:适应.兼容各种不同的情况 系统适配 针对不同版本的操作系统进行适配 屏幕适配 针对不同大小的屏幕尺寸进行适配 在用户眼中 屏幕是由无数个像素组成的 像素越多,屏幕越清晰 ...

  10. css学习--inline-block详解及dispaly:inline inline-block block 三者区别精要概括

    *知识储备: 内联元素:是不可以控制宽和高.margin等:并且在同一行显示,不换行. 块级元素:是可以控制宽和高.margin等,并且会换行. 1.inline-block 详解 (1)一句话就是在 ...

随机推荐

  1. Java中的排序方法

    冒泡排序法 快速排序

  2. 第三章 PL/SQL编程

    3.1 PL/SQL基础知识    3.1.1 什么是PL/SQL?        PL/SQL是结合Oracle过程语言和结构化查询语言的一种扩展语言        3.1.1.1 PL/SQL体系 ...

  3. NodeJs系列二:你好,世界

    安装nodejs 什么是nodejs中的模块 hello,world

  4. 关于socket编程获取客户端地址笔记

    因为最近刚好碰到这块,而且很不小心的在上面踩了个坑,所以把这个坑记录下来 首先,在我们都是在accept函数以后来获取客户端的地址: client_sd = accept(watcher->fd ...

  5. 安卓Native和H5页面进行交互

    安卓Native和H5页面进行交互 1.H5页面调用安卓Native界面 1)通过给webView添加JsInterface,安卓提供接口,让H5来进行调用    a)安卓写一个类,里面的方法需要用通 ...

  6. DELL Precision Tower7910重装系统+开机出现GRUB界面如何处理

    想给实验室的工作站重新装个Win7系统,因为以前并没装过工作站的系统,发现和普通的电脑装系统还是有些不一样的.主要的问题就在于主板的不同. 尝试了老毛桃U盘启动盘安装,结果在WinPE里面提示找不到硬 ...

  7. DirectFB、Layer、Window、Surface之间关系

    层(Layers) 表示一块儿独立的图像缓冲区.大多数的嵌入式设备都有多个层.他们由硬件使用合适的alpha值来blending,然后显示. 表面 (Surface) 用来保存像素数据的保留内存区域. ...

  8. curl_escape ---> 使用URL 编码给定的字符串

    curl_escape (PHP 5 >= 5.5.0) curl_escape — 使用 URL 编码给定的字符串 说明¶ string curl_escape ( resource $ch  ...

  9. CSS vertical-align属性

    之前也经常用到vertical-align进行垂直居中对齐,突然发现其中的一些属性值根本就没使用过,也不清楚效果,将今天的研究成果记录下. vertical-align 属性 下表是w3c上列举的属性 ...

  10. PHP学习笔记-1

    PHP基本语法 php脚本可以放在文档的任意位置: php脚本以<? php开始,以?>结束: php文件通常包括Html标签和一些php脚本代码: 举个栗子: <!DOCTYPE ...