前段时间花了一个通宵把王垠的博客看完了,觉得还是受益匪浅的,所以也给大家谈谈感想。

首先说起王垠这个人嘛,最早了解他的是因为他那篇神一般的传教洗脑文章《完全用Linux工作》,虽然后来被喷成狗。这篇文章在国内的Linux圈子里面非常有名,甚至可以说是国内Linux宗教里的一面旗帜了。虽然我不是完全因为这篇文章入的Linux大坑,但是不可否认当时的我也成功被煽动成了一个Linux脑残粉…甚至到了现在我依然是一个VIM死忠(仅仅是习惯了)……后来随着自己能力和思维的成熟,也慢慢摒弃了当年的偏执,变得更客观更理性。

最近刚好又在自己折腾Lexer和Parser,而且刚好王垠还是PLT领域的专家,所以就想着顺便看看他的文章,结果一看就停不下来了。看完了他所有的文章依然意犹未尽……

王垠文章吸引我的有两点,其一是王垠这个人本身。从他身上让我看到了一个真正的学者科学家该有的特质。他真正热爱思考,热爱自己的钻研的领域,而不像很多人那样只是混口饭吃而已。第二点就是他的文章给我了一个更高的视野去看待编程语言,同时点醒了我程序代码是什么。

程序代码本质就是格式化的数据,这跟xml或者json这种东西其实没什么太大差别,然后依靠Parser把代码解析成计算机可读的数据结构。xml被解析成了dom树,json被解析撑了hash表,而代码被解析成了AST。

代码的语法并不是程序语言本身,代码的语法只是规定了一种数据的编码格式,所以从AST开始,编程语言才真正的开始。在AST之前的Lexer、Parser干的事情都非常简单,就是把代码解码成AST,让计算机能读懂。

最后,很多高深的语法分析,其实只是在解决一个自己创造出来的问题。设计过于复杂的语法,导致了需要非常复杂的语法分析来分析复杂的语法。而像Lisp这种语言,根本不需要复杂的语法分析,顺序读下来就是AST,这也是为什么王垠会那么喜欢Lisp。

当我想清楚这些问题以后,我就尝试完全把代码就当成一种结构化的代码来解析,发现思路变得非常简单清晰,根本不需要什么复杂的算法,不需要什么高深的知识就能非常轻松地解析代码了。

我现在决定先不去抱着书看高深的理论,而是自己先用自己的头脑来解决。等解决完了,再去看书。

王垠博客 linux,前段时间花了一个通宵把王垠(Yin Wang)博客的所有文章看完了...相关推荐

  1. 四年时间,从一个浑浑噩噩的程序员到csdn博客专家的成长之路

    文章目录 本文只做记录总结篇,如有不适请轻喷 写在前面 浑水摸鱼的大学四年 学习之路极其长远 怎么会突然写博客 侵权问题 写博客是一件很享受的东西 人生短暂,展望未来 本文只做记录总结篇,如有不适请轻 ...

  2. 《完全用Linux工作》(原版)作者:王垠

    "UNIX 是简单的,你不需要成为天才也能理解这种简单." 由于GNU/Linux这个词太长,下面如果没有特别指明,"Linux"就是指"GNU/Li ...

  3. 清华大学退学研究生王垠的关于linux的文章

    作者写的很好,虽然有点偏激,但是确实说的很对. 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作. GNU/Linux 不是每个人都想用的.如果你只需要处理一般的 ...

  4. 分享一个有趣的学习方法,欢迎一起探讨如何提高学习兴趣作者:1-2-3 来源:博客园 发布时间:2009-03-09 16:20 阅读:2820 次 原文链接 [收藏]

    分享一个有趣的学习方法,欢迎一起探讨如何提高学习兴趣 作者:1-2-3  来源:博客园  发布时间:2009-03-09 16:20  阅读:2820 次  原文链接   [收藏]   有些人似乎天生 ...

  5. 曾经我也迷茫,你还在迷茫吗?写给像我一样的在校计算机专业学生作者:Cat_Lee 来源:博客园 发布时间:2009-05-30 20:25 阅读:1104 次 原文链接 [收藏]

    曾经我也迷茫,你还在迷茫吗?写给像我一样的在校计算机专业学生 作者:Cat_Lee  来源:博客园  发布时间:2009-05-30 20:25  阅读:1104 次  原文链接   [收藏]   无 ...

  6. Linux格式化sd卡博客,Linux下格式化U盘或者SD卡

    前段时间用SD卡刻了用一个Linux系统(存储系统),插在windows下显示只有32MB(原卡16GB的).好了,问题来了,其他的空间去哪里了呢? 1.如何释放其他未使用的空间? 2.如何重新找回所 ...

  7. TImage、TPaintBox、TPicture、TBitmap、TCanvas、TGraphic 的关系与区别作者:万一 来源:博客园 发布时间:2009-01-09 23:01

    TImage.TPaintBox.TPicture.TBitmap.TCanvas.TGraphic 的关系与区别 作者:万一  来源:博客园  发布时间:2009-01-09 23:01  阅读:3 ...

  8. linux下查看cpu物理个数和逻辑个数 - chw1989的专栏 - 博客频道 - CSDN.NET

    linux下查看cpu物理个数和逻辑个数 - chw1989的专栏 - 博客频道 - CSDN.NET [plain] view plaincopyprint? hadoop@chw-desktop3 ...

  9. TS:linux根分区满了如何处理,查找大文件方法(成功测试-博客输出)-2022.2.11

    TS:linux根分区满了如何处理,查找大文件方法(成功测试-博客输出)-2022.2.11 目录 文章目录 TS:linux根分区满了如何处理,查找大文件方法(成功测试-博客输出)-2022.2.1 ...

最新文章

  1. linux 文件截取
  2. Oracle作业队列入门图文解说
  3. 安卓 屏蔽子控件点击事件
  4. 使用python移动飞信模块发送短信
  5. 新版Microsoft Edge支持跨平台跨设备浏览
  6. python locust 性能测试:HOOKS钩子方法
  7. BZOJ1259:[CQOI2007]矩形rect(DFS)
  8. 几百万消息在消息队列里积压了几个小时!完了。。。
  9. android自定义ViewPager之——水平滑动弹性效果
  10. 带型带秀专题之 Lazy Load (一)
  11. Web浏览器测试,怎么提取测试点 - web测试方法总结
  12. S7-1200做智能IO设备
  13. numpy中相关系数
  14. SpringBoot项目遇到AopAutoConfiguration matched: - @ConditionalOnProperty (spring.aop.auto=true)错误
  15. 微信小程序之在线任务发布与接单平台(图)
  16. 一周AI资讯|深度学习如何进行“读心术”?
  17. 小米手机如何在便签待办事项中输入语音?
  18. 利用Joypy绘制嵴线图的案例
  19. 如何衡量和分配广告渠道?
  20. linux网络编程--网络编程的基本函数介绍与使用

热门文章

  1. std::pi_挤压Pi:家庭音频历险记
  2. liferay 7.0开发到部署
  3. 201871010104-陈园园 《面向对象程序设计(java)》第四周学习总结
  4. torchtorchvision对应版本
  5. 十二星座的12种风味咖啡,最后一个能让你上瘾
  6. Stanford Named Entity Recognizer (NER) 斯坦福命名实体识别(NER)
  7. seamle***dp+rdesktop完美结合
  8. 守望先锋打开黑屏闪退,已经重装过好几次都没用? 真正原因在这里
  9. 如何在一个frame中调用另一个frame中的javascript函数
  10. 笔试 - 邪恶数字4与7