mashiro233
2018-05-30 09:39:17 +08:00
c/c++由于其特殊性能够在非常多的场合上派上用场,所以不同领域的知识累积也不一样。
比如如果是服务器开发,可能会侧重偏向 tcp/ip 实现,网络模型这块。
如果是搞 linux 内核的,可能会偏指令集,用户层的 syscall 以及在内核里是如何实现等等。
如果是搞渲染器的,对 dx 和 opengl 这套东西肯定得熟了,shared 要怎么写,对指令集也得了解。必要时候还得手写汇编,毕竟渲染器这块对于效率有极高的要求。现在大多都是 arm 和 x86,资料多。上个世代各种偏门的 soc(说的就是 x360 和 ps3)可是把一堆写渲染器折腾的死去活来。
至于语言本身,我个人是不太倾向一开始于过度深入研究,应该关注于如何使用和用好轮子。随着项目的积累你会慢慢的去了解原理。我今年过年放假的时候研究了一个礼拜的元编程,到现在项目里也没啥地方需要用到。再比如楼上提到的 main 函数 printf 这些,如果你知道 crt0/1.o 是个什么东西,写过 ld script,移植过 newlib,闲的时候看过 musl libc 源码,回答这些个问题不是什么难事。如果对这块有兴趣,看优秀库的源码是个很好的提升手段,c++这块 boost 是个非常好的库,代码可读性很高。c 的话推荐 musl libc,也是可读性非常高的 c 标准库实现。同时有精力也可以写个 c 编译器玩玩。