几个星期前 , 我一个朋友问我:“为什么要关心Go 语言”? 因为他们知道我热衷于 Go 语言 , 但他们想知道为什么我认为其他人也应该关心 。 本文包含三个我认为 Go 是重要的编程语言的原因 。
安全
【程序员|三个你应该使用Go的原因】个人而言 , 你和我或许完全有能力在 C 中编写程序 , 既不会泄漏内存 , 也不会不安全地重复使用内存 。 然而 , 整体上 , 即使有超过40 年的经验 , 用 C 的程序员也无法可靠地这样做 。
尽管静态代码分析、valgrind、tsan 以及 “-Werror” 已经存在了几十年 , 却很少有证据表明这些工具被广泛认可 , 更不用说广泛采用 。 总而言之 , 事实表明 , 程序员根本无法安全地管理自己的内存 。 现在是离开 C 的时候了 。
Go 不需要程序员直接管理内存 , 所有内存分配都由语言运行时自行管理 , 使用前初始化 , 必要时检查边界 。 它肯定不是提供这些安全保障的第一个主流语言 , Java(1995)可能是该冠军的竞争者 。 关键是 , 世界对不安全的编程语言没有胃口 , 所以人们默认认为 , Go 是内存安全的 。
开发人员生产力
从 20 世纪 70 年代末 , 开发人员的时间变得比硬件所耗费的时间更昂贵了 。 开发人员的生产力是一个不断扩展的话题 , 但它归结为这一点:你花了多少时间做有用的工作 , 又有多少时间等待编译器或者失望地迷失在外部代码库中 。
有个笑话说 Go 是在等待C ++ 程序编译时开发的 。 快速编译是 Go 的一个重要功能 , 也是吸引新开发人员的关键工具 。 虽然编译速度仍然是一个永久的战场 , 但公平地说 , 在其他语言中需要几分钟的编译 , 在 Go 中只需要几秒钟 。
Go 程序员意识到生产力的更根本的问题是代码是为了读而写的 , 所以将代码的阅读行为放在编写之上 。 Go 通过工具和自定义来强制所有代码格式化成特定的样式 。 这消除了学习项目特定语言的方言时的困难 , 并有助于发现错误 , 因为它们看上去就是不正确 。
由于专注于分析和机器辅助 , Go 开发人员开始采用越来越多的工具来发现常见的编码错误 , 这种工具从来没有在 C 语言开发者中产生共鸣 - Go 开发人员希望工具帮助他们保持代码清洁 。
并发性
十多年来 , 芯片设计师一直在警告免费午餐将会结束 。 从最低端的手机到最耗电的服务器 , 硬件的并行性以更多、更慢、堆砌 cpu 内核的形式出现 , 但只有当你的语言可以利用它们才有意义 。 因此 , 并发特性需要内置到我们编写的要在今天的硬件上运行的软件中 。
通过提供一种基于协程的轻量级并发模型 , 或者是 Go 中已知的 goroutines , Go 超越了那些暴露操作系统的多进程或多线程并行模型的语言 。 goroutines 允许程序员避开复杂的回调 , 而语言运行时确保有足够的线程来保持你的内核的活跃 。
总结
我给朋友推荐 Go 有三个原因:安全性、生产力和并发性 。 有些语言可以涵盖一个也有可能是两个方面 , 但是这三个方面的结合使得 Go 成为主流程序员的绝佳选择 。
注:本文源自Linux中国 , 侵删
- 程序员|直拨卫星?中国电信正式宣布:永不失联,电信用户有福了
- 亚马逊|“毁在”阿里手中的国产品牌,你知道几个?有品牌已官宣停服
- |手机锁屏密码忘了?教你一招,在家就能轻松解锁!不用花钱找维修
- |最初的QQ长这样啊,还记得你是什么时候入坑的吗?
- 华为|华为是你“惹不起”也不能惹的存在?郭台铭:背后“势力”太庞大
- 24365|你在网上“充电加油”吗?
- 果皮|你好奇的这些“种种趣事儿”,我们找到了答案
- 安卓|来看看你的手机是否能体验安卓13测试版,适配机型公布
- 路由器|苹果手机使用近三个月,电池健康“零衰减”!我是怎么用的?
- 网友热议|王心凌回应又火了 创造更多美好回忆:跳《爱你》炸出一票中年男粉