前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go语言是否会取代Python和Java?

Go语言是否会取代Python和Java?

作者头像
博文视点Broadview
发布2023-05-19 18:46:45
7470
发布2023-05-19 18:46:45
举报
文章被收录于专栏:博文视点Broadview
一、Go语言出现之前的编程痛点

(1)为什么会设计Go语言?

我们先来了解一下Go语言的作者和主要核心开发者们:

Rob Pike:曾是贝尔实验室(Bell Labs)的Unix团队,和Plan 9操作系统计划的成员。他与Thompson共事多年,并共创出广泛使用的UTF-8 字元编码。

Ken Thompson:主要是B语言、C语言的作者,Unix之父。1983年图灵奖(Turing Award)和1998年美国国家技术奖(National Medal of Technology)得主。他与Dennis Ritchie是Unix的原创者。Thompson也发明了后来衍生出C语言的B程序语言。

Robert Griesemer:在开发Go之前是Google V8、Chubby和HotSpot JVM的主要贡献者。

设计Go语言是为了解决当时Google开发遇到的以下这些问题:

  • 大量的C++代码,同时又引入了Java和Python;
  • 成千上万的工程师;
  • 数以万计行的代码;
  • 分布式的编译系统;
  • 数百万的服务器。

其主要有以下几个方面的痛点:

  • 编译慢;
  • 失控的依赖;
  • 每个工程师只是用了一个语言里面的一部分;
  • 程序难以维护(可读性差、文档不清晰等);
  • 更新的花费越来越长;
  • 交叉编译困难。

所以,他们当时设计Go的目标是为了消除各种缓慢和笨重、改进各种低效和扩展性。Go是由那些开发大型系统的人设计的,同时也是为了这些人服务的;它是为了解决工程上的问题,不是为了研究语言设计;它还是为了让我们的编程变得更舒适和方便。

但是结合Google当时内部的一些现实情况,比如:很多工程师都是C系的,所以新设计的语言一定要易学习,最好是C-like的语言;因为有太多的分布式系统和太多的开发者,所以新的语言一定要可以Scale,这包括开发、工程师、代码、部署和依赖;20年没有出新的语言了,所以新设计的语言必须是现代化的(例如内置GC);等等。他们觉得要实现这个目标就需要Go成为一个大家都认可的语言。

最后根据实战经验,他们向着目标设计了Go语言,其主要的特色有:

  • 没有继承的OO;
  • 强一致类型;
  • Interface但是不需要显示声明(Duck Type);
  • Function 和Method;
  • 没有异常处理(Error is value);
  • 基于首字母的可访问特性;
  • 不用的Import或者变量引起编译错误;
  • 完整而卓越的标准库包。

Go语言发布之后,很多公司特别是云计算公司开始用Go重构他们的基础架构,很多都是直接采用Go进行了开发。这几年火到爆的Docker、Kubernetes就是采用Go开发的。

(2)Go主要应用的领域。

 上面那些基本上就是Go的历史背景和设计初衷,那么目前Go主要应用于哪些系统呢?

 目前Go主要应用在下面这些系统:

①Web服务器编程,以前使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。

②容器开发:Docker,使开发高效且可预测;Kubernetes,也称为K8s,是一个开源系统,用于自动化容器化应用程序的部署、扩展和管理。

③微服务、分布式系统、数据库代理器等,例如gRPC、Etcd等。

④Web网络编程,这一块目前应用最广,包括Web应用、API应用、下载应用,而且Go内置的net/http包足够强大,基本涵盖了常用的Web应用方法。

⑤数据库,前一段时间Google开发的Groupcache、Couchbase的部分组件、Tidb、Cockroachdb、Influxdb等。

⑥云平台,目前国外很多云平台在采用Go开发,CloudFoundy的部分组建,前VMare的技术总监自己出来搞的Apcera云平台。

(3)为什么选择使用Go语言?

国内很多云创业公司都会选择把Go作为首要语言,例如七牛云等。为什么会选择Go呢?与其他语言的应用相比,它有什么优点呢?

①简单,学习曲线平稳;

②极致效率;

③Google公司开发;

④自由高效:组合的思想、无侵入式的接口;

⑤强大的标准库;

⑥部署方便:二进制文件、Copy部署;

⑦简单而强大的并发处理能力;

⑧规范,不会写出垃圾代码;

二、Go语言Web编程的优势

通过上面的介绍我们知道,Go语言Web开发领域有得天独厚的优势!Go语言被称为云计算时代的C语言。我们知道,在Web开发的世界里,敏捷才是王道。

谁能使用更少的费用和资源来更快地完成网站和网络应用,谁就能获得更多的竞争优势。

此外,对于编程者而言,不仅希望快速完成Web开发,对可用性和用户体验的要求也很高。

让我们看一下Python的特性,以及为什么它能够成为Web开发领域的主流。

(1)Python vs Go语言:优点与缺点

Go语言现在被认为是Python、Java等传统语言的替代品,关于Go语言 Web开发与Python、Java的讨论不胜枚举。

虽然简单是Python的主要优点,但也有一些缺点。许多开发人员发现,虽然对于一些简单和基本的开发Python很实用,但如果要构建更复杂的系统和定制模块,使用Python可能会变得很复杂。此外,经常出现令人沮丧的编码错误。

在HekReNo.com的文章“从Python转到Go语言的五个原因”中,Tigran Bayburstyan说:“Python是一门伟大而有趣的语言,但有时你会遇到异常,因为你试图使用一个变量作为一个整数,但事实证明它是一个字符串。”Go会让你在编译时消除这些问题。

总而言之,在许多用例中,Go语言 Web开发已被证明比Python能更快地完成同一类任务。

(2)Python vs Go语言:哪一个更好?

那么,Go语言是否会在不久的将来取代Python呢?开发者社区正在讨论两种编程语言的优缺点。如果您正在寻找用于Web编程、移动开发、微服务和ERP系统的强大工具,我们相信,您应该切换到Go语言的原因是:

①简单性;

②高级编译能力;

③并发和性能;

④框架和库的本地支持

⑤顶级IDE和调试;

⑥清晰的语法;

另一个有助于Go语言 Web编程出色的简单性和易用性的是其清晰的语法,它包含零不必要的组件。Go是建立在实用的头脑中的:而不是必须深入研究语言结构,开发者现在可以自由地专注于开发本身。

总结,通过上面的对比我们发现,Go语言在各方面基本都已经超过Python,尽管Python社区仍然超过Gophers,但Go倡导者的数量每天都在增加,相信Go语言接近并超过Python、Java是大势所趋。

三、Go语言Web开发常用框架

Go语言被称为云计算时代的C语言,它以其独特的优势逐渐被越来越多的公司所关注和使用。为了充分利用Go语言的Web开发优势,有必要熟悉一下Go语言的Web框架。

(1)Beego (http://beego.me/)

(2)Gin(https://gin-gonic.github.io/gin/)

(3)Revel(http://revel.github.io/)

(4)Martini (http://martini.codegangsta.io)

(5)Goji(https://goji.io/)

四、总结

一个技术能不能发展起来,关键还要看三点。

  • 有没有一个比较好的社区。像 C、C++、Java、Python 和 JavaScript 的生态圈都是非常丰富和火爆的。尤其是有很多商业机构参与的社区那就更为人气爆棚了,比如 Linux 的社区。
  • 有没有一个工业化的标准。像 C、C++、Java 都是有标准化组织的。尤其是 Java,其在架构上还搞出了像 J2EE 这样的企业级标准。
  • 有没有一个或多个杀手级应用。C、C++ 和 Java 的杀手级应用不用多说了,就算是对于 PHP 这样还不能算是一个好的编程语言来说,因为是 Linux 时代的第一个杀手级解决方案 LAMP 中的关键技术,所以,也发展起来了。

上述的这三点是非常关键的,新的技术只需要占到其中一到两点就已经很不错了,何况有的技术,比如 Java,是三点全占到了,所以,Java 的发展是如此好。当然,除了上面这三点重要的,还有一些其它的影响因素,比如:

  • 学习曲线是否低,上手是否快。这点非常重要,C++ 在这点上越做越不好了。
  • 有没有一个不错的提高开发效率的开发框架。如:Java 的 Spring 框架,C++ 的 STL 等。
  • 是否有一个或多个巨型的技术公司作为后盾。如:Java 和 Linux 后面的 IBM、Sun……
  • 有没有解决软件开发中的痛点。如:Java 解决了 C 和 C++ 的内存管理问题。

用这些标尺来量一下 Go 语言,Go 语言的优势如下:

  • Go 语言容易上手;
  • Go 语言解决了并发编程和写底层应用开发效率的痛点;
  • Go 语言有 Google 这个世界一流的技术公司在后面;
  • Go 语言的杀手级应用是 Docker,而 Docker 的生态圈在这几年完全爆棚了。

所以,Go 语言的未来是不可限量的。当然,我个人觉得,Go 可能会吞食很多 C、C++、Java 的项目。不过,Go 语言所蚕食的主要项目应该是中间层的项目,也就是Web开发相关的项目,既不是非常底层也不会是业务层。

也就是说,Go 语言不会吞食底层到 C 和 C++ 那个级别的,也不会吞食到高层如 Java 业务层的项目。Go 语言能吞食的一定是 PaaS 上的项目,比如一些消息缓存中间件、服务发现、服务代理、控制系统、Agent、日志收集等等,没有复杂的业务场景,也到不了特别底层(如操作系统)的中间平台层的软件项目或工具。而 C 和 C++ 会被打到更底层,Java 会被打到更上层的业务层。

Go语言的应用范围一直在扩大,云计算,微服务,区块链,哪里都有用Go写的重量级项目。Docker/Kubernetes生态圈,几百/千万行代码,基本统治了云原生应用市场。同时Go语言未来会统治Web开发,成为Web开发领域的领头羊。

作者新书

▊《Go Web编程实战派——从入门到精通》

廖显东 著

  • 一线技术,突出实战!
  • 精雕细琢,阅读性强!
  • 零基础入门,循序渐进,实现快速从菜鸟向实战派高手迈进!
  • 极客思维,极致效率;
  • 由易到难,重难点标注并重点解析;
  • 极致效率,快速突击;
  • 实战方案,可直接二次开发进行实战部署;
本书采用当前Go最新版本编写,以极客思维、深入Go语言底层进行探究,帮助读者了解背后原理。全书言简意赅,以帮助读者提升开发效率为导向,同时尽可能帮助读者缩短阅读本书的时间。
本书拒绝纯理论,直接实战!绝大部分实例代码都是来自于最新的企业实战项目,所有的示例代码,拿来即可运行。

(扫码了解本书详情)

代码语言:javascript
复制
如果喜欢本文欢迎 在看丨留言丨分享至朋友圈 三连

 热文推荐  
你的烂代码终于有了解决方案!
BPF 之巅:洞悉 Linux 系统和应用性能
拍立淘创始人为你揭开“以图搜图”的神秘面纱!
图神经网络在生化医疗方面的相关应用

▼点击阅读原文,获取本书详情~
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 博文视点Broadview 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Go语言出现之前的编程痛点
  • 二、Go语言Web编程的优势
  • 三、Go语言Web开发常用框架
  • 本书采用当前Go最新版本编写,以极客思维、深入Go语言底层进行探究,帮助读者了解背后原理。全书言简意赅,以帮助读者提升开发效率为导向,同时尽可能帮助读者缩短阅读本书的时间。
  • 本书拒绝纯理论,直接实战!绝大部分实例代码都是来自于最新的企业实战项目,所有的示例代码,拿来即可运行。
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档