锁定老帖子 主题:ruby里面嵌入C代码
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-07-29
看看这个,真有意思,让我想起了什么? 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社区现在声势这么浩大了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-07-29
不一定啊
ruby现在只能说其兴也速。 infoq上面最近几篇文章的comment(包括这个嵌入C的),还是很有意思的。 Bruce Tate的From java to ruby招致了最多的炮火.虽然Bruce Tate自己也说Ruby不适合于中间件。 |
|
返回顶楼 | |
发表时间: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,可见不是心血来潮,而是真正感到了暴风雨的前夕。 |
|
返回顶楼 | |
发表时间: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, 正在消减人们对编译类型检查的依赖。 就看这个依赖是否能够消除,什么时候消除。 |
|
返回顶楼 | |
发表时间:2006-07-29
charon 写道 Bruce Tate自己也说Ruby不适合于中间件。
最近有空的时候都在看ruby和rails,算稍微有些了解。 上面这句话很有意思,ruby确实不适合中间件,但是反过来,你也可以说,ruby不需要中间件。为什么呢?因为ruby应用特别是rails,强调使用SNA架构,需要状态管理的部分全部推到ruby以外,依赖操作系统提供的其他服务来解决了。 谈论ruby的时候,切记不要老拿Java的惯性思路来套ruby。这是两个不同的参照系,有着不同的运行规则。 |
|
返回顶楼 | |
发表时间: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平台了。 |
|
返回顶楼 | |
发表时间: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的项目。打个比方,他是一个正在向股票分析师进军的股评家,和实际的操盘手(哪怕只管理了几十万的资金)的境界完全是不一样的。 |
|
返回顶楼 | |
发表时间: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。 难道是一种错觉? |
|
返回顶楼 | |
发表时间:2006-07-29
buaawhl 写道 robbin以前介绍了一个 wxPython。ruby也有类似的 toolkit 和 framework。
ruby, python 在 desktop (尤其是 web service client) 方面应该比较有竞争力吧。如果是这样,那么会对 c# 等造成较大的打击,因为这些领域是 .net比较擅长的领域。 这yy的太过了把 |
|
返回顶楼 | |
发表时间: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的项目。打个比方,他是一个正在向股票分析师进军的股评家,和实际的操盘手(哪怕只管理了几十万的资金)的境界完全是不一样的。 呵呵,这世界总是需要一些鼓吹手的 鼓鼓吹吹 |
|
返回顶楼 | |