Daoqi Yang 为科学家和工程师编写的 C++ 和面向对象的数值计算是否仍然适用?

计算科学 C++ 参考请求
2021-12-08 22:41:49

我希望主要从科学计算的角度学习 C++。教科书的方法对我来说似乎很理想,因为它涵盖了 C++ 的第一原理,重点是数值计算。

然而,这本教科书是 2001 年出版的。从这本教科书学习会教给我现在不推荐或已被新版本语言取代的方法吗?

1个回答

我同意沃尔夫冈关于基本面相同的评论。尽管如此,自 2001 年以来发生了很多变化,C++ 的发展速度非常快,这是一个常见的说法,甚至一些专家也表示他们几乎无法跟上。有两个我觉得特别重要:

  • 像唯一指针这样的智能指针类型使得几乎没有必要使用原始指针或调用newdelete你自己。科学计算中的许多应用程序具有特别简单的对象所有权语义,因此这是绝对的救星。其中一些是在 2003 年推出的,但它们在 2011 年才真正可用。
  • 自 2001 年以来,模板黑客已经发展了很多。我查看了那本书的预览,虽然它涵盖了模板,但在编写它时,许多常用的 C++ 编译器甚至没有正确实现它们。一些值得注意的例子:
    • 通过表达式模板优化线性代数运算;本征犰狳
    • deal.II,其中 Wolfgang 是主要开发人员之一,在维度上使用模板来编写 PDE 求解器,无论问题维度如何都可以工作

一旦你学习了足够多的基础知识,可以轻松阅读其他人的代码,我认为你最好找到一个 C++ 开源软件库来解决你感兴趣的一些科学问题。学习如何使用它然后开始阅读他们的代码。