谁在这里学习Go?是否有其他公司正在使用它?它有可能被广泛使用吗?
谁在这里学习Go?是否有其他公司正在使用它?它有可能被广泛使用吗?
Answers:
在编程语言方面,古老的格言“这不是你是谁,而是你认识的人”无疑是正确的。C和C ++由AT&T赞助,Java由Sun带来给我们,.NET家族从Microsoft诞生,并且所有这些都非常流行。然后,我们有了Objective-C和Python,它们已经存在了相当长的一段时间,直到它们分别被苹果和谷歌发现并大肆宣传,然后才真正变得晦涩难懂,然后突然间它们真正起飞了。但是,没有主要赞助商的语言,无论它们多么出色,都往往会变得晦涩难懂。
Go由Google赞助。在这里得出正确的结论并不困难。给它五年,它将是巨大的。
实际上,我认为Go不会那么成功。它之所以无法普及的原因是它旨在成为系统编程的语言。
真正需要具有更多现代功能的系统语言。C和C ++太受遗留代码的束缚,这里的向后兼容性大大改善了它。话虽如此,我认为Go不能以当前的形式履行该角色。它的设计过于简约。尽管其并发模型令人兴奋,但它从高级语言到系统世界带来的其他功能很少。(我上次检查时承认,它是前一阵子,它甚至没有例外。)此外,至少在某种程度上,计算机语言基准测试是一个很好的衡量标准(公认这是一个非常粗略的指标),但并不是几乎与“真实”系统语言所需的速度一样快。
我认为有,以填补一个更现代的系统语言的空白的最好机会的语言ð。D在技术上比Go强得多,但在政治上却较弱。它没有大公司的支持。它真正需要的是一些库(由于语言规范稳定,现在正在迅速解决)和杀手级应用程序。
foo, err := SomeFunc()
很常见。对于重大问题或err效果不佳的地方,可以使用panic()
和recover()
。但是,很少有意使用它们。如果堆栈非常短,则无法将异常传递到堆栈上,并且在有许多并发线程的地方,短堆栈很常见。
我正在学习Go,是的,除了Google和Heroku之外,它的使用效率很高。
Go绝对是系统编程的好语言。C语言中的简单代码,C ++语言中的强大结构和Java语言中的安全功能。由于它是一门很年轻的语言,因此继承了许多其他语言的优点:
i := 1
代替int i = 1
,func 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的语言,具有强大的并发支持,只有功能语言才能知道。
这样做可能为时已晚,但是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中具有的数量和选择那样。它会到达那里。
无论如何,“主流”是什么意思?不知道这一点,很难回答这个问题。让我们来看一下。
有许多可能的定义。这里有一些:
管理视图:
开发者观点:
职业观点:
鉴于以上所有情况,我认为唯一的诚实答案可能是“太早说不出来”,但我相信任何真正长寿的最佳指标是小数目使用该语言的企业。大型组织都非常出色-由于它们可以应用的投资规模,它们甚至可能对于语言或工具系统的增长至关重要-但它们很容易过时(少数例外)。相比之下,如果一家小型企业已经围绕使用该语言来交付产品和服务而建立起来,那么他们很可能会做出贡献,以确保他们将来仍然能够这样做。它们也构成了该地区强大的就业市场的基础,也形成了对工具的需求。有趣的是,这些是我名单上的主流性的几个指标(可能更多,取决于管理层的异想天开)。
那么,有多少人在Google之外使用Go进行工作?我不知道。(我不是。Java,C和Tcl。YMMV的组合目前可以很好地满足我的需求。)
由于这个问题,我只是看过Go,所以我无法真正评论它是否会成为主流语言,但是有一件事让我非常兴奋:
http://golang.org/doc/go_spec.html#Channel_types
我首先在Occam-pi中遇到了Channels的概念,我必须说这是有史以来最好的编程概念之一。在使用C型语言执行相同操作有时会很痛苦的情况下,这使得并发显得如此容易。
从我所看到的(在我看过的10分钟之内)来看,Go似乎试图结合许多不同的编程概念,但这确实冒着使其成为万事通,无精打采的风险。
我怀疑它是否成为主流将取决于Google是否将其用作appengine和/或GWT的受支持语言。
after
?