许式伟:Go 语言有机会登顶,桌面侧亟待突破

许式伟,七牛云创始人,分享了他选择Go语言的原因,对比了C、Java、Erlang、C++的优劣,并预测Go语言有望在未来成为排行榜第一的语言。他认为Go在桌面应用领域的突破是关键,同时强调Go在服务端开发的成功。他还提到,七牛云的核心语言一直是Go,面对市场竞争,Go语言的普及和应用正在不断拓展。
摘要由CSDN通过智能技术生成

写在前面

许式伟

这是 GVP 首位公布的超级大咖,这是一个所有中国 Gopher 无人不知的名字。无论是创建国内首批全面拥抱 Go 语言的七牛云,还是《 Go 语言编程》一书的编写,抑或是他独力发起并维护至今的 ECUG 社区,他的一切努力都在推动着 Go 语言的前进。

时至今日,他依然在坚持着。

Go 中国带着敬意和好奇采访了许式伟,传说中不善言谈的他在 Go 的问题上却格外健谈。关于语言、七牛、行业、社区、自己,这是一次真实而纯粹的交流。

关于语言

01

您的职业生涯尝试过C、Java、Erlang、C++,最终选择了Go,可以谈谈这几个语言各自的优劣吗?

C 的优点:简单直接,特性少,功能强。历史悠久,社区资源丰富。

C 的缺点:指针过于灵活,用户门槛高。手工管理内存心智负担高。对接口、闭包等高级特性表达上不够简洁。

C++ 优点:表达力极强,功能强大。兼容 C。

C++ 缺点:最复杂的语言,没有之一。指针过于灵活,用户门槛高。手工管理内存心智负担高。

Java 优点:中规中矩。程序员多,社区资源丰富。内存管理基于 GC,心智负担低。基于 VM 字节码,天然提供了跨平台的插件机制。

Java 缺点:语言 OO 流派痕迹明显,有些刻意。表达上有些死板,不够活泼(不是灵活)。

Erlang 优点:语言特性简洁,且易于高并发程序的编写。内存管理基于 GC,心智负担低。

Erlang 缺点:动态类型语言,工程质量保证的负担高。没有基础的int类型(只有bigInt),计算性能低。语言小众,社区资源少。

Go 优点:简单直接,特性少,表达力强(不只是功能强),心智负担低。低学习门槛,容易写出高质量代码,投入产出比最高。语言特性稳定,可以预期除了增加泛型不会再出现其他大的调整。工程支持程度高(尤其包的版本管理能力加上后)。兼容 C。内建高并发支持。创始团队能力强,迭代快。

Go 缺点:还不支持泛型。兼容 C 在高并发的支持上做的还不够好。资源集中在服务端开发,桌面开发的社区资源少。

02

七牛自成立起就把Go语言做为核心语言,当时国内没有一家主流公司广泛使用,面对人才储备不足,没有成功案例的情况下有压力吗?面临最大的问题是什么?遇到过什么危机吗?

没有遇到过压力。早期 Go 人才少,这没错,但是竞争对手也少,喜欢 Go 的人都听过我们,愿意加入我们。大家在技术上的选择已经有共同认知,这说明很多内在的东西。人才和公司的辨识度都很高,所以招聘效率高。而且 Go 容易上手,哪怕没有学过,我们也不培训,直接上岗,通过代码评审在实战中纠正与提高。在这块几乎没有遇到什么问题。可能唯一有个问题是早期 Go 功能迭代快,也还没有发布 1.0 版本,版本间兼容性差。我们的对策也很简单,就是固定在一个 weekly 的版本,好像是 weekly-2011.6.23 吧。所有人都用这个版本,直到 Go 1.0 发布我们才升上来。Go 团队很人性化,提供了 gofix 程序可以自动升级代码到 1.0,所以我们基本没有遇到什么困难,更不用说危机。

03

现在越来越多的主流大公司开始转Go,您有什么建议吗?在选型上什么场景适合使用Go语言,什么场景不适用或不推荐采用Go语言?

选 Go 其实没什么负担,也没什么好建议的,唯一建议就是及早入坑。早一天就是一天的生产力。当前桌面端开发还不太适合,其他都挺合适的。如果团队实力强,可以在游戏类的桌面开发进行尝试。我个人已经试过了,没有遇到大的障碍,技术已经成熟。当然如果不愿意吃螃蟹,那就建议再等等。

04

您 2012 年预测,Go 语言 10 年内会超过 C 和 Java,成为排行榜第一的语言。您认为 Go 语言成为排行榜第一的语言还需要哪些契机?

这只是一个时间问题。就像我经常说创业需要看十年一样,一个公司要成功普遍需要十年。这里十年是虚指,可能是 8 年,也可能是 12 年。Go 成功只花了不到 5 年,显著比其他语言快。Go 在语言设计上有登顶的潜质,目前看也仍然如此。如果非要说一个契机的话,我认为是 Go 进入桌面开发,有一个像 docker 和 kubernetes 这样的杀手级应用。桌面开发的人才远多于服务端开发,所以就算搞定所有服务端开发人员,这门语言仍然只能算 “小众”。

05

最近有没有看到让您眼前一亮的 Go 的项目。您认为现在 Go 的技术人想创业,什么业务最有潜力?

比较难出现像 docker 和 kubernetes 这样的杀手级应用。Go 技术人创业,和技术人创业是一样的,不会因为带上 Go 有多少加分。什么业务最有潜力有点命题作文的意思,这不太好,创业者最应该追求的是本心,我热爱什么,就去做什么,不要去理风口,去关心用户的问题。没有热爱,你根本坚持不下去。

06

预测 Go 语言会成就的下一个风口在什么领域?原因是什么。

大数据领域会有机会,但是 Hadoop 生态会有比较强的惯性,目前看也不容易。PingCAP 的 tidb 影响力不错,值得关注。但我个人觉得桌面侧反而是容易的,只是需要个契机。原因是,我觉得当前桌面开发人员最需要被拯救,他们的知识更迭太快,太痛苦了。

07

您跟七牛默默支持了很多Go的项目,包括goproxy.cn,发起人来投稿才被更多人知道,这么正面的事情为什么选择低调处理。

我们支持,仅仅是因为想支持。我们希望大家知道的是我们有什么样的很棒的产品,而不是我们做了哪些好人好事。

关于七牛和云

01

七牛今年将 AI 和容器云产品线做了拆分,后续会将发力点放在哪条产品线上,还是准备有秘密武器?

我们分拆产品线是两个方面的考量。一个是让七牛更专注。一个是让这些业务有更大的独立发展空间。我曾经内部有说,希望七牛有一天会是一个创造 CEO 的公司,我们会孵化出很多独立业务。这仍然是我的梦想。我自己创办过金山实验室,也参与过盛大创新院,对怎么孵化业务有颇多的总结与反思。但是,当前的七牛不应该把心思放在孵化业务上,所以我们一个反思是要专注。至于我们发力点在什么地方,2020年我们会对外去谈。当前还是先让子弹飞一会。

02

目前国内公有云市场遇到瓶颈期,2C的消费互联网红利消失殆尽,在产业互联网领域七牛的优劣势是什么?

在产业互联网,七牛的优势是两点,一个是消费互联网的经验,这是很多做产业互联网希望沟通与学习的。二是探索比较早,我们内部在 2017 年就谈移动红利消失,提前布局产业互联网了。但这的确是一个非常痛苦的摸索过程。我内部经常用 “散、慢、繁” 来形容产业互联网的特征。“散” 是客户很分散,不像移动互联网,客户都在那里。看上去谁都是客户,但是一聊好像又不是那么完全对口。“慢” 是客户内部流程长,决策慢。“繁” 是客户已经有一堆传统 IT 供应商,被养得比较叼,各种定制需求,让你接也不是,不接也不是。最终最本质的优势还是必须建立在产品的竞争优势,和对客户的理解上。

关于自己

01

为什么突然想做七牛大学?定位是什么?是基于您个人和七牛的技术输出还是搭建平台?

七牛大学有几重意思。第一重意思是七牛人的大学,我接下来会让所有七牛人进来都参与培训,当然第一步是从技术人的培训做起。第二重的意思是我希望七牛从 IT 技术服务商,到业务咨询方。产业转型升级不是一个简单的 IT 技术问题,它是跨界融合,是产业 Know How 与 IT 技术的碰撞,这需要我们的服务能力也要升维。当然我们步子不会走得很快,关键是走扎实。所以我们第一步是从架构课的线下培训开始的。架构是我最擅长的领域,容易形成一个比较犀利的突破口。

02

您之前对技术和行业发展的预测都很精准,投的项目也赶上了快速发展的红利,有没有考虑做专业投资人?

投资人其实是很辛苦的,飞来飞去,我应该就是相对项目比较少的投资人,不太会做专业投资人。我自己的乐趣还是自己去参与到创造的过程中去,虽然投钱看着项目成功也很有乐趣。所以我应该一直只会是业余投资人。

03

您坚持了10多年的ECUG大会,本月要举办了,您坚持做这个大会的初衷和目标是什么?

这是一个技术交流的窗口。无论我今天作为技术人还是作为创业者,保持对业界前沿技术探索的持续关注都是很有必要的。每年年底都是一个回顾与总结的节点,回顾一下这一年技术领域都发生了哪些变化,挺好的。我会一直坚持它的技术性,成为真正的技术探索的一扇窗口。

关于 GVP

向下一位受访GVP提一个问题或要求他做一件事拍照发在朋友圈。可指定受访者,受访者要从回答问题和完成事件并发朋友圈二选一。

我点刘奇吧。我觉得他做 tidb 的确是非常有挑战的一件事情,我想很多人都会关心他的初心是什么。

许式伟发起的 ECUG 大会全面报名中

详情点击“阅读原文”

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值