【问题标题】:Why is there a networking library proposal for C++14/17? [closed]为什么有 C++14/17 的网络库提案? [关闭]
【发布时间】:2014-11-25 11:57:43
【问题描述】:

尽管 TCP/UDP/IP 是常用的协议,但我不明白他们为什么希望它成为 ISO C++ 标准的一部分。这些与语言的核心无关。数据结构是普遍需要的工具,因此 STL 是有意义的,但这些协议在 IMO 中过于具体。

【问题讨论】:

  • 这个问题太开放了。你最好把它放到 C++ 邮件列表中。
  • 该提案是针对库,而不是“语言的核心”。我会发现一个标准化的网络库很有用。
  • 如果它成为 ISO C++ 标准的一部分,如果我在没有 TCP/IP 堆栈的操作系统上使用该编译器会发生什么?
  • 标准化委员会希望网络成为核心库的一部分,特别是因为它们是常用的协议。他们不需要必须对语言的核心做任何事情 - 他们只需要足够通用,大多数开发人员都需要一种标准的方式来处理这些概念。二十年前(或更早),您正在提出的相同论点可以针对数据结构提出(十五年前可以针对互斥体提出相同的论点)。图书馆不断发展。将网络作为标准的一部分是一个可喜的变化。
  • @bmm:因为 C 和 C++ 是不同的东西。如果它们是同一个东西,它们都会被称为“C”。

标签: c++ standards iso


【解决方案1】:

长期以来,人们一直认为 C++ 库的微小关注领域是阻碍该语言发展的不良因素。大多数“现代”语言都带有大型框架库,包括网络、图形和 JSON。相比之下,如果您想在 C++ 中执行任何这些操作,那么您 a) 默认情况下什么都得不到,并且 b) 对第三方库的选择感到不知所措,您通常无法正确评估和从中选择。

这就是观点的那一面。

当然还有其他人认为这就是应该的方式。尽管如此,标准化是一项艰巨的工作,而像 Java、C# 和 Go 这样的语言背后有大公司可以投入精力开发一个庞大的库,而 C++ 没有这样的人力,而且大多数人都花时间在 C++ 标准化上对编程的核心方面更感兴趣:数据结构、并发性、语言演变(概念、范围、模块...)。

因此,人们普遍反对更大的图书馆并不是很多,但这并不是许多人的优先事项。但是,如果有好的想法出现,它们就有很好的机会被考虑。而且像网络这样的大型库组件无论如何都不会进入标准库,而是进入一个独立的技术规范,这是一种查看这个想法是否有用、流行和正确的方法。只有当 TS 被广泛使用并收到大量积极反馈时,未来才有可能将其纳入 IS。

(您可能已经注意到为文件系统和图形创建技术规范的类似努力。)

【讨论】:

  • 想象一个 2005 年出生的孩子在 10 岁生日时得到一部 iPhone7,但他知道学校里所有酷酷的孩子都在使用 C++。 “妈妈,我只想在我的 HTML 画布上绘制一些相交的形状(我的多个调度代码已经完美运行)——我需要为此实例化哪个类?” (这时妈妈打开一瓶 Jack 让孩子使用她的 XCode 和 Swift。)
【解决方案2】:

C++ 11 在标准中包含线程。现在程序员不需要在 Linux 中分别编写 PThread 和在 Windows 中编写 Windows Threads。如果网络库标准化,也会发生同样的情况。

【讨论】:

  • 我发现线程同样普遍。但是 TCP/UDP 不是 IMO。有替代品(例如 SCTP - 虽然主要用于 3GPP)
  • @BenjiMizrahi 值得一提的是,标准网络库将易于扩展,并且为(例如)SCTP 添加多平台实现将很容易并且通过设计实现多平台。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-11
  • 2012-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-08
相关资源
最近更新 更多