Google的Go成为主流语言的机会是什么?[关闭]


58

谁在这里学习Go?是否有其他公司正在使用它?它有可能被广泛使用吗?


21
红宝石在Rails之后变得流行,在iPhone之后成为Objective-C,这是怎么回事after
ohho 2011年

1
糟糕,对于大多数人而言,它什么都解决不了。
小丹尼尔(Daniel Little)

6
机会在0到1之间。任何更具体的内容都需要博士学位,而我没有。
Rein Henrichs

1
@Rein Henrichs-您将得到一个,尽管委员会将需要对最终论文进行一些更改
Martin Beckett

3
Google确实应该考虑为Go语言开发一个Android SDK。至少作为开始。
setzamora 2012年

Answers:


46

在编程语言方面,古老的格言“这不是你是谁,而是你认识的人”无疑是正确的。C和C ++由AT&T赞助,Java由Sun带来给我们,.NET家族从Microsoft诞生,并且所有这些都非常流行。然后,我们有了Objective-C和Python,它们已经存在了相当长的一段时间,直到它们分别被苹果和谷歌发现并大肆宣传,然后才真正变得晦涩难懂,然后突然间它们真正起飞了。但是,没有主要赞助商的语言,无论它们多么出色,都往往会变得晦涩难懂。

Go由Google赞助。在这里得出正确的结论并不困难。给它五年,它将是巨大的。


13
@ixtmixilix:你是认真的吗?App EngineGWT则相反
imgx64 2010年

4
@ixtmixilix-Guice(基于Java的IoC框架)由Google编写,并在AdWords前端和Wave中使用。Google接缝使用多种语言。
mlk

3
+1我同意您的主要论点(FORTRAN,COBOL和C确实有效),但我不同意Go,因为这只是获得公司赞助的一种实验。
2011年

2
AT&T并没有真正推出C或C ++。C之所以受欢迎是因为它是Unix的语言,后来又因为它在大型程序上优于Pascal。根据Stroustrup的书“ C ++的设计和演变”,C ++只是一种传播。通常,语言需要杀手级应用程序或大型公司赞助才能发挥很大的作用,但是语言可以在没有这种情况的情况下发挥很大作用,或者错过它。
David Thornley

3
已经五年了-您现在怎么看?
hippietrail 2015年

17

实际上,我认为Go不会那么成功。它之所以无法普及的原因是它旨在成为系统编程的语言。


17
我不同意。看一下“ echo”的Linux源代码,然后看一下echo的Go实现。如果该语言可以像这样一个简单的命令省去数千行,那么它就可以减少诸如图形处理库之类的行。而且,如果它可以减少图形处理库的工作量,也许有一天id软件的人们(例如)会发现它比C / C ++更有用。由于id有发布游戏源代码的习惯,因此Go中的3d图形可能会在5年内变得庞大。
ixtmixilix

14
@ixtmixilix Linux与echo没有任何关系,这就是GNU的一部分。
替代

3
您见过用erlang写的东西吗?那不是上帝的可怕。
Unix管理员

2
我认为,如果Google的操作系统开始普及,G​​o只会超越C / C ++,因为它是一种系统语言。如果Google的操作系统没有成功,我认为要进入主流市场将更加困难。
Jordan Parmer

2
Neiter,我认为Go将会快速增长。我的理由:1.语法很奇怪2.太多的Limbo 3.库并不详尽4.在Erlang上并发模型更好
Daniel Voina

15

真正需要具有更多现代功能的系统语言。C和C ++太受遗留代码的束缚,这里的向后兼容性大大改善了它。话虽如此,我认为Go不能以当前的形式履行该角色。它的设计过于简约。尽管其并发模型令人兴奋,但它从高级语言到系统世界带来的其他功能很少。(我上次检查时承认,它是前一阵子,它甚至没有例外。)此外,至少在某种程度上,计算机语言基准测试是一个很好的衡量标准(公认这是一个非常粗略的指标),但并不是几乎与“真实”系统语言所需的速度一样快。

我认为有,以填补一个更现代的系统语言的空白的最好机会的语言ð。D在技术上比Go强得多,但在政治上却较弱。它没有大公司的支持。它真正需要的是一些库(由于语言规范稳定,现在正在迅速解决)和杀手级应用程序。


7
重新“它甚至没有例外”这是一个重大的决定是- golang.org/doc/go_faq.html
user151019

1
@Mark:有趣。恐慌和恢复看起来像是异常的例外。D有作用域语句,大致等同于defer(),但有正常的例外。
dsimcha 2011年

3
它没有例外,但不需要例外。相反,它允许多个返回值,这foo, err := SomeFunc()很常见。对于重大问题或err效果不佳的地方,可以使用panic()recover()。但是,很少有意使用它们。如果堆栈非常短,则无法将异常传递到堆栈上,并且在有许多并发线程的地方,短堆栈很常见。
crazy2be 2011年

3
“ D在技术上比Go强得多”,“其设计过于简约”。有趣的是,这是事实。面对您,这只是您的意见。
2011年

10

我正在学习Go,是的,除了Google和Heroku之外,它的使用效率很高。

Go绝对是系统编程的好语言。C语言中的简单代码,C ++语言中的强大结构和Java语言中的安全功能。由于它是一门很年轻的语言,因此继承了许多其他语言的优点:

  • 范围内的迭代
  • 通道(忘记互斥锁等)
  • 没有类型层次结构,只有接口继承
  • 实际上,Go甚至都不知道类,而是更灵活的“类型”:当定义的方法匹配时,接口将自动继承
  • 更少样板:i := 1代替int i = 1func f(x, y, z int)代替void f(int x, int y, int z)type Foo struct { a, b int }; bar := Foo{1, 2}代替class Foo { int a; int b; Foo(int a, int b) { this.a = a; this.b = b; } } /* ... */ Foo bar = new Foo(1, 2);
  • 仅在真正例外的情况下例外(“紧急情况”):在其他情况下,容易出错的函数可以返回一个额外的错误参数,您可以轻松地忽略它

考虑到所有这些美好的事物以及仅静态类型的语言才知道的安全性和性能,动态语言社区的许多人已经开始喜欢Go。在大多数情况下,Go代码不会比Ruby代码长很多,但在每种情况下都更安全,结构更好。

但最终我想Go的杀手argument是并发。它是一种类似于C的语言,具有强大的并发支持,只有功能语言才能知道。


2
我最近在为AppEngine编程学习Go时就爱上了Go,我不能说它比您做的更好。做得好。
亚当·克罗斯兰

5

我要说的是,这主要取决于将在Go中/为Go使用/使用Go创建的库/服务/软件。人们在三种情况下使用某种东西(顺序很重要):当他们几乎没有其他选择时(Objective-C);当周围人使用它时(FORTRAN);当他们使生活更轻松时(Ruby)。


5

这样做可能为时已晚,但是Go现已成为一种流行的语言,并可能随着Google的推动而进入主流。它被推崇为Google内部系统和产品使用的语言,并被推崇为与Google App Engine一起使用的语言。Go构建和增强的后端有一些非常敏锐的人。有一些非常聪明和富有想象力的人在Go的第三方库上工作。

Go填补了其他语言尚未完全填补的空白。对我而言,我曾经尝试用Perl以及一系列的变通方法和技巧来填补这一空白。我不认为这是适用于所有情况和所有人的完美语言,但是它无疑是适用于许多情况的候选语言。例如,它适用于Web应用程序,同时也适用于桌面应用程序或基于服务器的应用程序。它在HTTP和WebSocket方面做得非常出色(这意味着您可以完全跳过Apache或Nginx),同时在Windows,Linux和OS X上对于守护程序和常规ol桌面应用程序也能很好地运行。目前,对我而言唯一失败的情况是针对Android应用程序,我希望这种情况能尽快得到纠正。我将其用于Windows桌面应用程序,Linux桌面应用程序和基于Linux的Web应用程序。

我相信要真正达到主流还需要几年的时间,但它一定会实现。我认为它需要构建更多的第三方库,就像Perl在CPAN中具有的数量和选择那样。它会到达那里。


3

无论如何,“主流”是什么意思?不知道这一点,很难回答这个问题。让我们来看一下。

有许多可能的定义。这里有一些:

管理视图:

  • 有客户要求您使用它
  • 让管理层要求您使用它
  • 不会因使用它而受到管理层的批评

开发者观点:

  • 常用的语言工具(例如,在Linux发行版中)
  • 语言工具将在10年内普遍可用
  • 创建将持续存在并且至少使用十年的软件工件

职业观点:

  • 特定语言的技能可以转移到其他工作
    • 招聘人员要

鉴于以上所有情况,我认为唯一的诚实答案可能是“太早说不出来”,但我相信任何真正长寿的最佳指标是数目使用该语言的企业。大型组织都非常出色-由于它们可以应用的投资规模,它们甚至可能对于语言或工具系统的增长至关重要-但它们很容易过时(少数例外)。相比之下,如果一家小型企业已经围绕使用该语言来交付产品和服务而建立起来,那么他们很可能会做出贡献,以确保他们将来仍然能够这样做。它们也构成了该地区强大的就业市场的基础,也形成了对工具的需求。有趣的是,这些是我名单上的主流性的几个指标(可能更多,取决于管理层的异想天开)。

那么,有多少人在Google之外使用Go进行工作?我不知道。(我不是。Java,C和Tcl。YMMV的组合目前可以很好地满足我的需求。)


关于“主流”含义的精彩摘要。我觉得围棋拥有所有这些,除了“客户要求你使用它。”
通配符

2

它已经比某些语言更流行。

Go可能是20多年来最重要的语言。从海量数据集的角度来看,它确实确实带来了巨大的好处,社交媒体网站,云计算,搜索和移动提供了巨大的数据集。

至少在某些情况下,与Ruby On Rails相比,Facebook,Twitter,Linkedin,YouTube和广告服务网络等网站对Google Go的使用更多。


1

我听说Go的时候就看着它。作为一个完整的初学者,我仍在学习入门语言(在我的情况下为Java,C#,Python和Scheme),这是很多知识,但是如果我不全神贯注于许多不同的语言,我会认真考虑一下

从我的水平来看,在赶上潮流之前降低基础知识没有什么害处。但是,如果我没记错的话,当我查找Go时,由于某种原因,我对Erlang变得非常着迷。


1

由于这个问题,我只是看过Go,所以我无法真正评论它是否会成为主流语言,但是有一件事让我非常兴奋:

http://golang.org/doc/go_spec.html#Channel_types

我首先在Occam-pi中遇到了Channels的概念,我必须说这是有史以来最好的编程概念之一。在使用C型语言执行相同操作有时会很痛苦的情况下,这使得并发显得如此容易。

从我所看到的(在我看过的10分钟之内)来看,Go似乎试图结合许多不同的编程概念,但这确实冒着使其成为万事通,无精打采的风险。


0

我怀疑它是否成为主流将取决于Google是否将其用作appengine和/或GWT的受支持语言。


2
系统语言对Google App Engine有何用处?
ixtmixilix

我想说,仅仅因为它是一种目前被编译成机器代码的系统语言,就不会阻止Google将来瞄准其他平台。只要看看他们在GWT的情况下使用Java-编译为JavaScript并完成dalvik vm for android所做的工作即可。同样,Facebook编译PHP。我可以设想Go的输出,将来可以将其安装到appengine中。
克里斯·巴克特

+1-重要的是它对某些东西有用。看看iPhone为Objective-C所做的一切。

3
好吧,那只是发生了。现在,让我们看看它是否起飞……
Elad

3
作为记录,我目前正在AppEngine Go运行时上开发一个大型的,雄心勃勃的Web应用程序。Go不仅生产力高而且快速。该代码可读性强。这是一种很棒的语言。
亚当·克罗斯兰

0

希望Go会流行起来。

它的语法功能强大。(了解python,C,Java的优势)。这对多核CPU很有好处。(通道功能比线程编程好得多)。该设计防止了许多程序员的陷阱。(错误的指针,使用gofmt工具具有相同的编码风格,可以防止变量发生未初始化的错误,由于是python + C,但我第一次尝试使用它,但是速度接近C的1/2。

但是,在深入学习之后,我发现开发容错和可扩展的体系结构可能是合适的

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.