Golang,一见钟情。
本文最初发布在我的个人网站https://coder.today/go-go-go-flash-bang-d66f4c42eb7c上。在此期间,我用 Go 开发了一些库和小应用程序,甚至为 Go Tour 做了贡献,也修改了一些观点。但我会保留这篇文章的原貌,我喜欢不变性。
“快,快,快……闪光弹”
当我听到“开始”时,我总会回想起这件事。
简介
通常,人们有空的时候都会休息放松一下,但我是个怪咖,喜欢学习、实验和玩新事物。我有很多新爱好(今年早些时候我学会了撬锁,还开始玩手机摄影),所以我决定重拾我失落的编程热情。
如果{你像我一样(Web 或移动开发人员,出于某种原因避免使用低级语言和并发)请继续阅读,
否则你已经知道真相,请跳到最后并分享文章😁。}
我离开 Web 开发有几年了,一直在做 Unity3D(C#)和移动开发,所以自然而然地开始关注最新的 Web 趋势。我用MeteorJS(node + 热门代码 +~mongodb + 其他一些组件)、React和D3JS做了一些小项目。通过切换到 nodeJS,我放弃了 PHP,只用一种语言工作,通过共享代码,我的工作效率得到了极大的提升。
如果您是 JavaScript 开发人员,请查看这个 2017 年硬核播放列表}
Go——编程语言
在阅读有关新的架构风格、可扩展性和云的文章时,我发现了一种模式,大多数大公司(www 主干网)都以某种方式转向了 Go。
当我读到这篇文章时,我发现我们有很多共同点(我和 Go),这对于任何关系来说都是一个良好的开端。
-
我们都很固执己见
-
我们喜欢使用 JavaScript(构建 API 很容易,或者它们可以互补)
-
我们非常关心开发人员的生产力
-
我们喜欢KISS。简单就是好(vs cpp)
-
一种方法(惯用语、代码格式化)。方法越多,项目就越复杂,开发者的大脑、团队合作以及编译器的寿命就越长。
-
我们讨厌错误(所以我们强制执行编码规则)
-
我们喜欢多任务处理和处理大数据。
如果{您是 Gopher,请帮助我更快地学习并检查我的代码:}
bgadrian/data-structures
*data-structures - 抽象数据结构 Go 包,构建时考虑了性能和并发性,以学习 Go。
对我来说, Golang 还有几个优点:
-
它是低级语言和高级语言的完美结合。我想要快速交付,完成任务,所以清理垃圾并不适合我。陡峭的学习曲线让我远离低级语言。
-
它集成了单元测试——我正在寻找开始练习 TDD 的理由。
-
社区——经过 60 多个小时的会议小组讨论和阅读论坛后,我可以说这是一个很好的社区。
-
我想更多地参与开源社区,这是我的 Go 标志。
-
它有自己的特色,还有很酷的吉祥物
-
它创造了一个愉快的环境(良好的工具、编译器警告、习语等)。
-
WebAssembly学习编译语言将有助于获得优势并同时享受编写 JavaScript 和 WebAssembly 模块的乐趣。
我认为大多数“反对” Go 的理由都是“支持” Go 的理由,以下是一些例子:
-
缺少异常之类的功能会导致更好的代码,谁会想要这种混乱呢?
-
“当双方争论超过 15 分钟时,双方都是错的。”就此而言,这场战争持续了十多年,所以 Go坚持己见是件好事。不再有空格 vs. tab、函数 vs. 对象、for vs. while…… 开发人员编写相同的代码,编译器可以更好地优化它。
-
重载——通常会创建太多相似的代码,而且缺乏多态性,因此在 Go 风格代码中用处不大。重载虽然能使代码“看起来很酷”,但调试、维护和解释起来却更困难。我认为接口(一个函数做一件事,可以与一个接口关联)加上显式转换就足够了。
-
代码是艺术/没有灵魂——我认为美不在于源格式,而在于系统/架构层面,用简单的解决方案解决难题。
-
大多数原因很容易被忽略:他们太主观,不了解 Go 范式,他们的思维停留在 OOP 永无止境,或者他们将其与其他语言(如 C/C++,这不是替代品)进行比较,或者应用于 Go 范围之外的问题。
如果{你想通过练习katas成为一名更好的程序员,请查看 CodeWars }
Go 从 30 年的开发错误中吸取了教训
好了,我说对了!它回归了根源,像凤凰一样重生,更加美好,焕然一新。
我花了太多时间调试和修复 bug。我记得这些年来我修复过很多 bug、错误和反模式,其中很多都在 Go 的编译器规则和编码风格中得到了解决。
大多数程序员都是凡人,都会有情绪,也会遇到糟糕的时刻,经历和背景各不相同,专业水平也各不相同,技术/环境也围绕着代码不断演变。糟糕的代码永远存在,但如果我们所使用的语言(Go)能够解决很多问题(甚至在问题出现之前就解决),那就更糟糕了!
如果{您想学习 Go,请查看我的第一步:}
学习 Golang 的第一步
*我如何学习 Go 作为我的新主要语言,我使用哪些资源和技术?*coder.today
完成,吐槽完毕,感谢阅读!
感谢ashleymcnamara,她的 gopher 面板激励了我开始做出贡献。
文章来源:https://dev.to/bgadrian/golang-it-was-love-at-first-sight-2lah