披甲声明
因为今天参加了华为的鲲鹏开发者大会,所以一些应用场景肯定会绕不开华为,当然本文纯粹聊看到的技术,希望腾讯审核者手下留情。
架构转换
现在很多软件是基于 x86-64 的架构,而 arm 架构最开始是应用在手机上。两个架构最大的区别是指令集的不同,x86-64 是 CISC ,而 arm64 另一个是 RISC 。精简指令集诞生是因为人们经常使用的指令很少,而一些复杂指令使用的频率很低,那么我就能将一些频繁使用的统一化使用不是更好,得到用到复杂指令再去调用。
但是过去几年,arm64 虽然在手机端使用很多,但是在服务器和 pc 端并没有太快发展,大多因为历史包袱,软件迁移需要成本解决各种 bug。
变化从苹果的 m1 的 macbook 开始,pc 端开始引入了 arm 架构,我也买了一个,结果......嗯......我最近买了一台 windows 电脑。
我并不是说 macbook 不好,只是我个人需要很多做各种功能的软件,如果只做开发的写代码目前换可以。但是如果要研究底层,就不建议了。
看到了一些解决方案
我曾经想要研究一下 Linux 0.11 版本的 Linux 源码,结果在 mac 上一个 make 结果出了一大堆错误。后来专门学了 makefile,cmake 怎么编写,然后改了文件内容,然后...编译不成功。
这个问题在架构转换的时候经常存在,在今天鲲鹏那边看到了他们研发了一个针对他们 arm 服务器的工具,他可以分析 makefile 和 cmake 文件的一些文件错误,然后针对错误提出方案。
对于一些编译好的静态链接库 so 文件和动态链接库的 .a 文件,他们自己也提供了一些转化库,虽然无法尽善尽美,但是总算有了一个可行的方案。
当然其中用了大模型的内容,这也算是一个应用的方向。
当然除了这个功能,还有关于代码管理构建测试等流水线,他们通过提供了在 jenkins 上进行一些写法上进行了检测和生成。
在运维层面加了一个文本生成 shell 命令的一个接口。总之某些方面算是打开了我的一些思路。
关于一些创新的讨论
涉及到底层一些或者业务逻辑层面,其实很难有更加创新的东西,我们自然期望处处造轮子,但是我们有很难不去模仿。
涉及操作系统,操作系统的与硬件交互,启动,然后内存管理模块,文件管理模块,网络管理模块如果要自己做一个操作系统很难不去参考这些内容,他们是怎么设计的,他们怎么管理的,在这些领域代码是写不出新的,所以我觉得在很多层面我们了解其中逻辑然后能基于别人的内容去用。如果自己在工程上遇到问题没有工具需求自己开发一个组件就算是很厉害的程序员,毕竟站在巨人的肩膀上并不吃亏。
当然我们自然气愤很多人那个套皮壳子就能赚钱,但是这是市场逻辑出了问题,而不是程序员领域出了问题。就此打住,不再多说,今天算水了一篇。腾讯审核人员手下留情呀。