程序观点下的线性代数

摘要: 本文提出了一种观点:从应用的角度,我们可以把线性代数视为一门领域特定语言(DSL)。线性代数在初等数学基础上建立了向量模型,定义了一套语法和语义,符合程序语言的语言契约。向量模型具有坐标系无关性的优点,可以用来表达线性关系。它是整个线性代数的核心,是解决线性空间问题的最佳模型。阅读全文
posted @ 2014-05-21 22:07 Todd Wei 阅读(3956) 评论(12) 编辑

I/O重定向的原理和实现

摘要: 本文介绍了Linux系统I/O重定向的原理和实现方式,原理方法最重要的是理解文件描述符和文件描述符表的概念,以及标准I/O所对应的特殊FD;实现方面主要是了解dup2()系统调用的功能和用法。阅读全文
posted @ 2014-03-01 13:20 Todd Wei 阅读(1891) 评论(0) 编辑

程序的本质复杂性和元语言抽象

摘要: 程序的复杂性包含了本质复杂性和非本质复杂性两个方面,前者即为逻辑,后者即为控制。代码优化的极限是由逻辑决定的,逻辑和控制本应是正交的两个维度,但多数程序中二者却耦合在一起降低了程序的可读性。组件复用和GoF设计模式都不是解决这一问题的有效途径,唯有元语言抽象能彻底地将逻辑和控制解耦,使得程序简洁、优雅、易理解、易维护。阅读全文
posted @ 2013-10-28 17:09 Todd Wei 阅读(2670) 评论(14) 编辑

编译器词法消歧设计

摘要: 在经典编译理论中,编译过程被抽象为管道模型,词法分析的输出作为语法分析的输入。但是,许多语言中存在词法歧义问题,如C++中经典的模版“>>”问题,其根源在于词法分析所依赖的词法规则无法消除歧义,必须依赖于完整的语法。本文介绍了一种比Scannerless Parsing更好的词法消岐设计。阅读全文
posted @ 2013-10-01 23:10 Todd Wei 阅读(1572) 评论(1) 编辑

关于分工的思考 (Thoughts on Division of Work)

摘要: Traditional software engineering emphasizes on division of work and improving cooperation, but I think the otherwise, the better way is reducing unnecessary cooperation.阅读全文
posted @ 2013-09-24 23:32 Todd Wei 阅读(624) 评论(0) 编辑

数据即代码

摘要: 配置本质上是一种元数据也是一种DSL,这和Lisp基于S表达式的“数据即代码,代码即数据”没有本质区别。在C++、Java等程序中引入配置文件的目的正是用DSL弥补通用语言表达能力和灵活性的不足。把主要业务逻辑都放到配置中,再通过程序解释执行配置的设计方法,我称之为元驱动编程(Meta Driven Programming)。阅读全文
posted @ 2013-08-09 10:11 Todd Wei 阅读(1987) 评论(1) 编辑

类型的本质和函数式实现

摘要: 类型的本质在于它所定义的操作以及操作之间的不变式。类型的实现关键在于满足类型规范的要求,而具体实现是可以变化的,使用者和测试用例都应该只依赖于类型规范而不依赖于具体实现。函数式的类型实现往往和类型规范是直接对应的,简单通用且容易验证程序的正确性,但可能有性能问题,而命令式的类型实现往往会引入复杂的内部数据结构和算法,不具有通用性但是一般比较高效。这两种实现并不是完全互斥的,有时候可以将二者相结合达到简单与高效的结合。阅读全文
posted @ 2013-07-21 18:52 Todd Wei 阅读(1733) 评论(1) 编辑

二叉树迭代器算法

摘要: 相比二叉树的遍历,二叉树的迭代器实现不那么容易,我们不能直接将递归遍历转换为迭代器。究其原因,这是因为二叉树递归遍历过程是编译器在调用栈上自动进行的,程序员对这个过程缺乏足够的控制。既然如此,那么我们如果可以自己来控制整个调用栈的进栈和出栈不是就达到控制的目的了吗?阅读全文
posted @ 2013-06-30 00:01 Todd Wei 阅读(1818) 评论(2) 编辑

垃圾回收机制的优缺点 (On GC Trade-off)

摘要: By taking control over the large part of memory management, GC brings both convenience and inconvenience to programmers, "no need to care" also means "loss of control". In languages with GC, programmers have no way to recycle a large memory immediately, you can reset all references to the object, you can call GC.collect() to notify the GC to work, but there's no guarantee that the memory will be recycled immediately.阅读全文
posted @ 2013-06-15 22:31 Todd Wei 阅读(1169) 评论(0) 编辑

TF-IDF模型的概率解释

摘要: TF-IDF模型是搜索引擎中广泛使用的信息检索模型,但对于TF-IDF模型一直存在各种疑问。本文为信息检索问题一种基于条件概率的盒子小球模型,其核心思想是把“查询串q和文档d的匹配度问题”转化为“查询串q来自于文档d的条件概率问题”。它从概率的视角为信息检索问题定义了比TF-IDF模型所表达的匹配度更为清晰的目标。从概率模型中,我们看到查询串q来自于文档d的条件概率主要包含以下几个因素:1) 文档的先验概率P(d[i]),这与PageRank对应;2) 词w被作为搜索关键词的先验概率P(w),这可以通过统计方法获得;3) 关键词w代表文档d主题,或以词w搜索文档d的概率,P(w | d),除了统计方法,这可以通过tf-idf来计算。阅读全文
posted @ 2012-10-22 09:04 Todd Wei 阅读(4034) 评论(1) 编辑
仅列出标题  下一页

公告

统计