2012年2月23日

Mesos安装详解(RedHat 6.1)

摘要: Apache Mesos是一个集群管理器,提供了有效的、跨分布式应用或框架的资源隔离和共享,可以运行Hadoop、MPI、Hypertable、Spark。系统准备:g++ 4.1 or higer安装命令:sudo yum install gcc-c++Python 2.6 (for the Mesos web UI).系统一般自带。Python 2.6 developer packages安装命令:yum install python-develcppunit (for building zookeeper)安装命令: sudo yum install cppunit-develJava 阅读全文
posted @ 2012-02-23 18:43 lisperl 阅读(8580) 评论(25) 推荐(3) 编辑
2011年11月23日

浅析函数式编程与命令式编程的区别(三)风格的区别

摘要: 程序设计语言有很多种风格。传统的命令式语言比如:Fortran C和Pascal都是面向过程的,它们主要的程序设计单元是过程。它们采用一种自顶向下的编程风格:一个程序的目的是完成这七件事,那么我就把它分成七个主要的子例程。第一个子例程要做这四件事,所以它将进一步细分成它自己的四个子例程”,如此这般。这一过程持续到整个程序被细分到合适的粒度每一部分都足够大可以做一些实际的事情,但也足够小到可以作为一个基本单元来理解。 现代的命令式语言比如:C++ Java和C#则是面向对象的,它们将对象作为程序的基本单元,将程序和数据封装其中,通过对象的之间的协作来解决问题。面向过程和面向对象是命令式语言... 阅读全文
posted @ 2011-11-23 16:06 lisperl 阅读(7571) 评论(10) 推荐(8) 编辑
2011年11月22日

浅析函数式编程与命令式编程的区别(二)设计的区别

摘要: 命令式语言之间的高度类似的部分来自于他们共同的设计基础之一:冯诺依曼体系结构。我们可以整体地将命令式语言视为在Fortran 的基本模式上的发展。所有的命令式语言都被设计来高效地使用冯诺依曼体系结构的计算机。实际上,最初的命令式语言的目的就是取代汇编语言,对机器指令进行进一步抽象。因此,命令式语言带有强烈的硬件结构特征。命令式语言的核心特性有:模拟存储单元的变量、基于传输操作的赋值语句,以及迭代形式的循环运算。命令式语言的基础是语句(特别是赋值),它们通过修改存储器的值而产生副作用(side effect)的方式去影响后续的计算。 函数式语言设计的基础是数学函数,函数式程序设计把程序的输... 阅读全文
posted @ 2011-11-22 16:37 lisperl 阅读(5132) 评论(16) 推荐(6) 编辑
2011年11月21日

浅析函数式编程与命令式编程的区别(一)计算模型的区别

摘要: 讨论之前,这里先对概念进行一下界定。这里的命令式编程语言泛指所有把修改变量的值当作最基本计算方式的语言,函数式编程语言指把一个程序的输出定义为其输入的数学函数的语言,纯函数式编程没有内部状态的概念,也没有副作用。 要理解各种程序设计模型之间的不同,先考虑一下它们各自所基于的计算模型会有所帮助。命令式和函数式模型是从数学家图灵、丘奇、克林、波斯特等人在20世纪30年代所做工作的基础上成长起来的。这些先驱者分别基于自动机、符号操作、递归函数、和组合学开发出了几种差异巨大的形式化模型。现在人们已经证明这些不同的理论具有相同能力:任何一种模型里可以计算的东西,在另一种模型里也能计算。这些形式化模... 阅读全文
posted @ 2011-11-21 16:18 lisperl 阅读(7162) 评论(20) 推荐(6) 编辑
2011年11月20日

编程语言范式

摘要: 许多现存的编程语言都可基于其计算模型加以分类,归入某些语言族,或者属于某种编程范式。按照不同的规则,可以有多种分类的方法,而且不同的学者对某些语言的具体归属也有不同的意见。这里我们给出一种语言谱系:说明式(Declarative) 函数式 Lisp,ML,Haskell 数据流 ld,Val 逻辑式 Prolog 基于模板的 XSLT命令式(Imperative) 冯诺依曼 C,Ada,Fortran 脚本式 Perl,Python,PHP 面向对象 Smalltalk,C++,Java 值得注意的是这里并没有列出所有的编程范式,因为有些编程范式并不能按以上的方法进行分类,比如... 阅读全文
posted @ 2011-11-20 15:20 lisperl 阅读(7810) 评论(6) 推荐(5) 编辑

Linux 内核源代码的几个C语言技巧

摘要: 1.#define中使用do{statement}while(0) 保证statement无论在何处都能正确执行一次2.将链表操作抽象出来,与宿主结果相互独立。所有的链表操作都作用与list_head,然后通过宏 #define list_entry(ptr, type, member) container_of(ptr, type, member)获取宿主结构的地址.container_of定义:#define container_of(ptr, type, member) ({ \ const typeof(((type *)0)->member) *__mptr = (ptr); 阅读全文
posted @ 2011-11-20 10:52 lisperl 阅读(3107) 评论(0) 推荐(4) 编辑
2011年11月18日

图灵等价和图灵完备

摘要: 经常在讲编程语言的书或文章里面看到图灵等价(Turing equivalence)和图灵完备(Turing completeness),但却不知道这两个词的精确含义和区别。尤其是很多书或文章经常对这两个词进行混用,我就很疑惑这两个词是不是就是一个意思。我用Google搜索了一下,很遗憾的是中文结果基本没用,只有一篇百度空间里面转载的一个外国人写的文章,还是全英文的,简单看了下感觉写得不怎么清楚,就查了下英文维基百科。言归正传,下面先看看维基百科的两段话: Incomputability theory, a system of data-manipulation rules (such a... 阅读全文
posted @ 2011-11-18 19:49 lisperl 阅读(7888) 评论(8) 推荐(6) 编辑

千难万难启动最难系列(三)

摘要: 前一篇介绍了NT 5.x的启动过程,本篇将介绍NT 6.x(Windows Vista or Windows 7)的启动过程。下面首先介绍启动涉及的一些组件:下面介绍具体的启动过程:物理磁盘是按扇区(sector)的单元来寻址的,通常情况下,一个硬盘扇区的大小为512B。硬盘的第一个扇区的数据被称为主引导记录(MBR)。MBR包含了固定数量的空间,其中可执行的指令(引导代码)和一章表(分区表)。分区表有4个表项,分别记录了该磁盘的主分区的信息。BIOS 加载MBR到内存,开始执行MBR的执行代码。MBR的代码开始扫描主分区表,直到一个可引导分区(就是所谓的活动分区)。这种分区被Windows称 阅读全文
posted @ 2011-11-18 14:19 lisperl 阅读(2271) 评论(0) 推荐(2) 编辑
2011年11月17日

千难万难启动最难系列(二)

摘要: 从MBR到登录(NT 5.x 篇) 上一篇文章介绍了从计算机通电到BIOS加载MBR的过程。从MBR开始各种系统不同,从这篇起分别介绍各种系统的详细过程。 本篇文章主要介绍NT 5.x(Windows XP)的启动过程。 下面先介绍启动过程设计的组件: 下面开始介绍具体过程: 物理磁盘是按扇区(sector)的单元来寻址的,通常情况下,一个硬盘扇区的大小为512B。硬盘的第一个扇区的数据被称为主引导记录(MBR)。MBR包含了固定数量的空间,其中可执行的指令(引导代码)和一章表(分区表)。分区表有4个表项,分别记录了该磁盘的主分区的信息。BIOS 加载MBR到内存,开始执行M... 阅读全文
posted @ 2011-11-17 22:21 lisperl 阅读(956) 评论(0) 推荐(3) 编辑

永不过时的Lisp

摘要: 有人认为Lisp是世界上最强大的编程语言,现在的编程语言正在向Lisp进化。有人可能会觉得奇怪,为什么计算机发展了几十年,编程语言的水平还不如一个1958年的Lisp?其实原因很简单,Lisp的设计者根本就没有打算Lisp设计成编程语言,至少不是我们现在意义上的编程语言。Lisp之父麦卡锡当年设计Lisp的目的在于用更简单的方式定义图灵机。Lisp也确实比图灵机表达起来更简洁。当1958年年底,麦卡锡的一个学生拉塞尔要把Lisp实现的时候,麦卡锡还告诉别把理论和实践混淆。由此也就得出为什么Lisp到现在还没有过时的原因了。因为这个种语言本质上是数学,而数学是不会过时的。 Fortran语... 阅读全文
posted @ 2011-11-17 18:24 lisperl 阅读(1455) 评论(4) 推荐(2) 编辑

千难万难启动最难系列(一)

摘要: 从电源键到MBR这是一个详细介绍计算机启动过程系列文章,本篇文章主要介绍从按下电源键到BIOS加载MBR的过程。第一步我们在按下启动键时,首先启动的应是电源(因为如果没有电源供电,那么主板上所有的配件都是无法工作的)。但是为了保证安全使用,电源部分采取了一系列安全保护措施;因此开关电源从起振到稳定之间会有一段时间的延迟,等待各组电压都稳定下来后,电源各部分会输出一个检测信号,这个信号为高电平时表示该部分电压正常,这些部分包括输入电压和各组输出电压。这些信号总和的结果就是一个POWER GOOD信号(也称为POWER OK或PWR OK信号);如果主板接受不到这个信号,那么时钟芯片会持续向CPU 阅读全文
posted @ 2011-11-17 17:39 lisperl 阅读(1606) 评论(5) 推荐(6) 编辑
2011年11月15日

Lisp初探

摘要: 一直以来都想学习Lisp,之前也尝试过几次,可是就是没有真正坚持下来,这次算是勉强学习了一遍,对Lisp的诸多特性有了一个初步的认识。 这次学习Lisp看的书是《实用Common Lisp 编程》,用的IDE是书上推荐的Lispbox。Lispbox其实就是一个配置好的Emacs,加入几个专门学习Common Lisp的插件。之前学习过Elisp,就是GNU Emacs Lisp,是Emacs的扩展语言,也是Lisp的一个方言,与Common Lisp还是有诸多不同。 Lisp是人类历史上第二个高级语言(第一个是Fortran),由人工智能之父麦卡锡于1958年发明。最初Lisp用于符... 阅读全文
posted @ 2011-11-15 15:38 lisperl 阅读(1224) 评论(0) 推荐(0) 编辑