C++之所以是这样的
——《C++语言的设计和演化》读书笔记(1)
C++之所以这样,大多都源自于Bjarne Stroustrup在实际研究过程中所遇到的问题。为了解决这样那样的问题。他是个实用主义者。正是为了解决实际的问题,C++才有了类,才有了与其他语言的兼容性,才有这样的速度。
“类的概念使我能把应用中的概念直接映射到语言结构,是我的代码比我见过的其它任何语言的代码更具可读性”。是的,正是因为有这样诱人的特点,所有没有理由不把这种特性加到新的语言中去啊。这个优点在开发大型系统的时候显得尤为突出。
与java相比,C++看起来不是完全的面向对象。在C++中,我们还是能发现大量过程化语言的踪迹。这是为什么呢?在网上可以找到很多答案:为了与C兼容。是的,确实是为了与C兼容,但还有别的,那就是C++之父的个人思想——兼容性。“我绝不想通过一种有局限性的程序设计语言定义区推行某种唯一的设计理念。人们思维的方式是如此的丰富多彩,企图推行一种单一理念总是弊多于利。这样,C++被有意地设计成能够支持各种各样的风格,而不是强调‘一条真理之路’”。坚持着这样的信念,C++自然就变成了能够兼容其它语言的语言,不仅兼容上述的C语言,而且还兼容汇编等其它语言。兼容的好处就在于你可以用特定的语言解决特定的问题。在对解决某个特定问题时,可能某种语言的优势是非常明显的,那么我有什么理由不去用这种语言呢?可能的答案只剩下一个:可维护性。这是一个问题。但有时在特别需要效率或者其它什么优势特点的时候,可维护性往往只好降低它的重要级别了。
可移植性也是Bjarne包容思想的一个体现。因此现在C++的可移植性是毋庸置疑的。从Unix、Linux到Windows,以及各式各样的嵌入式的开发中,我们都能看到C++的身影。
分享到:
相关推荐
- **《C++的设计与演化》**(The Design and Evolution of C++)— Bjarne Stroustrup - **简介**:这本书由C++语言的创造者Bjarne Stroustrup撰写,深入介绍了C++的起源、设计原则以及发展历程。 - **学习建议**...
数据密集型应用系统设计-读书笔记 第一章:构建可靠性、可扩展性、可维护性的应用 第二章:数据模型与查询语言 第三章:存储与检索 第四章:编码与演化 第五章:分布式数据 第六章:复制 第六章:分区 第七章:事务 ...
第1章 对象的演化 一、多态性的解释: 当处理类型层次结构时,程序员常常希望不把对象看作是某一特殊类型的成员,而把它看作基本类型成员,这样就可以编写不依赖于特殊类型的代码。在形体例子中,函数可以对一般形体...
这是一个关于三维图形程序设计的课程作业,包含了C++语言编写的源代码以及一个SLN解决方案文件。这个压缩包是学习和实践三维图形编程的理想资源,适用于对C++和3D图形感兴趣的初学者或进阶者。 C++是计算机科学中...
从提供的文档内容来看,知识点主要集中在计算机语言的发展史和未来方向,以及计算机语言的分类和特点。以下将详细阐述这些知识点: 计算机语言发展史及未来方向: 计算机语言经历了从低级到高级的发展,这一过程与...
Java学习笔记主要涉及Java语言的历史背景、语言特点、应用平台和学习建议。以下是对这些内容的详细解析: ### Java语言的历史背景 Java起源于1990年代初的Sun公司(现为Oracle公司的一部分)的“绿色项目”计划,...
笔记中可能会涵盖主流编程语言(如Java、Python或C++)的基本语法、面向对象编程概念,以及良好的编程实践,如注释规范、异常处理和单元测试。 五、软件测试 测试是确保软件质量的关键步骤,包括单元测试、集成测试...
12. 语言发展史:冯·诺依曼是计算机的发明者,阿达是第一个写程序的人,C++、C# 等语言的演化过程。 13. 编译器的好坏标准:编译器的好坏有三个标准:速度、体积和编译时间。 14. 变量的概念:变量是对地址的...
- **起源与发展**:C#语言的发展历程从C语言逐步演化而来,经过C++的阶段,并借鉴了Java的一些特性,最终形成了C#这一现代编程语言。C#特别强调安全性、简洁性和面向对象编程特性,适用于开发Web应用和移动应用。 -...
【读码笔记】是关于计算机科学与信息技术领域中一项基础且重要的技能——代码阅读的记录。在编程过程中,理解并能有效地阅读他人的代码是一项必不可少的能力,尤其在维护现有项目、学习新框架或库,以及协作开发时。...
的设计和演化”中给出: 初始化后无法更改引用所指的内容。 也就是说,一旦 C++ 引用被初始化,以后就不能再引用不同的对象; 它不能重新绑定。 我过去曾被 Algol68 引用所困扰,其中 r1=r2 可以通过 r1 分配给引用...
《微磁模拟软件OOMMF教程笔记》 OOMMF(Object-Oriented MicroMagnetic Framework,面向对象的微磁框架)是一款由美国国家标准与技术研究所(NIST)开发的开源微磁学模拟软件。该软件旨在为研究微磁现象提供一个可...
1. **算法编程实现**:如何将理论算法转化为实际的编程代码,例如用C++、Python等语言实现上述的各种数值方法。 2. **算法效率讨论**:探讨不同算法的时间复杂度和空间复杂度,以及如何优化算法以提高计算效率。 3...
【标签】中,“软件/插件”可能意味着资料会讨论软件开发过程,包括软件设计、编码、测试以及与之相关的工具和技术,如软件框架、编程语言和软件插件的使用。“软件工程”标签明确表示这是关于软件开发的系统化方法...
### Redis基础笔记总结 #### 一、Redis入门概述 ##### 1.1 Redis是什么 - **定义**: Remote Dictionary Server(远程字典服务器)是一种开源的、高性能的键值(Key-Value)数据库。 - **语言**: 使用ANSI C语言...
4. 文档研究:查阅任何可用的文档,包括设计文档、用户手册、开发者笔记等,以了解代码的设计意图和实现细节。 5. 功能测试:运行代码并进行功能测试,以确认其当前状态和功能表现。 6. 性能分析:分析代码的性能...
1. **软件工程基础**:介绍软件工程的基本概念,包括软件生命周期、软件开发模型(如瀑布模型、迭代模型、敏捷开发等)以及软件开发过程中的主要活动(需求分析、设计、编码、测试和维护)。 2. **需求工程**:讲解...
匈牙利命名法是由微软公司前员工查尔斯·西蒙尼...通过阅读相关文献,如《MoreJoelonSoftware》和相关社区的讨论和笔记,可以帮助开发者形成更加全面的编程知识体系,同时也能帮助维护软件开发中的传统和规范。
【标签】虽然没有明确的标签,但我们可以假设这个源码可能与常见的编程语言如Java、Python、C++或JavaScript有关。也可能涉及前端或后端开发、移动应用、数据库管理、网络编程等IT领域。 【压缩包子文件的文件名称...
4. **编程语言**:根据课程内容,可能会涉及一种或多种编程语言,如Java、C++或Python,测试对语法、控制结构和异常处理的理解。 5. **版本控制**:Git或其他版本控制系统的基本操作,如提交、分支、合并和解决冲突...