首页 > 代码库 > 读《程序员的自我修养》感受

读《程序员的自我修养》感受

这书不错,链接-装载-库 我觉得是很底层的东西。比如很多人闭着眼睛都能写出来的hello world(当然不包括brianfuck,如果你会,你真的闹残了吗= =), 其实链接编译器做了很多,不然就哪来的printf,这IO初始化也是CRT(c runtime)库完成的。堆栈的初始化,还有系统装载让程序运行等等。涉及很多。

书里后面就讲了一个CRT库,自己写一个,感觉不错,学了很多。比如malloc,free的实现,话说还是跨平台的。当然库很小,功能不多,不过写这个也可以学学算法。内存的分配,这个要用到链表。突然想起书里有许多诡异的代码,不可思议的东西。贴上几处(C语言的,python者移步吧)


 1 #include <stdio.h>
  2 
  3 namespace myname {
  4     int var = 42;
  5 }
  6 
  7 extern "C" int  _ZN6myname3varE; 
  8 
  9 int main()
 10 {
 11     printf("%d\n", _ZN6myname3varE);
 12     return 0;
 13 }

好吧,这个是C和C++编译器对名称的处理。结果当然是42,为什么呢?因为42 the answer to the ultimate question of life the universe and everything 生命、宇宙以及任何事情的终极答案----来自电影 银河系漫游指南。

好像扯远了= =

1 #include <setjmp.h>
  2 #include <stdio.h>   
  3 
  4 jmp_buf b;
  5 
  6 void f()
  7 {
  8     longjmp(b, 1);
  9 }
 10 
 11 int main()
 12 {
 13     if(setjmp(b) )
 14         printf("World!");
 15     else {
 16         printf("Hello ");
 17         f();
 18     }
 19     return 0;
 20 }

这个是C语言使时光逆流的= =


好吧,不吹了,就这么多吧。