Ruby,一门简单又华丽的语言

一提到ruby大家就会条件反射似地想起rails,似乎ruby只有一个用途,就是rails。虽然我没写过rails,但我以为ruby语言本身的魅力远远超过rails这个第三方框架。这是一门值得细细品味的语言,与这门语言同样值得品味的还有一本叫《Metaprogramming Ruby》的书。下面是摘自此书的一段话。

The Great Unified Theory “The Ruby object model is a beautiful place,”
Bill notes, with a dreamy expression on his face. “There are classes,
eigenclasses, and modules. There are instance methods, class methods,
and Singleton Methods.” At first glance, it all looks very complex.
Look closer, and the complexity fades away. If you put eigenclasses
together with regular classes and modules, you end up with the seven
rules of the Ruby object model:
1. There is only one kind of object—be it a regular object or a module. ?2. There is only one kind of module—be it a regular module, a
class, an eigenclass, or a proxy class.
3. There is only one kind of method, and it lives in a module—most often in a class.
4. Every object, classes included, has its own “real class,” be it a regular class or an eigenclass.
5. Every class has exactly one superclass, with the exception of BasicObject, which has none. This means you have a single ancestors
chain from any class up to BasicObject.
6. The superclass of the eigenclass of an object is the object’s class. The superclass of the eigenclass of a class is the eigenclass
of the class’s superclass. (Try repeating that three times, fast! Then
look back at Figure 4.5, on the preceding page, and it will all make
sense.)
7. When you call a method, Ruby goes “right” in the receiver’s real class and then “up” the ancestors chain. That’s all there is to know
about the way Ruby finds methods.

当我读到这段话的时候我简直要疯了。用七条原则就可以对一门语言下定义,试问还有哪门语言做得到(至少就我学过的语言来说还没有第二门)。简洁本身就是一种美,ruby又在其简洁的逻辑假设基础上,衍生出复杂多变的特性来,简直可以用华丽来形容。其实很多庞杂的理论体系都是从几条平淡无奇的假设演绎出来的。
我希望能循由这七条线索,与大家一起品位ruby这门简洁而又华丽的语言。

时间: 2024-11-05 08:41:59

Ruby,一门简单又华丽的语言的相关文章

Ruby(面向对象程序设计的脚本语言)入门

Ruby是一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言. 简介 Ruby 是开源的,在Web上免费提供,但需要一个许可证. Ruby 是一种通用的.解释的编程语言. Ruby 是一种真正的面向对象编程语言. Ruby 是一种类似于 Python 和 Perl 的服务器端脚本语言. Ruby 可以用来编写通用网关接口(CGI)脚本. Ruby 可以被嵌入到超文本标记语言(HTML). Ruby 语法简单,这使得新的开发人员能够快速轻松地学习 Ruby. Ruby 与 C++ 和

51系列小型操作系统精髓 简单实现8 C语言版待改进

使用keil4  ,代码Code Optimization:0   运行OK 可运行8个任务 Program Size: data=21.0 xdata=0 code=401  (包括2个示例变量,未优化) 任务从中断处切换,在定时时间到后从定时中断中切换回来. 待改进地方 1.手动优化汇编程序 2. 重入问题 3.参数进函数和时中断的保护问题 #include "STC12C5A.H" #define TIMER_RELOAD()  {TL0=0x00;TH0=0xC4;}//使能T

51系列小型操作系统精髓 简单实现11 C语言版优化后说明(有图)

/* CRTOS 实时可剥夺型内核 1.任务不用预加载,不用预定义.任务调用时加载,可删除(退出死循环即可) 2.单位轮转查询时间由晶振和定时器初始化决定.在这里为10ms 3.定时时间为[ time*单位轮转查询时间 ] ,其中time为 rtos_wait(time)中time. 4.可运行多个任务[自定义] 5.任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回来,任务执行后,回到中断,再从中断回到主程序. */ #include "STC12C5A.H" #d

51系列小型操作系统精髓 简单实现7 C语言版待改进

#include "STC12C5A.H" #define TIMER_RELOAD()  {TL0=0x00;TH0=0xC4;}//使能T/C  初始10ms #define MAX_TASKS 2 //任务槽最大个数. unsigned char idata task_stack[MAX_TASKS][2];//任务堆栈.  PC指针为16位,需2个字节task_stack[][0]L  task_stack[][1]H. unsigned char idata task_tim

51系列小型操作系统精髓 简单实现10 C语言版优化后发布(有图)

4个任务 /* 使用keil4 可运行8个任务 任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回来. */ #include "STC12C5A.H" #define TIMER_RELOAD() {TL0=0x00;TH0=0xC4;}//使能T/C 初始10ms #define MAX_TASKS 8 //任务槽最大个数. unsigned char idata task_stack[MAX_TASKS][2];//任务堆栈. PC指针为16位,需2个字节tas

排序(2)---------简单插入排序(C语言实现)

插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间. 通俗解释: ①假设初始序列的第一个元素是有序的(当一个序列只有1个元素时,我们可以认为其是有序的). ②从第二个元素开始与前面的元素进行比较,如果比前面的大

51系列小型操作系统精髓 简单实现12 C语言版加保护参数

/* CRTOS 实时可剥夺型内核 1.任务不用预加载,不用预定义.任务调用时加载,可删除(退出死循环即可) 2.单位轮转查询时间由晶振和定时器初始化决定.在这里为10ms 3.定时时间为[ time*单位轮转查询时间 ] ,其中time为 rtos_wait(time)中time. 4.可运行多个任务[自定义] 5.任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回来,任务执行后,回到中断,再从中断回到主程序. */ #include "STC12C5A.H" #d

51系列小型操作系统精髓 简单实现6 C语言版待改进

#include "STC12C5A.H" #define TIMER_RELOAD()  {TL0=0x00;TH0=0xC4;}//使能T/C  初始10ms #define MAX_TASKS 8 //任务槽最大个数. unsigned char idata task_stack[MAX_TASKS][2];//任务堆栈.  PC指针为16位,需2个字节. unsigned char idata task_time[MAX_TASKS]; //定时时间 unsigned char

51系列小型操作系统精髓 简单实现9 C语言版优化后发布(有图)

Program Size: data=20.0 xdata=0 code=360 creating hex file from "WK1C_T"... "WK1C_T" - 0 Error(s), 0 Warning(s). /* 使用keil4 可运行8个任务 任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回来. */ #include "STC12C5A.H" #define TIMER_RELOAD() {TL0=0x0