Ruby-初印象

跟很多编程语言相比,Ruby是一名新秀了,加上Ruby生于日本,所以即使语言本身并无东亚文字的印记,但是资料还是相对较少。在接触Ruby的过程中,我感觉这门语言里拥有和许多脚本语言的印迹,觉得蛮有意思,所以摘录一些,算是一个笔记来。

 

动态类型

类似语言:Shell,AWK, PHP

应用说明:无需声明变量类型,根据变量/对象被赋值或构建的类型,即可进行引用。动态类型有一个有趣的名字:鸭子类型,听说是来自一句古代的熟语:““当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”。鸭子类型像是把静态类型语言中的RTTI工作完全内置到语言支持中了。在这一点上,Ruby和AWK都做得更彻底或者更灵活,它们会根据表达式中参与运算的操作数们的类型类确定最佳的数据类型,然后执行运算,而Shell则需要用特殊的形式($(()))来包裹一个表达式,PHP看到加号,就只把操作数解释为数字类型,如果遇到两个看起来不像数字的字符串变量相加时,便把不能转换的变量值统一解释为0。

 

引号内的表达式

类似语言:Shell,PHP

应用说明:#{variableor expression},不过,在Shell和PHP里面,最前面是$符号而不是#符号。和其它两位前辈一样,单引号里的表达式或转义字符得不到解释,比两位前辈不同的是,Ruby单引号和双引号还有可否插值之分,前者不能,而后者可以。另外,StackOverflow上还有人提到某些情况下,双引号字符串的使用在时间性能上比单引号要好一点,表示不解。

 

BEGIN块和END块

类似语言:AWK

应用说明:适用于任务执行前的全局初始化和任务执行后的清理或汇总显示工作。BEGIN 块中的代码在所有代码执行之前执行,Ruby 还允许设置多个 BEGIN / END块并按出现的顺序执行块中的代码,有一点需要注意,就是块中的左花括号要和BEGIN/ END关键字在同一行,否则会出现parse error。


超全局变量

类似语言:PHP

应用说明:如__FILE__(当前文件名),  __LINE__(当前执行语句在文件里的行号),这些变量的存在,能够方便地自动记录当前环境的属性。

 

多行字符串

类似语言:PHP

应用说明:在处理多行字符串又需要换行来提高可读性时,HEREDOC还是比较方便的。

 

缩进和语句结束符

类似语言:Python,Shell

应用说明:无需花括号,通过缩进来表达顺序和层次关系;无需分号,通过表达式之间的空白字符来确定一条语句,个人觉得,这个特性无所谓优劣。

 

注释标记符

类似语言:Shell

应用说明:虽然注释不影响程序的逻辑,但是我觉得以#号作为注释标记,使得Ruby和脚本语言看起来真的就是近亲。

 

可能也因为是后辈,Ruby才得以吸收借鉴众多前辈们的各种特性和风格。

然而,松本行弘Ruby,与其说是融合了各家语言的一些特性,不如说是怀着一种与前人完全不同的角度来审视人类和人类所造的自动化工具的关系,正如作者所说的:“我们需要从人的角度考虑问题,人们怎样编写程序或者怎样使用机器上应用程序。我们是主人,他们是仆人”。哈哈,果然日本连攻城狮的主仆观念要强烈一点。

至于松本行弘有没有真的重新审视这种关系,我想在以后学习和使用Ruby的过程中会慢慢有自己的体会。

 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值