读 cppreference

cppreference. URL: https://en.cppreference.com/w/.

这次读的内容是一个网站。网站虽然页面繁多,但也不妨看作一本非线性的书籍。这次读的网站叫 cppreference,是一个 C 语言和 C++ 语言的在线参考手册。这里之所以要分开说,是因为 C 和 C++ 语言本质上就是两门语言。一般营销号和二把刀宣传的“学会 C++ 就会 C”,或者“学会 C 就等于学会了半个 C++”之类的说法其实是有问题的。

首先,学习一门语言不仅仅是学语法,更重要的是如何用这些语法特性去组织程序。C 的语法特征适合写面向过程的程序,也可以利用结构体和指针实现面向对象或者基本的函数式写法。但这样写起来并不舒服,所以 C 还是以过程为主。而 C++ 支撑的语法门类十分庞杂,大体可以分为三四个体系,你可以用 C++ 写面向过程,但是不推荐,因为对于一个面向过程的语言来说, C++ 的语法太冗余了。 C++ 常用的范式是类继承式的面向对象和模板编程。从这个角度来说, C 和 C++ 就不是一回事。

其次,就算在语法层面, C 和 C++ 也不完全相同。ISO 的标准 C 和标准 C++ 语法虽然存在交集,但也存在彼此的差集。有些语法 C++ 有,C 没有,有些则是 C 有, C++ 没有。而且现在的 C++ 标准委员会以及不再把兼容 C 作为第一要务,所以 C 和 C++ 会渐行渐远。这种情况下把两种语言当成一种学,很容易学混。

其三,对于编译器来说, C 和 C++ 是严格不同的两套语法规则。如果编译大型项目的时候不注意区分,很容易搞出一堆错误。没有区分这两者的意识,说明很多营销者根本没有编译过大型 C 或者 C++ 项目。

对此, cppreference 这个网站分的很清楚,在其主页上, C 和 C++ 是分开的两个部分分别介绍。而且还把不同版本的 C 和 C++ 分的十分清楚。虽然不同部分之间存在彼此引用,但也只限于 C 和 C++ 完全相同的部分。

一门语言的标准参考手册,至少要包括两部分的内容,其一是语言本身的参考,包括词法、语法和语句编译后的运行特性等。其二是标准库。注意是标注库,而不是标准库函数。因为对于面向对象的语言来说是标准类库,对于有包管理的语言来说是功能包,不一定标准库里都是函数。

标准库里提供预先实现好的功能。这些功能有的是因为经常使用而加入的。例如字符串搜索算法,是个人都会写,但不一定每次都要自己写一遍。对于绝大多数程序员来说也不一定能写得足够稳定高效,所以有的标准库会提供这些功能。另一类则是用这门语言无法实现的功能。例如有的高级语言可以通过标注库实现一些对硬件底层或者运行环境底层的控制。这些用高级语言本身的语法是实现不了的,只能借助其他方法实现,然后打包一个对高级语言的接口放到标准库里供使用。还有一类是涉及和操作系统交互的,有的语言也会提供一个统一的标准库接口来使用系统接口。

具体到 cppreference 这个参考手册本身的内容,我不想聊太多。因为需要自己去看。现在流行两种说法,一种是参考手册没必要看,看了也看不懂。这是不对的,因为参考手册是必须看的,看不懂只是因为不会看。而不会看,要么是因为不明白参考手册的体例,要么就是不懂封装和接口。不懂体例可以看手册的阅读说明,不懂封装和接口则需要重补基础。另一种说法是参考手册没必要全看,用的时候查就行了。这也是有问题的,因为真实情况往往是,用的时候不知道去哪查。

所以我的建议是,参考手册必须看,但可以不细看,只浏览通读。这样对标准库提供了哪些功能有一个大致的印象。这样在用到需要查的时候可以知道去哪查。至于完全读懂参考手册乃至背会也是不必要的,因为一个项目里用到的参考手册内容其实不多。这么干是浪费时间。而且我很怀疑人类能把这玩意彻底背下来。发出豪言壮语要背参考手册的,怕不都是在装什么。


求点赞,求收藏,求分享

欢迎关注我的公众号,微信搜索:知则

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值