计算机科学
文章平均质量分 80
cdai
这个作者很懒,什么都没留下…
展开
-
Grammarinator:基于ANTLR4语法自动生成语句
Grammarinator是一个基于ANTLR 4的grammar文件,自动生成语句的开源项目:https://github.com/renatahodovan/grammarinator。从语言的grammar生成语句或者所谓的Fuzzy Testing,对软件测试很帮助。就像Grammarinator的README里所说,它已经帮助一些项目发现了很多缺陷。本文通过一个简单例子,让大家先了解一下...原创 2019-10-28 03:53:15 · 1326 阅读 · 0 评论 -
深入学习关系理论
周末阴雨连绵,在家闲来无事,抽空读了《Database In Depth: Relational Theory for Practitioners》这本评价不错的关系理论书的开篇。作者C.J.Date是关系理论之父Codd的好友,所以对关系理论的理解是足够深入的。甚至在开篇不久,作者就提到了与Codd理念不合的地方,比如关于NULL的合理性,关于Domain与Type的等价性等。1.SQL不等...原创 2019-10-24 14:02:00 · 895 阅读 · 0 评论 -
如何实现语义分析中的类型检查
之前曾写过一篇语义分析的概念性介绍:https://daichen.blog.csdn.net/article/details/100097850。最近,终于开发完了一套基于SQL的语义分析器,算是对之前学习到的理论的一次工程实践。本文只是点出一下实践时的一些关键点和经验,具体细节还请看这里的设计文档:https://github.com/opendistro-for-elasticsearch/...原创 2019-10-12 13:48:20 · 1454 阅读 · 0 评论 -
当你编码时你在做什么:谈编程的本质(零)
当你编码时你在做什么:谈编程的本质(零)编码时间也不算短了,一直想写这么一篇文章,但苦于知识面和功力不够。经过了一年的读研学习,终于对什么是计算、什么是编程的本质有了些领悟。于是断断续续花了几天时间,斗胆提笔来谈一谈自己的理解。写着写着就越写越多,于是干脆就写成一个系列吧。还没搞懂的就先放下,等搞懂了写好了再发,用这个系列先占个位置,督促自己不断地深入学习,不要停歇。目前已经想到的比较重要的内容有:原创 2017-01-03 22:07:18 · 5516 阅读 · 3 评论 -
当你编码时你在做什么:谈编程的本质(一)状态机
当你编码时你在做什么:谈编程的本质(一)状态机1.State Machine这学期学习了两门有意思的课,Theory of Computation和Distributed System,一低一高完全两个层次上的分支,却意外地发现两者在理论方面的重叠——那就是状态机。在Theory of Computation中,DFA、NFA、Turing Machine都是非常经典的State Machine,而原创 2017-01-18 22:22:47 · 7440 阅读 · 8 评论 -
程序员如何学数学
最近在找一些传统离散数学以外的数学书,想从其他角度补习一下计算机科学相关的数学知识,偶然间就看到一些人都推荐了这篇文章Math For Programmers,通读了一遍果然不错。但文章有点长,所以没逐字逐句地翻译,只是对每个部分做一下总结,并标注了一些写得很不错的地方。非常难能可贵地是,作者并没有像老师或者大牛一样说教或者“炫技”,而是一直在强调两点:兴趣热情和解决问题的直觉。不管通篇作者说了多少翻译 2017-08-22 04:22:22 · 10278 阅读 · 8 评论 -
当你编码时你在做什么:谈编程的本质(二)可爱的树
憋了好久的一篇,主题有点大一直没有写完,中间隔了很长时间现在已经有点捡不起来了,索性先发出来吧。至少个人觉得,完成的部分还是总结了一些有用的东西。关于Tree之上的属性、递归算法等,只能等状态回来了再补充了。 I think that I shall never see A poem lovely as a tree. Poems are made by fools like me原创 2017-08-26 06:22:55 · 2471 阅读 · 0 评论 -
编译器中的语义分析
最近一直在看编译原理方面的书,之前着重研究过词法解析和语法解析,这一次因为工作原因比较侧重语义分析。简单来说,语义分析是发生在词法和语法解析之后,输入是Concrete Syntax Tree又名Parse Tree。语义分析器对Parse Tree进行分析,同时可以产生Abstract Syntax Tree(AST)。AST即忽略了语法细节的语法树,可能大家更熟悉一些。AST一般作为编译器前端...原创 2019-08-27 13:34:35 · 2479 阅读 · 0 评论