C++ 系统学习

求问,如何系统学习一门语言。有 c/c++ 基础,看 c++primer 这本书有意义吗?

C Primer Plus 和 C++ Primer Plus 都很棒,如果不熟悉 C 的话建议结合着看,因为 CPP 中有些底层的知识 CPPPP 中没有。熟悉 C 的话就光看 CPPPP 就行了。

1 Like

个人感觉语言不是重点,需要用的时候再学就好了,当然一些基本的知识点得会,从这个角度来看这本书挺好的

C++ 不太行,系统级编程语言学习 Rust 面向未来

1 Like

随便找一个项目直接上手干,做的过程中你就知道要实现哪些东西,然后把你的想法丢给 ChatGPT,让它给你生成代码,在这个过程中就能学到很多

4 Likes

补充一点个人意见:最好仅限于使用标准库,去年图形学有同学用 GPT-4 写代码,写出来的某些 Eigen 调用方式让我看得都要高血压了。我也不理解为什么 GPT 调 C++ 的库表现如此之差,明明用起 numpy / pandas / pytorch 之类的著名 Python 库表现很不错的。

2 Likes

训练样本少?

有可能吧……但 Eigen 应该是最出名的 C++ 库之一了,除了 Boost 这种标准库预备队,有几个库的知名度能稳超 Eigen?也有可能是训练数据里关于数值计算的代码整体都比较少,说不定它在网络通信之类的编程任务上表现会好很多。

1 Like

其他语言我不擅长,C++ 勉强算入门吧,这里表达一下自己的观点。

如果你已经知道如何用 C++ 实现简单的面向对象、元编程(模板编程),那我认为 Primer 是可看可不看的。Primer 里当然不只有这点知识,但 Primer 有些太专注于 C++ 及标准库本身,目的性不强。如果你是个慢性子,现在也不着急要做出什么东西,那花上两三个月慢慢跟着 Primer 走也不错。如果你不想这样,那不看 Primer 直接选定一个方向也没问题。

我给出这种观点的理由是 C++ 的语法表达能力太强,编程风格太自由,导致没有点习惯来约束的话容易不知道用哪些特性来写代码。而 C++ 的主要应用领域(比如图形学、数值计算、数据库内核、网络、嵌入式)各有各的编程习惯,如果你已经有意向学习某个领域,最好去找个相关的入门项目,一边做着一边看看领域内其他小型开源项目的 API 是怎么设计的、代码是怎么写的。

如果对上述两条路线依然有些游移不定,那也可以选第三条,直接找一个 tiny std lib 教程(名字不一定叫这个但意思差不多),一边略读 Primer 一边自己实现一个极简的标准库,这个做完总是不亏的。

1 Like

请问只有一点 c 语言基础可以这么做吗(尤指第三条)?
学过 java 和 javascript 的基础语法,了解过面向对象,最近想看看 cpp.

南大 os 课好像就是写标准库