由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - Clojure 再次被确认是虫子最少的语言
相关主题
这年头有哪几个公司是用函数式编程的呢?clojure高手请进
RE: functional programming? English grammar error最近在用clj干活。顺便看了看macro 倒吸一口冷气。
C++函数避免长参数列表Clojure上手123
王垠水平见长macro is evil
看看为什么Java, Clojure 老鸟要转Javascript为什么design pattern对FP language来说就是渣
functional programming?介绍一个学习Clojure的好地方
让机器爽还是让程序员爽,这是个问题storm俨然是下一个冉冉升起的新星啊
有没有喜欢haskell的同学我认为JVM上的语言,老大还是Java
相关话题的讨论汇总
话题: clojure话题: br话题: 函数话题: fn话题: 语言
进入Programming版参与讨论
1 (共1页)
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, 这就是我想琢磨混合模型的原因.

相关主题
让机器爽还是让程序员爽,这是个问题最近在用clj干活。顺便看了看macro 倒吸一口冷气。
有没有喜欢haskell的同学Clojure上手123
clojure高手请进macro is evil
进入Programming版参与讨论
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。全部都是几天就上手了
:

相关主题
为什么design pattern对FP language来说就是渣我认为JVM上的语言,老大还是Java
介绍一个学习Clojure的好地方vert.x 基本上没戏
storm俨然是下一个冉冉升起的新星啊Scala的用途
进入Programming版参与讨论
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

相关主题
认真问一下wdongRE: functional programming? English grammar error
mitbbs 封 goodbug 在 Programming 版 (转载)C++函数避免长参数列表
这年头有哪几个公司是用函数式编程的呢?王垠水平见长
进入Programming版参与讨论
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 虫子率最低,又一次被确认。

1 (共1页)
进入Programming版参与讨论
相关主题
vert.x 基本上没戏看看为什么Java, Clojure 老鸟要转Javascript
Scala的用途functional programming?
认真问一下wdong让机器爽还是让程序员爽,这是个问题
mitbbs 封 goodbug 在 Programming 版 (转载)有没有喜欢haskell的同学
这年头有哪几个公司是用函数式编程的呢?clojure高手请进
RE: functional programming? English grammar error最近在用clj干活。顺便看了看macro 倒吸一口冷气。
C++函数避免长参数列表Clojure上手123
王垠水平见长macro is evil
相关话题的讨论汇总
话题: clojure话题: br话题: 函数话题: fn话题: 语言