在过去几年中,新的编程语言有所增加:Go或GoLang。 没有什么能让开发人员疯狂而不是新的编程语言,对吗?近几年来,Go语言真是越来越火了。我们来看看Tiobe世界编程语言排行的最新排名,Go已经从去年的第14名上升到今年的第十名了。虽然Java仍然占据编程界的老大哥的地位,但是它所占的份额确实是有所下滑。还有C和C++的市场份额也是逐年下滑。
就现在的条件来说我们无法向处理器添加越来越多的缓存以提高性能,因为缓存具有物理限制:缓存越大,获得的速度越慢。为处理器添加更多核心也有其成本。而且,这无法无限扩展。这些多核处理器可以同时运行多个线程,从而为图像带来并发性。因此,如果我们不能依赖硬件改进,唯一的出路就是提高性能的软件。但遗憾的是,现代编程语言效率不高。
现在的大多数现代编程语言(如Java,Python等)都来自90年代的单线程环境。 大多数编程语言都支持多线程。 但真正的问题是并发执行,线程锁定,竞争条件和死锁。 这些事情使得很难在这些语言上创建多线程应用程序。
例如,在Java中创建新线程不是内存有效的。 由于每个线程消耗大约1MB的内存堆大小,并且最终如果你开始旋转数千个线程,它们将对堆施加巨大压力并导致由于内存不足而导致关闭。 此外,如果要在两个或多个线程之间进行通信,则非常困难。
另一方面,Go于2009年发布,当时多核处理器已经上市。 这就是为什么Go是在保持并发性的基础上构建的。 Go有goroutines而不是线程。 它们从堆中消耗了大约2KB的内存。 因此,您可以随时旋转数百万个goroutine。
为什么Java在逐渐被Go抢占风头呢?首先,Java能够做到的事情Go都能够做到,甚至能够做得更好。现在Java用于