您了解C ++标准有多重要?


11

我确实尝试搜索,但是没有看到类似的问题(该问题或者我的搜索术语不正确-如果是这样,请随时关闭)。

我是SO的狂热用户,并且我注意到在讨论和回答中有很多C ++标准的引用-而且我不得不承认,我从未阅读过这个特定的文档,这种语言使我的眼睛受伤...所以,问题是,C ++开发人员可以不用阅读本文档就能真正地谋生吗?对于我们这些不从事编写编译器业务的凡人真的重要吗?


用标准的简短引号回答的问题的持续性应该足以证明阅读不是使用该语言的先决条件...(前提是遇到困难时可以转弯)
Shog9

Answers:


16

不,没有它,您就可以相处得很好

但是,如果您花时间学习它,将会有更深入的了解。也许遵循那些困扰您的问题的参考文献,一次学习一小部分。


8

如果您想争论语言的语义和标准语,那么标准就非常重要。(我并不是说这完全贬义。)如果您只是想该语言完成工作(相对于该语言),那么情况就不那么如此了。

一旦对标准库感到满意,该标准就可以很好地引用标准库(对于语言本身而言不是很多),但是我很犹豫地建议以这种方式使用它。大多数人似乎在其他材料上做得更好。就是说,当我需要查找有关stdlib的内容时,我经常会使用标准。

但是,阅读委员会的草稿和论文是与C ++ 0x并驾齐驱的一种方法-实际上,目前只有少数几种方法之一。

对于SO和其他论坛,我会犹豫地引用该标准,除非发布者似乎明确并肯定会受益–也许他们已经要求这样做,或者我认为他们对此隐含期望。在大多数情况下,尤其是对于刚接触C ++的程序员来说,引用它似乎并没有多大帮助。


如果有人想知道该语言应该做什么,那么该标准将无价之宝。如果他们想知道为什么编译器会执行某些操作,那么它通常非常有用。对于其他问题,没有那么多。
David Thornley

1
@DavidThornley:这么长时间习惯于自己阅读标准后,很难判断,但是显然,大多数人甚至发现TC ++ PL之类的文字甚至更容易理解语言。
Fred Nurk,

1
@Fred Nurk:几乎所有事物都比Standard更平易近人。我的意思是回答有关SO之类的问题,目前尚不清楚。当人们引用cplusplus.com和其他来源时,它增加了一点权限。
David Thornley

@DavidThornley:我很少会引用这样的网站(特别是cplusplus.com令我不满意),但是对于大多数SO张贴者来说,即使有错误,它们也比标准的看起来有用,而且很容易不幸的是,在线可用是其中很大一部分。
弗雷德·努克

@Fred,这很有趣,我一直认为cplusplus是一个很好的参考(缺点是他们的广告来源-这是非常不适当的!),现在我必须记住要与sgi参考进行交叉引用。
尼姆,

6

您应该将它提供参考,但是我想除了它的作者,其他任何人都没有读过……如果他们这样做的话(他们集中精力研究领域,所以我对此表示怀疑)。

之所以要使用它,是因为有时有关代码正确性的问题只能通过参考该标准来回答。


3
在大多数情况下,您不需要它。您需要的内容在其他书籍中都有介绍。仅当您遇到这些极端情况或从未使用过该语言的拐角时,才需要检查标准中的定义(通常还有一种替代方法可以使用该语言中的拐角情况)。将该标准留给编译器开发人员使用,普通开发人员可以与其他非正式文本相处。
马丁·约克

2

更重要的是,您知道标准在哪里并且知道何时查找内容。

如果没有其他问题,则应定期检查以确保您使用的是最新版本,并且不会让您的代码随波逐流。


2

在一个大型团队中,通常应该有一个(但通常不会再有)至少至少相当了解该标准的人,以便他们可以执行诸如解决有关特定代码是否符合标准要求之类的任何论据/问题之类的事情。

但实际上,这些答案需要通过判断和经验来调整。(当前)标准说export是一个关键字,并说明其作用。实际上,对于大多数编译器而言,它根本无法实现这一目标。同样,在很多情况下,如果您有三个人不同意某个特定的代码以及标准可能对它说些什么,那么这可能表明该代码可能需要重写才能更加简单明了。

同时,大多数团队将在一个平台上完成大部分工作,并有一个标准(以及至少相当熟悉该标准的人)来检查您正在做的事情与该平台的联系不是紧密有用。


“没有更多”可能很重要-除非您希望专家之间就如何解释标准<g>
争论不休

2

作为一名C ++开发人员,我一整年都在挣钱,而没有阅读该标准。实际上,在头两年左右的时间里,除了Stan Lippman撰写的C ++ Primer和MSDN文章之外,我什至没有读过其他文章。因此有可能-实际上,我担心大多数产生C ++代码的人甚至都没有读过像Effective C ++这样的基础著作我本人后来才发现的。

恕我直言,要成为一名优秀的C ++开发人员,必须了解语言的内在逻辑(正如Scott Meyers指出的那样,C ++是大约4种不同的语言)以及常见的成语和陷阱,并准备随时学习更多。读SO上的线程可以教很多有关极端情况的知识,如果有人想真正深入研究,那么反过来值得阅读标准的相关部分。但是对我们大多数人来说,阅读全部内容可能很少。


很好的一点是(对于大多数不编写编译器的程序员而言)必不可少的基本书籍要比标准书籍重要得多。+1-但是有很多“基本”书。
Steve314 2011年

实际上,@ Steve314-开始列出它们并不能帮助回答此特定问题。但是我现在在SO上添加了到相关线程的链接。
彼得Török

@Péter-感觉很好,但是我没有指出的是,没有一本“基本”书是真正必要的。大多数C ++程序员应该已经从该列表中阅读了多个标题,但是所有这些?不太可能。即使您这样做了,我也怀疑您是否真的可以保留所有这些知识。“ Effective C ++”在我尚未阅读的清单上,因此,我显然将其视为一本不太必要的必不可少的书。
Steve314 2011年

@ Steve314,我并不是说一个人必须阅读所有这些内容-我也没有,并且我阅读了其中的一些内容,但没有给:-)留下深刻的印象:-)这些内容之间也有些重叠,所以这是一个个人品味和机会的问题,哪个开发人员最先遇到和/或他(一个或多个)标记为“基本”。我相信重要的是,有一些常见的成语可以很好地遵循,有一些常见的陷阱可以避免,并且应该对其中的大多数有所了解,而学习这些的最简单的方法是从(其中的)一些书中。
彼得Török

当然,阅读之前,我不会真正知道它的重要性。
Steve314 2011年

1

“了解标准”是一个程度的问题,并不一定意味着要记住原始文档。

标准文档旨在具有权威性-不一定可以访问。有许多一步删除的资源更易于访问。没错,在这方面有一点中国耳语,但这很少有大问题-肯定是一步一步解决。

全面披露-我一定会这样说-我从未阅读过该标准。虽然我可能会在定稿时努力获取完整的C ++ 0x文档。

编辑当然如果斯特劳斯发布的“C ++程序设计语言”的新版本,我可以再满足于这一点。


1

当我用C ++编程时,我经常参考语言标准以获取有关标准库函数的信息。C ++标准库很大,我发现语言标准是最方便的来源。


1
哇塞!真的么?在这种意义上,我总是发现诸如cplusplus之类的在线资源必不可少……
Nim

1

我可能发誓我之前已经回答了这个问题,但是我找不到。基本上,C ++与Java不同,因为C ++ 旨在在其他平台规范(例如POSIX,体系结构的ABI规范或编译器)可以填补的规范中留下漏洞。因此,在诸如StackOverflow之类的网站上回答问题时,通常会提出该规范以表明仅仅因为某个编译器上有工作,并不意味着它在任何地方都可以工作。换句话说,在使用C ++时,引用特定规范的许多原因是为了确切说明特定语言的可移植性。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.