瞎扯淡 提醒了我一下 Ruby 脚本语言的本质 -_-@

pokkalee · 2012年04月20日 · 最后由 chucai 回复于 2012年05月12日 · 4593 次阅读
1.9.2p290 :091 > class CaeReal2
1.9.2p290 :092?>   exit
1.9.2p290 :093?>   end

没有看明白。楼主什么意思?

匿名 #2 2012年05月11日

哪个语言社区没几个行艺术家

把这个写进项目里,那进程不就挂了?哈哈

除非是沙盒的受限环境,不然没语言能阻止这个吧........

找这么说,java 的本质:

class H {
  static {
     System.exit(1);
  }
}

不知道楼主啥意思,但是看楼上的回复,让我想起以前的一件事,调程序的时候发现了这么一个情况

irb(main):001:0> (4.1 - 0.1).to_i
=> 3

贴到群里,然后就有人冒出来说“ruby 竟然这样”,“惊天 bug 啊”之类的……

放到其他语言里,会是什么样呢?

js 里面的

>parseInt(4.1-0.1)
>3

java 的

public static void main(String[] args) {
   // TODO code application logic here
   System.out.println((int)(4.1 - 0.1));
}
----------
run
3

楼主的意思是 ruby 按行解释执行么?

楼上各位哥们轻拍 - -其实没想那么多,可能是当初发这个的时候没详情出标题起得太什么了... 原意只是说一下一次在 console 写东西时遇到的情况 要表达的意思大概和#8 楼 @tiemei 的差不多... 在控制台里敲一下大概就知道我本来想说啥了

class CaeReal2
  exit
end
class CaeReal
  def ex
    exit
  end
end

其实这个应该发在瞎扯谈里的 (0_0)|||

嗯,我敲了。我觉得楼主的意思是想说,按行执行,而不是关键字全局影响。

楼主其实说的是动态语言的本质

几乎所有语句都在运行时执行,而不同于静态语言

比如:定义变量,定义函数,定义 class 之类的,在 C 语言里由编译器执行。而在 ruby 里定义过程本身也是代码,也有返回值,都在运行时执行

我觉的楼主写的很好,解释语言的运行的本质。

#12 楼 @chucai 不是所有的解释语言都是动态语言,两者还是有区别的

匿名 #15 2012年05月11日

#14 楼 @chucai 我觉得还是你先说说有什么相同点吧

#14 楼 @chucai 不是一个层面的东西...解释型语言只是用解释器执行而已,并不一定拥有动态语言的特性,而有一些编译型的语言,却具有动态特性,比如 objective-c 具体请看 wiki ~ http://zh.wikipedia.org/wiki/%E5%8A%A8%E6%80%81%E8%AF%AD%E8%A8%80

#15 楼 @sharp 额,这个还真没有关注过:(

需要 登录 后方可回复, 如果你还没有账号请 注册新账号