技术本身的意义在哪里?技术的意义在于解决问题,而非技术本身。
你可以沉迷于技术,但沉迷技术本质上是沉迷于更难的问题。若能解决更难的问题,自然会收获良多。
大多数情况,单纯沉迷技术本身并无道理,除非像研究抽象数学,在研究过程中欣赏其美。即便该数学知识或猜想未解决实际问题,只因问题难,很多人就为破解而钻研。无数破解各种猜想的数学家就是这么玩的。
就计算机专业而言,更多是为解决问题,它是工程而非科学。
以我学C++为例,我并不觉得C++有意思,我最开始学习C++是为了进入搜索引擎领域。
我学习cpp的过程很枯燥。其他语言如Python、Java很多事都能做,且开发速度快。
那么为何很多岗位要求用C++?因其提供诸多可控制的细节的可能,这个语言也非常原生态、刚猛。
就一个团队而言,之所以使用C++,并非它有多好,而是细分行业的技术栈和团队惯性。团队使用C++时间久,且未遇到非换其他语言不可的理由。就我以前的团队而言,我们不想用太多技术栈,切换代码成本高;我们整个事业部主要都在使用C++。
C++是强悍又危险的语言。相对C语言,它因支持面向对象编程而更方便。同时,C++内容繁杂,诸多东西混合。所以其实也复杂而让人陷入选择困难症。
使用多语言开发是有可能的,比如做原型项目。我发现很多内容可用简单的Python、Java、Golang等编写,无需C++。所以在团队里,推行多语言工作不错。我们工具多,找到顺手的用即可,但仍要有主体,比如以C++为主。这就是我推崇的多语言环境,要有主要工作语言,达成共识。
C++的使用成本相对来说还是比较高的。假如使用Java成本量化10元,C++可能就是15元。平时写C++代码比Java麻烦,调试错误头疼,没Java友好。虽C++不断进化,但总体不如其他语言轻量化、安全。其使用成本类似汽车耗油量,C++耗油量高。
所以,能坚持使用C++的团队,不愿切换语言,一方面是肯定是有钱,另一方面是工作需要。
有些工作确实需底层语言,新语言如代码自动回收等关键特性,C++存在缺陷,需手动管理内存。关键还是对性能要求高,非C++不可。
对我来说,已经不愿再花时间学别的语言。我知道能学会其他语言,或许学习过程还有额外启发,比如学Rust(听说它甚至能写内核),但没遇到好机遇。对我来说,熟练用好现有语言就行,更新、时髦的东西让别人做,我有更重要的事,比如考虑商业化等问题。
最后一个我不愿换语言的原因之一,就是C++使用者相对少,没那么内卷,不可替代性高些,也算为自己考虑的小心思。