Redian新闻
>
实践研究表明,FP代码虫子少,质量高
avatar
实践研究表明,FP代码虫子少,质量高# Programming - 葵花宝典
h*i
1
Communication of ACM(最权威计算机杂志)最新文章:
A Large-Scale Study of Programming Languages and Code Quality in GitHub
https://cacm.acm.org/magazines/2017/10/221326-a-large-scale-study-of-
programming-languages-and-code-quality-in-github/fulltext
结论:
1. FP语言代码质量最高,虫子最少。与虫子数量进行的回归分析中,统计结果显著的
最差和最好的语言如下:
最好:Clojure, -.30 ***
Haskell -.26 ***
Scala -.24 ***
Ruby -.13 **
最差:C++ .18 ***
Obj. C .15 **
C .11 **
PHP .10 *
Python .08 *
2. 编程语言的应用范围与虫子数量无关。
3. 虫子的类型与编程语言很相关:
a. 普通的编程错误占88%强。 这种错误与程序语言的关系类似与上面的1: FP语言虫
子显著少。
b. 内充错误占 5%。 C系列语言需要程序员自己管理内存的这种错误最多。系统管理内
存的语言里面,Java的内存错误最多(漏内存)。
c. 同步错占2%。同样,C系列语言有最多这种错误。一般而言,静态类型语言这种错误
最多(有意思,为啥啊?)。动态类型语言里面,Erlang的这种错误最多(比较吃惊啊
,可能是滥用同步了)。
d. 安全类错误占7%。Erlang, C++, Python的这类问题最多,Clojure最少。一般而言
,静态类型语言这类错误最多(为啥啊?)。
总之很有意思,从这个文章而言,Clojure简直就是最好的语言了:FP, 系统管理内存
,动态类型,语言本身有很多同步的方式,安全。
有些发现很反很多人的直觉:比如静态类型的语言其实错误更多,Erlang其实同步错误
很多。
这个研究其实与以前一个研究一致,那个研究表明只有代码长度与虫子数量显著相关。
这些语言里面,Clojure是平均代码最短的,所以结果在各方面都胜出了。哈哈。
avatar
g*t
2
比较小众的编程风格,刷刷题,面试都不难。
但是如果长期用,一定会发现有很多问题需要程序员自己case by case解决,
因为不存在现成的方法。能活下来的,很可能by average个人是力量比较强的
程序员。因为他们要解决很多没有听人讲过的问题。
所以Paul Graham200x年说他开start up愿意找写python的,不找写java的。
也有一定道理。
我在微信还看过一个别人转的统计。有个公司统计过发现,用vim,emacs的人
通过他们公司面试tech review的比例很高。用eclipse,vs,sublime等的比例
差一个档次。vim不知道。Emacs能坚持下来的,往往等于几个月一个小项目,
从设计到测试到实现DIY。等于是曲不离口,拳不离手。

【在 h*i 的大作中提到】
: Communication of ACM(最权威计算机杂志)最新文章:
: A Large-Scale Study of Programming Languages and Code Quality in GitHub
: https://cacm.acm.org/magazines/2017/10/221326-a-large-scale-study-of-
: programming-languages-and-code-quality-in-github/fulltext
: 结论:
: 1. FP语言代码质量最高,虫子最少。与虫子数量进行的回归分析中,统计结果显著的
: 最差和最好的语言如下:
: 最好:Clojure, -.30 ***
: Haskell -.26 ***
: Scala -.24 ***

avatar
g*t
3
为了避免误解,补充一点。bug少,不意味着代码质量高。
力量强也不意味着是个好工人。

【在 g****t 的大作中提到】
: 比较小众的编程风格,刷刷题,面试都不难。
: 但是如果长期用,一定会发现有很多问题需要程序员自己case by case解决,
: 因为不存在现成的方法。能活下来的,很可能by average个人是力量比较强的
: 程序员。因为他们要解决很多没有听人讲过的问题。
: 所以Paul Graham200x年说他开start up愿意找写python的,不找写java的。
: 也有一定道理。
: 我在微信还看过一个别人转的统计。有个公司统计过发现,用vim,emacs的人
: 通过他们公司面试tech review的比例很高。用eclipse,vs,sublime等的比例
: 差一个档次。vim不知道。Emacs能坚持下来的,往往等于几个月一个小项目,
: 从设计到测试到实现DIY。等于是曲不离口,拳不离手。

avatar
a*g
4
有趣。

【在 h*i 的大作中提到】
: Communication of ACM(最权威计算机杂志)最新文章:
: A Large-Scale Study of Programming Languages and Code Quality in GitHub
: https://cacm.acm.org/magazines/2017/10/221326-a-large-scale-study-of-
: programming-languages-and-code-quality-in-github/fulltext
: 结论:
: 1. FP语言代码质量最高,虫子最少。与虫子数量进行的回归分析中,统计结果显著的
: 最差和最好的语言如下:
: 最好:Clojure, -.30 ***
: Haskell -.26 ***
: Scala -.24 ***

avatar
d*c
5
这里的统计偏差很大
越是入门难的语言,新手越多,基础差的人越多,错误越多
FP要么是老手,要么是很有兴趣的人,或者是新手但是一开始就有人教,有人修正坏习
惯。如果新手自学FP,能写code肯定是基础很好的人。相比之下新手自学python胡写一
气太容易了。
应该加上开发者的经验级别,IQ之类。
avatar
d*c
6
代码长度这个观察很有意思,代码越长,越复杂,出问题可能性越大。表达力强的语言
,能在比较短的代码内解决问题,一目了然,人可以同时考虑整个系统,肯定要好一些
。还有就是代码短很大程度是用库比较多,库成熟的话也比自己写bug少。
avatar
g*t
7
是的。我也觉得这是个主要偏差。
能用FP解决实际问题,甚至赚钱的,一定是老手。
或者超级有力量,能折腾的新手。
跟写java的不同。python我感觉做产品其实还是挺有难度的。说到底还是java,c#,c
等适合
team work


: 这里的统计偏差很大

: 越是入门难的语言,新手越多,基础差的人越多,错误越多

: FP要么是老手,要么是很有兴趣的人,或者是新手但是一开始就有人教,
有人修
正坏习

: 惯。如果新手自学FP,能写code肯定是基础很好的人。相比之下新手自学
python
胡写一

: 气太容易了。

: 应该加上开发者的经验级别,IQ之类。



【在 d******c 的大作中提到】
: 代码长度这个观察很有意思,代码越长,越复杂,出问题可能性越大。表达力强的语言
: ,能在比较短的代码内解决问题,一目了然,人可以同时考虑整个系统,肯定要好一些
: 。还有就是代码短很大程度是用库比较多,库成熟的话也比自己写bug少。

avatar
m*o
8
像Clojure,Scala和 Haskell这样的语言,对程序员的入门门槛也相对较高,客观上降
低了程序的bug数量。举个例子:如果Scala把lightbend stack再去掉统计,基本剩下
的都是用typelevel stack的。那对于程序员入门水平要求更高,bug数量还会进一步降
低。
avatar
n*p
9
The conclusion actually says static typing is better than dynamic.
Although I agree with you Clojure is the best :)

【在 h*i 的大作中提到】
: Communication of ACM(最权威计算机杂志)最新文章:
: A Large-Scale Study of Programming Languages and Code Quality in GitHub
: https://cacm.acm.org/magazines/2017/10/221326-a-large-scale-study-of-
: programming-languages-and-code-quality-in-github/fulltext
: 结论:
: 1. FP语言代码质量最高,虫子最少。与虫子数量进行的回归分析中,统计结果显著的
: 最差和最好的语言如下:
: 最好:Clojure, -.30 ***
: Haskell -.26 ***
: Scala -.24 ***

avatar
n*3
10
how can clojure be best and dynamic in the same time??
dynamic is the devil...

【在 n***p 的大作中提到】
: The conclusion actually says static typing is better than dynamic.
: Although I agree with you Clojure is the best :)

avatar
n*p
11
Then there are so many devils:
JavaScript, Python, Ruby, php, Perl, lisp, groovy, R ...

【在 n*****3 的大作中提到】
: how can clojure be best and dynamic in the same time??
: dynamic is the devil...

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。