GO-斯卡拉 - 走!有哪些主要区别?

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的后代这一事实.

  • 您是否注意到您根据一些非常糟糕的代码在Scala和Go之间进行了可笑的比较,从而开始了您的问题?你问题的前言是真正需要解决的问题. (14认同)

Lan*_*dei 14

我不这么认为,至少在概念上他们是非常不同的.Go比C#更像C++和"低级别",而C#只有一些功能特性,而Scala允许你编写典型的"功能"代码(比OCaml或Haskell更冗长,但类似).Scala的类型系统相当复杂,但仍然基于类似Java/C#的基础.另一方面,Go的面向对象部分看起来很不一样.我没有尝试过Go,因为我发现它太像C级而且太低级了.作为一名Java程序员,我知道C#在技术上领先,并且在Java中缺少很多很好的功能.学习Scala时,它拓宽了我的视野,给了我功能代码的优势和力量,同时又不失去面向对象世界的好东西.

  • 在维基百科上,第一句话是"Scala是一种多范式编程语言......"因此,正如您所说,它允许您编写典型的"功能"代码,但如果您更喜欢命令式风格则没有任何错误.我同意,Go的真名是C2. (2认同)

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#进行比较就像将牛车与兰博基尼进行比较.

  • @peterSO:_"如果你想清除巨石和树木的土地,使用牛车或大象,"_ < - 想想低级编程作为这里有巨石和树木的土地.:) (2认同)