Go语言为什么这么流行?

        这个问题很复杂,多方面原因决定了Golang的实用价值。

Go语言的背景


Go的吉祥物Gordon田鼠,是由Google公司创造一种新程序语言,并且公司为这门语言付出了极大的努力。Go语言一出现就获得业界的普遍关注和使用。为什么呢?


Go具有一些多数程序语言没有的资产。首先,这是一个Google计划,它有数量庞大的服务器和技术高超的程序设计师为后盾。Google的一个实验产品可能比许多其他公司的实际产品更具商业意义。2007年,Google公司的三位核心人员 Robert GriesemerRob Pike, 和 Ken Thompson 设计出了Go语言,其语言定位为系统编程语言。只看Go创始人就理解Google有多么厉害,这三位创始人的简介如下。



Robert Griesemer is an employee of 
Google and one of the initial designers of the Go programming language. Prior to Go, Griesemer has worked on code generation for Google's V8 JavaScript engine and Chubby,[1] a distributed lock manager for Google'sGFS distributed filesystem. 




Robert Pike (born 1956) is a Canadian 
Programmer and author. He is best known for his work at Bell Labs, where he was a member of the Unix team and was involved in the creation of the Plan 9 from Bell Labs and Inferno operating systems, as well as theLimbo programming language.




Kenneth Lane "KenThompson (born February 4, 1943), commonly referred to as ken in 
hacker circles,[2] is an American pioneer of computer science. Having worked at Bell Labs for most of his career, Thompson designed and implemented the original Unixoperating system. He also invented the B programming language, the direct predecessor to the C programming language, and was one of the creators and early developers of the Plan 9 operating systems. Since 2006, Thompson has worked at Google, where he co-invented the Go programming language.



Go是一个编译的,静态类型的语言,具备垃圾收集(garbage collection),限定性结构类型(structural typing),内存安全(memory safety)以及CSP样式的并发编(concurrent programming )程等功能特性。Go语言在2009年被Google正式发布,并且已经在Google生产系统之中使用,同时,也有其它公司在使用这门新的语言。两个主要实现存在:Google的Go编译器,即垃圾回收器(GC)。一个是第二编译器,即gccgo,就是一个gcc的前端。GC工具链在Go语言的1.5版已经实现了自主( self-hosting )。


 Go语言的实用价值

        Go为解决现实问题而设计,而不是为了学术理论和人工智能思想。Go是一个务实的编程语言,它忽略在最近30年所演变的编程语言理论(PLT,programming language theory)。它通过包含第一类(first-class)支持高效并发的软件系统而提供了一个简单编程模型。对于写一个充分利用并发的高效软件系统,Go的构建并发功能给予你一个令人兴奋的编程体验。对于每个编程语言,那儿总有一个设计目标。Go的设计就是为了成为一个简单的编程语言,并且它超出作为一个简单和务实的编程语言。


        Go可以作为一门构建许多创造性的软件系统的候选语言,这些已经实现了的软件系统包括著名的容器Docker,Google的容器系统管理软件Kubernetes, 著名的代码托管系统github以及其它高性能的Web服务等。从现在的形式而言,越来越多的系统使用Go语言重构现有系统。


        Go可以用来构建一般目的的编程语言,可以是用Go编写许多形态各异的软件系统,包括网络服务器,系统级别的应用程序,图形系统,物联网(IoT,the Internet of Things)和机器学习。


        Go语言能够用于构建本地化的手机应用程序,越来越多的公司将会为本地的Android和iOS系统上构建应用程序。现在,已经有公司这样实现了。相信未来几年,这样的公司会越来越多。


        Go是构建Web应用和后端API的最佳选择。我推荐使用Go构建大型可扩展的后端RESTful API系统。可以预见,在后续的几年里,会有越来越多的企业使用Go构建后端的RESTful 系统或者现代化商业应用系统。


        学习Go语言,先从Go旅程开始。


http://tour.golang.org/welcome/1.

    

        Go语言还很年轻,需要不断优化速度和产生更快的代码。



欢迎加入我的微信公众号

good!


在使用Go语言编写GUI应用程序时,有很多可用的GUI框架可以选择,每个都有其独特的优势和应用场景。下面是几个流行的GUI工具及库: ### 1. **GTK+ 和 GTK/GTK3** GTK+ 是一套跨平台的图形用户界面(GUI)工具包,支持多种操作系统包括Linux、Windows和macOS。GTK+ 提供了丰富的组件集,如按钮、标签、文本框等,并且支持创建复杂的应用程序布局。对于希望在多平台上构建一致性的GUI应用的开发者来说,GTK+ 是一个很好的选择。 #### 使用方式: - 在 Linux 系统上,通常会安装 GTK+ 开发环境作为依赖。 - 在 macOS 上,你可以通过 Homebrew 安装 gtk+。 - Windows 用户则可以从官方网站下载预编译的库和工具链。 ### 2. **Fenix GUI Framework** Fenix 是一个基于 GTK+ 的Go语言GUI框架。它提供了一套简洁的API,使得开发者可以快速构建现代化的UI。相比GTK+原生的API,Fenix简化了一些复杂度,使得入门更为容易。 #### 使用方式: - Fenix 需要在项目中作为一个外部依赖引入。 - 使用类似于Python的面向对象的方式构建窗口、控件等。 ### 3. **GfxGo** GfxGo 是另一个基于GTK+的Go语言GUI库,旨在提供一种易于使用的界面构建体验。它强调的是效率和性能,适合那些追求高交互性和响应速度的开发者。 #### 使用方式: - 类似于Fenix,GfxGo 也需要添加到项目依赖中。 - 构建界面和逻辑时,GfxGo 提供了一系列便捷的API。 ### 4. **Electron Go** 如果想要开发跨平台的桌面应用并且利用已有的Web前端技能,Electron Go 可能是一个不错的选择。Electron 是由Node.js团队维护的一个开源项目,允许开发者使用HTML、CSS和JavaScript来构建桌面应用。 #### 使用方式: - 需要额外学习Electron框架和Webpack等构建工具。 - 对于不熟悉前端技术的开发者来说,可能需要花费更多的时间和精力来适应。 ### 相关问题: 1. **GTK+ 和 Fenix 的主要区别是什么?** - GTK+ 更基础,提供更多自定义选项和低级API,适用于需要高度定制化界面的应用。 - Fenix 则封装了许多GTK+的基本功能,提供更高的抽象级别,使其更易上手,适合快速原型开发。 2. **在选择GUI库时应该考虑哪些因素?** - 应用需求(性能、安全性、用户界面复杂性) - 学习曲线(库的文档质量、社区活跃程度) - 社区支持和生态系统 - 与其他库和框架的兼容性 3. **如何集成Electron Go与现有的Web应用?** - 通过将Web应用打包成渲染进程,利用Node.js API与本地Go应用交互。 - 使用Electron框架的特性,如加载本地文件、访问系统API等。 - 需要注意跨域问题,确保安全设置允许Web应用与本地Go应用之间的通信。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值