h*i 发帖数: 3446 | 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是平均代码最短的,所以结果在各方面都胜出了。哈哈。 |
g****t 发帖数: 31659 | 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 ***
|
g****t 发帖数: 31659 | 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。等于是曲不离口,拳不离手。
|
a*****g 发帖数: 19398 | 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 ***
|
d******c 发帖数: 2407 | 5 这里的统计偏差很大
越是入门难的语言,新手越多,基础差的人越多,错误越多
FP要么是老手,要么是很有兴趣的人,或者是新手但是一开始就有人教,有人修正坏习
惯。如果新手自学FP,能写code肯定是基础很好的人。相比之下新手自学python胡写一
气太容易了。
应该加上开发者的经验级别,IQ之类。 |
d******c 发帖数: 2407 | 6 代码长度这个观察很有意思,代码越长,越复杂,出问题可能性越大。表达力强的语言
,能在比较短的代码内解决问题,一目了然,人可以同时考虑整个系统,肯定要好一些
。还有就是代码短很大程度是用库比较多,库成熟的话也比自己写bug少。 |
g****t 发帖数: 31659 | 7 是的。我也觉得这是个主要偏差。
能用FP解决实际问题,甚至赚钱的,一定是老手。
或者超级有力量,能折腾的新手。
跟写java的不同。python我感觉做产品其实还是挺有难度的。说到底还是java,c#,c
等适合
team work
: 这里的统计偏差很大
: 越是入门难的语言,新手越多,基础差的人越多,错误越多
: FP要么是老手,要么是很有兴趣的人,或者是新手但是一开始就有人教,
有人修
正坏习
: 惯。如果新手自学FP,能写code肯定是基础很好的人。相比之下新手自学
python
胡写一
: 气太容易了。
: 应该加上开发者的经验级别,IQ之类。
【在 d******c 的大作中提到】 : 代码长度这个观察很有意思,代码越长,越复杂,出问题可能性越大。表达力强的语言 : ,能在比较短的代码内解决问题,一目了然,人可以同时考虑整个系统,肯定要好一些 : 。还有就是代码短很大程度是用库比较多,库成熟的话也比自己写bug少。
|
m****o 发帖数: 182 | 8 像Clojure,Scala和 Haskell这样的语言,对程序员的入门门槛也相对较高,客观上降
低了程序的bug数量。举个例子:如果Scala把lightbend stack再去掉统计,基本剩下
的都是用typelevel stack的。那对于程序员入门水平要求更高,bug数量还会进一步降
低。 |
n***p 发帖数: 110 | 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 ***
|
n*****3 发帖数: 1584 | 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 :)
|
n***p 发帖数: 110 | 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...
|