余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

七大利弊帮你分析Go语言的可用性(go语言的特性)

xiyangw 2022-12-04 10:28 18 浏览 0 评论

2016年是充满惊喜的一年,根据Tiobe报告显示,Go语言在这一年中的占有率从0.161%一度跃升至2.001%,排名也从历史最低的122位上升到了13位(2016年11月),这意味着Go从一个利基工具正式走入了真正的程序设计语言的行列。

Go语言之所以可以实现这么大的飞跃,很大一部分原因可能是Docker。近些年,一些热门技术的特征之一就是开发语言的活力。反过来想,其实Docker的成功也为Go语言的发展提供了坚实的基础。

前几天,我们在网路上看到了一些关于C语言衰落的言论,笔者认为C语言的衰落与Go语言的崛起是有一定相关性的。虽然目前C语言在Tiobe排名还处在第二,但据Tiobe计算C语言已经失去了大约40%的程序员的支持。Go语言和C语言都是用于编写底层代码的精简高效语言,两者之间有很多共享的功能,其中包括大多数的语法,如继承、重载、对象等。所以我们不难推断出Go语言的很多新支持者可能是从C语言阵营过来的。

TIOBE排行榜并不能说明一门编程语言的好坏,但它的指数是基于世界范围内的资深软件工程师和第三方供应商提供的,所以它在一定程度上反映了编程语言的热门与否。根据Go语言的上升势头,不难看出Go语言已成热门趋势,下面我们就介绍它的七大优劣势,帮助企业更好的选用Go语言。

1.优势:简单

谈到Go语言大家的第一反应可能就是简单,当然这也是Go语言的一大优势,一个有经验的程序员一个晚上就可以掌握,而其他新语言如Swift它的相关文档就得有几百页厚。

简单带来的另一个优点就是更易于阅读,Go语言规范,有其他语言基础的程序员也能迅速上手,由于学习曲线平缓,团队之间的差距更小,更利于合作,另外Go 自带完善的工具链,大大提高了团队协作的一致性。

劣势:简陋

当然,在晚上学习一门语言是很好的,但Go是舍弃了很多现代抽象的功能才实现了简单性,舍弃了这些功能也就意味着你不能依靠更复杂语言的力量来对抗Bug。所以对于复杂性和抽象的爱好者来说,Go语言不是进步反而是倒退。

除此之外,每个程序员都有自己的编程想法,有的人想要泛型,有的人想要可扩展性......但Go语言的使用往往会让程序员有一种绑住手脚的感觉,无法大展拳脚。

2.优势:自动化节省时间

Go集成了很多方便快捷的功能,如自动声明变量,它看起来是一个很小的功能,但是却为程序员带来了很多便利,毕竟没有人希望一直在写“int”吧。另外,Go语言的GC机制也是一个很大的优势,因为每个人都对malloc和free函数感到厌烦了吧。

劣势:自动化可能是危险的

相信每个程序员都对编程语言的自动化的缺点感同身受:如果你采用GC机制来自动回收内存,那么可能会在错误的时间被触发;自动声明可能会导致嵌套作用域中使用相同的变量名,从而导致错误;另外,现在人们对于数据管理系统更加谨慎,所以自动化对我们来说可能不是优势反而是劣势。

3.优势:无虚拟机

在过去的几十年里,基于虚拟机的语言都是爆款,二进制代码可以在不同的芯片架构之间轻松移动,而且虚拟机在执行优化时可以实施一些安全规则,所以在VM中整合了很多好的想法。

但是启动虚拟机需要一些时间,但是Go语言就不用担心这一点,它可直接编译成机器码,除了glibc外没有其他外部依赖,部署十分方便。这使得Go语言在开发和调试过程中的速度都非常快。

劣势:无虚拟机

Go语言有独立的二进制文件,但是它们内存占用都非常大,例如你写一个“hello world”的示例,它就接近于2MB。二进制文件之所以会这么大,有一部分原因是它需要执行虚拟机的大部分功能,。

针对这一问题,Go 1.7做了一些努力,减少了编译器所使用的内存量并且在连接时间方面也有所提升,据悉,相对于Go 1.5.3它能够将总的编译时间降低大约20-30%。虽然这一变化让问题改善了很多,但是当服务器打开了数百个代码版本时,RAM仍会被阻塞。

4.优势:与C类似

Go语言带有强大的C基因,所以在支持底层代码方面毫无压力,1.5版本中完成的并发GC使得Go语言程序在响应时间方面有了质的飞跃,在软件开发效率和运行效率之间做出了绝佳的权衡。

劣势:与C类似

类C语言有很多,从显而易见的C#,C ++和Objective-C到Java、Rust、Swift,它们涵盖了很多有趣的功能,如果你想要完成一个项目,你可以很多选择,Go语言并不是唯一。

5.优势:无回调语法

许多程序员都从Node.js的深坑跳到Go,为什么呢?因为他们之前要做很多回调。回调结构对于Web页面上的JavaScript代码来说是很有意义的,它有助于通过Node提供服务器端开发的速度,但是它很难保持直线,尤其是在有三四层嵌套的情况下。

劣势:无回调语法

使用Go语言你不需要考虑嵌套方法,但是你仍然需要考虑以相同的方式编码交互。Node.js的嵌套虽然有些烦人,但是它能够让你在大脑中清晰的形成一个架构图,而Go语言由于不需要考虑嵌套,所以很有可能会出现失误。

6.优势:逐渐丰富的库

Google为用户创建服务器应用程序提供很多重要的库,尤其是网络库非常强大。

劣势:库缺乏

这个咋一听来好像是自行矛盾,但其实也很好理解,虽然Google对于Go语言给予了大量的支持,但毕竟Go语言还很年轻,所以标准库少也是在所难免的。JAR是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件,使用可执行的 JAR 文件,我们可以不用提取它或者知道主要入口点就可以运行一个应用程序。可执行 JAR 有助于方便发布和执行 Java 应用程序。Clojure,Scala,JRuby,Kotlin和许多其他的新语言被编译为JVM的字节码,它们可以与所有Java库一起使用。

7.优势:前景可期

Go语言之所以能够飞速发展,很大一部分原因是Google的支持。Google是一家重视未来的公司,我们可以从一些蛛丝马迹中发现与谷歌阅读器相比,Google似乎更致力于Go语言,目前Google在无人驾驶汽车和其它新奇特的东西投入了大量的精力,这也为Go语言的发展提供了助力。

劣势:在利基范围之外未能完全实践承诺

Go语言的上升令人印象深刻,但是能否继续上升,我们可能要打一个问号。企业对于代码的要求除了效率,还有稳定,要让企业将项目的未来从现有的语言突然变向押宝在另一种语言上,似乎不太可能。另外,Google对于Go语言的支持是优势也是掣肘,一旦Google风向有变,放弃Go语言转向一个更好的版本,那么对Go语言来说可能是灭顶之灾。

Java是AP计算机科学语言,C是Unix语言,Python更受社会科学家青睐,PHP非但没有死亡,反而越来愈好......每一种语言都有自己的使用场景,并且在自己的领域发展很好,如果Go语言不能尽快找好自己的定位,那么未来的发展可能会有影响。

相关推荐

七小时带你入门HTML+CSS网页设计,编写网页代码的思路(三)

上一篇文章中我分享了一段图文标签,这篇文章主要给大家详细解释一下这些代码的作用和意义,以及编写网页代码的格式与思路。下面我贴上html代码:<!--HTML--><div>...

C语言编程基础知识汇总学习,适合初学者!更新常量知识
C语言编程基础知识汇总学习,适合初学者!更新常量知识

(二)整型常量整型常量有3种形式:十进制整型常量、八进制整型常量和十六进制整型常量。(注意:c语言中没有直接表示二进制的整型常量,在c语言源程序中不会出现二进制...

2023-03-21 18:15 xiyangw

带你快速入门数控编程(数控编程入门教学)
带你快速入门数控编程(数控编程入门教学)

1、机床坐标系和运动方向的承认机床的直线运动X、Y、Z三个坐标系选用右手笛卡儿直角坐标系,如图11-6所示。坐标轴定义次第是先承认Z轴,再承认X轴,最终承认Y轴...

2023-03-21 18:15 xiyangw

Html5入门详细教程第一课,代码结构跟紧我免费教你建站
Html5入门详细教程第一课,代码结构跟紧我免费教你建站

大家好,通俗易懂讲营销,我是江湖哥,今天为大家分享我今天录制一个Html5入门教程第一个课的视频准备的课件,大家想学建站,想拥有自己一个简单的博客请关注我,如果...

2023-03-21 18:14 xiyangw

Python语言入门(3)-程序代码里的记忆体:变量
Python语言入门(3)-程序代码里的记忆体:变量

python上篇《Python语言入门(2)-三种核心语句》讲了python语言里的:1,赋值语句;2,循环语句;3,选择语句,介绍怎样运用这三种语句和计算机...

2023-03-21 18:14 xiyangw

零基础如何自学编程「2」(从零开始自学编程)
零基础如何自学编程「2」(从零开始自学编程)

在《零基础如何自学编程「1」》里说了一下零基础的同学要学编程的话究竟眼怎么正确开始。下面从三个方面说一下:1.选一门编程语言。2.学好数据结构和算法。3.选择一...

2023-03-21 18:13 xiyangw

没见过的 Java 编程入门教程!例程使用中文标识符代码:问个好吧
没见过的 Java 编程入门教程!例程使用中文标识符代码:问个好吧

前言Java教程用中文写(如下)更能被新手理解学习。可惜至今没有看到类似入门教程,在此敢为人先。注意:本教程的所有Java代码都可以正确运行,因为Jav...

2023-03-21 18:13 xiyangw

教你简单入门编程(入门编程教程)

首先,别光想,干就好了;然后就下一步下一步了,就o了。什么不信,那先试试吧...

初学Java如何写好代码(java写代码的思路)
初学Java如何写好代码(java写代码的思路)

初学Java的同学时常会遇到这样的情况,跟着入门教程看过一遍,但需要自己写代码的时候却无从下手;写代码的时候时常会遇到不懂的地方,如果停下来去详细了解,可能会花...

2023-03-21 18:12 xiyangw

「好课堂在线」用python和pygame游戏编程入门-控制角色移动

在上一节中我们知道了事件,以及如何捕捉键盘事件进行响应,本届我们结合第一节和上一节的内容,做一个用键盘控制角色移动的功能,代码如下:#用python和pygame游戏编程入门-控制角色移动##...

自学编程怎么入门?很多新人的做法都错了(自学编程怎样入门)
自学编程怎么入门?很多新人的做法都错了(自学编程怎样入门)

自从在网上和大家常常聊聊关于自学编程的话题后遇到很多0基础或者初学编程的朋友,大家给我的感觉是摸不着头脑,很多很简单的问题会走弯路,弄不明白。总结一下,主要以下...

2023-03-21 18:11 xiyangw

单片机入门-Proteus绘制电路和Keil写代码视频教学

视频教程如下:视频加载中...1打开ISIS,点击P2输入AT89C51,选取放入电路图3再点击P,输入led-yellow,res,分别添加LED和电阻,电阻阻值设为100欧,放在电路图,并连线,...

一张图学会编写我的第一行Java代码(如何编写第一个java程序)
一张图学会编写我的第一行Java代码(如何编写第一个java程序)

我的第一行Java代码Eclipse下编写编写我的第一行Java代码你也可以[笑]...

2023-03-21 18:09 xiyangw

入门写程序代码,达到月薪过万,那也是需要时间来开悟

高考结束,每个人都会纠结志愿的填报。本来想填报医学院的志愿,可一考虑到当医生经常会遇到一些血腥的场面,索性还是放弃了。同时也放弃了与那些白衣天使美女们相遇的机会,内心虽有一万个不舍,但也是迫不得已。最...

JAVA小白必学的代码编程技巧(java代码编写教程)

什么是SpringBootJava(面向对象编程语言)经过30多年的发展,产生了非常多的优秀框架。Spring(为解决企业应用程序开发的复杂性而创建的框架)曾是最受欢迎的Java框架之一,但...

取消回复欢迎 发表评论: