注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

面向并行运算编程的编程语言(go-lang)的认识与学习  

2015-04-21 12:35:36|  分类: 云平台二次开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


Go语言在云平台上的优势

        在最有前景的云技术docker面前,高手们在编写新系统时,都喜欢选择Go语言,而不是更常见的Java、Python、Perl、Ruby、Scala等,今天分析一下其中的原因。

       很现实的原因——后面这些语言写的程序,在 执行时都需要某些运行环境的支持。比如,Java程序依赖Java虚拟机,Python程序需要Python解释器,这些加上预装的程序库需要占用几百 MB的集装箱空间。而用Go写的程序默认是全静态编译的,执行时不需要任何环境支持,不需要预装库,甚至连Linux系统动态库都不依赖。鉴于一家公司的 系统往往由成千上万的集装箱构成;每个集装箱少几百MB,能为系统省出很大一笔开销。那些每月要向Amazon或者Goolgle付账的公司,对此必然印 象深刻。这是Go语言在很多创业公司拓展迅猛的一个原因。

         与c相比:如果我们用C或者C++开发,也可以生成全静态链接的二进制程序文件。但是在Web时代,C/C++的开发效率不如Go。Google里倒是普遍使用C++,但是Google里有一套精心设计、积攒多年的C++库,这是外界没有的。外界普遍得使用第三方库,并往往因此挠头。比如,不同的第三方库 (Thrift和boost)各有各的线程池机制,很难统一管理多线程。C++11倒是有了标准线程管理,但是把很多库统一到C++11是一项开销极大的 工作。Go语言是专门为分布式系统开发设计的,根本就没有线程的概念,在语法上用goroutine代替了,线程池实现在Go runtime里,被编译进每个二进制程序。

  评论这张
 
阅读(36)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017