Bjarne Stroustrup谈C++

为什么C++(来自C++之父的观点) 为什么C++(来自C++之父的观点) By Bjarne Stroustruphttp://www.research.att.com/~bs/ 刘未鹏(pongba)C++的罗浮宫(http://blog.youkuaiyun.com/pongba) 注:9月份的时候写了一篇“Why C++”(翻译版见这里)。后来我把文章发给Bjarne,问问他的意见。Bjarne友好的对文章 阅读详情
  • 摘要

    作为C++发明人,*Bjarne Stroupstrup*在个人网站上谈了不少对C++的思考。详细阅读,摘录部分如下。

  • What is C++

C++ is a general-purpose programming language with a bias towards systems programming that

  1. is a better C
  2. supports data abstraction
  3. supports object-oriented programming
  4. supports generic programming

Or, in other words: C++ is a language for defining and using light-weight abstractions. It has significant strengths in areas where hardware must be handled effectively and there are significant complexity to cope with.

  • What is so great about classes?

C++ supports data abstraction, which means classes. Classes are there to help you organize your code and helps to mainternace.

A class is the representation of an idea, a concept, in the code.

An object of a class represents a paeticular example of the idea in the code.

A well-designed class presents a clean and simple interface to its users, hiding its representation and saving its users from having to know about that representation.

When designing a class, it is often useful to consider what’s true for every object of the class and at all times. Such a property is called an invariant.

  • What is “OOP” and what’s so great about it?

The object-oriented programming is a style of programming originating with Simula (more than 40 years ago!) relying of encapsulation, inheritance, and polymorphism. In the context of C++ (and many other languages with their roots in Simula), it means programming using class hierarchies and virtual funcitons to allow manipulation of objects of a variety of types through well-defined interfaces and to allow a program to be extended incrementally through derivation.

The point about arranging classes into a class hierarchy is to express hierarchical relationships among classes and use those relationships to simplify code.

Object-oriented programming is not a panacea. “OOP” does not simply mean “good” - if there are no inherent hierarchical relationships among the fundamentabl concepts in your problem then no amount of hierarchy and virtual functions will improve your code. The strength of OOP is that there are many problems that can be usefully expressed using class hierarchies - the main wekness of OOP is that too many people try to force too many problems into a hierarchical mould. Not every program should be object-oriented. As alternatives, consider plain classes, generic programming, and free-standing functions (as in math, C, and Fortran).

generic programming

Generic programming is programming based on parameterization: you can parameterize a type with another (such as a vector with its element types) and an algorithm with another (such as a sort function with a comparion function). The aim of generic programming is to generalize a useful algotithm or data strcture to its most general and useful form. For example, a vector of integers is fine and so is a function that finds the largest value in a vector of integers.

Generic programming is in some ways more flexible than object-oriented programming. In particular, it does not depend on hierarchies. For example, there is no hierarchical relationship between an int and a string. Generic programming is generally more structured than OOP; in fact, a common term used to describe generic programming is “parametric polymorphism”, with “ad hoc polymorphism” being the corresponding term for object-oriented programming.

  • Should I learn C first than C++

No. Learn C++ first. The C subset of C++ is easier to learn for C/C++ novices and easier to use than C itself. The reason is that C++ provides better guarantees that C (stronger type checking). In addition, C++ provides many minor features, such as the ‘new’ operator, that are notationally more convenient and less error-prone than their C alternatives. Thus, if you plan to learn C and C++ (or just C++) you shouldn’t take the detour through C. To use C well, you need to know tricks and techniques that aren’t anywhere near as important or common in C++ as they are in C. Good C textbooks tends (reasonably enough) to emphasize the techniques that you will need for completing major projects in C. Good C++ textbooks, on the other hand, emphasizes techniques and features that lead to the use of C++ for data abstraction and object-oriented programming. Knowing the C++ constructs, their (lower-level) C alternatives are trivially learned (if necessary).

  • Why did you invent C++?

I wanted to write efficient systems programs in the styles encouraged by Simula67. To do that, I added facilities for better type checking, data abstraction, and object-oriented programming to C. The more general aim was to design a language in which I could write programs that were both efficient and elegant.

C++创始人Bjarne Stroustrup简介 他在20世纪80年代早期开发了C++,并在之后的几十年中对其进行了不断发展和推进。Bjarne Stroustrup对C++的设计和发展做出了巨大贡献,并通过不断改进语言的标准,使其成为一个广泛使用的编程语言。总结起来,Bjarne Stroustrup是C++编程语言的创始人,他的工作对于现代软件开发和计算机科学领域具有重要意义。C++编程语言最初是作为C语言的扩展而诞生的,旨在提供更多的抽象和更强大的编程工具。它结合了面向过程编程和面向对象编程的特性,并引入了许多新的概念,如类、继承、多态和模板。 阅读详情

相关推荐

C++语言之父 Bjarne Stroustrup 简介

图BS先生在他的办公室,这是他的个人网站上的相片 许多重要人物之所以成名,或者是因为其改变了历史或者是因为其创造了历史,Bjarne Stroustup先生,C++之父,属于后者;归结个人成功的原因,理由可能有多种,但他只有浅显的两个一点点:他比多数人天真和理想主义那么一点点;比多数人花在解决问题上的时间多一点点。 BS先生,1950年生于丹麦港口城市奥尔胡斯市,1975年在奥尔胡斯大学毕业,1...

希望我的博客,能帮上你解决学习中工作中所遇到的问题 6392

C++之父Bjarne Stroustrup:程序员在数学上付出的努力,永远也不会白费

1979年诞生的C++已迈入“不惑之年”,如今却依旧在主流编程语言中占据重要一席。

《程序员》官方BLOG 2万+

探索C++之父Bjarne Stroustrup的编程理念与实践

C++是一种广泛使用的计算机编程语言,它是由贝尔实验室的Bjarne Stroustrup在1979年开发出来的,并在1985年正式发布。C++既保持了C语言的高效率和灵活性,又引入了面向对象编程(OOP)的特性,使得软件开发更加模块化,易于维护。泛型编程是一种编程范式,它侧重于创建可适用于多种数据类型的代码。与面向对象编程(OOP)关注于数据和行为的封装不同,泛型编程更注重在多种数据类型间共享算法和数据结构。

weixin_32999557的博客 1162

【人物传记】C++之父-比雅尼·斯特劳斯特鲁普

与许多沉浸在理论世界的计算机科学家不同,斯特劳斯特鲁普是一个“工程师中的思想者”。他的战场在编译器的前端,在标准委员会的会议室,在堆积如山的缺陷报告和提案里。他不仅创造了一种语言,更定义了一种语言演进的模式——在数十年的漫长时间里,在无数开发者的期待与抱怨中,小心翼翼地掌舵,既不沉没,也不偏航。今天,C++仍然是全球最受欢迎的编程语言之一,支撑着操作系统、游戏引擎、数据库、高频交易系统、自动驾驶、航天器等关键领域的核心代码。

不问归期的博客 812

用SPSS做信效度分析

对问卷进行Cronbach’s Alpha信度检验。如果此值高于0.8,则说明信度高;如果此值介于0.7-0.8之间,则说明信度较好;如果此值介于0.6~0.7,则说明信度可接受;如果此值小于0.6,说明信度不佳。下面利用SPSS进行分析,点击分析–标度–可靠性分析选项,选中所要分析的问卷数据或题目。得到结果,我们要看这个有用的结果,当克隆巴赫Alpha系数(也可以看标准化后的)大于0.8时候,说明问卷信度较高。

小高~的博客 1万+

Nginx下ModSecurity模块安装详细教程

本文提供了在Nginx 1.28.0上安装ModSecurity v3的完整教程。首先需安装编译依赖,然后从源码编译安装ModSecurity库并设置优化参数。接着编译Nginx动态模块并配置加载。核心配置包括设置规则引擎、日志路径及性能优化参数。安装OWASP核心规则集后,在Nginx站点配置中启用ModSecurity。最后测试规则有效性并给出性能优化建议,如规则排除、精简规则集等。整个过程包含详细的命令和配置示例,确保安全防护功能正常运作。

深山技术宅的博客 1783

C++之父-Bjarne Stroustrup

C++之父-Bjarne StroustrupALNG Bjarne Stroustrup博士,C++语言的设计者和最初实现者,现任AT&T实验室的大型程序设计研究部的主管。1950年出生于丹麦,先后毕业于丹麦阿鲁斯大学和英国剑桥大学,at&t大规模程序设计研究部门负责人,at&t 贝尔实验室和acm成员。1979年,stroustrup开始开发一种语言,当时称为"c with class",后来

移动互联网改变生活,高效配对交易创造财富 3644

Java:使用Java调用打印机进行打印(JPG、PDF和Word三种文件格式)

目录 一、Java的打印简介 二、Java打印实现 2.1 JPG图片文件格式打印实现 2.2 PDF文件格式打印实现 2.3 Word文件格式打印实现 2.3.1 Word文件采用jacob插件进行打印实现。 2.3.2 先将word转化为pdf文件,然后打印pdf(lz使用) 三、总结 一、Java的打印简介 在我们的实际工作中,经常需要实现打印功能。但由于历史原因,Jav...

vatxiongxiaohui的专栏 8万+

Bjarne Stroustrup 谈C++

[转自百度百科] 以下文字是译者从Stroustrup1998年之后发表的若干文章、谈话笔记中精选出来的,由于出处不一,内容多有重复,为保持完整,亦一并译出。  以下内容选自B. S在自己主页上发表的FAQ  1. 请谈谈C++书。  没有,也不可能有一本书对于所有人来说都是最好的。不过对于那些真正的程序员来说,如果他喜欢从“经典风格”的书中间学习一些新的概念和技术,我推荐我的The

bl4ckh4t的专栏 541

MediaPipeUnityPlugin(最新版)摇摆拳人脸识别

MediaPipeUnityPlugin(最新版)摇摆拳人脸识别

不忘初心 方得始终 2981

KUKA机器人与S7-1200 PLC实现Profinet通讯配置步骤详解

在工业自动化产线中,PLC与工业机器人之间的高效数据交换是控制逻辑落地的关键。传统硬接线方案在信号点多时布线复杂、故障排查困难,而现场总线技术通过一根网线即可实现主从设备间的周期通讯。Profinet作为主流工业以太网协议,由S7-1200作为IO Controller主站,KUKA机器人作为IO Device从站,在WorkVisual与TIA Portal中完成设备组态、I/O映射及信号分配,即可替代成捆电缆,稳定传输启停、状态及报警信号。这一方案适用于汽车、3C、物流等行业的自动化产线,尤其适合需要扩

weixin_42519985的博客 251

C++之父B. Stroustrup近期言论

 [译者按]  Bjarne Stroustrup博士,1950年出生于丹麦,先后毕业于丹麦阿鲁斯大学和英国剑桥大学,AT&T大规模程序设计研究部门负责人,AT&T、贝尔实验室和ACM成员。1979年,B. S开始开发一种语言,当时称为“C with Class”,后来演化为C++。1998年,ANSI/ISO C++标准建立,同年,B. S推出了其经典著作The C++ Programmin

孟岩 9892

从苏宁电器到卡巴斯基(第二部)第01篇:我在卡巴的日子 I

聊聊行业薪酬 我相信不论是谁,如果是入职一家新的公司,那么他最想知道的一件事情就是待遇情况了。这里既包含每月实际能到手多少钱,又包括五险一金是否齐全以及是按照高标准还是低标准缴纳。另外,如果是入职IT公司,还会在意年终奖有多少,毕竟某些富裕的IT企业,每到年末就会以此制造新闻来博取大家的关注,以彰显自身的实力。 一言以蔽之,待遇问题也就是年收入究竟会有多少,也是我们进入职场的人喜欢相互打听的问题。比如我研究生那届最厉害的一位同学,签了A公司的算法岗位,年薪30W+(税前,下同),在当时的我看来就是天价了

Gleam的专栏 1225

Bjarne Stroustrup关于C++的讲座 (转)

今天Bjarne Stroustrup到公司来做关于C++ 0x泛型编程的讲座。秉着不吃鸡蛋也可以看看母鸡的原则,我还是提前20分钟去前排占了个位子 —— 虽 说我们实验室除了编译器部门和数据库部门狂用C++外,主要还是Java...

cuankuangzhong6373的博客 197

视觉媒体通信作业记录(六)端到端的视频传输系统

将采集、编码、传输、显示各模块连接起来,形成一个端到端的视频通信系统,开发一个特色模块,将其加入系统;

weixin_45774698的博客 1967

DDD系列 - 第6讲 仓库Repository - Mybatis篇

书接上回,之前通过一个关于拆解、微服务、面向对象的故事,向大家介绍了如何从微服务、面向对象一步步演进到DDD的,整个演进过程如下图:其中在领域层,我们定义了富血模型的领域模型,包括聚合、聚合根、实体、值对象等。聚合在代码层面中的表现形式即是一个包Package,起到了边界的作用,聚合内的对象间高内聚,而聚合间低耦合。聚合中放着实体、值对象、仓库等,实体相较于值对象的一个典型区别就是实体存在唯一标识,并且可通过该唯一标识查询到该实体并对其进行相关操作,值对象不存在唯一标识且通常作为实体。

罗小爬的技术宝书 1784

C++热点问题一席谈—Bjarne Stroustrup 2005新春专访

荣耀 访  荣耀/刘未鹏 译荣耀: Herb Sutter和Stan Lippman目前正在微软主持C++/CLI的设计工作,意图将动态的、基于组件的.NET编程模型和ISO C++集成在一起。您对此有何评价?您认为C++需要.NET吗?您认为C++/CLI会取得成功吗? Bjarne:不,C++根本不需要.NET,C++只需要最小限度的运行时支持,用于new/delete、异常处理以及R

思想比知识更重要 成长比成功更重要 741

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C++之父:面向对象的进化与实现

如果Bjarne Stroustrup(比雅尼·斯特劳斯特鲁普)从A&M大学工程学院离职,他的简历上只需一句话就会有一群顶级软件公司向他抛出橄榄枝: “Bjarne Stroustrup,C++编程语言的发明者”。 Bjarne 1950年出生在丹麦,对于软件开发界,丹麦不仅是一个童话王国,还是群星闪耀大师频出的地方。Delphi和C#之父Anders、Ruby ...

weixin_34414196的博客 199

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Bjarne Stroustrup关于C++的讲座

 想知道细节的,可以直接到wg21的网站上看论文。这里是零散的笔记。今天Bjarne Stroustrup到公司来做关于C++ 0x泛型编程的讲座。秉着不吃鸡蛋也可以看看母鸡的原则,我还是提前20分钟去前排占了个位子 —— 虽 说我们实验室除了编译器部门和数据库部门狂用C++外,主要还是Java作坊,我还是不能低估了这群老大赏鸡的好奇心。虽说有了心理准备,大家热情之高还是吓了俺一跳:讲座开始前

负暄琐话 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C++之父Bjarne Stroustrup的这本不可替代的经典

1982年,贝尔实验室(美国AT&T公司)的Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了新的程序语言C++。之所以被命名为C++,是为了表达该语言与C语言的渊源关系。Bjarne Stroustrup博士因此被尊称为“C++语言之父”。 20世纪90年代以后,Bjarne Stroustrup步入人生的最辉煌时期。1990年,Bjarne荣获《财富》杂志评选的“美国12位最年轻的科学家”称号。1993年,由于在C++领域的重大贡献,Bjarne.

人邮异步社区 4245

Bjarne Stroustrup博士对C++的看法

Bjarne Stroustrup博士,1950年出生于丹麦,先后毕业于丹麦阿鲁斯大学和英国剑桥大学,AT&T大规模程序设计研究部门负责 人, AT&T、贝尔实验室和ACM成员。1979年,B. S开始开发一种语言,当时称为“C with Class”,后来演化为C++。 1998年,ANSI/ISO C++标准建立,同年,B. S推出了其经典著作The C++ Programming Langu

博客已转到w3er.com 1227

C++的背影——C++之父Bjarne Stroustrup印象

C++的背影——C++之父Bjarne Stroustrup印象左轻侯2002.11.4  热爱C++的朋友请不要误会,我并不是在暗示“C++已经日薄西山”,或者任何类似的意思。从语义上来说,C++作为一门编程语言,当然不会有什么背影。事实上,我想说的是一个人的背影。因此这个题目显得有点突兀,甚至哗众取宠。但是我想,在C++社群中,每一个人都会同意,有一个名字就是C++的象征。这个名字当然

qinghou的专栏 5093

向C++之父Bjarne Stroustrup致敬

2013-04-25 21:30 (分类:社会人生)     非常好的文章     C ++ 的 背 影                                     ——C++之父Bjarne Stroustrup印象 左轻侯 2002.11.4        热爱C++的朋友请不要误会,我并不是在暗示“C++已经日薄西山”,或者任何类似的意思。从语义上来说,C++作为一门编程语言,当

centos的博客 702

从丹麦的旧GIER到C++之父Bjarne Stroustrup ,未来属于理想者

Bjarne创造C++的初衷是为了实现高效使用硬件与强大抽象机制的结合。当时,他想用通信系统构建一个多计算机系统,这个通信系统可以是共享内存,也可以是网络。他需要编写底层接近硬件的代码,如内存管理器、进程调度程序和设备驱动程序,同时也需要软件分离组件以便它们以良好方式进行通信。而在当时,没有一种语言能够胜任这样的多计算机系统开发需求,于是他在C语言的基础上引入并扩充了面向对象的概念,发明了C++,这个结果是他付出众多时间与打磨的甘甜果实。

敖行客 Allthinker的博客 1511

C++之父Bjarne Stroustrup亲临现场,2025全球C++及系统软件技术大会重磅官宣

在这个以算力与效率为信仰的时代,C++ 再次被推到聚光灯下——无论是 OpenAI 的推理引擎,还是 NVIDIA 的加速库、DeepSeek 的底层编译框架,C++ 依然是那根隐形的钢梁,支撑着智能世界的底座。他是 C++ Reflection TS 的项目编辑、Boost 基金会的执行董事,也是模式匹配和语言变体等多个 C++ 提案的作者。年,Bjarne 在全球 C++ 大会上的主题是 「原则、问题与解决方案」,他深入剖析了 C++ 社区所面临的核心挑战,同时为未来语言的发展制定了战略方向。

优快云资讯 7575
上一篇: (20200716已解决)TypeError: can‘t compare offset-naive and offset-aware datetimes
下一篇: C++ Library reference 概览
ikeepo
ikeepo 优质创作者: 数据库技术领域 优质创作者: 数据库技术领域
博客等级 码龄8年 1万+粉丝 1457原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值