![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机杂想
电影旅行敲代码
垃圾文章制造者
展开
-
浅谈 language server & LSIF & SARIF & Babelfish & Semantic & Tree-sitter & Kythe & Glean等
注:本人做过静态代码分析,也算是做过code intelligence,两者互有交叉,所以这里将涉及到的有意思的东西记录下来,未来有精力再依次对这些项目进行介绍文章目录什么是language server protocolJSONRPCLSIF(Language Server Index Format)SARIF(Static Analysis Results Interchange Forma...原创 2019-12-30 14:14:37 · 3836 阅读 · 2 评论 -
由计算机状态机到字符串相似
引子计算机解决问题时,就是状态机从一个状态集合跳转到另一个状态集合的过程。状态迁移的过程是由计算机程序(亦即计算机汇编指令)来控制的,不同的指令序列会导致截然不同的计算结果,前面已经提到过指令序列的相似程度和字符串的相似程度是不同的。那么从计算机执行指令序列,能够得到计算字符串相似问题什么启发呢?计算机指令序列前面提到不同的计算机指令序列,在相同输入情况下所导致的结果有可能是截然不同的原创 2015-11-10 11:07:27 · 587 阅读 · 0 评论 -
程序与自动机及静态分析杂想
引子有限状态自动机就是一些操作作用在状态上,导致状态和状态迁移的过程。程序运行就是用户向计算机输入信息并经过一系列的计算并从中获取结果信息的一个过程。而静态分析就是不实际执行程序通过初始状态模拟执行得到最终状态的过程。但是有限状态自动机,程序执行及静态分析之间有什么联系呢?更新:读了《计算的本质:深入剖析程序和计算机》这本书,才知道下面的思想这本书里都有详细而有系统的探讨过有限状态自动机与程序执行原创 2015-10-16 11:09:29 · 1500 阅读 · 1 评论 -
人类的行为与程序计算
引子人类从出生伊始都在面临着生活中的种种问题,人类无时无刻不在进行着问题的解决过程。程序从设计之初也是用来解决生活中特定问题的。那么人类行为与程序计算理论之间又有什么相似性呢?人类人类所面临的问题人类解决问题的过程人类解决问题的过程与程序执行代码生成器人类人类是当今地球上最智慧的生物,这是无可置疑的,虽然部分动物也拥有智慧比如说部分灵长类动物。但是人类却远比其他动物高级的多,虽然人类和其原创 2015-11-30 20:47:39 · 1480 阅读 · 0 评论 -
B+ Tree vs B Trees
引子最近一直回顾自己曾经写的一些文档,有一篇是关于 Clang Rewriter 的源码分析文档,其中用到了 B+ 树来组织整个代码改写结果。Clang Rewriter 是用于代码改写主要的接口,例如源码级别的代码插桩就要用到 Rewriter 接口,源码修改会带来很多随机的增删,肯定不可能直接在源码字串上增删代码,这样子串频繁移动的开销太大,所以Clang就使用B+树来组织整个过程。由于B+树的原创 2016-04-06 15:31:10 · 3050 阅读 · 0 评论 -
人类面对问题时的盲目
引子最近在准备工作的事情,所以花了一小部分的时间去回顾算法,在回顾算法的时候感觉其实都是在 背算法 ,这就类似于编译器中的符号表或者一个哈希表,将问题场景和算法一一对应起来。人们面对问题时下意识的从不会去进行思考,找到问题的最优解或者是较优解,而是撸开袖子开干。这个现象在每个人身上都会发生,为什么会这样呢?虽然这样做往往是盲目的。人是进化过来的动物其实可以从进化论的角度来解释这个问题,因为在远古社会原创 2016-04-07 10:57:11 · 798 阅读 · 0 评论 -
编程领域中的 "transparent" 和 "opaque"
引言在学习计算机的过程中,经常会接触到 “透明” 和 “非透明” 的概念。刚开始理解 “透明” 这个概念的时候,认为 “透明” 就是程序员可以看见其中的构造,但是老师却说透明是程序员意识不到其中的存在,所以对这个概念一直都有些困惑。后面接触到 “不透明” 这个概念的时候,意味着程序员看不到其中的机理。所以对 “transparent” 和 “opaque” 一直很迷惑。其实两个确实是有不同的,重点就原创 2016-06-17 22:25:12 · 10404 阅读 · 2 评论 -
提交patch以及代码review中常用术语
提交patch以及代码review中常用术语LGTM — looks good to meACK — acknowledgement, i.e. agreed/accepted changeNACK/NAK — negative acknowledgement, i.e. disagree with change and/or conceptRFC — request fo...原创 2018-05-04 11:15:12 · 1315 阅读 · 0 评论