看完《js 不使用 promise 完成一个 sleep 函数》真诚发问,技术领域什么才是值得深入学习的?

21 天前
 superhot

原帖提了一个面试题,用来考察对 JS 异步控制的熟悉程度。

个人在学习 JS 时特意看了一遍 Promises/A+ 并尝试实现过,感觉这类东西跟算法等计算机基础课一样,平时工作中肯定用不到,99% 的概率不需要你手搓一个 Promise 或事件循环之类的东西,但仅读过文档说明,跟真的参考规范并尝试实现过,理解程度肯定是不一样的。

又或者以 Java 举例,仅了解 Java 语法和标准库,和深入探索过 JVM 的各种机制与细节,在线上排查 OOM 问题的时候,思考的层次和维度就会不同。

然而人生苦短,学海无涯,没人且没必要事无巨细地深入到这种程度,需要将有限的精力投入到更重要的地方去,所以才有此疑惑:

对一个软件工程师(而非研究人员或特定领域的技术专家)来说,技术领域什么才是值得深入学习的?

或者回过头来,仅以 Promise 为例,如果不去了解 Promises/A+ 等规范,想要加深对异步本质(是什么,解决了哪些问题、如何解决)的理解,应该去学习哪些方面的内容呢?

3651 次点击
所在节点    程序员
49 条回复
veightz
20 天前
稍微跑个题,我现在更在意那些和特定语言无关的问题…

考察对道的理解,而不是术的实践。

越具体的问题,LLM 的效果一般更好一些。
而那些宽泛的问题,LLM 给了答案,并不能保证提问人能正确的实践。
pastor
20 天前
个人觉得左耳朵耗子、酷壳的多数内容,其实并不是好的技术文章。更偏散文风格,对于一些技术人有兴趣上的激励效果,但干货不多,甚至很多工程、技术观点是错的。
他文章的效果,就像他在阿里的成绩一样。
我对他个人没有意见,但是感觉他被太多小白过度吹捧了。
pastor
20 天前
如果已有的特性无法实现、或者实现效果不佳,去折腾这种,可以叫 hack ,否则就是茴字的 N 种写法、装逼炫技纯傻 x 。

折腾 Promise 的实现和折腾算法完全是两类事情,拿来对比不太合理。

算法是训练和培养你的逻辑、思维能力,即使算法课里讲的那些日后多数用不到,但至少你在写普通业务逻辑的时候也能更流利熟练角度更多,更何况很多高级岗位高级功能确实需要算法这些基础内力。OP 和很多层把这些都定义为反正用不到、说明各位自己没啥技术追求对自己定位就是这个档次了,但不代表所有人。

很多人说背八股也用不到,但我实际见过的很多人,不是用不到,工程里用得到,但是这些人熟练背诵八股却不知道灵活运用,例如 java ,就知道社区全家桶,确实需要性能优化的地方,背过八股也不知道用,然后给团队挖坑。

总结就是:自己菜鸡不会用,然后还说背了也没用!
swananan
20 天前
对一个软件工程师(而非研究人员或特定领域的技术专家)来说,技术领域什么才是值得深入学习的?
====
最终你还是要选择一个技术领域深耕😂,我觉得构建好自己的计算机知识体系基础,然后选择一个你感兴趣或者工作中需要的技术领域不断深挖,是一个很有意思的过程。

或者回过头来,仅以 Promise 为例,如果不去了解 Promises/A+ 等规范,想要加深对异步本质(是什么,解决了哪些问题、如何解决)的理解,应该去学习哪些方面的内容呢?
=====
我觉得可以拿网络编程的演进过程来举例。比如说,服务端网络编程,更关注怎么提升 IO 密集型服务的响应能力,从 IO 模型开始,选择了多路复用 IO 模型,即 epoll 为代表的那一批(本质上是减少了上下文中断开销),然后基于 epoll 的网络库往往提供的是异步回调的网络编程模型,这意味着加大了研发人员的心智负担。所以出现了引入协程来隐藏底层异步网络模型的解决方案,比如说 openresty 引入 lua 协程,来结合 NGINX 网络 IO 实现来提供同步的网络编程模型,又比如说 go 从语言层面来提供解决方案,又比如 Rust tokio runtime 。
lyxxxh2
20 天前
懒就是懒 还说一点用没有。
我以前学设计模式,
正因为会了,才能读 laravel 框架源码。
不懂设计模式,绝不可能懂源码。

正因为懂源码
实现功能的时候,直接找源码有没有功能。
官方文档是没有的,比如: DB::purge
或者某个扩展包不如意/有 bug,直接继承,自己覆盖容器。
不懂原理,有很多操作 自己想不到的。
uds9u32br
20 天前
不要太焦虑了,能继续深入的前提是要有热情,有热情自然就会有方向。看你提到“有限的精力投入到更重要的地方”,说明你已经有答案了,差不多就行了,做去更重要的事。
Curtion
20 天前
那个帖子说的东西是可以作为兴趣去了解学习的,没有什么坏处,但是不适合作为面试题,我相信大部分人反对的也是这点
agagega
19 天前
逻辑能力、反思能力、洞察力。而这三者的共同基础是好奇心,就是遇到问题能自发研究「为什么是这样?为什么不是那样?」的意愿。

一些人不把技术看成抽象的能力、思维方式和知识,只把技术等同于具体的软件概念,比如你是前端,技术就应该是 NextJS 、VueJS 等,所以他们会认为技术是死路,钻研技术会让你的人生和他们的人生一样失败。

然而很少会有人如此贬低一个机械爱好者、电气爱好者、无线电爱好者、木工爱好者对技术的热情。它们其实没有本质区别。弄明白协程为什么能解决问题,和弄明白为什么手动档汽车需要离合很相似。

不要被纷繁复杂的概念迷惑,看到任何新东西就提一个问题:它能解决什么困难?为什么别的不行?马斯克信徒喜欢吹捧第一性原理,放在这里还真没错。
levelworm
19 天前
我觉得唯一值得和能够深入下去的,要么是自己非常感兴趣,要么就是自己的工作,总之是可以长时间(以年和年代为起点)和不中断的研究才能够深入的下去。我自己也写过一点玩具,现在毛都记不住了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1140614

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX