deadEgg
2019-03-02 22:44:40 +08:00
以前 java、python 写了很久,
现在在写 pure c,来对比下写 c 你将遇到什么
1. 平台移植兼容,你将需要面对各种平台写一堆另新手费解的宏,定义自己的基本数据类型根据编译器,cpu 位数,我见过一个很老的项目甚至兼容 8bit 的平台。不同的平台提供的库也很难去弄,一个不成熟的 c 项目可能带给你的是编译要弄很久。
2. 编译选项,不同的编译选项导致编译进不同的代码,所以你有时候会发现一堆定义相同的函数,当遇到这类事情你还得了解编译场景。。
3. 混编汇编,别问,问就看不懂
4. 多流派写法,不同的项目都有自己的写法流派,有些 struct 去面向对象,去做接口,有些写法不理解个半天根本不明白它在写什么。
5. trick 代码,可以说 c 是最能写出花样的,新手很难理解一些 trick 的代码片段。比如内核常用的 container_of 这种。或者一些大数实现中对结构内存的分配调整,很难以上层的思维模式去理解,上层可能可以很轻松的获取操控内存大小,但是在 c 里面,总是很难明白在一个 struct 里面的 char *到底里面有多大内存。
6.分包自由,代码很长,我有见过把所有核心功能都放到名为 lib 包的项目,一个.c 文件可能几千行然后也不面向对象,只面向功能去做(或者说面向组件),上手一个 c 的项目其实都很去理解他的核心思路。
7. 和别的代码混着写,反正 makefile 足够自由,可以加入很多别的语言在里面。。
所以,少年珍惜 java 把,java 这门语言可以说是上手算是挺快的了。