Sop*_*lis 9 c# programming-languages scala go
我刚刚发现这个网页比较了一些用Scala,C#和Go编写的代码.我很惊讶看到Scala和Go代码看起来有多接近,比Scala代码与C#代码相比要多得多.
所以我的问题是:Scala和Go之间最重要的区别是什么?
小智 26
老实说,Scala代码是以非常强制性的方式编写的.我不是功能纯粹主义者,但是在Scaladoc for Stream类的开头,将该页面的Eratosthenes Sieve代码与更短,更清晰的Eratosthenes Sieve示例进行对比.那个页面的代码到处都有大量的变量和循环,更不用说位移.现在,我不知道对于什么被认为是惯用的Scala代码有多大的共识,但这绝对不是它的附近.因此,它没有说出Scala和Go之间的相似性,除了它们都是C的后代这一事实.
Lan*_*dei 14
我不这么认为,至少在概念上他们是非常不同的.Go比C#更像C++和"低级别",而C#只有一些功能特性,而Scala允许你编写典型的"功能"代码(比OCaml或Haskell更冗长,但类似).Scala的类型系统相当复杂,但仍然基于类似Java/C#的基础.另一方面,Go的面向对象部分看起来很不一样.我没有尝试过Go,因为我发现它太像C级而且太低级了.作为一名Java程序员,我知道C#在技术上领先,并且在Java中缺少很多很好的功能.学习Scala时,它拓宽了我的视野,给了我功能代码的优势和力量,同时又不失去面向对象世界的好东西.
Jay*_*nha 10
Go只是另一种必不可少的语言,仍在尿布中.截至目前,Go没有泛型.此外,还不支持函数式编程.
C#是一种OO /命令式语言,对函数式编程的支持很少.有仿制药.当前版本不支持协方差和反演变量注释(尽管它们计划用于下一版本的语言).
Scala是一种混合语言,试图将两个世界中最好的(即OO和功能)组合成一种语言.从下图中可以看出(来源:http://james-iry.blogspot.com/2010/05/types-la-chart.html),Scala有一个非常复杂的文件系统,C#和缺乏.
alt text http://www.pogofish.com/types.png
因此,Scala是三者中功能最丰富的语言(考虑OO和功能特性).C#确实提供了一些功能构造,但它与Scala无关.IMO将Go与Scala/C#进行比较就像将牛车与兰博基尼进行比较.