论坛首页 编程语言技术论坛

ruby里面嵌入C代码

浏览 19562 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-07-29  
http://www.rubyinside.com/using-rubyinline-to-speed-up-code-by-10x-159.html

看看这个,真有意思,让我想起了什么?

Java6正在努力在代码里面直接嵌入和运行脚本语言;ruby也现在也可以直接嵌入C代码运行,语言的融合真的是很有意思。

BTW:推荐一下rubyinside网站,很不错。

最近不经意的看到n多国外的讨论ruby和rails的网站,有个感觉,在国外的技术社区,ruby和rails正在以惊人的速度普及和扩张,已经势不可挡。而且ruby还不像PHP那样,ruby是一个有非常深度的语言,我个人认为ruby取代Java和C#成为应用软件的主力开发语言已经是不可阻挡的趋势了,悬念只是时间多久而已。

其实有意思的是ruby的流行导致谁会受到最大的冲击?从公司来说,肯定是Microsoft,从个人来说是习惯在Windows平台做开发的人。因为ruby和rails是一个非常非常Unix-like的东西,太多对Unix平台的依赖以及对Unix的良好支持,而在Windows平台实在太多限制,甚至无法实现。导致开发人员最终不得不选择MacOSX或者ubuntu作为开发平台。

想起以前ozzzzzz说过,python是那些玩Unix老家伙的最爱,我现在到发现,那些以前在Unix上面玩PHP,玩Perl的,现在全部往ruby上面转了,这也难怪ruby社区现在声势这么浩大了。
   发表时间:2006-07-29  
不一定啊
ruby现在只能说其兴也速。
infoq上面最近几篇文章的comment(包括这个嵌入C的),还是很有意思的。
Bruce Tate的From java to ruby招致了最多的炮火.虽然Bruce Tate自己也说Ruby不适合于中间件。
0 请登录后投票
   发表时间:2006-07-29  
不错,这种语言级别的直接嵌入,确实比 Native Interface Wrapper (JNI) 那样方便多了。
这种 inline c code应该也能够用 include module 的方式引入。
c code is in one module of one file, ruby file is one file, which includes the c code module.
如果这么写,就不输于 .net 的多语言无缝集成。

c# 的 unmanaged scope,也能够直接引入inline c++ 代码,而且c# 也可以定义partial class, 类似于 module include。

不知道ruby的这种 inline c code是否能够应用c 语言的所有特性,比如 指针 等,类似于 c#。

---

ruby 对于 ms windows 平台可能有些冲击。正如linux 对 ms windows的冲击。
但是对于开发领域来说,ruby 对 ms 平台的语言应该冲击不大。使用windows开发平台的还是要用 ms 的 .net 。不会因为 unix 上某种语言的兴起,就放弃 windows 开发环境。
相反,作为 unix 上面的语言对于跨平台的,主要用于unix , linux 操作系统的 java 等语言,冲击比较大。
语言的竞争,应该是同一个操作系统平台上的竞争。跨操作系统的竞争,牵涉的领域就比较复杂。

ruby 的胜出,一个是依靠ruby 编程文化的扩展,最后获得 ibm 等大公司的助力,正如 java 的命运。

ruby 的语法,没的说,包罗万象。可以满足大多数优雅而快速的开发。有胜出的潜力。

不过,如果ruby 胜出,那么rails 的最后命运不会太妙。 java 的spring, webwork, hibnerate, ibatis 的开发资源都转向 ruby , 挟多年设计经验之威,应该能带入很多先进设计思想和实现。

rails 作为ruby web领域开山之祖,很像当年的struts + ejb。也许能够留存很久,并保持最大的用户群,如同现在的struts, 吞并新兴的webwork。

当然,也许对于动态语言来说,侵入性显得不那么重要。那么上述的关于rails的话,都是错误的。

不过,这个时候投入rails,确实是非常值得的选择。struts 独领风骚几年,这几年的独领风骚足够了。

我相信,javaeye各位老大的眼力和前瞻性。
到目前为止,成功案例,hibernate, ajax 的潮流都是从这里开始引导和发生。
以后也会一直发生。

javaeye作为java领域的知名论坛,robbin老大能够这么提倡ruby,可见不是心血来潮,而是真正感到了暴风雨的前夕。
0 请登录后投票
   发表时间:2006-07-29  
charon 写道
不一定啊
ruby现在只能说其兴也速。
infoq上面最近几篇文章的comment(包括这个嵌入C的),还是很有意思的。
Bruce Tate的From java to ruby招致了最多的炮火.虽然Bruce Tate自己也说Ruby不适合于中间件。


不知道,哪里能够找到 From java to ruby。
Ruby不适合于中间件,这个说法,挺有意思。

我也考虑过,动态语言的弱点。
不过,找了半天,只想到编译期类型安全问题,IDE代码提示,重构帮助。

中间件属于 组件 / 容器 结构的容器部分。
现在的容器实现,都提倡POJO的组件。属于松耦合的协议。
动态语言这方面具有优势。

动态语言的安全和权限问题,是否比编译语言难以控制。
好像也不是,vm 和 interpreter 的安全检查机制应该是大同小异,都属于运行期行为。而运行期行为来说,编译语言不具备优势。

编译语言的主要优势来自于编译步骤。
TDD, Agile, 正在消减人们对编译类型检查的依赖。
就看这个依赖是否能够消除,什么时候消除。
0 请登录后投票
   发表时间:2006-07-29  
charon 写道
Bruce Tate自己也说Ruby不适合于中间件。


最近有空的时候都在看ruby和rails,算稍微有些了解。

上面这句话很有意思,ruby确实不适合中间件,但是反过来,你也可以说,ruby不需要中间件。为什么呢?因为ruby应用特别是rails,强调使用SNA架构,需要状态管理的部分全部推到ruby以外,依赖操作系统提供的其他服务来解决了。

谈论ruby的时候,切记不要老拿Java的惯性思路来套ruby。这是两个不同的参照系,有着不同的运行规则。
0 请登录后投票
   发表时间:2006-07-29  
buaawhl 写道
不错,这种语言级别的直接嵌入,确实比 Native Interface Wrapper (JNI) 那样方便多了。
这种 inline c code应该也能够用 include module 的方式引入。
c code is in one module of one file, ruby file is one file, which includes the c code module.
如果这么写,就不输于 .net 的多语言无缝集成。

c# 的 unmanaged scope,也能够直接引入inline c++ 代码,而且c# 也可以定义partial class, 类似于 module include。

不知道ruby的这种 inline c code是否能够应用c 语言的所有特性,比如 指针 等,类似于 c#。

---

ruby 对于 ms windows 平台可能有些冲击。正如linux 对 ms windows的冲击。
但是对于开发领域来说,ruby 对 ms 平台的语言应该冲击不大。使用windows开发平台的还是要用 ms 的 .net 。不会因为 unix 上某种语言的兴起,就放弃 windows 开发环境。
相反,作为 unix 上面的语言对于跨平台的,主要用于unix , linux 操作系统的 java 等语言,冲击比较大。
语言的竞争,应该是同一个操作系统平台上的竞争。跨操作系统的竞争,牵涉的领域就比较复杂。

ruby 的胜出,一个是依靠ruby 编程文化的扩展,最后获得 ibm 等大公司的助力,正如 java 的命运。

ruby 的语法,没的说,包罗万象。可以满足大多数优雅而快速的开发。有胜出的潜力。

不过,如果ruby 胜出,那么rails 的最后命运不会太妙。 java 的spring, webwork, hibnerate, ibatis 的开发资源都转向 ruby , 挟多年设计经验之威,应该能带入很多先进设计思想和实现。

rails 作为ruby web领域开山之祖,很像当年的struts + ejb。也许能够留存很久,并保持最大的用户群,如同现在的struts, 吞并新兴的webwork。

当然,也许对于动态语言来说,侵入性显得不那么重要。那么上述的关于rails的话,都是错误的。

不过,这个时候投入rails,确实是非常值得的选择。struts 独领风骚几年,这几年的独领风骚足够了。

我相信,javaeye各位老大的眼力和前瞻性。
到目前为止,成功案例,hibernate, ajax 的潮流都是从这里开始引导和发生。
以后也会一直发生。

javaeye作为java领域的知名论坛,robbin老大能够这么提倡ruby,可见不是心血来潮,而是真正感到了暴风雨的前夕。


ruby平台现在已经有rBATIS了,即iBATIS的ruby移植版本。不过并不流行,因为rails的ActiveRecord并不像Hibernate那样自己发明一个O/R Mapping的schemaHQL,而是直接拿SQL作为schema语言,所以,rBATIS并没有带来比ActiveRecord更多的价值,反而功能更弱,所以没有什么人去用。

C#争夺Java市场份额的杀手锏,以及和Java平起平坐的资本就是开发速度明显比Java快,入门也要比Java容易。但是rails的开发速度显然比C#/Java快一个数量级,入门也更快。

当一个项目以开发速度为重要考虑因素的时候,在过去,会取C#而舍Java,以后则会取rails而舍C#。Java本来就不以开发速度见长,所以受到rails冲击反而没有那么大。

当rails凭借高一个数量级的开发速度把开发人员从Windows平台拉到Unix平台来的时候,你说是IBM难受,还是Microsoft难受呢?当然我觉得Apple一定最开心。毕竟rails已经把我从Windows平台拉到了MacOSX平台了。
0 请登录后投票
   发表时间:2006-07-29  
robbin 写道
charon 写道
Bruce Tate自己也说Ruby不适合于中间件。


最近有空的时候都在看ruby和rails,算稍微有些了解。

上面这句话很有意思,ruby确实不适合中间件,但是反过来,你也可以说,ruby不需要中间件。为什么呢?因为ruby应用特别是rails,强调使用SNA架构,需要状态管理的部分全部推到ruby以外,依赖操作系统提供的其他服务来解决了。

谈论ruby的时候,切记不要老拿Java的惯性思路来套ruby。这是两个不同的参照系,有着不同的运行规则。


这也是个办法,就好像Bruce Tate同志说的ruby适合于rich client framework
但是rails显然不在此列,rails是个一站式的从头到脚的解决方案。它所管理的东西与middleware干的活实际上是有很大重叠的,只不过所针对的问题域还不需要用middleware来解决。

引用

不知道,哪里能够找到 From java to ruby。
Ruby不适合于中间件,这个说法,挺有意思。

http://www.infoq.com/ruby/
上面有两篇Bruce Tate的文章,写得就是这个。
不过,我对Bruce Tate很不感冒,自从知道这个哥们写那本bitter ejb之前最多做过一个ejb的项目。打个比方,他是一个正在向股票分析师进军的股评家,和实际的操盘手(哪怕只管理了几十万的资金)的境界完全是不一样的。
0 请登录后投票
   发表时间:2006-07-29  
robbin以前介绍了一个 wxPython。ruby也有类似的 toolkit 和 framework。
ruby, python 在 desktop (尤其是 web service client) 方面应该比较有竞争力吧。如果是这样,那么会对 c# 等造成较大的打击,因为这些领域是 .net比较擅长的领域。
robbin说到的开发平台甚至操作系统的转换,那是更根本的打击了。不过,目前只限于robbin, potian这样的自主权比较高的高端开发人员吧。:D

Bruce Tate的infoq文章,我在里面搜了一下,没有找到 middle ware。
下载了from java to ruby的目录,好像都是些劝说manager的建议。
我看过他的 beyond java 那本书。里面讨论了技术相关的东西。
似乎也提到了middle ware,但是没有一个具体说明和具体分析。

受到ErLang web server的影响,我觉得,动态语言的性能瓶颈应该不是问题,关键是一个正确的thread model 和 interpreter/vm support。
感觉动态语言在glue, integrate, 松耦合方面的优势,应该适合开发middle ware。
难道是一种错觉?
0 请登录后投票
   发表时间:2006-07-29  
buaawhl 写道
robbin以前介绍了一个 wxPython。ruby也有类似的 toolkit 和 framework。
ruby, python 在 desktop (尤其是 web service client) 方面应该比较有竞争力吧。如果是这样,那么会对 c# 等造成较大的打击,因为这些领域是 .net比较擅长的领域。


这yy的太过了把
0 请登录后投票
   发表时间:2006-07-29  
charon 写道
robbin 写道
charon 写道
Bruce Tate自己也说Ruby不适合于中间件。


最近有空的时候都在看ruby和rails,算稍微有些了解。

上面这句话很有意思,ruby确实不适合中间件,但是反过来,你也可以说,ruby不需要中间件。为什么呢?因为ruby应用特别是rails,强调使用SNA架构,需要状态管理的部分全部推到ruby以外,依赖操作系统提供的其他服务来解决了。

谈论ruby的时候,切记不要老拿Java的惯性思路来套ruby。这是两个不同的参照系,有着不同的运行规则。


这也是个办法,就好像Bruce Tate同志说的ruby适合于rich client framework
但是rails显然不在此列,rails是个一站式的从头到脚的解决方案。它所管理的东西与middleware干的活实际上是有很大重叠的,只不过所针对的问题域还不需要用middleware来解决。

引用

不知道,哪里能够找到 From java to ruby。
Ruby不适合于中间件,这个说法,挺有意思。

http://www.infoq.com/ruby/
上面有两篇Bruce Tate的文章,写得就是这个。
不过,我对Bruce Tate很不感冒,自从知道这个哥们写那本bitter ejb之前最多做过一个ejb的项目。打个比方,他是一个正在向股票分析师进军的股评家,和实际的操盘手(哪怕只管理了几十万的资金)的境界完全是不一样的。


呵呵,这世界总是需要一些鼓吹手的

鼓鼓吹吹
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics