p*****2 发帖数: 21240 | 1 易学,很灵活,很强大,用起来很有乐趣,只是需要把Java编程养成的那些坏习惯改掉
即可
我发现OO+Functional确实还是比纯OO和纯Functional更方便。
Javascript则是OO+Functional的典范。这样的语言还有Ruby, Scala, 但是都不如
Javascript有优势。
以后就是它了 |
q*c 发帖数: 9453 | 2 我都说了你就是个灌水狂你还不承认,哈哈哈
【在 p*****2 的大作中提到】 : 易学,很灵活,很强大,用起来很有乐趣,只是需要把Java编程养成的那些坏习惯改掉 : 即可 : 我发现OO+Functional确实还是比纯OO和纯Functional更方便。 : Javascript则是OO+Functional的典范。这样的语言还有Ruby, Scala, 但是都不如 : Javascript有优势。 : 以后就是它了
|
l**********n 发帖数: 8443 | 3 js里function就是object这个非常强大。 |
c******o 发帖数: 1277 | 4 Clojure/Scala 都是这样的。。。
【在 l**********n 的大作中提到】 : js里function就是object这个非常强大。
|
t*****n 发帖数: 4908 | 5 peking2是很有修养的人,无论怎么激怒他都不会说脏话。这是成大事者的迹象。动不
动就是我老,打脸,LOL,搞得和街头小丑一般。
【在 q*c 的大作中提到】 : 我都说了你就是个灌水狂你还不承认,哈哈哈
|
p*****2 发帖数: 21240 | 6
他们都没有prototype。另外Clojure的function是data,不是object, Scala的
function是object但是灵活性跟JS没法比。
【在 c******o 的大作中提到】 : Clojure/Scala 都是这样的。。。
|
p*****2 发帖数: 21240 | 7
哈哈。多谢大牛。主要是不想纠缠进打嘴仗的陷阱里去。我看有的时候吵上好几个小时
,甚至几天,我就觉得我肯定handle不了。而且,大家说话粗一些但是也并没有什么恶
意,都很可爱。
【在 t*****n 的大作中提到】 : peking2是很有修养的人,无论怎么激怒他都不会说脏话。这是成大事者的迹象。动不 : 动就是我老,打脸,LOL,搞得和街头小丑一般。
|
l**********n 发帖数: 8443 | 8 把function和object割裂开来本身是个错误。试想如果定义的function想有些property
,如果function不是object,怎么办?我觉得prototype只是个自然选择,但是
function就是object这个就是个巨大的优势。所以object分为2类,本身可以perform
function的和就是一个property的袋子。 |
l**********n 发帖数: 8443 | 9 现实世界无外乎2种:function或者object。两者统一起来是正确的。 |
c******o 发帖数: 1277 | 10 Clojure 没有传统意义的object,但是里面的"object"和function是一类东西。
scala的function灵活性不比JS差。。
只是不一样的做法,用保持灵活性的同时,增加复杂性来增加可靠性,这种trade off
是我为什么喜欢
scala多于javasript的原因。
不说别的,说说javascript的经典陷阱,对本对象中数据进行 enumerate:
for (var name in myObject) {
if (myObject.hasOwnProperty(name)) {
alert(name);
}
}
你会得到unexpected result如果你没用hasOwnProperty
【在 p*****2 的大作中提到】 : : 哈哈。多谢大牛。主要是不想纠缠进打嘴仗的陷阱里去。我看有的时候吵上好几个小时 : ,甚至几天,我就觉得我肯定handle不了。而且,大家说话粗一些但是也并没有什么恶 : 意,都很可爱。
|
|
|
p*****2 发帖数: 21240 | 11
property
这点我也是这两天才深有体会的。我觉得没搞过Javascript的很难理解到这个深度。
【在 l**********n 的大作中提到】 : 把function和object割裂开来本身是个错误。试想如果定义的function想有些property : ,如果function不是object,怎么办?我觉得prototype只是个自然选择,但是 : function就是object这个就是个巨大的优势。所以object分为2类,本身可以perform : function的和就是一个property的袋子。
|
p*****2 发帖数: 21240 | 12
确实。所以Javascript有巨大优势。
【在 l**********n 的大作中提到】 : 现实世界无外乎2种:function或者object。两者统一起来是正确的。
|
p*****2 发帖数: 21240 | 13
off
Clojure里应该就没有object的定义吧。根本不可能有JS的function object。
Scala的function灵活性能跟JS比?
你用coffeescript不就行了吗?
【在 c******o 的大作中提到】 : Clojure 没有传统意义的object,但是里面的"object"和function是一类东西。 : scala的function灵活性不比JS差。。 : 只是不一样的做法,用保持灵活性的同时,增加复杂性来增加可靠性,这种trade off : 是我为什么喜欢 : scala多于javasript的原因。 : 不说别的,说说javascript的经典陷阱,对本对象中数据进行 enumerate: : for (var name in myObject) { : if (myObject.hasOwnProperty(name)) { : alert(name); : }
|
c******o 发帖数: 1277 | 14 Clojure里的 object equivalent 就是data type
http://clojure.org/multimethods
当然没有object,但是其实里面的"object"和function 不是一样的么?
是的,Scala的function灵活性能跟JS比
JS能做到,scala就能,只是有时候复杂,但那是为可靠性。
coffeescript本质和javascript是一样的,我还可以说我用jquery的OO呢。。
最后你还是要自己知道为什么javascript 是这样。和你说就是generic JS(ECMASCRIPT
)里面的”陷阱“(和一般OO/FP不一样的地方,容易出毛病的地方)多呢。
【在 p*****2 的大作中提到】 : : off : Clojure里应该就没有object的定义吧。根本不可能有JS的function object。 : Scala的function灵活性能跟JS比? : 你用coffeescript不就行了吗?
|
l**********n 发帖数: 8443 | 15 那个是因为js的object的property除了自身的,那就是来自于prototype chain的。
off
【在 c******o 的大作中提到】 : Clojure里的 object equivalent 就是data type : http://clojure.org/multimethods : 当然没有object,但是其实里面的"object"和function 不是一样的么? : 是的,Scala的function灵活性能跟JS比 : JS能做到,scala就能,只是有时候复杂,但那是为可靠性。 : coffeescript本质和javascript是一样的,我还可以说我用jquery的OO呢。。 : 最后你还是要自己知道为什么javascript 是这样。和你说就是generic JS(ECMASCRIPT : )里面的”陷阱“(和一般OO/FP不一样的地方,容易出毛病的地方)多呢。
|
g*******o 发帖数: 156 | 16 设计真心强大,灵活,但是糟粕也多。。。不然就没有js: the good part那书了。相
比class系统,更喜欢用all object+prototype的概念。
ruby写得也爽,但是functional不够强,而且速度啊。。。
【在 p*****2 的大作中提到】 : 易学,很灵活,很强大,用起来很有乐趣,只是需要把Java编程养成的那些坏习惯改掉 : 即可 : 我发现OO+Functional确实还是比纯OO和纯Functional更方便。 : Javascript则是OO+Functional的典范。这样的语言还有Ruby, Scala, 但是都不如 : Javascript有优势。 : 以后就是它了
|
c******o 发帖数: 1277 | 17 对的,但是在browser里,你不这么做会有一堆不知名的东西,而且不同环境还不一样。
【在 l**********n 的大作中提到】 : 那个是因为js的object的property除了自身的,那就是来自于prototype chain的。 : : off
|
l**********n 发帖数: 8443 | 18 如果你用Object.create(null, options); 那么你可以确定你的object不会有不必要的
property。如果你用new,那么你不是很清楚这个prototype chain。 |
c******o 发帖数: 1277 | 19 我以前写过6k+的纯动态 javascript project,很多时候YUI/jquery都不够用,要自己
写小的library.
JS绝对是最多gotcha的语言,只是不得以要用它。
当然。还是比java swing/awt, MS的MFC好多了。 |
p*****2 发帖数: 21240 | 20
ECMASCRIPT
JS里的function可以有method,property,可以转换index, Clojure,Scala可以吗?
JS里的function有prototype, Clojure, Scala有吗?
你应该考虑一下为什么JS比Clojure,Scala流行度要强太多了。如果不好,早就没人用
了。
【在 c******o 的大作中提到】 : Clojure里的 object equivalent 就是data type : http://clojure.org/multimethods : 当然没有object,但是其实里面的"object"和function 不是一样的么? : 是的,Scala的function灵活性能跟JS比 : JS能做到,scala就能,只是有时候复杂,但那是为可靠性。 : coffeescript本质和javascript是一样的,我还可以说我用jquery的OO呢。。 : 最后你还是要自己知道为什么javascript 是这样。和你说就是generic JS(ECMASCRIPT : )里面的”陷阱“(和一般OO/FP不一样的地方,容易出毛病的地方)多呢。
|
|
|
p*****2 发帖数: 21240 | 21
是。所以一定要限制糟粕的使用。限制了之后还是很牛逼的。滥用就不好了。the good
parts那书很给力。
【在 g*******o 的大作中提到】 : 设计真心强大,灵活,但是糟粕也多。。。不然就没有js: the good part那书了。相 : 比class系统,更喜欢用all object+prototype的概念。 : ruby写得也爽,但是functional不够强,而且速度啊。。。
|
p*****2 发帖数: 21240 | 22
样。
browser不熟,node里没碰到过什么问题。
【在 c******o 的大作中提到】 : 对的,但是在browser里,你不这么做会有一堆不知名的东西,而且不同环境还不一样。
|
p*****2 发帖数: 21240 | 23
是。所以现在弃用new了。话说回来,new也是从java过来的。
【在 l**********n 的大作中提到】 : 如果你用Object.create(null, options); 那么你可以确定你的object不会有不必要的 : property。如果你用new,那么你不是很清楚这个prototype chain。
|
l**********n 发帖数: 8443 | 24 js之所以不招人喜欢,是因为它的可揉捏性太强了,不同的人可以写出不同风格的代码
来,但是却完成同样的功能。而许多其他语言都有一定套路。 |
p*****2 发帖数: 21240 | 25
前端不熟,我就不乱说了。
【在 c******o 的大作中提到】 : 我以前写过6k+的纯动态 javascript project,很多时候YUI/jquery都不够用,要自己 : 写小的library. : JS绝对是最多gotcha的语言,只是不得以要用它。 : 当然。还是比java swing/awt, MS的MFC好多了。
|
p*****2 发帖数: 21240 | 26
启示JS完全可以出一个design pattern。
OO需要DP是因为OO太死板了
JS太灵活,也需要DP
【在 l**********n 的大作中提到】 : js之所以不招人喜欢,是因为它的可揉捏性太强了,不同的人可以写出不同风格的代码 : 来,但是却完成同样的功能。而许多其他语言都有一定套路。
|
c******o 发帖数: 1277 | 27 好吧,我用的时候没有。
http://kangax.github.io/es5-compat-table/
除了这个其他的,还有好多其他的呢,你如做一个好的private/protected/public
class
或者, strict equality (===) 什么时候用。
【在 l**********n 的大作中提到】 : 如果你用Object.create(null, options); 那么你可以确定你的object不会有不必要的 : property。如果你用new,那么你不是很清楚这个prototype chain。
|
p*****2 发帖数: 21240 | 28
用JS就不应该考虑class
=== CS已经解决了
【在 c******o 的大作中提到】 : 好吧,我用的时候没有。 : http://kangax.github.io/es5-compat-table/ : 除了这个其他的,还有好多其他的呢,你如做一个好的private/protected/public : class : 或者, strict equality (===) 什么时候用。
|
p*****2 发帖数: 21240 | 29
我发觉还有一个非常重要的原因是太多人受到太深Java的影响了。
【在 l**********n 的大作中提到】 : js之所以不招人喜欢,是因为它的可揉捏性太强了,不同的人可以写出不同风格的代码 : 来,但是却完成同样的功能。而许多其他语言都有一定套路。
|
p*****2 发帖数: 21240 | 30
样。
前端是不是主要是DOM的问题呢?
【在 c******o 的大作中提到】 : 对的,但是在browser里,你不这么做会有一堆不知名的东西,而且不同环境还不一样。
|
|
|
l**********n 发帖数: 8443 | 31 js的type conversion确实比较混沌, ===就是没有type conversion的==
【在 c******o 的大作中提到】 : 好吧,我用的时候没有。 : http://kangax.github.io/es5-compat-table/ : 除了这个其他的,还有好多其他的呢,你如做一个好的private/protected/public : class : 或者, strict equality (===) 什么时候用。
|
c******o 发帖数: 1277 | 32 scala 当然可以“有method,property,可以转换index”,一样效果,东西做法不一
样罢了。
clojure 有macro,没有任何东西不可能的。。。。
你想想prototype是干什么的?
如果我能用其它实现一样的功能,为什么要用它?
简单说,JS不错,我现在也是每个星期都有机会用,但是不是啥救世主。
有的是短板
要说就学一门万能语言,最接近的确实还是java/c
【在 p*****2 的大作中提到】 : : 样。 : 前端是不是主要是DOM的问题呢?
|
A*****i 发帖数: 3587 | 33 不是来反驳你的
但是基本上现在nodejs很少人用builtin的语句了
比如这种for (var name in myObject)
我们通常用underscore的keys, values, pairs等等来遍历一个object
js最适合做的应该是io和异步处理,把C或者java模式复杂的callback彻底一扫而光
而这些所谓陷阱也好,bug也好基本上现在社区内一搜一大把的替代产品
这才是js最牛逼的地方,如果一门语言一出来便没有可再生的余地那其实它能做的也很
有限了
off
【在 c******o 的大作中提到】 : scala 当然可以“有method,property,可以转换index”,一样效果,东西做法不一 : 样罢了。 : clojure 有macro,没有任何东西不可能的。。。。 : 你想想prototype是干什么的? : 如果我能用其它实现一样的功能,为什么要用它? : 简单说,JS不错,我现在也是每个星期都有机会用,但是不是啥救世主。 : 有的是短板 : 要说就学一门万能语言,最接近的确实还是java/c
|
p*****2 发帖数: 21240 | 34
你不用prototype就说没用。然后就说JS的function,clojure,scala都可以做到。这
算掩耳盗铃吗?
没说JS是万能语言。但是至少前端,后端都能做。
Java只是做后端吧?
C在互联网公司有人用吗?
【在 c******o 的大作中提到】 : scala 当然可以“有method,property,可以转换index”,一样效果,东西做法不一 : 样罢了。 : clojure 有macro,没有任何东西不可能的。。。。 : 你想想prototype是干什么的? : 如果我能用其它实现一样的功能,为什么要用它? : 简单说,JS不错,我现在也是每个星期都有机会用,但是不是啥救世主。 : 有的是短板 : 要说就学一门万能语言,最接近的确实还是java/c
|
l**********n 发帖数: 8443 | 35 对,用underscore后感觉语法和scala类似,而且chainable。唯一的区别就是no type
,而scala的复杂的type令人感到很繁琐。 |
l**********n 发帖数: 8443 | 36 if something quack like a duck, then it is a duck. |
c******o 发帖数: 1277 | 37 好吧,在node.js环境里确实不错,比较干净。我还没有太多的经验。
但是你说的不对,如果不能看懂“替代产品”的内部, 长远来说是不行的。
你最终(很快的)要懂javascript 的内部和基础,不然只是一个简单的积木拼接者。
出问题就完蛋。
【在 A*****i 的大作中提到】 : 不是来反驳你的 : 但是基本上现在nodejs很少人用builtin的语句了 : 比如这种for (var name in myObject) : 我们通常用underscore的keys, values, pairs等等来遍历一个object : js最适合做的应该是io和异步处理,把C或者java模式复杂的callback彻底一扫而光 : 而这些所谓陷阱也好,bug也好基本上现在社区内一搜一大把的替代产品 : 这才是js最牛逼的地方,如果一门语言一出来便没有可再生的余地那其实它能做的也很 : 有限了 : : off
|
c******o 发帖数: 1277 | 38 就是用复杂性来换可靠性(在保证灵活性的前提下)
type
【在 l**********n 的大作中提到】 : 对,用underscore后感觉语法和scala类似,而且chainable。唯一的区别就是no type : ,而scala的复杂的type令人感到很繁琐。
|
p*****2 发帖数: 21240 | 39
我觉得JS真的算是很容易学习的了。主要是要把Java那些烂七八糟的思想除掉。
当然Clojure也比较容易学习,只是语法确实很多人不喜欢,而且没有OO,操作起来没
有OO方便。
Scala就太复杂了,没几个人能像你一样学的那么好。
【在 c******o 的大作中提到】 : 好吧,在node.js环境里确实不错,比较干净。我还没有太多的经验。 : 但是你说的不对,如果不能看懂“替代产品”的内部, 长远来说是不行的。 : 你最终(很快的)要懂javascript 的内部和基础,不然只是一个简单的积木拼接者。 : 出问题就完蛋。
|
p*****2 发帖数: 21240 | 40
太复杂了就没人学了。
【在 c******o 的大作中提到】 : 就是用复杂性来换可靠性(在保证灵活性的前提下) : : type
|
|
|
l**********n 发帖数: 8443 | 41 scala还是不错的,可能static type checking有它的必要性吧。
【在 c******o 的大作中提到】 : 就是用复杂性来换可靠性(在保证灵活性的前提下) : : type
|
A*****i 发帖数: 3587 | 42 我并没有说不需要看懂这些问题的根源
相反要挑选好的替代品这是必须的
比如现在在异步处理上很火的一个库,async
代码写的很清楚也很容易懂,但是基本上都是从那些built-in的语句上面优化添加而
来的
它有很多的method如果你不清楚是怎么实现的,你或许根本没法正确使用
社区的蓬勃发展和语言本身的瑕疵,或者叫做`余地`是正相关的
【在 c******o 的大作中提到】 : 好吧,在node.js环境里确实不错,比较干净。我还没有太多的经验。 : 但是你说的不对,如果不能看懂“替代产品”的内部, 长远来说是不行的。 : 你最终(很快的)要懂javascript 的内部和基础,不然只是一个简单的积木拼接者。 : 出问题就完蛋。
|
G******g 发帖数: 2275 | 43 你不是法界的吗?来这里干啥?
【在 q*c 的大作中提到】 : 我都说了你就是个灌水狂你还不承认,哈哈哈
|
c******o 发帖数: 1277 | 44 这不是我说的。
我说的是我有我的方法和工具可以做到prototype能做到的一切,我的语言不需要
prototype,js的prototype对js当然有意义.
你说我不能做到,你说你的prototype不能被替代的。
当然java/c/c++可以做前端(厚前端)
当然C在互联网公司有人用,你说说FLG吧,是不是互联网公司?
【在 p*****2 的大作中提到】 : : 太复杂了就没人学了。
|
l**********n 发帖数: 8443 | 45 scala和js不是一个category的,one static type, one dynamic type。所以不必相争。
static type vs dynamic type可以另盖一个高楼
。 |
A*****i 发帖数: 3587 | 46 对于java这一点表示比较赞同
比如override这一个方面js做的比java简单更高效
根本用不着理解所谓的动态绑定,只要重新给成员赋值就可以了
仔细想想确实也就是这么简单
【在 p*****2 的大作中提到】 : : 太复杂了就没人学了。
|
l**********n 发帖数: 8443 | 47 or maybe static type Javascript in the future? |
p*****2 发帖数: 21240 | 48
你要那么说任何general 语言都能做差不多任何事情。这么争就没意思了。
用JS就是要用到JS的精髓之处。Prototype是JS独有的,你从其他语言过来当然不习惯
,而且用老的习惯也可以解决问题,但是一个语言的精华不用就很可惜了。比如你可以
用Scala写完全的Java code,但是你会这么做吗?
你上次来了一个大后端,现在又来了一个厚前端。这个我真不想继续讨论了。总是自创
术语。
G用C是做互联网产品吗?G的产品线很广吧。
F用C干嘛呀?
L用C干嘛呢?
【在 c******o 的大作中提到】 : 这不是我说的。 : 我说的是我有我的方法和工具可以做到prototype能做到的一切,我的语言不需要 : prototype,js的prototype对js当然有意义. : 你说我不能做到,你说你的prototype不能被替代的。 : 当然java/c/c++可以做前端(厚前端) : 当然C在互联网公司有人用,你说说FLG吧,是不是互联网公司?
|
p*****2 发帖数: 21240 | 49
typescript是个什么玩意呢?有static type的作用吗?
【在 l**********n 的大作中提到】 : or maybe static type Javascript in the future?
|
c******o 发帖数: 1277 | 50 我不是“从其他地方来的”,当然是做前端js的。
我是反驳你说的prototype让js做别人不能做的。
你也没说啥特例,我只能说general.
对于厚前端,我们换个词 “mobile app", 我在联系的一个项目就是c/c++ ios/
android的。。。
我是反驳你说的互联网公司不用c/java, 其实大的都用,还都是最重要的地方。
没啥,就想说“Javascript确实是最优秀的语言之一”实在是觉得不赞成,
“Javascript确实是最常用的语言之一”还差不多。也不如c/java就是在internet
startup里多些。
【在 p*****2 的大作中提到】 : : typescript是个什么玩意呢?有static type的作用吗?
|
|
|
p*****2 发帖数: 21240 | 51
好吧。你对JS有成见怎么说也没用。
【在 c******o 的大作中提到】 : 我不是“从其他地方来的”,当然是做前端js的。 : 我是反驳你说的prototype让js做别人不能做的。 : 你也没说啥特例,我只能说general. : 对于厚前端,我们换个词 “mobile app", 我在联系的一个项目就是c/c++ ios/ : android的。。。 : 我是反驳你说的互联网公司不用c/java, 其实大的都用,还都是最重要的地方。 : 没啥,就想说“Javascript确实是最优秀的语言之一”实在是觉得不赞成, : “Javascript确实是最常用的语言之一”还差不多。也不如c/java就是在internet : startup里多些。
|
t*********d 发帖数: 8 | 52 请教,Java编程的坏习惯指的是什么?
【在 p*****2 的大作中提到】 : 易学,很灵活,很强大,用起来很有乐趣,只是需要把Java编程养成的那些坏习惯改掉 : 即可 : 我发现OO+Functional确实还是比纯OO和纯Functional更方便。 : Javascript则是OO+Functional的典范。这样的语言还有Ruby, Scala, 但是都不如 : Javascript有优势。 : 以后就是它了
|
l**********n 发帖数: 8443 | |
p*****2 发帖数: 21240 | 54
就是classical OO, class, constructor, new,extend 这些东西
还有就是C syntax, 这个coffeescript可以解决
imperative programming, 这个coffeescript, underscore都可以解决
但是第一个需要个思维的转变
【在 t*********d 的大作中提到】 : 请教,Java编程的坏习惯指的是什么?
|
l**********n 发帖数: 8443 | 55 node.js的module system很不错。 |
p*****2 发帖数: 21240 | |
p*****2 发帖数: 21240 | 57
是。node里面就应该用modular pattern
【在 l**********n 的大作中提到】 : node.js的module system很不错。
|
l**********n 发帖数: 8443 | |
A*****i 发帖数: 3587 | 59 光数据类型个人比较喜欢static type的
尤其读代码的时候,一个个回去查类型是每天上班最烦人的事情,极大降低工作效率
但动态类型的好处也不言而喻,具体问题还得具体分析 |
n****1 发帖数: 1136 | 60 Javascript的gocha可不仅仅是历史错误而已, 用js的人每天都在创造新的gocha.就拿
node.js来说吧, 为了做到async, 结果是callback满天飞, 比C里面的goto更恐怖。
Async明明有更好的实现方法, 比如future/promise之类的, 还有最近新加的yield,
但nodejs的社区与代码风格已经初步定型了, 这个gocha将永远影响node的未来。
你说只用"the good part"说来容易做来难, 一不小心就踩线了。 而且你终究要用别
人的库吧, 怎么保证别人的库没用到bad part呢? 运行中出了问题责任可在你啊。 |
|
|
q*c 发帖数: 9453 | 61 地球就在法界里面。
【在 G******g 的大作中提到】 : 你不是法界的吗?来这里干啥?
|
l**********n 发帖数: 8443 | 62 jquery的deferred怎么样?
,
【在 n****1 的大作中提到】 : Javascript的gocha可不仅仅是历史错误而已, 用js的人每天都在创造新的gocha.就拿 : node.js来说吧, 为了做到async, 结果是callback满天飞, 比C里面的goto更恐怖。 : Async明明有更好的实现方法, 比如future/promise之类的, 还有最近新加的yield, : 但nodejs的社区与代码风格已经初步定型了, 这个gocha将永远影响node的未来。 : 你说只用"the good part"说来容易做来难, 一不小心就踩线了。 而且你终究要用别 : 人的库吧, 怎么保证别人的库没用到bad part呢? 运行中出了问题责任可在你啊。
|
n****1 发帖数: 1136 | 63 defer是不错啊, so what? Last time I checked, nodejs标准库里面的api全是
callback style.
【在 l**********n 的大作中提到】 : jquery的deferred怎么样? : : ,
|
q*c 发帖数: 9453 | 64 静态语言写的人麻烦,读的人爽。
动态语言写的人爽(这点很可笑的被胡扯成 效率高,实在不知道这个谣言如何传播开
的),读的人苦。
稍微有点现实经验,就知道哪个是正道。
【在 A*****i 的大作中提到】 : 光数据类型个人比较喜欢static type的 : 尤其读代码的时候,一个个回去查类型是每天上班最烦人的事情,极大降低工作效率 : 但动态类型的好处也不言而喻,具体问题还得具体分析
|
A*****i 发帖数: 3587 | 65 没必要所有的事情都用小学的二元是非观来分析
这个世界本来就没有正道,以前用CGI写server的时候谁知道java有一天会占领web世界?
非要辨出个对错是没有意义的,幼稚的
【在 q*c 的大作中提到】 : 静态语言写的人麻烦,读的人爽。 : 动态语言写的人爽(这点很可笑的被胡扯成 效率高,实在不知道这个谣言如何传播开 : 的),读的人苦。 : 稍微有点现实经验,就知道哪个是正道。
|
g*****g 发帖数: 34805 | 66 写 ppt 才是正道。
【在 q*c 的大作中提到】 : 静态语言写的人麻烦,读的人爽。 : 动态语言写的人爽(这点很可笑的被胡扯成 效率高,实在不知道这个谣言如何传播开 : 的),读的人苦。 : 稍微有点现实经验,就知道哪个是正道。
|
n****1 发帖数: 1136 | 67 这个倒不是问题, js做大后都可以加上type annotation. 可静态语言的type
signature既是给人看, 也是给机器看的, 用来找bug的. type annotation远远达不
到要求, 最要命的是一个变量的类型是可以改的, 机器完全傻逼了。
【在 q*c 的大作中提到】 : 静态语言写的人麻烦,读的人爽。 : 动态语言写的人爽(这点很可笑的被胡扯成 效率高,实在不知道这个谣言如何传播开 : 的),读的人苦。 : 稍微有点现实经验,就知道哪个是正道。
|
q*c 发帖数: 9453 | 68 lol 那是,最正的是电话,不,秘书传话。
不过不同的层次也有自己的正道。
【在 g*****g 的大作中提到】 : 写 ppt 才是正道。
|
w**z 发帖数: 8232 | 69 最近用一个别人写的module, input , output
都是一个map, 俺一边看code, 一边问候他的女性长辈。
【在 q*c 的大作中提到】 : 静态语言写的人麻烦,读的人爽。 : 动态语言写的人爽(这点很可笑的被胡扯成 效率高,实在不知道这个谣言如何传播开 : 的),读的人苦。 : 稍微有点现实经验,就知道哪个是正道。
|
W***o 发帖数: 6519 | 70 请二爷推荐本好书呗
【在 p*****2 的大作中提到】 : 易学,很灵活,很强大,用起来很有乐趣,只是需要把Java编程养成的那些坏习惯改掉 : 即可 : 我发现OO+Functional确实还是比纯OO和纯Functional更方便。 : Javascript则是OO+Functional的典范。这样的语言还有Ruby, Scala, 但是都不如 : Javascript有优势。 : 以后就是它了
|
|
|
b***e 发帖数: 1419 | 71 这个说法顶一下。非常同意。
good
【在 p*****2 的大作中提到】 : : 是。node里面就应该用modular pattern
|
b***e 发帖数: 1419 | 72 所以需要design pattern的帮助。现金诸多的framework纷纷涌现就是为了这个。
【在 l**********n 的大作中提到】 : js之所以不招人喜欢,是因为它的可揉捏性太强了,不同的人可以写出不同风格的代码 : 来,但是却完成同样的功能。而许多其他语言都有一定套路。
|
b***e 发帖数: 1419 | 73 好,这个我顶一下。
【在 g*****g 的大作中提到】 : 写 ppt 才是正道。
|
p*****2 发帖数: 21240 | 74
其实我也想让大牛给推荐呢。
我觉得 good parts是很不错的,也可以看看他的video
ninja那本书我觉得一般,可能是我有一定基础了,觉得讲的太细的,繁琐了,而且也
没有给出opinions来
有一本JS的design pattern可能也值得一看,我还没看
还有一本functional JS的,主要是用underscore,因为我用的是coffee,所以也没看
。不过感觉路子应该是对的。
希望其他大牛也能推荐推荐。我感觉可能没有更深入一些的书了。JS就那些东西。
【在 W***o 的大作中提到】 : 请二爷推荐本好书呗
|
p*****2 发帖数: 21240 | 75
你看过JS patterns那书吗?我感觉可能值得一看。
【在 b***e 的大作中提到】 : 所以需要design pattern的帮助。现金诸多的framework纷纷涌现就是为了这个。
|
p*****y 发帖数: 529 | 76 这是好虫说的难得让我非常赞赏的话。
【在 g*****g 的大作中提到】 : 写 ppt 才是正道。
|
S********0 发帖数: 5749 | 77
属实,但是也看什么通途,不是所有东西都能靠这玩意搞定啊,至少对于搞计算的,
java完全上不了那个level
【在 p*****2 的大作中提到】 : 易学,很灵活,很强大,用起来很有乐趣,只是需要把Java编程养成的那些坏习惯改掉 : 即可 : 我发现OO+Functional确实还是比纯OO和纯Functional更方便。 : Javascript则是OO+Functional的典范。这样的语言还有Ruby, Scala, 但是都不如 : Javascript有优势。 : 以后就是它了
|
P********l 发帖数: 452 | 78 深刻领会十八届三中全会《决定》才是正道.
http://bbs.tianya.cn/post-develop-1463818-1.shtml
【在 g*****g 的大作中提到】 : 写 ppt 才是正道。
|
l**********n 发帖数: 8443 | 79 js的iterator算是什么?还有map,reduce等等。我觉得iterator就是把责任分发到
iterator去,expect the iterator to return certain results, such as success
results or failed results. if success, do something. if failure, do other
thing. it is very powerful. java其实也是可以做到这些的,就是匿名的class。
java的匿名class其实相当于js的function。就是定义一个method,没有其它。 |
l**********n 发帖数: 8443 | 80 anonymous class is the rescue |
|
|
g*****g 发帖数: 34805 | 81 我老说的话可不是不让人赞赏吗,比如10年前说C++不行了,5年前说微软不行了,现在
说FP没戏。
得罪的是一大批人。忠言逆耳呀。
【在 p*****y 的大作中提到】 : 这是好虫说的难得让我非常赞赏的话。
|
p*****2 发帖数: 21240 | 82
感觉大牛没有黑node和JS,看来node和JS很有戏呀
【在 g*****g 的大作中提到】 : 我老说的话可不是不让人赞赏吗,比如10年前说C++不行了,5年前说微软不行了,现在 : 说FP没戏。 : 得罪的是一大批人。忠言逆耳呀。
|
g*c 发帖数: 4510 | 83 搭车求推荐js入门书
★ 发自iPhone App: ChineseWeb 7.8
【在 p*****2 的大作中提到】 : : 感觉大牛没有黑node和JS,看来node和JS很有戏呀
|
s***o 发帖数: 2191 | 84 JavaScript: The Definitive Guide
JavaScript Patterns
感觉这是我看过JS书里面实用价值最高的两本
【在 g*c 的大作中提到】 : 搭车求推荐js入门书 : : ★ 发自iPhone App: ChineseWeb 7.8
|
p*****2 发帖数: 21240 | 85
JS patterns和learning JS design patterns哪本好呀?
【在 s***o 的大作中提到】 : JavaScript: The Definitive Guide : JavaScript Patterns : 感觉这是我看过JS书里面实用价值最高的两本
|
s***o 发帖数: 2191 | 86 后一本好像没看过。翻了一下目录第一感觉是把GOF搬过来用JS重写了一遍。而JS
Patterns这本书主要是围绕JavaScript本身的特点比如function, prototype, closure
等,各种object creation patterns, inheritance patterns等也不算是传统意义上的
"design" patterns
这两本书内容大概是互补的吧。
JS Patterns这本书写得很流畅,应该很快就能翻一遍。
【在 p*****2 的大作中提到】 : : JS patterns和learning JS design patterns哪本好呀?
|
m***i 发帖数: 2480 | 87 它最大的问题是无类型,不好debug,不适合大系统
【在 p*****2 的大作中提到】 : 易学,很灵活,很强大,用起来很有乐趣,只是需要把Java编程养成的那些坏习惯改掉 : 即可 : 我发现OO+Functional确实还是比纯OO和纯Functional更方便。 : Javascript则是OO+Functional的典范。这样的语言还有Ruby, Scala, 但是都不如 : Javascript有优势。 : 以后就是它了
|
p*****2 发帖数: 21240 | 88
closure
我今天都看了一下。感觉确实第一本更好。第二本感觉有点平淡无奇的感觉。
【在 s***o 的大作中提到】 : 后一本好像没看过。翻了一下目录第一感觉是把GOF搬过来用JS重写了一遍。而JS : Patterns这本书主要是围绕JavaScript本身的特点比如function, prototype, closure : 等,各种object creation patterns, inheritance patterns等也不算是传统意义上的 : "design" patterns : 这两本书内容大概是互补的吧。 : JS Patterns这本书写得很流畅,应该很快就能翻一遍。
|
l**********n 发帖数: 8443 | 89 I call js Function-Oriented Programming(FOP). |
g*******o 发帖数: 156 | 90 一天看两本。。。虽然都不厚,但是这也忒牛了~~~
【在 p*****2 的大作中提到】 : : closure : 我今天都看了一下。感觉确实第一本更好。第二本感觉有点平淡无奇的感觉。
|
|
|
p*****2 发帖数: 21240 | 91
看了一下。没看完。第二本放弃了,看第一本先。不过感觉很多内容应该good parts已
经cover了。
【在 g*******o 的大作中提到】 : 一天看两本。。。虽然都不厚,但是这也忒牛了~~~
|
p***y 发帖数: 637 | 92 项目大了,特别是参与的人多了以后,失去了这些所谓的坏习惯,代码就很难控制。理
论上精心设计的架构可以解决可维护性,但参与的人多了,代码量大了以后,控制极为
困难。
我在一个几百人参与的大项目里,项目从一启动就由javascrip铁杆把关,不允许check
in OO风格或C风格的代码,严格按JavaScript风格办事。最初看上去很美,开发速度
极快,不到2个月就开发出具有及其复杂功能的demo。但转向production开发后,日积
月累,现在总代码行数以百万计,谁也闹不清楚整个系统是怎么回事了。这个项目从来
没有ship过bug free的版本,修改代码和回归测试也及其困难。一些功能缺陷或bug因
为修改成本太高而永久放弃修改。
总体而言,当参与人太多时,JavaScript的灵活性造成八仙过海的局面。纯动态的代码
,refactor不方便且高度error prong,降低了refactor的积极性。纯动态代码阅读难
度大,对系统的神秘感鼓励了拷贝粘贴行为,导致代码行数剧增,进一步增加了系统的
神秘性。
【在 p*****2 的大作中提到】 : : 看了一下。没看完。第二本放弃了,看第一本先。不过感觉很多内容应该good parts已 : 经cover了。
|
p*****2 发帖数: 21240 | 93
check
Java那些习惯,你放JS里面会极大的提升代码的复杂性,而且没什么benefits,因为两
种语言本来就工作的不一样。模仿Java根本没有必要。
你们几百个人的项目用JS是不是architect有问题呢?另外你们是frontend还是backend?
【在 p***y 的大作中提到】 : 项目大了,特别是参与的人多了以后,失去了这些所谓的坏习惯,代码就很难控制。理 : 论上精心设计的架构可以解决可维护性,但参与的人多了,代码量大了以后,控制极为 : 困难。 : 我在一个几百人参与的大项目里,项目从一启动就由javascrip铁杆把关,不允许check : in OO风格或C风格的代码,严格按JavaScript风格办事。最初看上去很美,开发速度 : 极快,不到2个月就开发出具有及其复杂功能的demo。但转向production开发后,日积 : 月累,现在总代码行数以百万计,谁也闹不清楚整个系统是怎么回事了。这个项目从来 : 没有ship过bug free的版本,修改代码和回归测试也及其困难。一些功能缺陷或bug因 : 为修改成本太高而永久放弃修改。 : 总体而言,当参与人太多时,JavaScript的灵活性造成八仙过海的局面。纯动态的代码
|
P********l 发帖数: 452 | 94 请教.
n million 行 javascript 代码? 这个项目是做什么的? 前面的帖子不是说google的
一个组开发了半年才写了17w行吗?
怎么区别OO风格, C风格,和js风格的代码?
几百人一起写js? really? 另外还有多少人开发后端?
check
【在 p***y 的大作中提到】 : 项目大了,特别是参与的人多了以后,失去了这些所谓的坏习惯,代码就很难控制。理 : 论上精心设计的架构可以解决可维护性,但参与的人多了,代码量大了以后,控制极为 : 困难。 : 我在一个几百人参与的大项目里,项目从一启动就由javascrip铁杆把关,不允许check : in OO风格或C风格的代码,严格按JavaScript风格办事。最初看上去很美,开发速度 : 极快,不到2个月就开发出具有及其复杂功能的demo。但转向production开发后,日积 : 月累,现在总代码行数以百万计,谁也闹不清楚整个系统是怎么回事了。这个项目从来 : 没有ship过bug free的版本,修改代码和回归测试也及其困难。一些功能缺陷或bug因 : 为修改成本太高而永久放弃修改。 : 总体而言,当参与人太多时,JavaScript的灵活性造成八仙过海的局面。纯动态的代码
|
m******t 发帖数: 635 | 95 这么大的代码量应该很早就要上SOA了吧
check
【在 p***y 的大作中提到】 : 项目大了,特别是参与的人多了以后,失去了这些所谓的坏习惯,代码就很难控制。理 : 论上精心设计的架构可以解决可维护性,但参与的人多了,代码量大了以后,控制极为 : 困难。 : 我在一个几百人参与的大项目里,项目从一启动就由javascrip铁杆把关,不允许check : in OO风格或C风格的代码,严格按JavaScript风格办事。最初看上去很美,开发速度 : 极快,不到2个月就开发出具有及其复杂功能的demo。但转向production开发后,日积 : 月累,现在总代码行数以百万计,谁也闹不清楚整个系统是怎么回事了。这个项目从来 : 没有ship过bug free的版本,修改代码和回归测试也及其困难。一些功能缺陷或bug因 : 为修改成本太高而永久放弃修改。 : 总体而言,当参与人太多时,JavaScript的灵活性造成八仙过海的局面。纯动态的代码
|
g*****g 发帖数: 34805 | 96 我个人是不会让一个服务超过5万行的,当然10万行以内还可以接受。几百万行至少应
该分成几十个服务。
最根本的原因,几百万行代码已经不是一个人或者一个小组可以维护的了,出个大bug
大家互相耽误工期。SOA有overhead,但逼着你把责任分清楚了。
【在 m******t 的大作中提到】 : 这么大的代码量应该很早就要上SOA了吧 : : check
|
c******o 发帖数: 1277 | 97 我个人做的,最大就10万,还是java之类的verbose static语言,
动态语言,超过1-2万就很难维护了。
bug
【在 g*****g 的大作中提到】 : 我个人是不会让一个服务超过5万行的,当然10万行以内还可以接受。几百万行至少应 : 该分成几十个服务。 : 最根本的原因,几百万行代码已经不是一个人或者一个小组可以维护的了,出个大bug : 大家互相耽误工期。SOA有overhead,但逼着你把责任分清楚了。
|
n****1 发帖数: 1136 | 98 Google/Yahoo/Facebook? 普通非IT企业一般不会有这么大的人力物力和魄力做这么大
一个monolithic project吧, Hadoop架构?
看这位的形容,感觉最开始时的计划是很周密的,不用SOA肯定是代价太大。 俺估计他
们即使把整个项目用java重新写一遍, 还是不会用SOA。
check
【在 p***y 的大作中提到】 : 项目大了,特别是参与的人多了以后,失去了这些所谓的坏习惯,代码就很难控制。理 : 论上精心设计的架构可以解决可维护性,但参与的人多了,代码量大了以后,控制极为 : 困难。 : 我在一个几百人参与的大项目里,项目从一启动就由javascrip铁杆把关,不允许check : in OO风格或C风格的代码,严格按JavaScript风格办事。最初看上去很美,开发速度 : 极快,不到2个月就开发出具有及其复杂功能的demo。但转向production开发后,日积 : 月累,现在总代码行数以百万计,谁也闹不清楚整个系统是怎么回事了。这个项目从来 : 没有ship过bug free的版本,修改代码和回归测试也及其困难。一些功能缺陷或bug因 : 为修改成本太高而永久放弃修改。 : 总体而言,当参与人太多时,JavaScript的灵活性造成八仙过海的局面。纯动态的代码
|
P********l 发帖数: 452 | 99 逗大家玩的吧.
项目从一启动就由javascrip铁杆把关 - 从上下文看,这个铁杆做code review.代码
量n million, 这个铁杆是铁做的吧. javascript必须运行起来才能知道变量里面装得
是什么,million级的代码,这个铁杆是钛合金做的吧.(强调unit test是最近的事情
) 即使有十个这样的铁杆也搞不定.
million行代码,难以想象可以全部装载到browser里.比较一下,jquery大概9k行.
【在 n****1 的大作中提到】 : Google/Yahoo/Facebook? 普通非IT企业一般不会有这么大的人力物力和魄力做这么大 : 一个monolithic project吧, Hadoop架构? : 看这位的形容,感觉最开始时的计划是很周密的,不用SOA肯定是代价太大。 俺估计他 : 们即使把整个项目用java重新写一遍, 还是不会用SOA。 : : check
|
n****1 发帖数: 1136 | 100 应该是后端服务, 没哪个前端要几百个人开发吧。
我好像听说Gmail的后端曾经是用javascript做的prototype.
【在 P********l 的大作中提到】 : 逗大家玩的吧. : 项目从一启动就由javascrip铁杆把关 - 从上下文看,这个铁杆做code review.代码 : 量n million, 这个铁杆是铁做的吧. javascript必须运行起来才能知道变量里面装得 : 是什么,million级的代码,这个铁杆是钛合金做的吧.(强调unit test是最近的事情 : ) 即使有十个这样的铁杆也搞不定. : million行代码,难以想象可以全部装载到browser里.比较一下,jquery大概9k行.
|
|
|
A*****i 发帖数: 3587 | 101 几个月前就说过我们的系统是纯node js写的
js的代码占到30W行以上,还有几万行的java库
几百万行的没见过,但是理论上应该存在。
【在 P********l 的大作中提到】 : 请教. : n million 行 javascript 代码? 这个项目是做什么的? 前面的帖子不是说google的 : 一个组开发了半年才写了17w行吗? : 怎么区别OO风格, C风格,和js风格的代码? : 几百人一起写js? really? 另外还有多少人开发后端? : : check
|
P********l 发帖数: 452 | 102 大牛说一说开发 30w 行的 nodejs 有什么心得?
【在 A*****i 的大作中提到】 : 几个月前就说过我们的系统是纯node js写的 : js的代码占到30W行以上,还有几万行的java库 : 几百万行的没见过,但是理论上应该存在。
|
g*****g 发帖数: 34805 | 103 30万行的js,不知道分了多少个服务?
【在 A*****i 的大作中提到】 : 几个月前就说过我们的系统是纯node js写的 : js的代码占到30W行以上,还有几万行的java库 : 几百万行的没见过,但是理论上应该存在。
|
A*****i 发帖数: 3587 | 104 别搞笑了,这种系统根本不是小作坊能搞出来的还心得呢
就是个修修补补的工匠而已,不过整个system从第一次commit到现在前前后后也有差不
多50多contributor了
【在 P********l 的大作中提到】 : 大牛说一说开发 30w 行的 nodejs 有什么心得?
|
A*****i 发帖数: 3587 | 105 大的应该有api,dbops, jobs, messengers, system check这几个吧
里面细分的更多了,前前后后得有好几十个
【在 g*****g 的大作中提到】 : 30万行的js,不知道分了多少个服务?
|
m******t 发帖数: 635 | 106 这个system check应该就是类似system health或者monitoring之类的东东吧
【在 A*****i 的大作中提到】 : 大的应该有api,dbops, jobs, messengers, system check这几个吧 : 里面细分的更多了,前前后后得有好几十个
|
g*****g 发帖数: 34805 | 107 这还比较合理。SOA下动态语言也可以做大系统我是相信的。不如谈谈你们系统不同服
务用js还是用java是怎么选的。
【在 A*****i 的大作中提到】 : 大的应该有api,dbops, jobs, messengers, system check这几个吧 : 里面细分的更多了,前前后后得有好几十个
|
P********l 发帖数: 452 | 108 -- 别搞笑了,这种系统根本不是小作坊能搞出来的
That is the point. Any success story or lesson learned? (by your team)
【在 A*****i 的大作中提到】 : 别搞笑了,这种系统根本不是小作坊能搞出来的还心得呢 : 就是个修修补补的工匠而已,不过整个system从第一次commit到现在前前后后也有差不 : 多50多contributor了
|
A*****i 发帖数: 3587 | 109 数据库内部操作,data center之间同步数据之类的当然是java毋庸置疑
剩下的都用node js,方便卫生起效快,修改起来一口气改500行,还不费力。
藕合度越高的操作用node的越少
基本上这是我见过的最大的用nodejs写的系统了,当时从头开始做这个的几个大牛已经
因为这个顺便在npm上发了好几个libs了,下载量不容小觑啊
【在 g*****g 的大作中提到】 : 这还比较合理。SOA下动态语言也可以做大系统我是相信的。不如谈谈你们系统不同服 : 务用js还是用java是怎么选的。
|
g*****g 发帖数: 34805 | 110 node轮子的数量和质量如何?
【在 A*****i 的大作中提到】 : 数据库内部操作,data center之间同步数据之类的当然是java毋庸置疑 : 剩下的都用node js,方便卫生起效快,修改起来一口气改500行,还不费力。 : 藕合度越高的操作用node的越少 : 基本上这是我见过的最大的用nodejs写的系统了,当时从头开始做这个的几个大牛已经 : 因为这个顺便在npm上发了好几个libs了,下载量不容小觑啊
|
|
|
l**********n 发帖数: 8443 | 111 大牛说说node.js怎么做到loosely coupled? loosely coupled很重要啊。
【在 A*****i 的大作中提到】 : 数据库内部操作,data center之间同步数据之类的当然是java毋庸置疑 : 剩下的都用node js,方便卫生起效快,修改起来一口气改500行,还不费力。 : 藕合度越高的操作用node的越少 : 基本上这是我见过的最大的用nodejs写的系统了,当时从头开始做这个的几个大牛已经 : 因为这个顺便在npm上发了好几个libs了,下载量不容小觑啊
|
p*****2 发帖数: 21240 | 112
npm?
【在 l**********n 的大作中提到】 : 大牛说说node.js怎么做到loosely coupled? loosely coupled很重要啊。
|
P****i 发帖数: 12972 | 113 这是moduler
【在 p*****2 的大作中提到】 : : npm?
|
p*****2 发帖数: 21240 | 114
那node loose coupling跟java有啥区别呀?
【在 P****i 的大作中提到】 : 这是moduler
|
l*****t 发帖数: 2019 | 115 吐了。
【在 p*****2 的大作中提到】 : 易学,很灵活,很强大,用起来很有乐趣,只是需要把Java编程养成的那些坏习惯改掉 : 即可 : 我发现OO+Functional确实还是比纯OO和纯Functional更方便。 : Javascript则是OO+Functional的典范。这样的语言还有Ruby, Scala, 但是都不如 : Javascript有优势。 : 以后就是它了
|
t*******3 发帖数: 734 | |