入门学 C++ 是不是找刺激/找虐?
《C++ Primer Plus》这本书可以学完,学个基础还是没啥问题的。
我认为入门 C++ 的意义就是理解上古时代是怎么管理内存的、OOP 诞生的前因后果;而后对 JVM/V8 背后的内存管理需要解决的问题有个基本的概念;进而就可以对闭包/引用类型为何如此设计有个大体理解。
想当初
我学前端的时候是同步把 C++ 学到线程池各种锁,那会 JavaScript 还在各种姿势搞原型链。
一开始的时候我是把锁理解成一个容器的,后来才想明白就是个列表 + 信号,即在时间尺度上标记一个代码块,而不是字面意思的把存在竞争的数据锁在保险柜里。
『锁』这个翻译挺容易让人产生误解的:
假设你在代码块 A 和 C 里用到对象 B,那就有一个关于对象 B 的锁,在执行 A/C 的开头获取锁(登记「我要访问了」)-> 结尾释放锁(说「我完事了」);这样就确保了对 B 的访问不会发生冲突,不管是多个线程同时在执行 A 的时候访问 B,还是多个线程分别在执行 A/C 的时候访问 B。
假设你要让对象 B 和 D 都避免读写冲突,那么如果使用 B 的代码块包含使用 D 的代码块,而使用 D 的另一个代码块又包含使用 B 的代码块,这个时候,B、D 就有可能死锁,因为正在 B 中想要拿 D 却拿不到,而正在 D 中想要 B 却也拿不到,那么这两个线程就会永远停止执行。
不过这些都是过时的技术了,当下 immutable 数据结构才是王道。
网课说:能把 jQuery 源码看懂 70% 在国内可以横着走
看懂 jQuery 说明智商过关,但是编程这东西还是讲究归纳总结和洞察力。
当年我一个星期看完《JavaScript高级程序设计》这本书去找了工作,一天能刷个 100 多页,包括代码实践部分;但我那会已经学了半年编程,C++ 都学了好多东西,说到底就是做个查漏补缺。