linux上有趣的项目,有意思的开源项目。

最近,再拜读了一下 Linux 之父林纳斯的自传《只是为了玩儿》。

本书借助林纳斯幽默的表达,让我们知道了他的生平,明白了 Linux 是怎么诞生的,以及他对开源、版权及财富的看法。如果没有林纳斯从小的积累,也不会创造出今天的 Linux,也就没有今天遍地开花的互联网产品。作为「祖师爷」,他的人生观、价值观也值得我们思考,如果你仔细读完这本书,你会发现他在书中不止一次引用到牛顿的名言「自己只是站在巨人的背上」,并且他的经历也再次印证了兴趣是最好的老师。

而让我感兴趣的时,他的第一行代码,也没有什么出奇之处,跟我们当初学习写代码一样,也是一句 「HELLO」。但是,林纳斯写他的第一行代码是在他十一、二岁的时候,也许那时的我们没几个知道计算机是什么?

你如果去看过 Linux 的源码,会发现他写代码的风格特别好,而且他还在 Linux 内核里面留下了不少彩蛋。比如你用 gdb 打开 kcore 虚拟文件,找到内核重启函数 SYSC_reboot,会发现很多有趣的东西,比如。

cmp DWORD PTR [ebp-0x114],0xfee1dead

这串比较指令用简洁的语言表达变量的真实用途。如果不feel dead,干嘛要重启呢?

cmp edi,0x28121969

这个常量其实是林纳斯的出生年月日。

cmp edi,0x5121996

这个常量便是他大女儿的出生年月日。

哈哈,是不是突然觉得 Linux 之父林纳斯是一个特别有趣的人。

......

最近,我在逛 Reddit 论坛,刚好也看到一条有意思的帖子「What is the first programming project you made?」。

11e7785a8e8f4e4caae66f45dc3202bc.jpg

我看了一下,其实国外的程序员也一样,第一行代码也多半是跟着教材,在控制台输出「hello world」。

有的读者可能会问,东哥,你当年敲下的第一行代码是什么?

我也一样,只是为了让计算机输出「hello world」,费了九牛二虎之力。由于我出身农村,上大学才第一次接触计算机,当时,连开关机都不会,也更别说打字了。。。

后来,跟着室友学会了开关机,练习打字。在第一次 C 语言上机课的时候,按照谭浩强老师的那本《C程序设计》教材在电脑屏幕上,本打算打印出「hello world」,而给我输出了「烫烫烫烫烫烫烫」。当年年少不更事,还当着那么多同学的面说,「这电脑也太不听话了」。

其实,网上还有一段打油诗,在这里与大家一起欣赏。

手持两把锟斤拷,

口中疾呼烫烫烫。

脚踏千朵屯屯屯,

笑看万物锘锘锘。

后来对计算机理解的深入了,也慢慢知道了为什么 VC 有时会输出「烫烫烫烫烫烫烫」,有时又输出「屯屯屯屯屯屯屯屯」。

其实很多初学者,跟我当初一样,并不知道其中的梗,这里统一说一下。

其实 「烫」和 「屯」都是按照  GBK  编码显示的结果,对应的十六进制分别为 0xcccc, 0xcdcd 。

由于微软 C\C++ 编译器在 debug 模式下,引入的一种内存保护机制,会给特定的内存赋一个特定的初值。会把未初始化的栈内存全部填成 0xcc,用字符串来看就是「烫烫烫烫烫烫烫」,未初始化的堆内存全部填成 0xcd,字符串看就是「屯屯屯屯屯屯屯屯」。

就在写这篇文章之前,我抱着试一试的态度,看看 Github 上面,有没有专门输出各种语言「hello world」的开源项目,还真有,被我给搜到了。

b957116381ed4aa4bbc9ec985acb71f4.jpg

hello world 只能带我们入门,代码最终能写到什么水平,主要还是看你对代码有多大的兴趣!

最后,咱们来看看网上流传出的,雷布斯在 93 年写的汇编代码。

有没有发现大佬的注释写得详细,代码风格很好。

你还记得你曾经写下的第一行代码吗?

转发也是一种支持。

—————END—————

看更多好文

请长按下方图片扫码关注

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值