h*i 发帖数: 3446 | 1 https://arxiv.org/abs/1901.10220
刚出的对以前结果的复现,发现只有4个语言与虫子率显著相关,而不是以前认为的11
个:正相关C plus plus,负相关Clojure,Haskell,ruby。
Clojure 虫子率最低,又一次被确认。 |
T*******x 发帖数: 8565 | 2 ruby虫子少是什么原理啊?
11
【在 h*i 的大作中提到】 : https://arxiv.org/abs/1901.10220 : 刚出的对以前结果的复现,发现只有4个语言与虫子率显著相关,而不是以前认为的11 : 个:正相关C plus plus,负相关Clojure,Haskell,ruby。 : Clojure 虫子率最低,又一次被确认。
|
O***b 发帖数: 104 | 3 用 Clojure 的都是老鸟,赞海总自己做了产品出来的。
我当时一个课题里面用了 Clojure ,我自己写很爽,学生看不懂,接不过去 |
h*i 发帖数: 3446 | 4 Clojure 容易学,在公司环境里面,稍微训练一下,也就是二个星期的事。但必须要训
练。
我司招的初级程序员,包括实习生,大都是听都没听说过Clojure 的,到目前为止,近
二十人,只有一个人不行被开了,这个人是只会刷题不会解决真正的问题那种,与语言
无关。
: 用 Clojure 的都是老鸟,赞海总自己做了产品出来的。
: 我当时一个课题里面用了 Clojure ,我自己写很爽,学生看不懂,接不过去
【在 O***b 的大作中提到】 : 用 Clojure 的都是老鸟,赞海总自己做了产品出来的。 : 我当时一个课题里面用了 Clojure ,我自己写很爽,学生看不懂,接不过去
|
g****t 发帖数: 31659 | 5 我怎么印象里几年前谁贴过这个类型的研究?clojure不记得了。反正cpp也是耻辱柱上
的。 |
m******r 发帖数: 1033 | 6 这种讨论很有意思, 统计上叫 confounding factor, hci说clojure虫子少, 有人说
因为用这种语言的经验比较多,无法证明这种语言虫子少。 然后hci说他们招的是新
手, 并给出了数据,1/20。 其实这就是5%, 其实这个值恰好是在边界上, 无法得
到确定结论,(nih 曾经提议.5% 很多人反对, 这要买多少老鼠啊)。
如果有人想争论, 完全可以说, hci水平高,找人水平也高, 或者他只找名校毕业,
gpa高于3.5的, 等等。
interesting stuff, 这就是我想琢磨混合模型的原因. |
a*****g 发帖数: 19398 | 7 是自己的bug么?
11
【在 h*i 的大作中提到】 : https://arxiv.org/abs/1901.10220 : 刚出的对以前结果的复现,发现只有4个语言与虫子率显著相关,而不是以前认为的11 : 个:正相关C plus plus,负相关Clojure,Haskell,ruby。 : Clojure 虫子率最低,又一次被确认。
|
h*i 发帖数: 3446 | 8 自己读一下文章。这是巳经考虑了几个cofounder 因素后的结果:年龄,commit 数目
,等等。
: 这种讨论很有意思, 统计上叫 confounding factor, hci说clojure虫子少,
有人说
: 因为用这种语言的经验比较多,无法证明这种语言虫子少。 然后hci说他们招
的是新
: 手, 并给出了数据,1/20。 其实这就是5%, 其实这个值恰好是在边界上,
无法得
: 到确定结论,(nih 曾经提议.5% 很多人反对, 这要买多少老鼠啊)。
: 如果有人想争论, 完全可以说, hci水平高,找人水平也高, 或者他只找名校
毕业,
: gpa高于3.5的, 等等。
: interesting stuff, 这就是我想琢磨混合模型的原因.
【在 m******r 的大作中提到】 : 这种讨论很有意思, 统计上叫 confounding factor, hci说clojure虫子少, 有人说 : 因为用这种语言的经验比较多,无法证明这种语言虫子少。 然后hci说他们招的是新 : 手, 并给出了数据,1/20。 其实这就是5%, 其实这个值恰好是在边界上, 无法得 : 到确定结论,(nih 曾经提议.5% 很多人反对, 这要买多少老鼠啊)。 : 如果有人想争论, 完全可以说, hci水平高,找人水平也高, 或者他只找名校毕业, : gpa高于3.5的, 等等。 : interesting stuff, 这就是我想琢磨混合模型的原因.
|
h*i 发帖数: 3446 | 9 The studies considered bug fixing commits as the dependent variable
: 是自己的bug么?
: 11
【在 a*****g 的大作中提到】 : 是自己的bug么? : : 11
|
g****t 发帖数: 31659 | 10 這十幾個語言的commit數量差距很大。感覺不應該在一起比。應該分組,第一梯隊,第
二梯隊這樣比。
對不同尺度統計,除法做比例等基本運算其實都是有問題的。
: 这种讨论很有意思, 统计上叫 confounding factor, hci说clojure虫子
少,
有人说
: 因为用这种语言的经验比较多,无法证明这种语言虫子少。 然后hci说
他们招
的是新
: 手, 并给出了数据,1/20。 其实这就是5%, 其实这个值恰好是在边界
上,
无法得
: 到确定结论,(nih 曾经提议.5% 很多人反对, 这要买多少老鼠啊)。
: 如果有人想争论, 完全可以说, hci水平高,找人水平也高, 或者他只
找名校
毕业,
: gpa高于3.5的, 等等。
: interesting stuff, 这就是我想琢磨混合模型的原因.
【在 m******r 的大作中提到】 : 这种讨论很有意思, 统计上叫 confounding factor, hci说clojure虫子少, 有人说 : 因为用这种语言的经验比较多,无法证明这种语言虫子少。 然后hci说他们招的是新 : 手, 并给出了数据,1/20。 其实这就是5%, 其实这个值恰好是在边界上, 无法得 : 到确定结论,(nih 曾经提议.5% 很多人反对, 这要买多少老鼠啊)。 : 如果有人想争论, 完全可以说, hci水平高,找人水平也高, 或者他只找名校毕业, : gpa高于3.5的, 等等。 : interesting stuff, 这就是我想琢磨混合模型的原因.
|
|
|
h*i 发帖数: 3446 | 11 That's already in the model, i.e. it has been accounted for.
You guys should read the thing before making these obviously naive comments.
【在 g****t 的大作中提到】 : 這十幾個語言的commit數量差距很大。感覺不應該在一起比。應該分組,第一梯隊,第 : 二梯隊這樣比。 : 對不同尺度統計,除法做比例等基本運算其實都是有問題的。 : : : 这种讨论很有意思, 统计上叫 confounding factor, hci说clojure虫子 : 少, : 有人说 : : 因为用这种语言的经验比较多,无法证明这种语言虫子少。 然后hci说 : 他们招 : 的是新
|
c*******v 发帖数: 2599 | 12 数据集有大的尺度差距的时候。最强壮的办法就是分组统计,
不强求看上去更好的结论。而不是各种修补。
Fig 5里面,对数坐标下肉眼看都分成两堆了,修补的效果会更差。
python,javascript现在
跟clojure,haskell等等距离非常远。放在一起比,
我敢肯定,在data acquiring以及clean阶段的各种threshold改一改,
就会出现结果不同。过半年同样的程序跑一跑,也很可能出现不同。
毕竟作者结果显示的优势是非常小的。你问问本版做统计的这里的诀窍,
或者把我的话转到统计版问问看我说的是不是有道理。
(你如果听不懂,我给你举个例子。市值相差许多倍的股票,比收益率。)
我认为这是个很好的研究方向。但这个研究方向,距离成熟还很遥远。
更不可能在这个阶段产生实际影响。
comments.
【在 h*i 的大作中提到】 : That's already in the model, i.e. it has been accounted for. : You guys should read the thing before making these obviously naive comments.
|
c*******v 发帖数: 2599 | 13 (1)
从数据上来看。在第一梯队,也就是Fig 5里面上面那一团里面。这方面
Ruby确定无疑的比python,java,js强。因为ruby提交的多,bug fix commits少。
就是两项都占优势。那么无论什么统计方法,都会给出ruby比python/java/js
强的结论。区别只是这种优势,与别的类型的优势相比,地位的高低。
cpp因为提交是最多的。所以其实是很难判定的。
(2)
同样的思路,右上角比较法,小语种里面,牢靠的结论是,clojure比coeffe script强
大。
因为提交多,bug-fix commits少。
(3)
其实我记得以前在本版提过。第一梯队的几个语言,会趋同的。
也就是说语言不够,框架,IDE什么的会补。
所以作者讲的,几大语言的语言设计和bug比例关系不大,这点听上去合理。
小语种框架,IDE,甚至stack overflow不全,所以更依赖于语言特性。
(4)
这两篇论文都表明,rudy在多个方面都比较特殊。
有没ruby专家介绍下,ruby的特点是什么.
【在 T*******x 的大作中提到】 : ruby虫子少是什么原理啊? : : 11
|
T*******x 发帖数: 8565 | 14 谢谢。
【在 c*******v 的大作中提到】 : (1) : 从数据上来看。在第一梯队,也就是Fig 5里面上面那一团里面。这方面 : Ruby确定无疑的比python,java,js强。因为ruby提交的多,bug fix commits少。 : 就是两项都占优势。那么无论什么统计方法,都会给出ruby比python/java/js : 强的结论。区别只是这种优势,与别的类型的优势相比,地位的高低。 : cpp因为提交是最多的。所以其实是很难判定的。 : (2) : 同样的思路,右上角比较法,小语种里面,牢靠的结论是,clojure比coeffe script强 : 大。 : 因为提交多,bug-fix commits少。
|
a*****g 发帖数: 19398 | 15 lua 的 bug 怎么样?
11
【在 h*i 的大作中提到】 : https://arxiv.org/abs/1901.10220 : 刚出的对以前结果的复现,发现只有4个语言与虫子率显著相关,而不是以前认为的11 : 个:正相关C plus plus,负相关Clojure,Haskell,ruby。 : Clojure 虫子率最低,又一次被确认。
|
h*i 发帖数: 3446 | 16 not in the data set
【在 a*****g 的大作中提到】 : lua 的 bug 怎么样? : : 11
|
C*****l 发帖数: 1 | 17 还要考虑到语言跟项目种类的相关性,还有project被使用的多少,用的多的项目bug被
发现的儿就多。
【在 c*******v 的大作中提到】 : (1) : 从数据上来看。在第一梯队,也就是Fig 5里面上面那一团里面。这方面 : Ruby确定无疑的比python,java,js强。因为ruby提交的多,bug fix commits少。 : 就是两项都占优势。那么无论什么统计方法,都会给出ruby比python/java/js : 强的结论。区别只是这种优势,与别的类型的优势相比,地位的高低。 : cpp因为提交是最多的。所以其实是很难判定的。 : (2) : 同样的思路,右上角比较法,小语种里面,牢靠的结论是,clojure比coeffe script强 : 大。 : 因为提交多,bug-fix commits少。
|
n***p 发帖数: 110 | 18 这是个错觉。今年我的intern全部让做clojure的project。全部都是几天就上手了
【在 O***b 的大作中提到】 : 用 Clojure 的都是老鸟,赞海总自己做了产品出来的。 : 我当时一个课题里面用了 Clojure ,我自己写很爽,学生看不懂,接不过去
|
d*******n 发帖数: 109 | 19 Clojure 上手很快 会几个数据结构 map vec seq set list 和几个操作 into assoc
map reduce when if .. 几个就能上手干活 再稍微习惯下operator 在前面的感觉就行
但是你如果你让他接手一个老鸟写的东西clojure project, 里面全是macro,
defmethod, dynamic , 这些的 就够他吃一壶
然后你再要求他follow老鸟的 style 把 clojure写的像clojure 又够他吃一壶。
Clojure 写好了很漂亮 超级简洁 还会上瘾。
写不好的 千万就不要选用这个语言
: 这是个错觉。今年我的intern全部让做clojure的project。全部都是几天就上手了
【在 n***p 的大作中提到】 : 这是个错觉。今年我的intern全部让做clojure的project。全部都是几天就上手了
|
T*******x 发帖数: 8565 | 20 我最近写的一部分Clojure程序,全是斜向下。不过程序形状应该和处理事务内容有关。
就行
【在 d*******n 的大作中提到】 : Clojure 上手很快 会几个数据结构 map vec seq set list 和几个操作 into assoc : map reduce when if .. 几个就能上手干活 再稍微习惯下operator 在前面的感觉就行 : 但是你如果你让他接手一个老鸟写的东西clojure project, 里面全是macro, : defmethod, dynamic , 这些的 就够他吃一壶 : 然后你再要求他follow老鸟的 style 把 clojure写的像clojure 又够他吃一壶。 : Clojure 写好了很漂亮 超级简洁 还会上瘾。 : 写不好的 千万就不要选用这个语言 : : : 这是个错觉。今年我的intern全部让做clojure的project。全部都是几天就上手了 :
|
|
|
h*i 发帖数: 3446 | 21 Clojure不鼓励用宏。所以你说的这种所谓“老鸟”,可能不算是在写idiomatic
Clojure。idiomatic Clojure里面,主要还是很多小函数。而且Clojure讲究以数据为
中心,数据》函数》宏。
Clojure社区吸取了Common Lisp的教训,不鼓励用宏来弄DSL,而是鼓励用数据结构来
作DSL, 比如Hiccup这种,纯数据结构。
一般也不太鼓励用multimethod,一是有性能问题,二是需要extend verb的地方,更鼓
励用
defprotocol这种类OOP的东西,把这些都包在库里面,外部还是一些纯函数。另外以数
据为中心的话,基本不需要这种extend verb的情况。除非在写底层的库。
总之,你说的这种所谓“老鸟”,不算是在follow the Clojure way.
The Clojure way is DOP (data oriented programming):就是几个数据结构搞定一
切。这也是非常新人友好的办法。
就行
手了
【在 d*******n 的大作中提到】 : Clojure 上手很快 会几个数据结构 map vec seq set list 和几个操作 into assoc : map reduce when if .. 几个就能上手干活 再稍微习惯下operator 在前面的感觉就行 : 但是你如果你让他接手一个老鸟写的东西clojure project, 里面全是macro, : defmethod, dynamic , 这些的 就够他吃一壶 : 然后你再要求他follow老鸟的 style 把 clojure写的像clojure 又够他吃一壶。 : Clojure 写好了很漂亮 超级简洁 还会上瘾。 : 写不好的 千万就不要选用这个语言 : : : 这是个错觉。今年我的intern全部让做clojure的project。全部都是几天就上手了 :
|
h*i 发帖数: 3446 | 22 You are writing python in Clojure.
关。
【在 T*******x 的大作中提到】 : 我最近写的一部分Clojure程序,全是斜向下。不过程序形状应该和处理事务内容有关。 : : 就行
|
T*******x 发帖数: 8565 | 23 属实。我现在还是python思维,没感受到Clojure独特的魅力。
【在 h*i 的大作中提到】 : You are writing python in Clojure. : : 关。
|
d*******n 发帖数: 109 | 24 你说的有道理 真想把你说的这些讲给老鸟们听 但是我太年轻了,人微言轻
最近入手 element of clojure 和 getting clojure 两本书 希望可以好好研究
想跟老鸟搭上话自己先得变强
: Clojure不鼓励用宏。所以你说的这种所谓“老鸟”,可能不算是在写idiomatic
: Clojure。idiomatic Clojure里面,主要还是很多小函数。而且Clojure讲究以
数据为
: 中心,数据》函数》宏。
: Clojure社区吸取了Common Lisp的教训,不鼓励用宏来弄DSL,而是鼓励用数据
结构来
: 作DSL, 比如Hiccup这种,纯数据结构。
: 一般也不太鼓励用multimethod,一是有性能问题,二是需要extend verb的地方
,更鼓
: 励用
: defprotocol这种类OOP的东西,把这些都包在库里面,外部还是一些纯函数。另
外以数
: 据为中心的话,基本不需要这种extend verb的情况。除非在写底层的库。
: 总之,你说的这种所谓“老鸟”,不算是在follow the Clojure way.
【在 h*i 的大作中提到】 : You are writing python in Clojure. : : 关。
|
n***p 发帖数: 110 | 25 This is not clojure way
关。
【在 T*******x 的大作中提到】 : 我最近写的一部分Clojure程序,全是斜向下。不过程序形状应该和处理事务内容有关。 : : 就行
|
d*******n 发帖数: 109 | 26 兄弟 你下面两个function写的太高深了,我看了半天才明白什么意思。
改写了第一个,你看下是不是你原来function一样的意思
(defn sequential-new
"param: the parameter to be applied to the first fn; fns: the functions
taking in the ret of previous fn as argument"
[param & fns]
(reduce (fn [ret f]
(let [result (f (second ret))
p result]
[true p (conj (get ret 3) result)])) [true param []] fns))
关。
【在 T*******x 的大作中提到】 : 我最近写的一部分Clojure程序,全是斜向下。不过程序形状应该和处理事务内容有关。 : : 就行
|
T*******x 发帖数: 8565 | 27 嗯,大概意思是对的。但是不完全一样。
原函数sequential接受一串函数,返回一个函数。其中每一个函数的形式为
f(p)=[success-or-not, new-p, result-vector]
输入函数串行(前一个函数返回的new-p作为下一个函数的p),如果每个都成功,返回
函数返回的是收集起来的结果。如果有任何一个失败,返回函数返回的是空vector,并
把p置于最开始的位置。
你这个和原函数不同。首先你改变了原函数的signature。第二,你只考虑的所有函数
都成功的情况。第三,你let里面[p result]好像不对。
【在 d*******n 的大作中提到】 : 兄弟 你下面两个function写的太高深了,我看了半天才明白什么意思。 : 改写了第一个,你看下是不是你原来function一样的意思 : (defn sequential-new : "param: the parameter to be applied to the first fn; fns: the functions : taking in the ret of previous fn as argument" : [param & fns] : (reduce (fn [ret f] : (let [result (f (second ret)) : p result] : [true p (conj (get ret 3) result)])) [true param []] fns))
|
d*******n 发帖数: 109 | 28 嗯 我明白
我只是觉得这真是一个很奇怪的函数
一个有名函数sequential 直接给call 一个 匿名函数 code smell不太对了所以我干脆
就把signature
这个函数的应用我也可以理解 相当于 有一个 parameter p 需要被 sequentially
processed by f1, f2, f3...fn , fn的input 是 fn-1的 output. 其中任何一个 fn
失败了 整个函数要 yield false 当前的 p 以及 失败以前所有 fn 的结果 如果所有
的fn 都成功 返回 true p 和所有 fn 的结果
我还是觉得 [param |
T*******x 发帖数: 8565 | 29 对,就是这个用法。嗯,意图对了,写法可以变化,改signature应该也没问题。我当
时用这个signature也想过到底怎样才合适,我也觉得没有一定之规。不过你没考虑其
中某个输入函数失败的情况,没有吧?
fn
【在 d*******n 的大作中提到】 : 嗯 我明白 : 我只是觉得这真是一个很奇怪的函数 : 一个有名函数sequential 直接给call 一个 匿名函数 code smell不太对了所以我干脆 : 就把signature : 这个函数的应用我也可以理解 相当于 有一个 parameter p 需要被 sequentially : processed by f1, f2, f3...fn , fn的input 是 fn-1的 output. 其中任何一个 fn : 失败了 整个函数要 yield false 当前的 p 以及 失败以前所有 fn 的结果 如果所有 : 的fn 都成功 返回 true p 和所有 fn 的结果 : 我还是觉得 [param
|
d*******n 发帖数: 109 | 30 是 应为当时还没有100%想明白这个函数的应用场景 单凭一张图片做code review 很麻烦
我的改写也只是个大概意思 如果函数失败 可以用一下reduced 就可以了
不过同意几位前辈说的 图片里的fn not in clojure way 虽然我也没有真正理解什么
叫 clojure way 只是凭感觉在试着改写你的function.
希望可以看到其他人的建议
: 对,就是这个用法。嗯,意图对了,写法可以变化,改signature应该也没问题
。我当
: 时用这个signature也想过到底怎样才合适,我也觉得没有一定之规。不过你没
考虑其
: 中某个输入函数失败的情况,没有吧?
: fn
【在 T*******x 的大作中提到】 : 对,就是这个用法。嗯,意图对了,写法可以变化,改signature应该也没问题。我当 : 时用这个signature也想过到底怎样才合适,我也觉得没有一定之规。不过你没考虑其 : 中某个输入函数失败的情况,没有吧? : : fn
|
|
|
n***p 发帖数: 110 | 31 抛砖引玉,你自己的function最好deal with one data point. 需要deal with
collection of data最好是combine你的function和比如map之类的core function.
而不是一开始就pass一个collection到你自己的function,让所有转换在一个function
里面完成。
麻烦
【在 d*******n 的大作中提到】 : 是 应为当时还没有100%想明白这个函数的应用场景 单凭一张图片做code review 很麻烦 : 我的改写也只是个大概意思 如果函数失败 可以用一下reduced 就可以了 : 不过同意几位前辈说的 图片里的fn not in clojure way 虽然我也没有真正理解什么 : 叫 clojure way 只是凭感觉在试着改写你的function. : 希望可以看到其他人的建议 : : : 对,就是这个用法。嗯,意图对了,写法可以变化,改signature应该也没问题 : 。我当 : : 时用这个signature也想过到底怎样才合适,我也觉得没有一定之规。不过你没 : 考虑其
|
T*******x 发帖数: 8565 | 32 我又写了两个版本的sequential function。
第一个是recursive的,以前写过的,但是看到它并不必循环的版本更简练,更易读,
所以没用。
第二个版本用reduce写的,受到几位的启发,但是分成了两个函数,合在一起的话,也
不简练,有点乱。
function
【在 n***p 的大作中提到】 : 抛砖引玉,你自己的function最好deal with one data point. 需要deal with : collection of data最好是combine你的function和比如map之类的core function. : 而不是一开始就pass一个collection到你自己的function,让所有转换在一个function : 里面完成。 : : 麻烦
|
h**********9 发帖数: 1 | 33 how come ruby is better than python and java?
11
【在 h*i 的大作中提到】 : https://arxiv.org/abs/1901.10220 : 刚出的对以前结果的复现,发现只有4个语言与虫子率显著相关,而不是以前认为的11 : 个:正相关C plus plus,负相关Clojure,Haskell,ruby。 : Clojure 虫子率最低,又一次被确认。
|