百科问答小站 logo
百科问答小站 font logo



仅仅从好玩程度考虑,做编译器或操作系统哪个更有趣味? 第1页

  

user avatar   skywind3000 网友的相关建议: 
      

同范畴类似的东西中,虚拟机开发比操作系统和编译器都有意思:

操作系统能玩的好玩的不多,做完进程管理和内存管理,其他就是脏活累活了,要得到一个成型可用的东西,没有一个团队弄不了,个人玩不转。以前调侃过这个话题:

关于LMOS自主操作系统的发展,大家有什么建议? - 韦易笑的回答

而编译器方面,优化和代码生成有llvm,用不着自己开发,其他部分基本上是一个固定套路,照着文档照着书,按固定套路来即可。

以 Lua为例,最精巧的部分就是 Lua虚拟机的实现,整个 Lua-5.3 代码中,编译部分只占2000行,剩下两万行全在实现虚拟机。大家津津乐道的各种 lua 奇技淫巧全都在它的虚拟机实现部分中。

Ruby更是如此,整个ruby代码除去库实现外,基本在实现ruby的虚拟机,编译器部分作者都懒得怎么写,直接一个的 .y文件搞定,精力都在ruby虚拟机实现上。

虚拟机难是难在开头的设计,怎样最精巧,怎样没有逻辑漏洞,别写着写着发现前后逻辑矛盾了,设计好以后就要开始架构了,先从最简单的 switch case opcode实现起来,很快你就能得到反馈看到自己的工作成果,接下来给虚拟机实现符号表,object,实现 gc,实现各种容器,优化性能,在内存中翻译成本地指令码,然后实现多线程,再给你的虚拟机实现一门汇编语言,每走一步都很有意思。且虚拟机相关的技术目前还在日新月异的发展着,光一个gc,每年都能看到很多新方法出现,大有需要继续改进迭代的地方。

实现虚拟机需要覆盖很多知识面,虚拟机设计的好,还可以嫁接很多其他语言,让这些新语言来这个虚拟机上运行。

大家夸 v8 都是说它虚拟机运行速度快,内存少,没人说 v8 的编译部分如何如何,以至于很多新语言都以v8虚拟机为运行环境。

同样,每年都有很多人尝试重新实现 lua vm,引入更灵巧的机制或者使用更新的 JIT方法。来pk官方runtime, 以及 luajit,好多人或多或少在某些方面都能并发出很多奇思妙想。

相反,从来没人碰 lua 的编译部分,为啥啊?就那样了,还碰它干嘛,没意思了啊。

------------




  

相关话题

  操作系统多进程多线程的相关问题? 
  程序员反感(讨厌、不喜欢)什么? 
  我学编程为什么难?是思维方式不对还是学习方式不对? 
  为什么即使世界最知名的软件程序,也无法阻止被人破解的命运? 
  如何看待代码中的中文变量名? 
  就代码能力和开发经验来说,姚期智是不是根本就不如稍微有三到四年开发经验的程序员? 
  如何评价「线程的本质就是一个正在运行的函数」? 
  如何看待微软不再给OEM提供32位的Windows? 
  突然想开一家程序员主题的餐馆,名字就叫程序员的菜,菜名就叫各种语言中的关键字,各位指点一哈,有前途没? 
  Java 8接口有default method后是不是可以放弃抽象类了? 

前一个讨论
2021年11月7到9日月亮旁边那颗很亮的星是什么?
下一个讨论
如果地球停止自转,那是不是时间就不存在?





© 2025-06-24 - tinynew.org. All Rights Reserved.
© 2025-06-24 - tinynew.org. 保留所有权利