程序笔记   发布时间:2022-07-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了程序员应该造的五大轮子大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

每个程序员都有一个操作系统梦吧, 我记得年轻的时候, 意气风发,给女朋友说过要做一个像Windows那样的操作系统,女朋友当时很崇拜的样子,十多年过去了,孩子都上学了, 这件事我不敢给她提了。

最近有个同学在微信上问我, 又提到了这回事:

程序员应该造的五大轮子

我双手支持、赞成,因为写不了Windows, 造个轮子还不是不错的。

尤其是学生阶段,有充裕的、大块的时间,造轮子再合适不过了。

01 操作系统

造轮子操作系统当排名第一,原因前面也说了,操作系统的诱惑实在太大,在一个裸机上运行一个系统,让冰冷的机器听从自己的指挥, 让这个系统管理所有的硬件,支持上层的应用,说实话, 有一种当上帝的感觉。

但是造操作系统难度也是最高的, 首先得理解Intel CPU的那一大堆细节, 什么实模式、保护模式、A20, GDT, IDT, 中断处理...... 深入进去,如果你不头晕脑胀一段时间,说明你还没有透彻理解。

系统的启动得用汇编编写, 度过了这一段难熬的时间,才能进入C语言的世界,去实现进程调度、内存管理、文件系统、I/O管理。

我觉得一般人写个玩具,体验一下和硬件打交道的感觉,在实践中精确理解进程、线程、文件等抽象就够了。 只有大神才会在上面折腾GUI, 移植游戏,然后搞成了Linux ,宁静OS。

难度指数:5颗星

吹牛皮指数:爆棚

相关书籍:

《操作系统真象还原》

《Orange'S:一个操作系统的实现》

《Linux内核设计的艺术》

《Linux内核完全剖析》

02 数据库

排名第二的我认为是数据库, 但现实中我发现很少有人去写,不知道是什么原因,也许是吹牛皮指数太低?

其实数据库是很有料的:

1. 编译原理的知识

因为你得做sql语句的解析,转化成内部的数据结构。

不需要特别深入,因为现在有很多趁手的工具了,例如Antlr,挺好用的。

2. 索引

B+树, 因为关系数据库存储需要用

3. 事务

你需要自己去实现事务,undo ,redo日志等。

深入一点的话要虑事务的隔离级别

4. 查询优化

对数据库感兴趣的同学,强烈推荐sqlite,可以从最早期的源码开始看起。

难度指数 :4颗星

吹牛皮指数:??

相关书籍:

惨,中文的居然没有,可以去看sqlite官网,资料很齐全

03 网络软件

第三名是网络程序。这个范围很广,可以是:

像Ngnix 那样的http服务器:实现http协议,学习epoll,反向代理,模块化设计等等

或者像tomcat这样Web应用服务器,既支持http协议,又可以运行Servlet和JSP。

或者是redis这样的高性能的缓存服务,学习它和客户端的协议设计,如何快速地存取数据,对外提供的API,持久化等。

有人说它们属于中间件,也有道理,因为不是OS和数据库这样的基础软件,又不是单纯的应用软件,将来工作以后,日常打交道非常多,造一个轮子,发到GitHub上, 写到简历中,非常吸睛。

难度指数:4 颗星

吹牛皮指数 :5颗星

相关书籍:

redis设计与实现》

《How tomcat Works》

04 虚拟机

第四名是虚拟机, 这个轮子也是我非常推荐的。

以Java为例, 写个虚拟机能非常透彻地理解Java 的字节码,因为在执行之前,必须要解析.class文件,在实现执行引擎的时候,得理解栈帧、本地变量表、方法区、堆等概念。

然后还得实现各种指令:存储指令、栈指令、数学指令、比较指令等

如果你还能实现垃圾回收,那就更牛了!

折腾一圈下来,这门语言对你基本上就没有什么秘密了。再去看别的语言和虚拟机:怎么都长得差不多啊!

难度指数:4颗星

吹牛皮指数:5颗星

相关书籍:

《自己动手写Java虚拟机》

《深入理解Java虚拟机》

05 编程语言

最后是编程语言, 造这个轮子的人更少,因为现在编程语言很成熟, 即使你造出来了,估计也是没人用的。

现在GitHub火热的都是那些“文言文编程”,“东北话编程”,没啥实战意义,在自媒体的追逐下一时比较吸睛,但是热点一过就烟消云散。当然,你要是追求流量那另当别论。

造编程语言主要的知识是《编译原理》, 这门课喜欢的人不多,讨厌的不少, 在公司也很少用到相关的知识,所以除非你对编程语言有强烈的爱好,否则大概率是赔本的。

不过造编程语言很可能会让你对“为什么XXX的语法这么设计”有较深理解,并且会培养独特的“品味”, 这点儿挺不错。

难度指数:4颗星

吹牛皮指数:就看你的语言有多少人用了

相关书籍

《自制编程语言》

《编程语言实现模式》

可能有人要问了,你BB这么多,你自己写过啥,造过啥轮子?

这真是个好问题,我还真造过,答案就在我的公众号“码农翻身”中。

程序员应该造的五大轮子

大佬总结

以上是大佬教程为你收集整理的程序员应该造的五大轮子全部内容,希望文章能够帮你解决程序员应该造的五大轮子所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。