- 浏览: 94880 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
loveduck2005:
很实用的帖子,对我很有帮助,感谢楼主!!
发现价值(2) ---无限的网络资源 -
JimyChen:
非常好啊,thank you
发现价值(2) ---无限的网络资源 -
jeffchen:
看一下能评论吗
用JAVA操作ClearCase
我不打算浪费时间来谈论Ruby的历史,如果你没有听说过它,你可以去它的主页看看www.ruby-lang.org,或者去它的新闻组comp.lang.ruby。如果你知道Ruby,我将讲述我为什么会喜爱它。
1. 它是面向对象的。这表示什么意义呢?如果问10个程序员,你也许会得到12种结果,你有你的看法,我不会试图去改变你的看法。但是有一点,Ruby提供了对数据和方法的封装,允许类的继承,对象的多态。不像其它语言(C++,Perl等),Ruby从设计的时候开始就是一种面向对象的语言。
2. 它是纯面向对象的语言。难道是我多余?不是这样的,之所以这么说,因为Ruby中一切都是对象,包括原始数据类型(primitive data types),比如字符串,整型,都表示的是一个对象,而不需要Java那样提供包装类(wrapper classes)。另外,甚至是常量,也会被当作对象来处理,所以一个方法的接收者,可以是一个数字常量。
3. 它是动态语言。对于只熟悉像C++,Java这样静态语言的人来说,这是一个重大的概念上的差别。动态意味着方法和变量可以在运行时候添加和重定义。它减少了像C语言那样的条件编译(#ifdef),而且容易实现反射API(reflection API)。动态性使得程序能自我感知(self-aware),比如运行时类型信息,检测丢失的方法,用来检测增加方法的钩子等。在这些方面Ruby和 Lisp和Smalltalk都有一些关系。
4. 它是一种解释执行的语言。这是一个负杂的问题,值得重点解释一下,也许这个特点会因为性能的原因而引起从优点变为缺点的争论。对于此,我有几点见解:1. 第一:快速开发循环是一个巨大的好处,这要得意于Ruby的解释执行。2.多慢才叫慢呢?在说它慢之前先定一个慢的基准。3.也许有人要批评我了,但我还要说:处理器每年都在变得原来越快。4.如果你真的很在意你的速度,你可以用C开发一部分你的代码。5.最后,从某种意义上说,这是一个还在争论中的问题,没有一个语言天生就是解释型的,世界上没有哪个法律进制开发一个Ruby编译器出来。
5. 它理解正则表达式。很多年之前,正则表达式只是用在UNIX的工具如grep或者sed中,或者在vi中进行一些一定的查找-替换等。Perl的出现解决了这些问题,而现在,Ruby同样也能做到这些。越来越多得人认识到了这种字符串和文本处理技术的难以置信的能力,如果你对此表示怀疑,那么请去看一下 Jeffrey Friedl的书Mastering Regular Expressions,然后,你就应该不会有什么怀疑了。
6. 它是多平台的。 Ruby可以运行在Linux,UNIX,Windows,BeOS?,甚至MS-DOS。如果我没记错,甚至还有一个Amiga 版本的
7. 它是派生来的。这是一件好事情吗?抛去书本上的知识,它是有用的。牛顿曾说过“我如果看得比别人远,那是因为我站在巨人的肩膀上”。Ruby同样也是站在巨人的肩膀上,它借鉴了Smalltalk, CLU, Lisp, C, C++, Perl, Kornshell等的优点。在我看来它的原则包括:1.不要重复制造轮子。2.不要修补没有损坏的东西。3.最后一个也是比较特别的,它能平衡(Leverage )你已有的知识。你了解UNIX的文件和管道,没关系,你可以在Ruby中继续用,你用了两年的时间学习了printf 指示符,不必担心,Ruby中你也可以使用printf。你知道Perl的正则表达式处理,那么你也就学会了Ruby中的正则表达式。
8. 它是创新的。是不是觉得这个和第七条矛盾了?也许是有一部分矛盾,每个硬币都有两面。一些Ruby的特点都是创新的东西,比如非常有用的Mix-in,也许这个特点会被后来的语言借鉴。(注:一位读者指出Lisp早在1979年就有mix-in了,这是我的疏忽;我应该找个更好的例子,并且能确信它。)
9. 它是非常高层次的语言。(Very High-Level Language :VHLL) 这是一个容易引起争论的话题,因为这个术语还没有广泛使用。而且它的意思比起OOP来说还是有讨论余地的。我这么说,指的是Ruby能支持复杂的结构和这些结构的负杂的操作,而需要的指令非常少,这与最小努力原则(Principle of Least Effort)一致。
10. 它有一个灵巧的垃圾收集器。 像malloc和free 这样的例程已经是昨天的恶梦了,你不需要什么回收内存的操作,甚至是调用垃圾收集器。
11. 它是脚本语言。 不要因为此就认为它不够强大,它不是一个玩具。它是完全成熟的语言,用它能轻松的完成传统的脚本操作,比如运行外部程序,检查系统资源,使用管道,捕获输出等等。
12. 它是通用的。 Kornshell做的东西它也可以做,C语言做的东西它也可以做的很好。你可以用它写一个只运行一次的只有10行的程序,或者对一些遗留程序进行包装,你想写个web server,或者一个CGI,都可以用Ruby来写。
13. 它是多线程的。 Y你可以用一些简单的API来写多线程程序,甚至在MS-DOS上都可以。
14. 它是open source的。 你想看它的源代码吗?可以,你也可以提交补丁,参加广泛的社区,包括它的创造者。
15. 它是值觉得。 Ruby的学习曲线比较低,而如果你翻过了一个坎,你开始“猜测”事情是怎么工作的,而且你的猜测很多时候都是正确的。Ruby坚持最小惊讶( Least Astonishment)的原则。
16. 它有异常机制。 像Java和 C++一样, Ruby 中也有异常机制,这意味着你不必因为返回值而将代码弄得凌乱不堪,很少的嵌套if语句,很少的意大利面条似的逻辑,更好的错误处理。
17. 它有一个高级的数组类:Array。 Ruby中数组都是动态的,你不必像pascal那样在声明它的大小,也不必像C,C++那样为它分配内存。它们是对象,所以你不必关心它们的长度,实际上你不能"走到末尾(walk off the end)"。这个类提供了各种方法,使得你能够根据索引,根据元素来访问数组内容,也可以反向处理数组。你也可以用数作作为set,队列,堆栈等。如果你想用查找表,可以用哈希结构。
18. 它是可以扩展的。 你可以用C或者Ruby来编写外部库(external libraries),同样,你也可以修改已有的类和对象。
19. 鼓励文档编程(literate programming)。 你可以在Ruby程序中嵌入注释或者文档,这些文档可以用Ruby的文档工具提取和处理。(真正的文档编程者可能认为这是必须的基本东西吧)
20. 创造性的使用标点符号和大写字母。比如一个方法返回一个boolean型(Ruby中并没有这种说法),那么一般这个方法最后都以问号结尾,如果一个方法要修改接收者本身,或者具有破坏性,则用一个感叹号结尾,简单,直觉。所有常量,包括类名,都以大写字母开头,所有对象属性以@符号开头。这有匈牙利命名法的实用性,但是没有视觉上的丑陋性。
21. Reserved words aren't.It's perfectly allowable to use an identifier that is a so-called "reserved word" as long as the parser doesn't perceive an amibiguity. This is a breath of fresh air.
22. 支持迭代器。 这使得你可以给一个数组,list,tree等对象传递一个块,然后对它们的每个元素进行block调用。这个技术值得深入学习。
23. 它的安全性。 Ruby借鉴了Perl中基于$SAFE变量的分层控制机制 。这对于CGI程序来说非常有用,可以防止人们攻击web服务器。
24. Ruby中没有指针。 像 Java一样,和C++不同,Ruby中没有指针的概念,所以免除了关于指针语法和调试的头疼。当然,这也意味着最底层的程序开发将会很困难,比如访问一个设备的控制状态寄存器;但是,我们可以用一个C库来调用。(像C语言程序员有时候要使用汇编语言一样,Ruby程序员有时候也要使用C语言来完成一定的任务)
25. 它使得人们专注于细节。 Ruby中有很多同义词和别名,你也许不记得字符串或数组的长度是size还是length,没关系,它们任何一个都可以工作。对于Range来说,你可以使用begin 和end 或者使用 first 和 last,它们也都工作。你想拼写indices,结果写成了indexes,没关系,这两个都一样。
26. 非常灵活的语法。 方法调用时候括号可以省略,参数之间只需用逗号分割。类似Perl风格的数组定义可以让你不用全部使用引号和逗号定义一个字符串的数组。关键字return可以生路。
27. 丰富的库函数。 Ruby提供了线程,socket,有限对象持久化,CGI,服务器端可执行的,数据库等其它库函数,还有对Tk的支持等。还有很多其它的库函数。
28. 本身自带调试器(debugger)。 在完美的世界中,我们才不需要调试器,但是这个世界不是完美的。
29. 交互式执行。 可以用Ruby像Kornshell那样执行。 (这可能是本页最具争论的一点,我不得不承认,Ruby真的不是一个很好的shell。但我仍然坚持,基于Ruby的shell是一个不错的主意。)
30. 它是简明的。 不像Pascal那样要求if后面跟着then,while后面跟着do 。变量不需要声明,它们不需要类型。返回类型不必指定,关键字return 可以省略,它将返回最后一个表达式的值。另一方面,它也不像Perl或者C那样复杂难懂。
31. 它是面向表达式的(expression-oriented)。 你可以轻易的使用 x = if a<0 then b else c 这样的表达式。
32. 语法砂糖(syntax sugar)。 (像Mary Poppins解释:一勺语法的糖能使语义被接受) 。如果你想对数组x进行迭代,可以用for a in x。你也可以用a+=b代替a=a+b,这都行。很多操作符其实在Ruby中都是方法,这些方法的名字比较直观,短小,有着便利的语法。
33. 它支持操作符重载。如果我没有记错的话,早在很久之前的SNOBOL就提供了这个功能,但是直到C++它才变得流行。虽然它可能乱用而出错,但是这仍是一个非常不错的优点。另外Ruby自动定义操作符的赋值版本,比如,如果你重定义了+,那么,你同时得到了一个+=操作符。
34. 支持无限精度的数字。 有人会关心 short, int, long吗,只需要使用 Bignum就行了,你可以轻松的实现365的阶乘。
35. 有幂操作符。在很久以前,我们在BASIC和FORTRAN中使用它,然而当我们学习Pascal和C之后,我们才认识到这个操作符有多差劲。(我们被告知自己连它是怎么工作的都不知道-它使用了对数,迭代了吗,效率如何?),但是,我们真的关系这些吗?如果是,我们可以重写这个方法,否则,Ruby有非常好的* *(星号之间无空格)操作符可以用。
36. 强大的字符串处理。 If如果你想查找,判断,格式化,trim,定界(delimit),interpose,tokenize,你可以自己选择随便用哪一个来得到你想要的结果。
37. 规则很少引起异常。 Ruby的语法和语义比其它语言有条理,每种语言都有独特的一面,每条规则都会有异常发生,但是Ruby规则引起的异常就少的多了。
发表评论
-
我的英文简历
2006-05-22 23:42 1004... -
一个项目经理的一些个人体会(转贴)
2006-05-31 15:51 830本人做项目经理工作多年,感到做这个工作最要紧的就是要明白什么是 ... -
一个研究生毕业以后的人生规划(ZT)
2006-08-13 14:22 620我今年39岁了, 25岁研究生毕业,工作14年,回头看看, ... -
如何写好一份工程师简历
2006-09-02 17:28 848近三年 Google( ... -
最近想的(2)
2006-09-02 17:58 5571.如果我有压力的话,压力来自于自己。 2.在思 ... -
JAVA相关基础
2006-09-09 12:18 6231、面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主 ... -
深入理解abstract class和interface(转贴)
2006-09-09 20:54 620abstract class和interface是Ja ... -
关于子网掩码的计算
2006-09-11 09:23 827关于子网掩码计算- - ... -
开发人员如何成为架构师
2007-02-22 23:22 620很多架构师都是从 ... -
数字通讯基础:同步与异步
2007-04-13 13:31 696有两个方面的同步问题 ... -
华为最近的C语言笔试题
2007-04-25 13:18 964一、判断题(对的写T,错的写F并说明原因,每小题4分,共20分 ... -
为什么我们会失败
2007-04-27 00:00 6421、缺乏目标; ... -
看盘做短线的10种方法
2008-01-06 22:13 669现在把做短线的看盘方法总结后介绍给大家。需要说明的是: (1) ... -
Shell script 笔记
2008-01-07 15:48 10061.使脚本文件具有可执 ... -
FPGA and DSP introduction
2008-01-08 10:57 7831.DSP DSP芯片,也称数字 ... -
TCSH编程(2)
2008-01-09 18:33 1346条件测试 test命令 1,测试文件状态 表达方式: ... -
TCSH 编程(3)
2008-01-09 18:40 1318控制流结构 1, ... -
爱立信展望2008全球电信业5大趋势
2008-01-14 08:56 7662007年的电信业,充满变化与活力:移动、宽带用户继续增长,新 ... -
JAVAC 命令详解
2008-01-16 19:01 7096结构 javac [ options ] [ sour ... -
Junit中error和failure区别
2008-01-21 16:14 1802JUnit 中有两种错误类型,一个是 failure,另一个是 ...
相关推荐
一、理解 Ruby 及其特点 Ruby 是一种简单快捷的面向对象脚本语言,由日本人松本行弘(Yukihiro Matsumoto)在20世纪90年代开发。它的语法简洁易懂,让程序员能够快速编写高效的代码。Ruby 的灵感来源于 Perl、...
自从Rails框架问世后,Ruby一举成为了一个令不少人赞赏的编程语言。在这篇文章中,来自Merb与Rails核心开发团队的Yehuda Katz向我们分享了十大令人喜爱的Ruby语言特点。
本文将为您介绍Ruby的特点、优势、应用领域以及如何使用Ruby进行开发。 一、Ruby的特点与优势 1. 简洁而优雅:Ruby的设计哲学是"最小意外原则",即使代码易于阅读和编写。它使用简洁的语法和优美的表达方式,使得...
简要介绍Ruby的特点和主要用途。 2. Ruby中的变量声明和赋值规则是什么?请说明Ruby变量声明和赋值的语法。 3. Ruby中常用的数据类型有哪些?请列举几种常见的Ruby数据类型。 4. Ruby中如何进行条件判断和控制流程?...
Ruby语言 1 Grant Ren 1 第一部分 Ruby语言基础 8 第一章 Ruby语言概述 8 ...§1.3 Ruby的特点 8 §1.4 Ruby和Python的比较 9 第二章 Ruby编程环境 9 §2.1 Ruby的安装 9 §2.1.1 在Windows 95/98/Me/XP上安装Ruby 9
Ruby 的特点 面向对象:Ruby 是一种纯粹的面向对象编程语言,所有的东西都是对象,包括数字、字符串和基本运算符。 简洁明了:Ruby 的语法非常直观,易于学习。它鼓励使用简洁的表达方式,而不是冗长的代码。 动态...
关于ruby语言的一些基本知识,及该语言的特性。在该论文中,我们没有嵌套代码,只是定性说明该语言。
Ruby教程通常涵盖Ruby的基础语法、面向对象编程、Web开发框架以及实际应用等多个方面。... Ruby on Rails介绍:了解Ruby on Rails框架的基本概念和特点,掌握其在Web开发中的应用价值。 Rails环境搭建
本文将全面介绍Ruby编程语言的基本特点、应用场景、语法结构、常用库和框架,并通过具体实例展示Ruby的编程魅力。 Ruby作为一种优雅、灵活且强大的编程语言,在Web开发、脚本编写等领域具有广泛的应用前景。其简洁...
Ruby以其简洁优雅、动态性、面向对象和内置的丰富类库等特点而广受欢迎。 首先,Ruby的语法清晰易懂,采用了易于阅读的语法结构,使得代码可读性较高。这使得初学者能够更容易地掌握Ruby的核心概念和用法。 其次,...
第一部分 Ruby语言基础 第一章 Ruby语言概述 §1.1 Ruby的历史 §1.2 Ruby名字的由来 §1.3 Ruby的特点 §1.4 Ruby和Python的比较 。。。
特点: **面向对象:**Ruby 是一种面向对象的语言,允许程序员创建对象并使用它们来表示现实世界中的实体。 **动态:**Ruby 是一种动态语言,这意味着它的行为可以在运行时改变。例如,可以动态地添加或删除类的...
§1.3 Ruby的特点 8 §1.4 Ruby和Python的比较 9 第二章 Ruby编程环境 9 §2.1 Ruby的安装 9 §2.1.1 在Windows 95/98/Me/XP上安装Ruby 9 §2.1.2 在Linux上安装Ruby 10 §2.2 运行Ruby 10 §2.2.1 使用Ruby 10 §...
下面是 Ruby 的一些主要特点和特性: 1. **简洁而优雅**:Ruby 的语法简洁清晰,充分借鉴了 Perl、Smalltalk、Eiffel 等语言的优点,代码通常易于阅读和理解。 2. **面向对象**:Ruby 是一种纯粹的面向对象编程...
ruby 设计模式,针对ruby语言的特点对设计模式做了很好的阐述
Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。
从Ruby的介绍和特点开始,逐步介绍了如何安装Ruby、学习基本语法、动手实践和高级特性。博客还提供了Ruby的实际应用场景,如Web开发、数据处理和自动化测试。此外,博客还提供了学习资源和进阶建议,如官方文档、...
他将Ruby方法分成输入处理(Collecting Input)、功能实现(Performing Work)、输出 处理(Delivering Output)、失败处理(Handling Failures)四个部分,针对每个部分的特点归纳实用的编程模式,并配合丰富的实例...
目前看到很多资源都很老了,都是4.2版的,于是就决定发...特点:速度相对快点,生成的exe体积要小些,经尝试只有用exerb的mkexy功能才能生成一个完美的gui程序,exy文件中还可以设置图标、版本信息和改变文件的编码等。