BryanLeeNavigate back to the homepage

从 C++ 入门到前端

Bryan Lee
September 4th, 2020 · 1 min read

入门学 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++ 都学了好多东西,说到底就是做个查漏补缺。

More articles from Bryan Lee

从 Form 到 Model 层的讨论

这就是观察者模式的代价,你做到了消费者按需订阅,你能自动响应变化,但你不能再回溯到事件的根源,所以这个时候你需要合并同步更新。

August 27th, 2020 · 1 min read

关于「扶言扶语」

扶的有些言论我看到以后,要在心里琢磨许久,常有生面孔的名词,甚至要查阅一些相关资料,只有这样才勉强有些许自己的理解,为构建认知体系添砖加瓦;仅有囫囵的认知远远不够,我更希冀「取其精华,去其糟粕」,如果有糟粕的话且我能感知到的话,因此反刍势在必行。

August 27th, 2020 · 1 min read
© 2020–2022 Bryan Lee
Link to $https://github.com/libyLink to $https://bit.ly/3CSfXii