实现高并发更轻松!这个编程语言竟然超过了Java...

本文作者:皓禹

曾任猎豹高级工程师、搜狐社交产品中心服务端负责人,现任区块链创业公司 CTO。文章中,他会详细介绍自己接触Golang的经历,以及Golang语言的优势。

相信有的同学看到这个标题就猜到我说的是哪个编程语言了,它就是由Google推出的Golang语言,以下是我与Golang的故事。

初识 Golang

我第一次接触 Golang 是在2014年,当时在猎豹工作,换了一个新的项目组,他们正在把基于 Java 写的核心业务用 Golang 重构一遍。

也是借着这个项目的契机,我开始学 Golang 。其实工作之后我一直在用动态语言,而开始用 Golang 这种静态语言之后,给我的编程思想带来了冲击和震撼,不夸张的说,有一种打开了另一扇窗的感觉。

如果你之前写的是 Java,就能一下感受到 Golang 的优越感了,因为 Golang 的语法更简洁、有函数式编程的特性,又不像 Java 做 OOP 那么复杂,Golang 实现 OOP 非常轻量,上手更容易,而且 Golang 非常容易的就能使程序拥有并发能力。

因为实现高并发更轻松,所以可以减少很多人力资源和服务器资源,这也是我们团队使用 Golang 重构的原因。

遗憾的是14年的时候 Golang 的第三方库不太多,所以我们自己写了一些第三方库来用,方便自己用着更顺手。

从 Golang 到区块链

回想起来,我现在能到区块链公司做自己喜欢的工作,也和当年下决心把 Golang 啃下来有很大关系。但是当年,我根本就没想过这些,也没打算把它当一个吃饭的家伙。

我只是觉得一个好的程序员不可能只掌握一门语言,而我每年都会为自己制定一个技术学习计划,当我开始思考什么最值得学,就会想起看 Golang 代码时的那种震撼,既然它能承载那么大的并发,那它的设计方式是很值得我去学习的,即使我需要去花一些时间成本,我也觉得这是值得付出的。

在15年6月的时候,我跳槽到搜狐工作了。在这做的项目规模更大,所以会直接碰到性能上的问题,而动态语言不太容易解决这些问题。于是我们决定,需要快速业务迭代的用 Python 去写,需要高并发的技术服务用 Golang 去写,陆陆续续用 Golang 实现了高并发生成器、推送、长链接服务,还有一部分 API 接口。运行速度更快,也更加节省服务器成本。

这时候我发现,Golang 的生态环境已经更成熟了,标准库和第三方库比以前丰富了很多。不需要再自己重造轮子,可以直接拿来用了。我们项目中用了文本处理的库、序列化的库、数据库连接的库、高并发 web 框架等等。

这一年,Golang 的社区也开始越来越丰富了,雨痕也开始写 Go 源码解析的学习笔记。雨痕对我的影响很深,也是我敬重的前辈,和他接触多了之后知道,他从 DOS 时期就开始写代码。所以雨痕会把操作系统层面的东西讲解的很深入,如果实践到一定程度了,发现自己掌握的理论不足以支撑自己继续往前走了,那很适合回过头来再深入看底层的这些东西。

把底层知识啃下来之后,我对于程序运行时背后发生的事情都一清二楚。比如我定义了一个变量,调用函数的时候该变量是值传递好还是引用传递好?最后这个值是分配在堆上还是分配在栈上?它是一个什么情况?这些我都了如指掌。

到了2018年,我已经做开发7年了,大公司的工作已经满足不了我的技术热情,于是我受邀加入了一家由明星团队创立的区块链创业公司,站在一个更高的视角去看待技术。

反思:Golang 需要什么样的人才

这几年,使用 Golang 的公司越来越多,BAT、今日头条、小米、京东、七牛云、滴滴打车、小米等等。Golang 在中国的影响力仅次于美国,这是在其他任何一门语言中都没有出现过的事情。

我现在自己也在招人,也和同行交流,大家普遍的一个感觉是:Golang 工程师特别难招。

我觉得最主要的原因是 Golang 的学习门槛比较高,让很多人望而却步。市面上的书籍、视频是不少的,但很多人遇到的问题是,看过了书、看过了视频,在真正写东西的时候,还是发现有一些问题没法解决,如果对 Golang 的 debug 方式不了解、对操作系统不了解的话,出现异常时会摸不到头绪,可能一个知识点就卡在这了,很多人都是在这从入门到放弃的。

所以我现在一般都是自己去培养公司需要的 Golang 人才,潜质不错的人进来之后,让他尝试用 Golang 写东西,加上我在团队里去指导他,让他逐渐成长为合格的 Golang 工程师。

当然,我一个人能带的新人是有限的,很多人也不具备这种成长环境。所以当受邀加入网易微专业的 Golang 课程团队时,我想是不是可以通过这次机会,让 Golang 这门面向未来的语言的学习门槛再降低一点,让更多人可以开始使用 Golang 并从中受益。

我不想做教条难啃的课程,让初学者又痛苦又不知道学了用在哪。所以这次课程的整体风格是更实用的,基础知识部分全程穿插代码实例,实战部分都是我曾经在公司中做过的项目的浓缩版,尽可能的给学习者还原一个在公司中写 Golang 项目的环境,在实践中更深的理解。

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2018-10-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT技术精选文摘

协同过滤推荐算法Java代码实现

什么是协同过滤 协同过滤是利用集体智慧的一个典型方法。要理解什么是协同过滤 (Collaborative Filtering, 简称 CF),首先想一个简单的问...

1.1K60
来自专栏前端真相

抽象和离散

23860
来自专栏Java技术栈

实现高并发更轻松!这个编程语言竟然超过了Java...

曾任猎豹高级工程师、搜狐社交产品中心服务端负责人,现任区块链创业公司 CTO。文章中,他会详细介绍自己接触Golang的经历,以及Golang语言的优势。

12030
来自专栏企鹅号快讯

给JAVA,说句公道话

常常总有人问我,在现有的语言里面,有什么好的推荐?我说:“Java。” 他们很惊讶:“什么?Java!” 所以我现在来解释一下。 Java超越了所有咒骂它的“动...

22350
来自专栏程序员互动联盟

如何才能精通C语言?

其实说到精通两个两个字,其实作为一个做了多年的老程序员,一般不敢提及这两字,要精通一门语言相当的难,所以在简历上一般看到精通某种语言的描述,总会找点犄角旮旯的问...

65870
来自专栏Albert陈凯

函数式编程很难,这正是你要学习它的原因

英文原文:Functional Programming Is Hard,That's Why It's Good   很奇怪不是,很少有人每天都使用函数...

29440
来自专栏程序员互动联盟

为什么大家都怕学C++?

现在很多人都觉得C++学起来相当的费劲,特别是对刚入门的,看到最后直接就没法看下去了,抽象的逻辑太多了,越看越迷糊,最后也就选择了放弃。笔者看到很多大学开设的第...

31950
来自专栏牛客网

字节跳动一面凉经

【每日一语】如果这世界上真有奇迹,那只是努力的另一个名字。生命中最难的阶段,不是没有人懂你,而是你不懂你自己。——尼采

65810
来自专栏Java架构

资深架构师谈Java——最牛逼的编程语言Java超越了所有咒骂它的“动态语言”Java的“继承人”没能超越它Java没有特别讨厌的地方结论程序员进阶方法

23840
来自专栏企鹅号快讯

如何掌握程序语言

学习程序语言是每个程序员的必经之路。可是这个世界上有太多的程序语言,每一种都号称具有最新的“特性”。所以程序员的苦恼就在于总是需要学习各种稀奇古怪的语言,而且必...

20190

扫码关注云+社区

领取腾讯云代金券