@
geligaoli 这不需要 20 年的天才.. 只需要有一个迎难而上的决心. 在你已经落后别人许多的时候, 如何在竞争中缩短差距? 我选择用英文直接学是为了缩短差距. 选择比较硬核的技术路线也是出于这个目的. 很多人会因为自己曾经所失去的一些, 比如没有读一个好大学, 去给自身画个圈, 觉得很多东西离自己太遥远, 从而选择更符合自己"身份"的事情去做. 编程里面也有这种, 比如觉得一些库提供的功能是 "神圣且不可侵犯" 的, 是超出自己能力很多的人写出来的, 自己不敢去尝试, 他们会安慰自己, 等我工作 10 年, 20 年之后, 再去做同类的事情, 就像你提出的看法一样. 但事情根本没有表面上看起来那么简单, 因为我们只能活一次, 如果你现在不去做这些, 20 年后, 从 30 岁到了 50 岁, 就更没有精力和勇气去做这件事了. 你以为只是推迟, 实际上是从根本上斩断了自己在另一个路线上的可能性. 这几个月我没上论坛, 刚把游戏需要的 UI 系统写完. 可能听起来很唬人, 但当你真的去做了这件事, 也没有想象中那么难. 编程水平的提升并不是一个单纯代码量的累计, 而是根据你所解决问题的难度来决定水平提升速度的. 另外补充一下, 我的 C 语言编译器也没写完. 把前端部分写完就搁置了. 内存分配也有不同难度的, 如果只是线性分配, 去看 raddebugger 的源代码, 里面有很简单的实现. Vulkan 渲染器这些也都有很多参考代码. 如果你写过一些 C 程序, 看懂这些代码并不难. 但如果你一直都是写脚本语言, 就会觉得跨度很大, 像一堵墙一样. 因为人在学习编程的过程, 并不是在死记硬背, 而是在一种培养直觉, 只有你把自己 "泡在" 这些难题中, 才能获得这些直觉. 就像学习英语需要语言环境, 学习编程同样需要创造一种环境. 比如用 C 语言无时无刻都在面对指针, 那它就会像吃饭喝水一样没有挑战了. 你也可以试着把文本编辑器的自动补全关掉, 以及任何智能提示, 可能刚开始会很不习惯, 但久而久之, 你会获得记住变量名和函数名的能力. 失去了工具的辅助, 就会强迫你用大脑的工作记忆区域去承载更多的信息, 但也同时锻炼了大脑的这个功能. 工作记忆的强弱, 对于解决编程问题也是非常重要, 就像国际象棋棋手在脑海里面下盲棋一样, 哪怕你在电脑屏幕上盯着代码, 他们也不可能是都集中在一起的, 这些代码在不同的位置上前后关联, 都需要工作记忆作为前提, 然后才能展开时候的思维活动, 去理清这些问题的脉络. 我在这跟你讲这堆东西, 如果你是一个有一些水平的程序员, 自然能明白他们的含义, 也能判断我是不是在装. 如果你从来没解决过一些复杂的问题, 自然也听不懂这些.