m******t 发帖数: 635 | 1 这次是英国的dailymail
http://www.nearform.com/nodecrunch/how-node-js-has-revolutioniz
用的是二爷一直推崇的node.js + Clojure组合,下面是亮点:
When Clifton joined the Mail Online, he inherited a classic Spring app that
had been around for almost a decade, the front-end had 155,000 lines of Java
, 30,000 lines of JSP, 50,000 lines of javascript, a 15 year old Oracle
schema that couldn’t be changed … and no tests!
In addition to the micro apps written to date, a Table also rebuilt the
entire legacy Java frontend replacing the entire 155,000 lines of have with
about 4000 lines of Clojure (accompanied by a large number of Moustache
templates shared by Node).
15.5万行Java代码被4000行Clojure代替,这个也太夸张了吧 |
z****e 发帖数: 54598 | 2 fp擅长的就是减少代码行数
经常好几个功能写成一行 |
m******t 发帖数: 635 | 3 4000行Clojure的话,一个人维护更新一点问题没有,生产力很高啊,15.5万行Java算
是较大规模的应用么?
【在 z****e 的大作中提到】 : fp擅长的就是减少代码行数 : 经常好几个功能写成一行
|
p*****2 发帖数: 21240 | 4 这个也太牛了吧?
看来node+clojure是黄金组合呀。 |
m*******l 发帖数: 12782 | 5 这要看这15.5万是老中写的,还是烙印写的.
考,有些代码水 1屁, 根本没有refactor
【在 m******t 的大作中提到】 : 4000行Clojure的话,一个人维护更新一点问题没有,生产力很高啊,15.5万行Java算 : 是较大规模的应用么?
|
m******t 发帖数: 635 | 6 就算refactoring砍一半, 7万行Java对4000行Clojure也是很惊人啊
【在 m*******l 的大作中提到】 : 这要看这15.5万是老中写的,还是烙印写的. : 考,有些代码水 1屁, 根本没有refactor
|
z****e 发帖数: 54598 | 7 光比行我觉得还是有点问题
4000行未必比15,5w行容易
而且java里面{}这种一下子就两行,多来几个括号,行数自然增加了
我看nodejs和clojure共用了一个template
所以web server和app server共享模板减少了行数
之前如果两层自己用自己的模板的话,代码很容易就double上去了
还是要看到代码才好说,光看统计数字,很多东西看不出来
【在 m******t 的大作中提到】 : 4000行Clojure的话,一个人维护更新一点问题没有,生产力很高啊,15.5万行Java算 : 是较大规模的应用么?
|
z****e 发帖数: 54598 | 8 (accompanied by a large number of Moustache templates shared by Node).
这个可能是减少代码行数的大头 |
m******t 发帖数: 635 | 9 难道Java做网页都是在网页上写Java code吗?没做过Java的web apps,不太了解
【在 z****e 的大作中提到】 : (accompanied by a large number of Moustache templates shared by Node). : 这个可能是减少代码行数的大头
|
z****e 发帖数: 54598 | 10 主要是方法
jsp这种搞模板的方式是需要改进一下了
jsp的确有些过于老旧了,因为jsp只能用来template web page
freemarker用上去的话,模板重用率应该可以提高
至少fm可以用来template email, web page etc. |
|
|
z****e 发帖数: 54598 | 11 jsp不就是这样的?
【在 m******t 的大作中提到】 : 难道Java做网页都是在网页上写Java code吗?没做过Java的web apps,不太了解
|
m******t 发帖数: 635 | 12 这样啊,不知道他那个JSP实现用现在最新的java practice能够减到多少行? 用Ruby
on Rails的话,安装有人的经验应该能够减到2万行
【在 z****e 的大作中提到】 : jsp不就是这样的?
|
z****e 发帖数: 54598 | 13 给你看一个经典的jsp代码就知道了
my name is <%=request.getAttribute("myName")%>
这种混合语言的方式只能说对于servlet是一种进步
但是代码没有分离,同一个模板里面html和java混在一起
如果不出意外还有js和css,四种语言,大杂烩
这也是为什么我们讨厌做web的原因 |
x****d 发帖数: 1766 | 14 we need some failure story to fully understand the impact.
if a language/technology has no failure projects, it is not good.
if I have to jump ship to node/clojure, I have to understand why they failed
some projects first. I won't jump if they never failed. |
z****e 发帖数: 54598 | 15 ror比jsp那是要高很多个时代了
jsp主要是用来优化servlet的
servlet主要是用来对付cgi这些的
再往前我也不知道了,我读书时候都已经过了jsp了
可能老魏知道,我看他倒腾java的web倒腾得很high
【在 m******t 的大作中提到】 : 这样啊,不知道他那个JSP实现用现在最新的java practice能够减到多少行? 用Ruby : on Rails的话,安装有人的经验应该能够减到2万行
|
p*****2 发帖数: 21240 | 16
failed
现在还没有用clojure失败的项目呢。
【在 x****d 的大作中提到】 : we need some failure story to fully understand the impact. : if a language/technology has no failure projects, it is not good. : if I have to jump ship to node/clojure, I have to understand why they failed : some projects first. I won't jump if they never failed.
|
m******t 发帖数: 635 | 17 有的,好像一个英国的银行项目,在hackernews上看到的,大概一年以前的事了
【在 p*****2 的大作中提到】 : : failed : 现在还没有用clojure失败的项目呢。
|
p*****2 发帖数: 21240 | 18
是因为clojure?link?
【在 m******t 的大作中提到】 : 有的,好像一个英国的银行项目,在hackernews上看到的,大概一年以前的事了
|
b*******s 发帖数: 5216 | 19 看上去很棒
【在 p*****2 的大作中提到】 : 这个也太牛了吧? : 看来node+clojure是黄金组合呀。
|
d****i 发帖数: 4809 | 20 jsp是以前的做法了,现在有点过时了,现在基本上都是用客户端javascript的MVC,然
后server side用REST。这样做的好处是前后端完全分离解耦,而且后端可以是任何语
言:Java, PHP, Python, Ruby, .NET...., 然后客户端可以是任何client: JS,
Android, iOS, WP....
【在 m******t 的大作中提到】 : 难道Java做网页都是在网页上写Java code吗?没做过Java的web apps,不太了解
|
|
|
m******t 发帖数: 635 | 21 没找到hackernews上的link,这个是他的blog
http://www.pitheringabout.com/?cat=9
作者更像是个会编程的project manager,他有个手头很强的瑞典朋友帮忙。可以找找
他们的presentation,讲他们怎么从Java转到Clojure,碰到的各种问题
忘了我为什么会有项目失败的印象,可能是因为作者跳槽了吧,:)
【在 p*****2 的大作中提到】 : : 是因为clojure?link?
|
n*w 发帖数: 3393 | 22 FP + dynamical的强有力 vs java的verbose。 |
d********g 发帖数: 10550 | 23 你这个例子基本是10年前PHP、ASP、JSP混战时候的事情了,现在就算Java来做,这样
的写法也没有任何饭吃,初中生水平
JS那个模板前后台共用也不是缩代码的关键,后台可以根本不做任何渲染直接来REST,
前台纯JS SPA就好了,web/mobile双覆盖,架构一坨一坨的。就算PHP在快10年前也有
Smarty做模板,MVC也不是什么新东西,不过这个web真正做得爽的server side MVC是
RoR和Django做大的,然后才是JS的client side MVC
主要还是架构好不好精不精练的事,另外Java本身要实现相同功能,代码不可否认要啰
嗦一些。他这个例子里的Java实现绝对不是best practice,肯定是好多年的山寨老代
码,同样用Java重写一遍应该能省不少行数,只不过更激进直接换别的了
【在 z****e 的大作中提到】 : 给你看一个经典的jsp代码就知道了 : : : my name is <%=request.getAttribute("myName")%> : : : 这种混合语言的方式只能说对于servlet是一种进步 : 但是代码没有分离,同一个模板里面html和java混在一起 : 如果不出意外还有js和css,四种语言,大杂烩 : 这也是为什么我们讨厌做web的原因
|
z****e 发帖数: 54598 | 24 我看原文,程序架构差不多就是10年前的水平
15年前确切点,其实他一说jsp,就大概能猜到了
稍微后一点的时代,怎么说也是struts,你说mvc是ror和django做大的
那就不对了,ssh好歹比这两个都要早一点,别告诉我说其中一个s不是mvc
【在 d********g 的大作中提到】 : 你这个例子基本是10年前PHP、ASP、JSP混战时候的事情了,现在就算Java来做,这样 : 的写法也没有任何饭吃,初中生水平 : JS那个模板前后台共用也不是缩代码的关键,后台可以根本不做任何渲染直接来REST, : 前台纯JS SPA就好了,web/mobile双覆盖,架构一坨一坨的。就算PHP在快10年前也有 : Smarty做模板,MVC也不是什么新东西,不过这个web真正做得爽的server side MVC是 : RoR和Django做大的,然后才是JS的client side MVC : 主要还是架构好不好精不精练的事,另外Java本身要实现相同功能,代码不可否认要啰 : 嗦一些。他这个例子里的Java实现绝对不是best practice,肯定是好多年的山寨老代 : 码,同样用Java重写一遍应该能省不少行数,只不过更激进直接换别的了
|
d********g 发帖数: 10550 | 25 “web真正做得爽的server side MVC是RoR和Django做大的”
server side MVC革命RoR是领军没人有异议。当然你可以argue这个“真正做得爽的”
。我说了MVC本来就不是什么新东西,就算Smarty你都可以把它看做PHP搞MVC的早期实
践,但都没有RoR先出来然后Django这么爽
【在 z****e 的大作中提到】 : 我看原文,程序架构差不多就是10年前的水平 : 15年前确切点,其实他一说jsp,就大概能猜到了 : 稍微后一点的时代,怎么说也是struts,你说mvc是ror和django做大的 : 那就不对了,ssh好歹比这两个都要早一点,别告诉我说其中一个s不是mvc
|
z****e 发帖数: 54598 | 26 django不是没有ror爽么?
【在 d********g 的大作中提到】 : “web真正做得爽的server side MVC是RoR和Django做大的” : server side MVC革命RoR是领军没人有异议。当然你可以argue这个“真正做得爽的” : 。我说了MVC本来就不是什么新东西,就算Smarty你都可以把它看做PHP搞MVC的早期实 : 践,但都没有RoR先出来然后Django这么爽
|
d********g 发帖数: 10550 | 27 Ruby的eco system更窄一些,你要是做个blog直接RoR可能够了,上大一点的RoR只能退
化成前台,后面得别的eco system来补比如Java,而且Ruby这一家也就RoR拿得出手。
Python的eco system要大一些特别是“backend”这块很多也都可以做,大部分情况是
可以自己一家eco system解决的。Python的框架也太多,连Django都嫌重的比如搞纯
REST,那Flask、Bottle这些都可以上。Bottle就一个单文件,注释全部加上也就3000
多行代码搞定,一个完整的框架
Ruby + Java的不少,Python + Java的不多,就是这个道理
【在 z****e 的大作中提到】 : django不是没有ror爽么?
|
z****e 发帖数: 54598 | 28 上了其它的就不干django什么事了
那是python本身类库的问题了
不过话说,我发现好像python和ruby双枪的人比较多
3000
【在 d********g 的大作中提到】 : Ruby的eco system更窄一些,你要是做个blog直接RoR可能够了,上大一点的RoR只能退 : 化成前台,后面得别的eco system来补比如Java,而且Ruby这一家也就RoR拿得出手。 : Python的eco system要大一些特别是“backend”这块很多也都可以做,大部分情况是 : 可以自己一家eco system解决的。Python的框架也太多,连Django都嫌重的比如搞纯 : REST,那Flask、Bottle这些都可以上。Bottle就一个单文件,注释全部加上也就3000 : 多行代码搞定,一个完整的框架 : Ruby + Java的不少,Python + Java的不多,就是这个道理
|
d********g 发帖数: 10550 | 29 Python/Ruby双枪感觉不是很多吧,如果做web那框架重叠太大,和语言一样,C++和
Java双枪的估计自己天天和自己吵架
【在 z****e 的大作中提到】 : 上了其它的就不干django什么事了 : 那是python本身类库的问题了 : 不过话说,我发现好像python和ruby双枪的人比较多 : : 3000
|
z****e 发帖数: 54598 | 30 大神的意思是我不能ruby了吗?
哎呀,泪奔了
【在 d********g 的大作中提到】 : Python/Ruby双枪感觉不是很多吧,如果做web那框架重叠太大,和语言一样,C++和 : Java双枪的估计自己天天和自己吵架
|
|
|
d********g 发帖数: 10550 | 31 你现在上Ruby做啥?除了RoR别的没什么地方好用啊
【在 z****e 的大作中提到】 : 大神的意思是我不能ruby了吗? : 哎呀,泪奔了
|
p*****2 发帖数: 21240 | 32
how about sinatra?
【在 d********g 的大作中提到】 : 你现在上Ruby做啥?除了RoR别的没什么地方好用啊
|
z****e 发帖数: 54598 | 33 没啥,我不做web前端
用python倒是写了不少web crawler这种东西
ruby目前不会,但是很好奇ruby的text handling functions
【在 d********g 的大作中提到】 : 你现在上Ruby做啥?除了RoR别的没什么地方好用啊
|
d********g 发帖数: 10550 | 34 Sinatra和Rails没什么冲突的,微框架对应Python的Flask、Bottle这种,还不到
Pyramid的规模
【在 p*****2 的大作中提到】 : : how about sinatra?
|
d********g 发帖数: 10550 | 35 crawler用啥写?urllib/urllib2裸写?要爽的话看一下requests这个库
Ruby语言本身可以很爽,有不少魔法。魔法太多的结果就是要么全自己写,要么别人的
源码都得过一遍才知道魔法怎么搞的
【在 z****e 的大作中提到】 : 没啥,我不做web前端 : 用python倒是写了不少web crawler这种东西 : ruby目前不会,但是很好奇ruby的text handling functions
|
z****e 发帖数: 54598 | 36 大神说得对
目前是我自己裸写,不过有些小烦,不太爱做,做个beta版之后恐怕就不做了
还是搞app好玩点,最近打算在搞fp之前突击一下app
app表现力比web强多了
【在 d********g 的大作中提到】 : crawler用啥写?urllib/urllib2裸写?要爽的话看一下requests这个库 : Ruby语言本身可以很爽,有不少魔法。魔法太多的结果就是要么全自己写,要么别人的 : 源码都得过一遍才知道魔法怎么搞的
|
m******t 发帖数: 635 | 37 刚好hackernews在讨论这个按例,CTO亲身说法:
https://news.ycombinator.com/item?id=6813401
The biggest reduction in loc was due to the move from a relational DB to
elastic search containing flatter representations of our content.
靠,最大的功臣居然是elastic search,我败退了 |
g*****g 发帖数: 34805 | 38 clojure行数比java少10倍,还是有可能的。到这么大的差距,唯一的解释就是那个
legacy系统是自己写的轮子。
新的系统用的是现成轮子。诸如旧系统自己实现了一遍home brew struts, spring,
hibernate。 |
c*****y 发帖数: 562 | 39 老赵你还是平时少灌点水,稍微学点吧。这种带code snippet的JSP真正projects哪有
用的
【在 z****e 的大作中提到】 : 给你看一个经典的jsp代码就知道了 : : : my name is <%=request.getAttribute("myName")%> : : : 这种混合语言的方式只能说对于servlet是一种进步 : 但是代码没有分离,同一个模板里面html和java混在一起 : 如果不出意外还有js和css,四种语言,大杂烩 : 这也是为什么我们讨厌做web的原因
|
z****e 发帖数: 54598 | 40 again
15年前
【在 c*****y 的大作中提到】 : 老赵你还是平时少灌点水,稍微学点吧。这种带code snippet的JSP真正projects哪有 : 用的
|
|
|
z****e 发帖数: 54598 | 41 传统db又一次败了
【在 m******t 的大作中提到】 : 刚好hackernews在讨论这个按例,CTO亲身说法: : https://news.ycombinator.com/item?id=6813401 : The biggest reduction in loc was due to the move from a relational DB to : elastic search containing flatter representations of our content. : 靠,最大的功臣居然是elastic search,我败退了
|