对于年轻人而言,底层开发收获与投入比重将会越来越低。很简单,柏油路都建好了,未来将不存在什么颠覆性的基础软件产品。Windows 不说了,就拿 Linux 内核为例,近来很多人都提出构建全新的,不再基于传统 Linux 的操作系统,包括 Google 在内的一些巨头蠢蠢欲动,现在看来也是雷声大雨点小。比如之前呼声很高的什么 Fuchsia 最近也没什么声音了,就算新兴 IoT 方面,实时仍然老牌 FreeRTOS 等为主,非实时也看不到取代裁剪 Linux 的可能。新的产品很有可能毫无建树,如果年轻人真的对底层开发感兴趣,那么他们最明智的方向还是去学习 Linux,并且将他们未来几十年的职业生涯寄托在这些老牌软件上。
我们不能否认先辈们在软件工程上长年累月孜孜不倦的投入,取得的功绩以及累积的高水平,但是这种优良传统正在逐渐被侵蚀。年轻人不愿意再往底层投入,不在乎那些过时的成绩,对源码细节的探索也不再充满热情,他们不愿意去做“平行世界的守护者”。这并不意味着年轻人不具有高水平,而是他们追求自我,所谓“自我实现的价值”。很不幸,这些东西与现存的软件工程有着不可调和的矛盾。年轻人意识到如果他们留下来,也不太可能取得 Linus Torvalds、Jeff Dean 这些人当初的成就,这个世界已经太拥挤了。对于留下来的人来说,对于报酬的考虑似乎更加现实与理智。
当旧的基础设施无法满足新时代的需求时候,才会有人去建造新的基础设施,既然 Linux 已经能够满足目前的需求,那么盲目去造一个新的轮子真的能带来什么好处吗? IRIS GL 移植性很差,为了解决这个问题,OpenGL 出现了 用显卡可以加速科学计算程序,但是调用图形 API 来计算太不方便了,于是 CUDA 出现了 就连 C 语言也是 Ken Thompson 与 Dennis Ritchie 为了开发 Unix V3 而发明的
mason961125
2018-01-24 00:45:50 +08:00
我非常同意你说的。举个目前很现实的例子吧,由于现在竞争这么激烈,市场对产品的研发和迭代周期要求越来越短,也就出现了各种各样方便开发的技术,以 Electron 为例,确实可以对不同平台编写同样的代码达到同样的效果,即使是不同平台的特定功能,也只需要少量额外的特定代码就可以实现。诚然,时间上的花费确实少了很多,但是在使用体验上或者说性能上,就比不上用每个平台的原生 API 开发出来的了。从 Atom 到 Slack,性能问题备受诟病也不是一天两天了。要知道,在没有装配固态硬盘和高主频 CPU 的电脑上,大量的加载文件以及启动 Chromium,都是十分缓慢的,内存占用也会相当的高。但是又能怎么办呢?市场要求你如此,你要赚钱养着家里的人,有的时候不得不妥协。我认为比较理想的状态是,在研发初期,用这种类似“万金油”的技术也不是不可取,毕竟缩短了时间;但是考虑到后期的用户体验以及性能,还是要沉下心来,好好的用最好的技术,来完成整个产品。
HangoX
2018-01-24 00:45:59 +08:00
你说的 fuchsia 已经可以装到 chromebook 上了
mason961125
2018-01-24 00:49:10 +08:00
可能我以上说的还是不太够底层,但是现在写 Windows 程序的人里面,越来越少直接使用 Win32 API 的了,毕竟没有.NET 或者 Web 那一套来得快。想想当年初中啃 Win32 API 的时候,确实十分的煎熬,每个 HWND 都要通过 WndProc 来处理,那个 switch 写的人生不如死。那么再更深一步,到了操作系统级的开发,能够沉下心做的人真的更少了。但是这也是市场决定的,毕竟现在大方向是互联网,并不需要那么多人能够开发操作系统相关的,比如驱动之类的开发。
学术界和工业界的重心早就不在操作系统上了,这一块已经没有什么大鱼可以钓了,还用那么多人力去搞就是浪费。这么多年大家已经把各类 tradeoff 想得很清楚了,很多问题也就是内核编译的一个开关。做 OS 的热点早就已经迁移到分布式系统上了。以前单机硬件性能一路提升,业务量也就那样,没钱上小型机,有钱上大型机。现在单机硬件性能发展平稳,互联网业务又那么大,能线性扩展的分布式系统明显是符合历史进程的产物。 话说回来,哪个大公司没有搞内核,TCP 栈的团队,几十万台机器上提 5% 的性能能省多少钱人家算得很清楚,每年四大毕业那么多博士难道都回家待业。楼主也就知道 Linus, Jeff Dean。Robert Love 不是年轻人么?不在这个圈子里就随意臧否人物,小视天下英雄,还是算了吧。