为什么 ISO/IEC 对 C 和 C++ 标准收费而不是免费提供?

2024-03-23

ISO C 标准 (ISO/IEC 9899) 和 ISO C++ 标准 (ISO/IEC 14882) 未在线发布;相反,人们必须购买每一项标准的 PDF 版本。我想知道这背后的基本原理是什么...对于 C 和 C++ 编程语言来说,这些语言的权威规范不能免费提供并可在线搜索,这对这些语言来说不是有害的吗?这是否会鼓励使用可能不准确的非权威来源来获取有关这些语言的信息?

虽然我知道开发 C 和 C++ 标准已经投入了大量的时间和精力,但我仍然对规范收费的选择感到有些困惑。这OpenGroup 基本规范 http://www.opengroup.org/onlinepubs/009695399/,例如,可免费在线获取;他们通过收取认证费用来赚钱。有谁知道为什么 ISO 标准委员会不通过认证标准合规性来赚取收入,而是对这些文件收费?另外,有谁知道 ISO 标准委员会是否看起来很糟糕的网站 http://www.open-std.org/jtc1/sc22/wg21/是故意做成这样的吗?就好像他们不希望人们访问并购买该规范。

最后一件事... C 和 C++ 标准通常被描述为“开放标准”... 虽然我意识到这意味着任何人都可以实施该标准,但“开放”的定义是否应该修改?对标准收费而不是公开提供似乎违背了开放精神。

附:我确实有 ISO/IEC 9899:1999 和 ISO/IEC 14882:2003 的副本,因此请不要评论便宜或任何其他内容...尽管如果您想说这样的话,您可能需要考虑高价中学生、本科生和研究生,他们可能没有那么多多余的现金。另外,您可能需要考虑这样一个事实:ISO 网站确实很粗略,他们甚至不会告诉您费用,直到您结账为止……并没有真正鼓励人们去获取一份副本,现在确实如此它?

编辑/评论
我认为,如果 ISO 标准委员会从认证中获得收入,那么它将激励对标准进行较小但更频繁的更改,而不是非常频繁地进行非常大的修订。它还会激励创建一个可实施的标准(我怀疑如果 ISO C++ 委员会从认证中获得收入,他们是否会首先引入“导出”)。

我已经找到了解决没有在线 PDF 的烦恼之一的解决方案……我已将标准副本上传到我的 Google 文档中,这样我仍然可以从任何计算机访问它,而无需随身携带。


无论如何,赫伯·萨特(Herb Sutter)写了一篇文章讨论了这个问题,评论中也有相当多的讨论:

  • http://herbsutter.com/2010/03/03/where-can-you-get-the-iso-c-standard-and-what-does-open-standard-mean/ http://herbsutter.com/2010/03/03/where-can-you-get-the-iso-c-standard-and-what-does-open-standard-mean/

正如他所提到的,“开放”并不一定意味着“免费”。对于可能需要这些文档的免费版本的学生或其他经济能力有限的人,请注意:

  1. 学生可能想要(甚至需要访问)的许多参考资料都不是免费的
  2. 对于大多数工作,标准根本不是必需的 - 有大量免费可用的文档,足以满足几乎任何人都可能想要使用 C 或 C++ 完成的大部分工作
  3. 在许多情况下,文件草案可以免费下载;虽然他们不是the标准,最终草案版本非常接近,并且可能足以满足很多用途。

如果您认真对待 C 或 C++ 编程,我建议您应该拥有一份标准副本(尽管我不会说这是一个要求)。我还建议,不应期望它们是免费的,就像任何职业或业余爱好一样,“行业工具”通常不是免费的 - 无论这些工具是锤子等物理对象,还是信息例如手册或规格。

事实上,我认为一组好的参考文献比一组标准更可取,如果您只能有一个或另一个,或者您正在开始(您可能需要几个不同的 C++ 参考文献) ,而 Harbison & Steele 就是 C) 所需要的全部。

不要误会我的意思 - 我并不反对它们免费提供(而且我很高兴它们目前相当便宜),但我认为没有任何理由期望它们免费。

SO问题的答案,“在哪里可以找到当前的 C 或 C++ 标准文档?” https://stackoverflow.com/questions/81656/where-do-i-find-the-current-c-or-c-standard-documents,指向廉价版本和免费草稿版本。另请注意,当前的 C99 标准(包含 TC1 和 TC2)可以免费下载:

  • http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf

有一条注释称,N1124“是 WG14 工作文件,但反映了发布时的统一标准”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 ISO/IEC 对 C 和 C++ 标准收费而不是免费提供? 的相关文章

  • 如何使用 ASP.NET MVC 进行 HTTP 调用?

    我正在尝试做的事情 我试图练习进行 HTTP 调用 如果这就是它的名字 来自一个简单的 ASP NET MVC Web 应用程序 为此 我尝试从以下位置获取天气详细信息打开天气地图 http openweathermap org appid
  • gtest 和 gmock 有什么区别?

    我试图理解的目的google mock Google 的 C 模拟框架 https github com google googletest blob master googlemock README md 我已经与gtest较早 但我还是
  • 隐式方法组转换陷阱

    我想知道为什么给定代码的输出 在 LinqPad 中执行 void Main Compare1 Action Main Dump Compare2 Main Dump bool Compare1 Delegate x return x Ac
  • 如何从 List 中的字符串中删除数字/数字?

    我有一个字符串列表 List
  • 使用 Selenium for C# 登录 Facebook

    我一直在使用 Selenium C 框架并尝试进行 facebook 登录 但没有任何运气 这是我到目前为止得到的 基于这篇文章 使用 Selenium 测试 Facebook Connect 应用程序 https stackoverflo
  • 基于 MS Bot Framework 中的响应分支对话框/表单

    我们正在尝试使用 MS Bot Framework 但尚未完全弄清楚如何实现此场景 我们有一个 LUIS 对话框 类型 它工作正常并且经过适当的培训 以常见的三明治为例 LUIS 意图寻找的基本内容是用户询问订单状态 如果问题中提供了订单号
  • 返回指向 std::vector 中的对象的 a

    我有一个关于返回对向量元素的引用的非常基本的问题 有一个向量vec存储类的实例Foo 我想访问这个向量中的一个元素 不想使用向量索引 我应该如何编码该方法getFoo here include
  • 'goto *foo' 其中 foo 不是指针。这是什么?

    我正在玩标签作为值 https gcc gnu org onlinedocs gcc Labels as Values html并最终得到这段代码 int foo 0 goto foo 我的 C C 经验告诉我 foo means dere
  • 如何在 C++ 中对静态缓冲区执行字符串格式化?

    我正在处理一段对性能要求非常高的代码 我需要执行一些格式化的字符串操作 但我试图避免内存分配 甚至是内部库的内存分配 在过去 我会做类似以下的事情 假设是 C 11 constexpr int BUFFER SIZE 200 char bu
  • Azure 2012 年 10 月 SDK 损坏 UseDevelopmentStorage=true

    有人尝试过使用 usedevelopmentstorage true 连接字符串的 2012 年 10 月 Azure sdk 吗 CloudStorageAccount Parse UseDevelopmentStorage true 抛
  • 套接字:监听积压并接受

    listen sock backlog 在我看来 参数backlog限制连接数量 这是我的测试代码 server initialize the sockaddr of server server sin family AF INET ser
  • 在 ncurses 中使用退格键

    我设置了一个简单的 ncurses 程序 它使用 getch 一次读取一个字符并将它们复制到缓冲区中 我遇到的问题是检测到按下退格键 这是相关代码 while buffer i c getch EOF i if c n break else
  • .Net Core 中的脚手架以及解决方案中的多个项目

    我创建了一个针对 net461 的 Net Core MVC6 应用程序 我使用了一个我非常熟悉的项目结构 其中我将数据 模型和服务类放置在单独的类库项目中 并且 Web 项目引用这些项目 当我尝试搭建控制器时 我收到一条错误 指出我正在搭
  • 如何使用 libpq 获取双精度值?

    The examples http www postgresql org docs 9 3 interactive libpq example htmllibpq 文档中展示了如何通过将整数值转换为主机字节序表示来获取整数值 我很好奇必须做
  • 在 try catch 块中返回到 catch 内是否不好?这是很好的做法

    在 try catch 块中从 C 中的 catch 块返回值是不好的做法吗 try Some code return 1 catch return 0 哪种使用 try catch 的方法是好的做法 不需要 只要返回的值是你想要的 你可以
  • 如何分析 VSCode 中函数的性能

    我用 C Golang 编写了一个程序 如何找到占用最高 CPU 周期的函数 目的是提高正在执行的程序的性能 2021 年 10 月 金香儿哈娜 https github com hyangah宣布 tweet https twitter
  • 实体框架代理创建

    我们可以通过使用来停止在上下文构造函数中创建代理 this Configuration ProxyCreationEnabled false 在 EF 4 1 中创建代理有哪些优点和缺点 代理对于两个功能是必需的 延迟加载 导航属性在第一次
  • 在类中使用 std::chrono::high_resolution_clock 播种 std::mt19937 的正确方法是什么?

    首先 大家好 这是我在这里提出的第一个问题 所以我希望我没有搞砸 在写这篇文章之前我用谷歌搜索了很多 我对编码 C 很陌生 我正在自学 考虑到有人告诉我 只为任何随机引擎播种一次是一个很好的做法 我在这里可能是错的 什么是正确 最佳 更有效
  • 如何向 ItemsControl 中的 WPF 按钮添加相同的命令

    如何将命令添加到 wpf 按钮 该按钮是ItemsControl并正在修改ItemsSource itself 这是我的 XAML
  • 如何将 char 转换为 unsigned int?

    我有一个字符数组 它实际上用作字节数组 而不是用于存储文本 在数组中 有两个特定字节表示我需要存储到无符号 int 值中的数值 下面的代码解释了设置 char bytes bytes 2 bytes 0 0x0C For the sake

随机推荐

  • 如何从播放应用程序中的 play.mvc.Result 对象中提取结果内容?

    实际上我正在从一个播放应用程序重定向到另一个播放应用程序 最后我收到作为 Result 对象的响应 下面是两个应用程序中的操作 我正在从 application1 重定向到 application2 应用程序 2 将返回我需要提取的 JSO
  • 为什么在android中的输入流之后要关闭OutputStream

    我正在以这种方式从 android 连续调用我的 servlet 两次 FIRST CONNECTION URL url new URL http 172 16 32 160 8080 xyz check availability Http
  • 安排 Google Cloud Dataflow 作业的最简单方法

    我只需要每天运行一个数据流管道 但在我看来 像 App Engine Cron Service 这样需要构建整个 Web 应用程序的建议解决方案似乎有点太多了 我正在考虑仅从 Compute Engine Linux 虚拟机中的 cron
  • 使用 C++ 中的标准流的灵活记录器类

    我想创建一个灵活的记录器类 我希望它能够将数据输出到文件或标准输出 另外 我想使用流 该类应该类似于 class Logger private std ostream m out or ofstream iostream i don t k
  • 在此 dnvm.ps1 命令中哪些参数显示未定义?结果部署到 Azure 网站失败

    我一直在 Linux 上开发一个新的 ASP NET 5 MVC 6 网站 我正在将 Git 与 Azure 结合使用 并且已经能够成功将其推送到 SCM 然而 由于一些未定义的参数 我的部署失败了 希望有人能告诉我终端输出中显示的命令中未
  • 如何使用 pythonnet 在 python 侦听器中订阅 .NET 事件?

    我正在尝试创建一个事件侦听器来订阅tick使用 Python 的外汇交易应用程序的 价格 事件 原始应用程序是一个本机 32 位 Windows 应用程序 名为元交易者4 这没有任何 API 所以mtapi https github com
  • 返回修改后的类和使用 type() 之间的区别

    我想这更像是一个 python 问题 而不是 django 问题 但我无法在其他地方复制这种行为 所以我将使用无法按预期工作的确切代码 当我发现这个工厂函数片段时 我正在 django 中处理一些动态表单 def get employee
  • GitHub Copilot - 请登录 github 并重试

    对于 Intellij 插件 GitHub Copilot 显示错误please login to github and try again 我已经完成了以下操作 使用我的 GitHub 用户和密码对 GitHub Copilot 进行了身
  • Swift UITableViewCell 对齐

    我正在尝试显示如下页面 页面标题 左对齐 区域名称 中心对齐 该地区的人 详细标签中带有电子邮件的副标题 但是 如果我选择副标题作为单元格样式 则所有内容都将左对齐 并且我无法在代码中更改它们 然后 如果我选择自定义作为样式 则详细文本标签
  • 当尝试在 R 中运行 kNN 时,我收到由 coercionNAs 引入的错误 NAs?

    我正在尝试在数据集上运行 kNN 但我不断收到一些 NA 错误 我已经用尽了堆栈溢出试图找到这个问题的解决方案 我在任何地方都找不到任何有用的东西 这是我正在使用的数据集 https www kaggle com tsiaras uk ro
  • java.util.Vector - 替代品

    以前 当长度未知时 我一直认为 Vector 适合用于非描述性对象 据我所知 我认为它也是线程安全的 什么会改变这一点Vector不应再使用 有什么替代方案 你应该使用ArrayList代替Vector Vector使用内部同步 但这对于实
  • Android - 如何拦截“安装应用程序”意图

    好吧 所以不完全确定这是可能的 但尝试编写一个应用程序 以便我可以在执行以下任何活动之前运行一些代码 1 从网络下载 APK 并启动安装程序 2 在android市场上按下安装按钮 是否有可能拦截并提示这些事件 或者谷歌已经将这些东西锁定得
  • 如何在 css URL 中使用相对/绝对路径?

    我有一个生产和开发服务器 问题是目录结构 发展 http dev com subdir images image jpg http dev com subdir resources css style css 生产 http live co
  • 通过进程 ID 将 KeyEvent 发送到目标窗口

    我需要创建一个关键事件 cmd r 用于刷新浏览器窗口 并传递我尝试定位的窗口的进程 ID 比方说 let customEvent NSEvent keyEvent with NSEvent EventType keyUp location
  • 表达式集子集化

    我有一个ExpressionSet我想要子集的对象 例如 gt str ESet Formal class ExpressionSet package Biobase assayData phenoData STATUS num 1 210
  • 在python中将JSON存储到数据库中

    我定期从 API 获取一些数据 并希望将 JSON 数据存储到数据库中以便稍后访问和使用 从 API 中 我每次都会获取此样本中的数据 data cursor null files nodes u code u BOPhmYQg5Vm u
  • CLLocation距离位置(在Swift中?)

    有人可以帮我将以下 Objective C 语句转换为 Swift 吗 CLLocationDistance distance fromLocation distanceFromLocation toLocation 我知道做到这一点一定很
  • 标准库类型的赋值运算符的 ref 限定符

    我想知道 标准类型的赋值运算符没有左值引用限定是否有原因 他们都不是 因此 我们可以这样写 std string 42 std string s hello std string world oops std vector
  • 在jgit中配置known_hosts

    使用 jgit 和 gitolite 进行源代码控制 我有一个应用程序 可以根据命令生成某些代码 并且我们希望将其提交给源代码控制 目标是快速拉动 提交新代码 然后推送它 我有以下方法 private void commitToGitRep
  • 为什么 ISO/IEC 对 C 和 C++ 标准收费而不是免费提供?

    ISO C 标准 ISO IEC 9899 和 ISO C 标准 ISO IEC 14882 未在线发布 相反 人们必须购买每一项标准的 PDF 版本 我想知道这背后的基本原理是什么 对于 C 和 C 编程语言来说 这些语言的权威规范不能免