c++概括
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++概括的更多相关文章
- Hadoop概括——学习笔记<一>
之前有幸在MOOC学院抽中小象学院hadoop体验课. 这是小象学院hadoop2.X概述第一章的笔记 第一章主要讲的是hadoop基础知识.老师讲的还是比较全面简单的,起码作为一个非专业码农以及数据 ...
- mysql、mysqli、PDO一句话概括比较
mysql.mysqli.PDO一句话概括比较 1 mysql扩展 (注:原始的,较差) 2 mysqli扩展(面向过程式) (注:比上面多了更多功能) 3 mysqli扩展(面向对象式) (注:比上 ...
- Scalaz(3)- 基础篇:函数概括化-Generalizing Functions
Scalaz是个通用的函数式编程组件库.它提供的类型.函数组件都必须具有高度的概括性才能同时支持不同数据类型的操作.可以说,scalaz提供了一整套所有编程人员都需要的具有高度概括性的通用函数,它是通 ...
- 字符输出流Writer简要概括
偷个懒,直接参考上篇字符输入流Reader的形式,其实Reader和Writer本来就大同小异: 字符输出流Writer 本篇将对JAVA I/O流中的字符输出流Writer做个简单的概括: 总得来说 ...
- 字符输入流Reader简要概括
字符输入流Reader组成结构 本篇将对JAVA I/O流中的字符输入流Reader做个简单的概括: 总得来说,每个字符输入流类都有一个对应的用途,如下: 字符流基类:Reader 字节流转字符流:I ...
- Hadoop概括——学习笔记<一>转
前言 第一章主要讲的是hadoop基础知识.老师讲的还是比较全面简单的,起码作为一个非专业码农以及数据库管理人员,也能狗大致了解其特点 首先是概括图(以hadoop2.0为例) 一.Hadoop基础 ...
- mapreduce精简概括--转
mapreduce精简概括 We want to count all the books in the library. You count up shelf #1, I count up shelf ...
- 一幅图概括Android测试的方方面面
一幅图概括Android测试的方方面面,来自网络: 另外的一些测试技巧 1,测试应用程序时,环境是很大的一个影响因素:系统时间,网络情况,异常关闭等 2,测试应用程序时,第三方嵌入程序也是有影响的.如 ...
- iOS开发——适配篇&App适配简单概括
App适配简单概括 1:适配:适应.兼容各种不同的情况 系统适配 针对不同版本的操作系统进行适配 屏幕适配 针对不同大小的屏幕尺寸进行适配 在用户眼中 屏幕是由无数个像素组成的 像素越多,屏幕越清晰 ...
- css学习--inline-block详解及dispaly:inline inline-block block 三者区别精要概括
*知识储备: 内联元素:是不可以控制宽和高.margin等:并且在同一行显示,不换行. 块级元素:是可以控制宽和高.margin等,并且会换行. 1.inline-block 详解 (1)一句话就是在 ...
随机推荐
- 使用纯CSS方案,解决垂直居中
CSS是HTML元素的剪刀手,它极度的丰富了web页面的修饰.在众多CSS常见的样式需求中,有一奇葩式的存在[垂直居中],因为不管是从逻辑实现方面还是从正常需求量来讲,这都没理由让这个需求在实践过程中 ...
- 浩哥解析MyBatis源码(十一)——Parsing解析模块之通用标记解析器(GenericTokenParser)与标记处理器(TokenHandler)
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6724223.html 1.回顾 上面的几篇解析了类型模块,在MyBatis中类型模块包含的 ...
- mapTask并行度优化及源码分析
mapTask并行度的决定机制 一个job的map阶段并行度由客户端在提交job时决定,而客户端对map阶段并行度的规划的基本逻辑为:将待处理数据执行逻辑切片(即按照一个特定切片大小,将待处理数据划分 ...
- 《阿里巴巴Java开发手册(正式版》读记
前几天,阿里巴巴发布了<阿里巴巴Java开发手册(正式版>,第一时间下载阅读了一番. 不同于一般大厂内部的代码规范,阿里巴巴的这本Java开发手册,可谓包罗万象,几乎日常Java开发中方方 ...
- 从花式swap引出的pointer aliasing问题
上次,一个同学问我,你知不知道可以不用引入中间变量就可以实现swap? 我说,我知道,可以用加减法或者异或实现,像是这样 void mySwap(int &x,int &y) { x= ...
- IDEA第五章----Git常用技能
前几篇已经介绍了idea的环境搭建及基础配置常用模板等,这一章我们介绍下idea中git的一些常用技能,包括提交文件,排除提交文件,合并分支,解决冲突,还原代码等等等. 第一节:Git常用技能 Git ...
- "fatal: protocol error: bad line length character: No This"
git clone 远程地址时候出现 "fatal: protocol error: bad line length character: No This" 错误 在stackov ...
- sass入门学习篇(二)
从语法开始但是语法也不是一两句的事情,首先看基本的导入,使用 一,sass有两种后缀名文件:一种后缀名为sass,不使用大括号和分号:另一种就是我们这里使用的scss文件,建议scss. 二,导入 使 ...
- 关于mysql表中有大文本limit慢的优化
问题场景: 商品表goods,里面有几个大文本字段,类型用的MediumText,表中记录28万多.分页查询时用limit,在一般PC上需要12秒左右,这个数量级的数据不应该这么慢. 原因分析: 几个 ...
- Python批量修改文件名与后缀
引言: 有时因为文件版本的更新,后缀名会发生变化,例如Word13的docx到Word16的doc,又例如我们想修改音频文件的后缀.一个一个修改后缀名往往很麻烦,于是我们便可以写一个Python的脚本 ...