`
Lich_Ray
  • 浏览: 163344 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论
文章列表
引用本文以 lichray 设计的 S-dict(t) 配置文件解析器为例,简单介绍了词法分析器的原理,详细讲述了递归下降语法分析器手工构造方法。因为该项目本身已经完成,故此本文拥有一个实际可用的例子,是不可多得的入门教程。 引用T1 大人说过,技术的迅速贬值是十分残酷的,比如大部分的手工优化代码,早已被编译器们代劳。这篇文章中要说的递归下降语法分析方法也是严重贬值了的技术之一。不过我认为,在享受着别人构造的自动化工具同时,知道其原理还是很重要的。一个典型的例子就是正则表达式——大家都会用,能保证写对的人也很多,但看了专家们的解答后都自愧不如——原因很简单:你会写正则表达式的编译器吗? 不过这篇 ...
引用这是最终确定的 JavaScript 基于消息传递编程风格的文章“OOP 诡异教程(上)”的下篇,它的 Python 改写版本就是 尝试用Python实现消息传递编程风格。原文地址:(豆瓣:http://www.douban.com/group/topic/1669427/ 博客:http://let-in.blogspot.com/2007/06/oop.html)。原来的想法是以风格开头,谈到 JavaScript 的内部机制,但作者 lichray 迟迟没有动键盘,认为不如利用已有的风格做一套机制出来,这样可能更有意义。于是,就有了这个更加“诡异”的下篇,展示了一个更加“诡异”的招数。 ...
引用上个学期末学校开展“读书月”活动,然后我冒“天下”之大不讳写了这篇文章,现转发在此。 最近我在读一本似乎和编程没太大关系的计算机书籍,叫《ACM图灵奖演讲集 - 前20年》(以下简称《ACM演讲集》)。这本书收 ...
文章中用纯文本制作的图不可使用等宽字体显示。请进入论坛查看本文,文中错误参考回帖,谢谢。 引用 在 函数式编程语言曲高和寡? 一文中,我们看到 Haskell 能用两行代码 sort [] = [] sort (x:xs) = sort [y | y <- xs, y < x] ++ [x] ++ sort [y | y <- xs, y >= x] 搞定快速排序算法。这是偶然,还是必然?在这篇文章中,lichray 用我们所熟悉的 Python 语言,几行代码搞定很多学编程几年的人都只是一知半解的算法——八皇后问题,展示和上篇文章中的快速排序一样清晰的、令人耳 ...
引用本文对刚刚在网络上现身的 JavaScript 函数式编程库 functional.js 进行详尽的解读(地址已更正,感谢 hax)。 functional.js 是模仿 Haskell 语言标准库 Prelude 制作的函数式编程库,主要实现了: 扩展的克里化函数 运算符函数化 紧缩的匿名函数语法 无须指定参数的匿名函数语法 函数向导语法 基本的通用列表操作 部分扩展基于对象化 其中,扩展语法由字符串表示。未能实现的特性有: 尾递归优化 模式匹配(包括参数匹配、列表匹配、情况分析) 惰性运算(包括无穷列表) 列表领悟 扩展绑定、同时绑定 其它列表操作(以及 ...
引用 看到作者 lichray 忙于研究数理逻辑,其父发出了由衷的感叹:你学的东西没人用啊。“谁说没人用?自己看不懂罢了。Haskell 的语法是‘写意’了点,但其中的思想清澈见底。” 引用 本文以一个函数式风格的快速排序算法为例,把它从 Haskell 代码改写为 大家所熟知的 JavaScript 代码,试图说明 FP 绝对是表达思想的最强工具。不要被那些 FP 语言们的语法所迷惑。终有一天,你会发现,原来这才是编程啊。 下面是一个 Haskell 写的快速排序算法,一共四行(想想学校里教的一般是多少行~): qsort [] = [] qsort (x:xs) = qsort ...
今天布置的家庭作业还真是烦人!做完《数学之友》上“统计案例”一章所有习题。我的妈呀,算什么卡方、线性回归,公式繁琐地要命,按计算器都能把人按死。还是让电脑帮我做吧。 不用什么 GNUplot、Mathematica,俺用 Haskell,自己动手,丰衣足食! 一. 独立性检验 卡方就是一个公式: kaf a b c d = ((sqr ((a * d) - (b * c))) * (a + b + c + d)) / ((a + b) * (c + d) * (a + c) * (d + b)) -- sqr 函数是用来求一个数的平方的,再实现一下: sqr n = ...
引用lichray 将用几天的时间写完本文系列文章的全部,剩下的文章将会发布在新建的 函数式编程の道 圈子上。这些文章将并非是从编译原理的角度来探讨函数式编程语言的文章。本文只会浅尝辄止地覆盖函数式编程语言的编译、解释优化手段,并试图让大家相信:使用函数式编程语言/风格,获得的只是表达能力上的大幅提升,而程序性能几乎不会下降。 PS: 文章中部分内容可以在《现代编译原理》这本书中找到。 一. 内存分配优化 1. 高阶函数 * 针对不纯的函数式编程语言: 不纯的函数式编程语言其实也就是比普通的命令式语言多了这个高阶函数罢了,但性能会造成下降:因为函数必须能具有普通变量的可操作性,比如作参数 ...
!我的圈子函数式编程の道已经建立,对 FP 感兴趣的人可以加入,共同探讨这一古老的新事物! 引用写在前面的话:Scheme、函数式编程(FP) 已入门者无须阅读。 这是我很久以前在自己写的一篇文章,现在又拿出来,是为了在 Java ...
本文以 JavaScript 语言为例,介绍了无类面向对象语言中实现各种面向对象概念的方法。值得注意的是,下面所说的并非“奇技淫巧”,其中的大部分都是计算机科学家们在设计无类语言时就已经确立了的模式,少部分是我借鉴其 ...
引用本文作者还是那个无名小辈 lichray。他在考查了一些语言和历史之后,觉得有必要谈一谈自己对面向对象思想的一些诡异的想法。文中会提到许多编程语言,不过当然了,重点在于思想,文章不是用来推销语言的。 面向对象编程思想的提出已经不是几年而是几十年了,考查其思想的变化,一方面是对现有语言的一些评判,另一方面,也算是对前辈计算机科学家的缅怀。 ——题记 Kristen Nygaard在1962年发明的 Simula 语言现在被认同为世界上第一种明确实现面向对象编程中某些“必要”元素(比如 class)的语言。Simula 是从 Algol 发展来的,可以说,是一种增加了 class 这个数据类 ...
引用本文站在一个难以名状的角度上研究了 Python 语言中消息发送的编程风格。原文是使用 JavaScript 描述的。文章作者 lichray 只把文章的上篇改成了 Python,因为下篇对于 Python 来说是没有意义的。lichray 是个 ECMAScript 的狂热追随者 ...
Global site tag (gtag.js) - Google Analytics