C++ 的编译时计算能力非常强大 (turing-complete) 。
在 r14 文件夹下有
merge_sort: 编译时归并排序ctjson: 编译时 json parser (需要 C++20)更疯狂的:
事实上很多使用模板的程序都需要一些 TMP 技术,哪怕只是非常简单的 specialization 或 SFINAE。
我们在本学期的几次作业中不断地传达这个思想(虽然没有明确地点出)。
“未经测试的代码都是错的。”——蒋炎岩
工欲善其事,必先利其器。工具的使用也是编程的一部分。
为了舒适地写代码,花费一些时间在学习工具上是完全值得的,因为你的工具会陪伴你很多年。
“差生文具多”的观念并不可取。
有人说,编程语言不过是工具,不需要花太多时间学习语言特性;也有人认为不仅如此。你怎么看?
语言特性很重要。就算你认为它只是工具,工具也很重要。
编程语言(PL)是一个很值得研究的领域,虽然在上科大搞的人很少。
语言特性的演化往往代表着“好的编程风格”的演化。
// C++98
for (std::vector<int>::reverse_iterator rit = v.rbegin();
rit != v.rend(); ++rit) {}
// C++11
for (auto rit = v.rbegin(); rit != v.rend(); ++rit) {}
// C++20
for (auto x : v | std::views::reverse) {}
https://stackoverflow.com/help/how-to-ask
学习终究是自己的事情。
不要被一些你改变不了的事情牵扯注意力。想清楚自己究竟应该学会什么。