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)一句话就是在 ...
随机推荐
- android-studio-bundle-141.2178183首次执行Hello World的时候出现ADB not responding. If you'd like to retry, then please manually kill "adb.e的错误
这是由于有其他程序在占用adb.exe要使用的端口5037,打开命令提示符cmd,输入指令netstat -aon|findstr 5037查看在使用此端口的程序,如 8036即为占用该端口号的PID ...
- 关于css禁止文本复制属性
最近在做DHTMLX框架替换,新框架dhx的grid是不能选中内容复制的 虽然相对来说是安全些的,但是客户体验度一定会大打折扣 网页上禁止复制主要靠JavaScript来实现.<BODY onc ...
- 用Web抓包分析工具Livepool 实现本地替换开发
这是官方的介绍: LivePool 是一个基于 NodeJS,类似 Fiddler 支持抓包和本地替换的 Web 开发调试工具,是 Tencent AlloyTeam 在开发实践过程总结出的一套的便捷 ...
- [转]Installing Memcached on Windows
Installing Memcached on Windows 原文链接https://commaster.net/content/installing-memcached-windows Sub ...
- .net软件反编译笔记
在软件的破解及源码获取及重新编译的道路上会遇到一些问题,书此备查. 大名鼎鼎的Reflector以及开源的ILSPY都是.NET程序集的反编译利器,但是它们不能为你做全部的工作. 0x01: 遇到反编 ...
- Angular2.js——表单(下)
这部分是接表单上部分的内容,主要内容有: 1.添加自定义的CSS来提供视觉反馈: 2.显示和隐藏有效性验证的错误信息: 3.使用ngSubmit处理表单提交: 4.禁用表单提交按钮. 添加自定义的CS ...
- (知识点)JavaScript原型和原型链
〇 每个函数都拥有prototype属性,而该属性所储存的就是原型对象 1)原型属性—— 上面我们测试了foo()函数的 1) length属性(length属性除了可以用在数组中,还可以用于记录函数 ...
- mui开发app之webview是什么
WebView(网络视图)能加载显示网页,可以将其视为一个浏览器,webview被封装在html5+,plus对象中,底层由java,OC实现. 先来谈谈我对webview的理解: 使用mui开发的a ...
- Android触摸事件的应用
前言 上一篇讲了Android触摸事件的传递机制,具体可以看这里 初识Android触摸事件传递机制.既然知道Android中触摸事件的传递分发,那么它能解决什么样的问题,在我们实际开发中如何应用,这 ...
- 纯净CentOS7.2 yum源配置与使用yum 安装系统工具net-tools
本节我们来讲CentOS 的yum 源配置 一.yum 简介 yum,是Yellow dog Updater, Modified 的简称,是杜克大学为了提高RPM 软件包安装性而开发的一种软件包管理器 ...