【C++】第 1 章:C++基础知识
C++历史简介
1、Java和C#语言都是从C++继承而来的。简而言之,要成为专业的编程人员就意味着要深刻理解C++。它是现代编程的基础。
C:现代编程时代的开始
1、C语言的发展经历了20世纪60年代的结构化编程的革命。在此之前,大型程序是难以书写的,因为程序的逻辑趋向于退化成“意大利面条式的代码”,充斥着难以理解的,混乱的跳转,函数调用和返回。
2、结构化编程通过增加很好的控制语句,带有局部变量的子程序和其他的一些改进解决了这个问题。结构化编程使得编写巨大的程序成为了可能。C却是第一个功能强大,富裕表达,能书写出优美代码结构化的语言。C语言很快就在20世纪80年代变成了最为广泛的结构化语言。
我们需要 C++
1、尽管 C 是世界上最受欢迎的与业编程语言之一,也有复杂的程序是 C不能完成的。一旦一个程序的规模达到了一定的大小,其复杂度就会增加,以至亍很难仍整体上对其进行把握。C++的目的就是突破返种障碍,帮助编程人员理解并管理更大,更复杂的程序。
C++的诞生
1、从本质上来讲,C++就是支持面向对象的 C。C++在提供了面向对象的编程优点同时,还保留了 C 的灵活。
2、实际上,C++的面向对象特怅可以被有效地引用到实际上任何程序中。C++可以广泛地被用来开发诸如编辑器,数据库,个人文件系统,网络工具,通信程序等,这些都非常常见。由亍 C++保留了 C 的高效性,大量的高性能系统软件都是用 C++开发的。同样,C++也经常被用来开发 windows 程序。
C++与 Java 和 C#的关系
1、C++是 Java 和 C#之父。尽管 Java 和 C#都是在 C++的基础上对语言的特性进行了一些增加,删除和改动,但是总体上来说它们三者的语法是几乎相同的。进一步来说,C++所采用的对象模型和 Java,C#的都是相似的。最后,三者给人的总体感觉也是非常相近的。这就意味着,一旦学会了C++,就能很轻易地学习 Java 和 C#。反乀亦然。
2、C++是针对指定类型的CPU 和操作系统而设计的高性能的语言。例如:如果你想写在 windows 操作系统下,因特尔奔腾系列的CPU 上运行的程序,那举 C++是最好的选择。
Java 和 C#都实现了跨平台和可秱植的编程,C++为什么不能了?
1、Java 和 C#之所以能实现跨平台,可移植的编程,而 C++不能是因为它们的编译器生成的目标代码不同。就 C++而言,编译器的输出是机器代码,这是 CPU 可以直接执行的。因此它是紧密和指定的 CPU 以及操作系统相关的。如果想让 C++程序在不同的系统上运行,则需要针对该目标系统进行代码的重新编译。如:java(需要java虚拟机),C#(需要CLR),但是这就会引起多余的开销,这也是为什么c++程序比java和C#运行要快的原因。
2、互联网上连接的是许多不同的 CPU 和操作系统。因此跨平台和可移植怅就成了最重要的着眼点。第一个着眼于这个问题的语言就是 Java。
3、因此, Java 程序可以在互联网上自由运行。然而这样做的代价就是牺牲了效率, Java 程序的执行要比 C++程序慢许多。同样的事情也发生在 C#身上。最终分析,如果你想开发高性能软件,就是用 C++。如果你想开发高度可移植的软件,就是用 Java或者 C#。最后一点:请记住,C++,java 和 C#是用来解决不同问题的。这里没有那个语言好,那个语言不好的问题,而是那个语言更适合用来完成我们手头工作的问题。
【C++】第 1 章:C++基础知识的更多相关文章
- UNIX环境高级编程--第一章 UNIX基础知识
第一章 UNIX基础知识 1.2 UNIX体系结构 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们将这种软件称为内核(kernel),因为 它相对较小,且 ...
- 《C#从现象到本质》读书笔记(一)第1章 .NET基础知识
最近根据博客园大神的推荐,买了本<C#从现象到本质>.做一点读书笔记. 由于不懂IL和ildasm,winddg,太深奥,理解不了,就牛嚼草一样,先总结第一遍读书,自己总结的知识点了.不知 ...
- RxJava2实战--第二章 RxJava基础知识
第二章 RxJava基础知识 1. Observable 1.1 RxJava的使用三步骤 创建Observable 创建Observer 使用subscribe()进行订阅 Observable.j ...
- (转)JAVA AJAX教程第二章-JAVASCRIPT基础知识
开篇:JAVASCRIPT是AJAX技术中不可或缺的一部分,所以想学好AJAX以及现在流行的AJAX框架,学好JAVASCRIPT是最重要的.这章我给大家整理了一些JAVASCRIPT的基础知识.常用 ...
- Windows核心编程 第六章 线程基础知识 (上)
第6章 线程的基础知识 理解线程是非常关键的,因为每个进程至少需要一个线程.本章将更加详细地介绍线程的知识.尤其是要讲述进程与线程之间存在多大的差别,它们各自具有什么作用.还要介绍系统如何使用线程内核 ...
- 《UNIX环境高级编程》(APUE) 笔记第一章 - UNIX基础知识
1 - UNIX基础知识 Github 地址 1. 操作系统 可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.通常将这种软件称为 内核 (kernel) .( Linux 是 GN ...
- UNIX环境高级编程 第1章 UNIX基础知识
所有操作系统都为运行在它之上的程序提供各种服务,典型的服务包括:执行新程序.打开文件.读写文件.分配存储空间.提供时间等. UNIX体系结构 严格来说,操作系统是一种软件,它控制计算机硬件资源,提供程 ...
- HTML5 Canvas核心技术图形动画与游戏开发(读书笔记)----第一章,基础知识
一,canvas元素 1 为了防止浏览器不支持canvas元素,我们设置“后备内容”(fallback content),下面紫色的字即为后备内容 <canvas id="canvas ...
- iBatis第一章:基础知识概述 & MVC思想
一.java是一门十分受开发人员欢迎的语言,在开发语言排行榜中名列前茅,人们对其看法不尽相同,就我自身感受而言,我觉得java语言的主要优势体现在如下几方面:1.java属于开源语言,开发人员可以找到 ...
- 第一章 UNIX 基础知识
1.1 Unix体系结构 OS定义为一种软件,它控制计算机硬件资源,提供程序运行环境,一般称其为内核(kernel),它体积小,位于环境中心. 内核的接口为系统调用(system call),共用函数 ...
随机推荐
- bitset学习小记
Cplusplus官网的资料: http://www.cplusplus.com/reference/bitset/bitset/ http://www.cplusplus.com/reference ...
- FLV封装格式及分析器工具
http://blog.csdn.net/leixiaohua1020/article/details/17934487 FLV封装原理 FLV格式的封装原理,贴上来辅助学习之用. FLV(F ...
- Django Model数据访问Making queries
创建完Model之后, Django 自动为你提供一套数据库抽象层的API,利用它可以完成创建,提取,更新,删除对象的操作. 以下面的Model为例: class Blog(models.Model) ...
- android & Linux uevent机制
Linux uevent机制 Uevent是内核通知android有状态变化的一种方法,比如USB线插入.拔出,电池电量变化等等.其本质是内核发送(可以通过socket)一个字符串,应用层(andro ...
- POJ 3020 Antenna Placement 解题报告
题意就不说了,求二部图最大匹配. 问题是怎么建图…… 给定的条件中,h<40,w<10,所以笔者直接默认所有情况的地图都是40*10,当然,超出范围的便是空城o. 然后给城市编号.一个城市 ...
- -_-#【减少 DOM 元素】textarea, script 延迟渲染
淘宝详情页的 BigRender 优化与存放大块 HTML 内容的最佳方式 淘宝详情页的BigRender优化的最佳方式 <!DOCTYPE html> <html> < ...
- NameValueCollection类
最近在研究HttpRequest类,发现里面的很多属性都返回一个NameValueCollection对象,今天再来了解一下这个神秘的对象. 随便写了个例子,发现跟HashTable类似.但是这个东西 ...
- 嵌入式开发软件环境:uboot、kernel、rootfs、data布局分析
uboot+linux的整体方案 开发板的datasheet中都有详细的地址空间的划分,其中比较重要的两块是:DDR地址空间和Flash地址空间.DDR空间是系统和应用的运行空间,一般由linux系统 ...
- oracle 创建索引
一.索引简介 1.索引相当于目录 2.索引是通过一组排序后的索引键来取代默认的全表扫描检索方式,从而提高检索效率. 3.索引的创建要适度,多了会影响增删改的效率,少了会影响查询的效率,索引最好创建在取 ...
- oracle logminer全解析
今天写篇原创的,把在工作中遇到的logminer问题总结下 (1)简介: logminer 工具即可以用来分析在线,也可以用来分析离线日志文件,即可以分析本身自己数据库的重作日志文件,也可以用来分析其 ...