报告!Golang冲上来啦!

news2025/1/15 17:43:27

今天又来讲Go语言,根据全球知名的编程语言排行榜TIOBE在4月份公布的最新的编程语言排名,令人瞩目的是,Go语言已经跃升至历史最高位,位列排行榜第七名,并且Go语言是前十榜单中最年轻的编程语言。这一成绩不仅彰显了Go语言的强大实力,也进一步验证了其在软件开发领域的广泛应用和高度认可。

请在此添加图片描述

(数据来源:https://www.tiobe.com/tiobe-index)

Go语言的历史曲线图,在2017年用户比例达到最高,并且在近两年正在呈上升趋势。

请在此添加图片描述

(数据来源:https://www.tiobe.com/tiobe-index/go)

借着这篇文章,我们来分享一个有意思的话题:Go语言之"道"。

"道"一般是指事物的内在本质或自然趋势。水倾向于流动,这就是它的道,你可以给它筑坝、引导它、抽水或以其他方式干扰它,但尽管你付出了所有努力,它最终还是会回到原来的地方。

那么Go语言之道是什么呢?

善良

善良对于Go语言意味着什么?

意味着Go语言是为人创造的语言,而不是为计算机创造的。相比机器人可能容易犯错,不耐烦,缺乏经验,所以Go 代码的设计和细节中体现着很多人性化的思想。

就比如时间格式转换,就封装的更让人容易记:

format := time.Now().Format("2006-01-02 03:04:05") // 因为在国外时间一般把年放在后面,所以就成为01-02 03:04:05 2006,即123456

除此之外Go基础库提供描述性名称,比如包名,简单容易记录,易于导入,内部设计深度抽象,让用户利用小而简单的 API 来访问强大、有用的行为。

Go语言还善待那些运行Go程序的人,Go程序易于安装和更新,需要最少的配置和依赖关系,并捕获最常见的使用错误和运行时错误,并为用户提供有关问题和如何修复的有用、准确和友好的信息。Go程序安装不需要配置额外的插件,只需要打开Go Modules开关,就可以通过依赖构建项目,相比Java的Maven更简单。

俭朴

Go 本身是一种简单的语言,只有25个关键字,是关键字最少的编程语言之一。

breakdefaultfuncinterfaceselect
casedefergomapstruct
chanelsegotopackageswitch
constfallthroughifrangetype
continueforimportreturnvar

Go语言设计的程序小而集中,整洁,只做好一件事。这样做的好处就是不会让用户使用大量的时间成本去学习。

灵活性是一件好事,但我们不应该试图处理每个案例,或者提供每个功能,不应该为了我们不需要的东西而牺牲一个简单的设计。一个简单的程序比一个复杂的程序更容易扩展。

谦逊

Go语言本身是谦虚和务实的:它不具备其他一些语言的所有高科技特征和理论优势。

Go语言认识到我们容易犯错误,它有很多方法可以保护我们免受错误的影响。比如负责分配内存,自动垃圾清理,警告我们未使用的导入或变量。

所以作为一名Gopher,我们也可以谦虚一点,我们编写代码并不是为了给每个人留下深刻印象,而是做显而易见的事情。我们清晰直接地表达自己,而不需要在代码上突兀地彰显自己的个性。

在程序的错误处理上,Go语言更鼓励发生错误时处理一切,因此会谦虚地返回错误,并提供有用的上下文信息,将其留给程序员来决定该怎么做。

无为

最好的优化是不需要优化。Go之"道"的最后一个教义是无为。

解决问题的心态是好的,但没有问题才是更好。我们如何重新定义这个问题,让它消失?什么样的需求重述会使解决方案变得灵活或显而易见?有没有一个简单而优雅的设计?所以最好的优化是根本不需要做这些事。

以上就是对Go语言之道的简要分享。相信未来随着技术的不断发展和创新,Go语言有望继续保持领先地位,为软件开发带来更多的惊喜和突破。

参考

  • https://bitfieldconsulting.com/golang/tao-of-go

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1668665.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java1.8 的 client runtime compiler和server runtime compiler

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

MySQL数据查询优化

MySQL调优是开发中必不可少的内容,以下是对MySQL查询性能优化的部分总结 1. explain关键字的使用 explain关键字可以模拟优化器执行sql查询语句,获取sql的执行信息,使用方法: explainsql语句 1.1 字段详解 id(select …

Linux---在Xshell上配置软件包管理器yum

一、什么是yum 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软…

练习题(2024/5/12)

1二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出: 4…

解决vue3项目打包后部署后某些静态资源图片不加载问题

目录 问题 原因 解决方案 问题 开发完项目打包并部署 然后访问时发现导航栏背景图片没加载 打开浏览器控制台发现这张图片报错404 原因 可能是因为在部署后的服务器环境中对中文文件名的支持不完善。服务器在解析 URL 时可能无法正确识别或编码中文字符,导致无…

数据结构(四)——二叉树和堆(下)

制作不易,三连支持一下呗!!! 文章目录 前言一、二叉树链式结构的实现总结 前言 这篇博客我们将来了解普通二叉树的实现和应用,对大家之前分治和递归的理解有所挑战。 一、二叉树链式结构的实现 1.前置说明 在学习二叉…

网络编程套接字详解

目录 1. 预备介绍 2.网络字节序 3.udp网络程序 4.地址转换函数 5.udp网络编程 1.预备介绍 1.1源IP地址和目标IP地址 举个例子: 从北京出发到上海旅游, 那么源IP地址就是北京, 目标IP地址就是上海. 1.2 端口号 作用: 标识一个进程, 告诉OS这个数据交给那个进程来处理; (1)…

爱分析基于杭州云器Lakehouse实现成本最优的一体化管理,新一代数据平台的建设方式

导读 1.当前,企业在大数据和数据中台建设上取得成果,但数据开发管理仍具挑战性(成本、效率、复杂度)。 2.随数据平台领域成熟,厂商应结合自身需求,重新思考“基于开源自建数据平台”的重资产模式与“购买…

【AMBA Bus ACE 总线 7.1 -- ACE Domains 介绍 2】

请阅读【AMBA Bus ACE 总线与Cache 专栏 】 欢迎学习:【嵌入式开发学习必备专栏】 文章目录 AxDOMAINAxDOMAIN[1:0]的值及含义AxDOMAIN 在ARM的AXI Coherency Extensions (ACE) 协议中,AxDOMAIN[1:0]是一个重要的信号字段,用于指示传输的域类型。这个字段影响了传输对系统…

Spring Boot支持发送邮件

GitHub:SpringBootDemo Gitee:SpringBootDemo 微信公众号: 通过Spring Boot整合邮件任务,支持发送邮件,可以实现服务故障时向指定邮箱发送邮件。 0 开发环境 JDK:1.8Spring Boot:2.7.18 1…

花了24小时做的采购、库存、进销存excel模板,真心好用,免费分享

花了24小时做的采购、库存、进销存excel模板,真心好用 在企业的日常运营中,进销存管理是一项至关重要的任务。它不仅涉及到商品的采购、销售和库存管理,还直接影响到企业的财务状况和市场竞争力。为了提高管理效率,许多企业选择使…

传感网应用开发教程--AT指令访问新大陆云平台(ESP8266模块+物联网云+TCP)

实现目标 1、熟悉AT指令 2、熟悉新大陆云平台新建项目 3、具体目标:(1)注册新大陆云平台;(2)新建一个联网方案为WIFI的项目;(3)ESP8266模块,通过AT指令访问…

经典笔试题:快速排序 计数排序

Problem: 912. 排序数组 思路 👨‍🏫 三叶题解 💖 AC:计数排序 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) class Solution {public int[] sortArray(int[] nums) {int max -50001, min 50001;for (…

HCIP的学习(15)

第六章,BGP—边界网关协议 自治系统—AS ​ 定义:由一个单一的机构或组织所管理的一系列IP网络及其设备所构成的集合。 ​ AS的来源: 整个网络规模过大,会导致路由信息收敛速度过慢,设备对相同目标认知不同。AS之间…

MATLAB实现遗传算法优化选址-路径LRP问题(Location-Routing Problem)

MATLAB实现遗传算法优化选址-路径LRP问题(Location-Routing Problem) 一、模型 选址车辆路径问题(Location-Routing Problem, LRP)是一个组合优化问题,旨在同时优化设施位置的选择和车辆的配送路径。在这个问题中,我们考虑一个由…

栈与队列的实现

前言 本次博客将要实现一下栈和队列,好吧 他们两个既可以使用动态数组也可以使用链表来实现 本次会有详细的讲解 栈的实现 栈的基础知识 什么是栈呢? 栈的性质是后进先出 来画个图来理解 当然可不可以出一个进一个呢,当然可以了 比如…

C++笔记(STL标准库)

1.STL六大部件 容器 Containers分配器 Allocators:帮容器分配内存算法 Algorithms迭代器 Iterators:算法通过迭代器操作容器里的数据,是一种泛化的指针适配器 Adapters:修改或扩展已有类或函数的接口以满足特定的需求仿函数 Func…

Python深度学习基于Tensorflow(9)注意力机制

文章目录 注意力机制是怎么工作的注意力机制的类型 构建Transformer模型Embedding层注意力机制的实现Encoder实现Decoder实现Transformer实现 注意力机制的主要思想是将注意力集中在信息的重要部分,对重要部分投入更多的资源,以获取更多所关注目标的细节…

2024最新商业视频打赏系统源码 多套模板 有代理后台 已对接支付

简介: 2024最新商业视频打赏系统源码 多套模板 有代理后台 已对接支付 图片: 源码下载

清华发布Temporal Scaling Law,解释时间尺度对大模型表现的影响

众所周知, 语言模型调参! 预训练语言模型调参!! 预训练大语言模型调参!!! 简直就是一个指数级递增令人炸毛的事情,小编也常常在做梦,要是只训练几步就知道现在的超参…