Boost对于C++开发者来说学习的重要性有多大?

25

我很想学习Boost,但我想问:

  • 学习Boost有多重要?
  • 在学习Boost之前应具备哪些先决条件?

我对Boost感兴趣的原因是许多人在IRC频道和StackOverflow网站上都在谈论它。

10个回答

40

我认为任何想将C++开发作为职业的人都应该好好学习Boost。一旦你开始进行严谨的编程,你会意识到这些库的好处及其如何提高你的生产力。它们不仅跨平台,而且一旦你开始处理大量数据计算,尤其是数学库,就会感觉像是上天赐予的礼物。


9
Boost(开始)将C++从其C语言根源(漂亮的汇编语言)中提升,并帮助它达到其他语言(如Java/Python/Ruby/Lisp等)早就拥有的可用性。 - Trey Jackson

14
作为游戏开发者,我被许多人对Boost的陌生感到震惊。我曾向不同游戏工作室的联系人提及过它,并且它不仅经常没有被使用(是因为许可证或移植存在问题吗?),而且许多人甚至都没有听说过它。这使我相信,在职业发展方面,学习Boost实际上并不是关键,但从个人发展的角度来看,它绝对是至关重要的。 :)

True Boost似乎在许多专业游戏程序员中被视为神话般的存在。太糟糕了,更多的人没有使用它。 - Robert Gould
在我工作的游戏公司,确实存在许可证问题。虽然 Boost 许可证中没有任何阻止我们使用它开发游戏的条款,但我们无法保证不会因其使用而面临未来潜在的诉讼。因此,我们实际上是被雇佣来反复地、糟糕地重新发明轮子。 - Drew Dormann
大约一年前,我问了我的一个游戏程序员朋友是否使用过boost,他回答说:“boost?那主要是在用户界面方面的东西,从来没有用过。” :P - radman
boost没有任何ui库吗?是吗? - Roman A. Taycher

8

6

关于先决条件,你应该熟悉STL,并且有一些模板的使用经验会更好。我总是惊讶于有多少C++程序员实际上不使用STL或模板。


4

语言是一种工具。如果它有助于你完成某件事情,那就使用它。

我对这些宗教感到非常厌烦。“我应该使用Boost吗?如果我不使用Boost,是否意味着我不是一个真正的C++程序员?其他C++程序员会喜欢我吗?”拜托了。任何在意你是否使用Boost或其他库的C++程序员都是思想狭隘的混蛋,你不应该和他有任何关系。

相反,去找一个聪明、开放思维的人,他可以告诉你Boost和其他库如何帮助他完成自己的工作。他甚至会承认有时候你不需要这些库。

另一种答案:重新实现Boost或STL的一部分是保持编程能力敏锐的好方法。换句话说,一个不能回退到C语言因为没有库支持的C++程序员是一个弱程序员。


非常好的回答!此外,如果您继续使用库来完成痛苦的任务,如序列化、网络等,那么您将错过C++的很大一部分。最后,当您申请工作时,他们会问您一些问题,这些问题通常相当于这些库所做的事情,排序就是一个很好的例子。如果您总是为所有事情使用库,那么您该如何回答这些问题呢!;) - ForceMagic
1
我更希望我的程序员积极地了解和使用库,而不是重新发明轮子(通常是更糟糕的轮子)。知道何时以及如何使用给定的库本身就是一种艺术。我确实同意记住基础知识也很重要(基础指的是底层的东西,而不是更容易的东西)。 - Marc Claesen

4

这非常重要,特别是因为许多Boost库正在进入C++标准 - 使用Boost,您可以提前了解标准的外观(shared_ptr,有人用吗?)。

此外,即使您不使用它们,Boost库编写得非常好,并且经常很有趣可看; 它们实现了一些真正先进的C ++。


4

我觉得boost是一种提高生产力的工具,如果一个C++公司不使用boost,我不认为我会接受他们的工作邀请。


2
Boost拥有丰富的库,可以免费获取。了解Boost中所有可用的库,以便在需要时使用其中之一。关于学习,选择包含在c++0X中的库,这样您就可以使用它,很快编译器将支持它。关于特定库,只需在需要时学习即可。

1

从 SO 上大量关于 C++ 的问题及其顶级答案 "使用 Boost::SomethingOrOther" 来看,我认为它非常重要(科学地 :-))。

吸引我从 C 转向 Java 而不是 C++ 的原因是 Java 中提供的大量类。Boost 几乎让我想回去,但现在我深陷于 Web 服务中,而 Java 是通用语言。


1
请记住,boost只是一组库,可用于提高生产力(停止重复造轮子)。
据说它们写得很好,并使用您可能想不到的技术。如果您的目的是查看源代码以学习高级C++技术,那么可以自行尝试,但我认为最好买一本好书。
另一方面,如果您只想使用一些库函数来提高生产力,请考虑您的选择。您正在开发什么样的项目,需要哪种类型的库?
我们公司有跨平台产品,广泛使用boost,但我们也有仅限于Windows的产品,其中一些使用了boost,但大多数依赖于Microsoft的库。微软的库质量很好,并且有着出色的文档(微软成功的一部分原因在于让Windows对第三方开发人员尽可能易于编程)。我特别提到微软,因为他们提供了广泛的库,适用于许多目的,就像boost一样。我们还使用许多其他更专注的第三方库(即提供某个领域功能的库,例如密码学)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接