`
robbin
  • 浏览: 4797694 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
377a9ecd-1ea1-34ac-9530-9daa53bb2a7b
robbin谈管理
浏览量:135666
社区版块
存档分类
最新评论

谈谈我为什么要学习ruby on rails

    博客分类:
  • Ruby
阅读更多
挺有意思的现象
记得过去还没有创办JavaEye的时候,在技术社区里面推广Hibernate(也算不上是推广,只是和别人交流Hibernate),就有一大批人酸酸的跳出来说,你们今天学习这个明天学习那个框架,全都是跟风,这些框架都是浮云,真正JDBC这种基础知识才是实力的,我就用JDBC,我用的一直很好,我完全没有必要去学习Hibernate......

每当看到这种话,我就觉得特别好笑,用一个我发明的说法叫做“牛逼哄哄的露怯”。没有人逼你学习Hibernate,你不乐意关心Hibernate,那就继续用JDBC好了,这个世界从来都不是非黑即白的。

其实这种人的心态很有意思。他一方面眼红人家学习新的技术,另一方面自己又不想花时间和代价去学习,所以恨不得所有的人都不要去学习新技术,这样他心里就感觉很安全了,正因为如此,他就总是要时不时跳出来打击一下别人,表面上很牛逼,其实虚弱的内心挣扎一览无余。

如果想把技术作为终身职业,那么对于技术人员的起码要求就是不能固步自封,要始终以开放的心态接受新技术。

打好基础知识固然重要(重要到根本无需你一遍又一遍的祥林嫂),但是不接触新技术,新思路,新的理念,很快就会被淘汰掉。

当然学习新技术也不是盲目的什么都学习,什么流行学习什么,而是根据自身的需要,有选择的学习。例如Java Web框架有很多很流行的,Struts,Webwork,Spring MVC,Tapestry,JSF,主流的就有5个,盲目的学习者就是人家说什么他就学什么了。而聪明的学习者应该对这些东西都去接触一下,从中选择一个值得自己投资时间成本去学习的框架。例如对这五个框架我都涉猎过一遍,最终我把时间花在了Webwork上面,事实也证明我当初的投资是正确的。

我学习ruby on rails有很现实的需要,其实即便抛开现实的需要,我也认为如果有空,Java开发人员有必要学习一下,原因是:

1、ruby语言和rails框架的社区力量正在以惊人的速度增长,甚至已经进入爆炸式繁荣的前夜,这不是昙花一现的现象,而是一个时代开始的象征。

2、从我这段时间学习的情况来看,ruby语言有足够的学习深度,我原来以为自己一个很快速的上手,然后就很精通了,但是ruby不像PHP那种方便面,其知识的广度和深度都让我感觉这是一个完整的知识体系。也正因为如此,ruby生命力会很长。

3、 ruby和rails是非常非常Unix-like的东西,经常和操作系统提供的功能有深度的依赖,这和Java这种不依赖操作系统,什么基础设施都自己卷起袖子自己创造的理念相比,非常非常的不同。这样做会带来一个很大的好处,很多在Java里面解决方案很复杂的问题,在ruby方案中就很简单可以搞定,相比之下,让Java显得颇为大而无当。

不过ruby和rails也树立起了一堵墙,这堵墙就是Unix操作系统,要学好我,你就先跨越Unix这堵墙吧。呵呵,这也是为什么rails core team清一色的MacOSX的原因了。

不过我觉得这是好事,我本人是Unix fans,乐意见到这种现象,况且凭借我多年深厚的Unix功底,在ruby fans中,我又站在了一个很高的起点上领跑了。

想学好ruby吗?先在你的电脑上面安装MacOSX/ubuntu作为开发环境咯。
分享到:
评论
46 楼 blueoxygen 2006-09-18  
daquan198163 写道
jnzgy 写道
daquan198163 写道
这些新技术看的人眼花呀。
弱弱的问一句:这些东西跟敏捷方法不冲突吧,是不是说掌握了敏捷方法就不必担心具体技术的更新换代了呢?


基本上扯不到一块

ror不就对敏捷支持得很好吗?


这哪儿跟哪儿啊?
你敏捷也要有个载体吧?
45 楼 Tin 2006-09-18  
Ubuntu这种debian like的linux发行版的确适合快速搭建环境。要好好学习上手。谢谢robbin的文章。
44 楼 daquan198163 2006-09-15  
jnzgy 写道
daquan198163 写道
这些新技术看的人眼花呀。
弱弱的问一句:这些东西跟敏捷方法不冲突吧,是不是说掌握了敏捷方法就不必担心具体技术的更新换代了呢?


基本上扯不到一块

ror不就对敏捷支持得很好吗?
43 楼 jnzgy 2006-09-15  
daquan198163 写道
这些新技术看的人眼花呀。
弱弱的问一句:这些东西跟敏捷方法不冲突吧,是不是说掌握了敏捷方法就不必担心具体技术的更新换代了呢?


基本上扯不到一块
42 楼 daquan198163 2006-09-15  
这些新技术看的人眼花呀。
弱弱的问一句:这些东西跟敏捷方法不冲突吧,是不是说掌握了敏捷方法就不必担心具体技术的更新换代了呢?
41 楼 charon 2006-09-15  
其实即便动态类型语言,type inference也有点用,对提高解释器或VM的效率会有些帮助。http://www.python.org/workshops/2000-01/proceedings/papers/aycock/aycock.html
还有一篇别的,看不懂
http://lambda-the-ultimate.org/node/1519
可能是T1说的动态语言静态类型的概念吧
不过,看了后面的讨论,发现运行时的type inference更准确的说应该是type checking(每次执行到了都要付出代价,所以性能反而不行),最近在加载阶段的才是type inference(因为代价是一次付出的)
40 楼 cookoo 2006-09-15  
Trustno1 写道
Dynamic Language 和Dynamic type是两个概念.
Dynamic Language不一定是Dyanmic type的.可以是Static Type的也可以是Dynamic Type的.type inference 对 Dyanmic Language有很大的好处,即方便书写有足够的灵活性,也能在编译期帮助错误检查.


我还真没注意这个差别呢,查了一下wikipedia,说DL指运行期能改变内部结构的语言,大部分是动态类型的(也就是少部分不是)。不过那个条款上面打了个警告标签说该定义模糊不清,需要cleanup...
39 楼 Trustno1 2006-09-15  
Dynamic Language 和Dynamic type是两个概念.
Dynamic Language不一定是Dyanmic type的.可以是Static Type的也可以是Dynamic Type的.type inference 对 Dyanmic Language有很大的好处,即方便书写有足够的灵活性,也能在编译期帮助错误检查.


38 楼 cookoo 2006-09-15  
你最后说的也算一个流行预测巴,就是FP和OO的融合。目前都还是太完美,不是侧重一个丢掉另一个的很多特征就是反过来。
37 楼 buaawhl 2006-09-15  

e, 没看仔细你和T1的评论的脉络。

T1 提到 dynamic type, type inference。
cookoo 说到 type inference。本意是,type inference 将会是下一个流行。
36 楼 cookoo 2006-09-15  
buaawhl 写道
ruby, python等流行。
type infererence不是重点吧。重点是动态,放弃编译期检查。

type infererence就是值类型的意思。变量类型不需要声明,根据赋值和使用的上下文推导出来。

Haskell, OCaml 这些语言也都是Type Reference。不需要声明类型,而是推导类型 (type interence)。
也没见它们流行。尤其是OCaml这样的工业强度的语言,速度几乎媲美C。
只不过,它们的type inference发生在编译期,而不是运行期。它们是静态,而不是动态。

可见,type reference不是重点。动态,放弃编译期类型检查,才是重点。

要说FP流行,现在已经流行了。Ruby, Python的很多语法概念都是FP过来的。map, reduce, filter, list comprehension, 之类。想OO就OO,想FP就FP。新的语言Scala之类,也都是OO, FP的混合体。对了,那个OCaml(MS port as F#)虽然是FP,却也带有OO语法。


末了,引用一段javaeye会员的经典名言,与大家共勉。



type inference可不是只限于推断变量类型,还包括方法接口类型。你扯动态语言干吗,动态又不需要类型声明,type inference是专门给静态语言用的。
35 楼 buaawhl 2006-09-15  

混沌,非线性复杂系统。
我也看过一些。很不错。
34 楼 charon 2006-09-15  
jnzgy 写道
现在python的web framework非常热闹,发展也很快,不知道有没有可能异军突起、后来局上?谁能分析一下?


近期基本上没戏。长远来说也不乐观。即便最后rails趴下了,也未必是python的框架能够胜出。
不过现在ruby/rails在一个方向上有那么一点点像python/zope2的发展历程:monkey patch
不同之处在于,zope2中已开始是把这个当作patch手段的,后来慢慢发散,最后变得臭名昭著。而ruby/rails社区把这个当作一个开发策略,而且更为强大(再怎么说python也很难patch到内置类型,从对象角度来说比ruby的open class弱多了),实在是祸福难料.
现在感觉动态语言最大的一个不方便就是没有显式接口,但python标准中有这种抽象和实现相分离引入类似物的趋向,而在实际的大型项目中包括zope,twisted中都以某种方式引入了接口.
33 楼 charon 2006-09-15  
buaawhl 写道
根据Charon的多次发言总结,Charon对遗传算法,人工生命,自然语言分析,agent等AI领域比较熟啊。炒一炒?要不,炒一炒Prolog啥的?

对遗传算法,人工生命,自然语言分析基本停留在业余关心阶段,记得很早以前有个老美记者写了一本叫"混沌"的书,很有意思,看过这方面的一些资料。
prolog倒是挺不错的,记得以前和一堆人拿着个visual prolog开发程序,不过现在即便玩ai的也很少用这类东西了,毕竟20年前就已经熟透了(估计还是c/c++或者java的多一些). 10年前玩agent的人很多,现在也不知道了。给我的感觉,AI发展的过程中副产品奇多,其中的一些还对整个计算机产业产生过异常重大的影响,但是主要方向上的成果,少的可怜,或者基本上可以确认是没有明显进展,还在不停的发散性试错过程中
32 楼 buaawhl 2006-09-15  
根据Charon的多次发言总结,Charon对遗传算法,人工生命,自然语言分析,agent等AI领域比较熟啊。炒一炒?要不,炒一炒Prolog啥的?
31 楼 charon 2006-09-15  
buaawhl 写道

领先几年也没用啊,说到底,这主要不是技术先进性的问题,主要是一个流行时尚的问题。要说先进,很多人工智能领域论文还更先进呢


人工智能领域的东西未必都是先进的,它的大浪淘沙效应更加明显,流传到外界的基本上都是最后站住的。有很多东西热潮一退,也就那么过去了,比如人工生命这个分分支.相对于离现实比较接近的一些领域,人工智能的研究方向太发散了(当然诸如分词之类的实战性分支不算)
30 楼 buaawhl 2006-09-15  
ruby, python等流行。
type infererence不是重点吧。重点是动态,放弃编译期检查。

type infererence就是值类型的意思。变量类型不需要声明,根据赋值和使用的上下文推导出来。

Haskell, OCaml 这些语言也都是Type Reference。不需要声明类型,而是推导类型 (type interence)。
也没见它们流行。尤其是OCaml这样的工业强度的语言,速度几乎媲美C。
只不过,它们的type inference发生在编译期,而不是运行期。它们是静态,而不是动态。

可见,type reference不是重点。动态,放弃编译期类型检查,才是重点。

要说FP流行,现在已经流行了。Ruby, Python的很多语法概念都是FP过来的。map, reduce, filter, list comprehension, 之类。想OO就OO,想FP就FP。新的语言Scala之类,也都是OO, FP的混合体。对了,那个OCaml(MS port as F#)虽然是FP,却也带有OO语法。


末了,引用一段javaeye会员的经典名言,与大家共勉。

引用

真是烦你们这些人
以RUBY 为首,两年前我来这里看还在讨论哪个业务层,逻辑层,表现层,两年后还在讨论,再在我已经用。NET,现在从不讨论什么层了,直接拖标签,爽得很,效率也提高了,JAVA既没有IDE界面,也没有谁去为谁提升WEB服务器性能,亏了你们用JAVA开发系统,我估计肯定客户不满意,你们做得也辛苦

29 楼 cookoo 2006-09-15  
别急嘛,type inference不是还没普及么。C#3听说是主力。

不过有些地方还是不能完全省略类型声明:type inference和OO的方法过载是冲突的,比如(from TIJ):
  static void print(String s, int i) {
    System.out.println(
      "String: " + s +
      ", int: " + i);
  }
  static void print(int i, String s) {
    System.out.println(
      "int: " + i +
      ", String: " + s);
  }

如果没有声明里的类型信息,靠什么去推断类型进而区分不同过载方法呢?估计C#碰到这种情况还是得强制声明类型。
28 楼 robbin 2006-09-15  
Trustno1 写道
charon 写道

不过里面的东西基本上不是我们凡人看的。一篇文章得咀嚼n多天.

若不是有一定的信息量,哪能看穿那票牛人的真实面目呢?赫赫.
据说温州商人的家里,必备两分报纸,人民日报,解放日报.这种我们看都不要看得官样文章,却是他们了解
国家政策,官员变迁的主要渠道.当我们看到一个大新闻的时候,这些人恐怕在几个月以前就从这些报纸上读到了.
程序员这个行当其实也差不多.肯读代码文档,肯学新东西,固然是好。但是这样一辈子只能跟在别人屁股后面转. 不少人都苦于跟风炒作,像纯月部落这样的,出来一个新技术就好像天要塌下来了.其实大可不必,吃饭喝茶的时候去CiteSeer,OCLC这些地方,找些学术论文看看也就见怪不怪了. 国外这些技术的新动向,都不是我们这里的龙芯麒麟那样炒起来的。而是实实在在的经过长时间积累的,水到渠成的结果.01年的时候我在找Omega caculus的paper的时候发现做这个东西的人在95年之后全部转向去搞Dynamic type或者type inference了,所以当时我就认为OO这条路肯定已经到头了,那个时候我就开始关注Python.想想Matz写Ruby是93年,Russum写Python是89年.如果你去citeseer去查查 dynamic type,type inference相关的论文,普遍都是在89-98年,这两个时间的吻合度很值得回味的.他们这些人之所以真牛是因为他们接近于学术的核心知道技术的最新动向,有比较好的计算机科学的训练,加上自己有那么一点点小聪明.这在学术界未必吃得开但是在程序员这个行当里是绰绰有余了.

  国内的程序员大都看不太起学院派.一来是因为国内的学院派水平普遍太次,教授不如副教授,副教授不如讲师,讲师不如博士,博士不如硕士,硕士不如大学生.另外一方面,主要还是看得少接触的少,不知道真正的学院派有多厉害.你去citseer上查查现在爆炒的东西都是人家几年前玩剩下的.倒不是说国外的学院派不屑于把这些东西推广,毕竟人家有人家的专业术业有专攻。实用领域的东西不是他们的专长,人家的教授副教授不会拖着自己的研究生苦力去接项目赚外快.   


照T1的说法,我去查了一下,发现FP方面的论文都是93-99年的,这莫非是在说,ruby之后的下一代流行趋势是FP语言?
27 楼 jnzgy 2006-09-14  
现在python的web framework非常热闹,发展也很快,不知道有没有可能异军突起、后来局上?谁能分析一下?

相关推荐

Global site tag (gtag.js) - Google Analytics