睡前瞎想:实践、反思
昨天(25 号)知乎刷到一个问题,“如果让你重新开始学计算机,你的学习路线会怎么选择?”,有个用户的回答我觉得比较好,但是我自己大部分不会啊哈哈哈。总结一下就是:
- 系统学习计算机:计算机组成原理、计算机网络、操作系统原理、数据库。
- 数据结构、算法。
- 面向对象设计。
- 系统设计。
- 做项目。
那我自己的学习路线是怎么样的?说实话,是反着来的。我的学习从 2021 年的 C 语言开始,之后浅尝辄止,对于底层并没有进一步的研究——虽然我自己从接触计算机的那一刻开始就觉得底层的东西是最好玩的。
2022 年末到 2023 年,再到现在,我就开始做 Web 项目了,当然我意想不到的是我后面的学业方向也是 Web 相关的前端。但是这两者并没有直接的关系,因为我在报志愿的时候根本不知道学的什么,我是在第二年才知道的。
可能系统的学习太枯燥了,对我来说接触一个新东西的时候,看教程和手册,我的脑子好像没在思考啊?!只有做实操项目的时候,才能让自己脑子动起来。这就不得不说说 CSS 了,某种程度上我是写得多,再加上临摹的项目的写法刚好比较规范,才能到现在一种比较好的境界(相对)。
计算机确实是需要实践理论相结合的(我加了个“确实”是因为以前听到过这种话但是无感,现在确实理解了)。在你有了一些写项目的经验以后,带着你写项目时的遇到的问题和思考,回头去看教程和手册,是最快学习的方式。不过我依旧认为自己是个巧合,可能刚好电脑玩的多,和实践对上了…… 但核心还是多思考。
不过计算机本身就是高度封装抽象的一个东西,写上层的东西不需要关心底层。我关注 Web,但我学 Web 之前不需要去特意学一遍汇编,操作系统设计,只需要关心功能。对一个计算机专业的学生,知晓底层的原理是有必要的,所以我确实不想一直停留在 Web 这个层面。更何况越到后面,也适合底层的理解有关联的。优化可能也是如此。最近做轮播图,CSS 用的是绝对定位然后配合过渡动画,但是卡卡的,突然想起来 left
、right
属性会影响元素的几何布局,也就是说,浏览器在每次帧更新时需要重新计算元素,每次重排和重绘都很浪费性能,所以我就换 transform
了,因为计算 transform
的时候是 GPU 单独计算一个图层,不会触发重排和重绘。
再具体一点,GPU 怎么单独计算的呢?浏览器会将含有 transform
属性的元素从主文档流中提取出来,交给 GPU 处理。这样可以减少整个页面的布局计算,仅对这个图层进行独立渲染。那再深入一点,GPU 相较于 CPU 有啥特殊之处?我们都知道 GPU 是专门计算图形的,为什么要针对图像单独独立出一个硬件?因为需求大。GPU 专为图形处理设计,拥有数千个小型内核,可以同时处理大量像素的渲染任务(并行计算),而 CPU 的核心数量较少(通常 4-16 个),更多用于顺序任务。GPU 可以同时对成千上万的像素进行处理,例如同时对位图中的多个点进行旋转、缩放、透明度处理。同时,GPU 内部硬件还针对矩阵操作(如变换矩阵)进行了优化,而矩阵操作是 transform
(如旋转、缩放、平移)背后的数学基础。
扯远了。总的来说,目前自己的知识面还是太窄,或者说广而浅,很碎。这也能给我带来一些好处,咱换个角度,至少每次系统性的学习一个新知识的时候,对我来说永远都是豁然开朗的。因为总有一些词语或者思路在哪里见过。希望自己能一直保持主动学习、思考,从实践中汲取经验的能力。另外一点就是学习技术,虚心请教不摆架子。
最后感慨一下,多思考多学习这种话居然从我嘴里说出了:以前不是很爱听这种偏说教的词,自己也对这种鸡汤无感。现在回头一看,确实很重要,只有体会过才能知道有多重要。