如何优雅得向 Java 程序员介绍 Go 语言?

weixin_38057020 2019-09-20 10:57:33
向Java程序员介绍Go,还需要优雅的介绍,我觉得主要从以下角度考虑。

1. Java 有哪些优点,Go 是否拥有;
2. Java 有哪些不足,Go 有没有解决;
3. Go 特别棒的特性;

### Java 的优点,Go 是否拥有

Java 经过很多年的发展,形成了很好的生态。一门语言的生态是至关重要的,就好比一家公司的壁垒。Java 一直以来,有 谷歌、IBM、Oracle 等超级大厂的支持,有开源界牛逼的 Apache 组织支持,产生了很多顶级的软件,比如大名鼎鼎的 Hadoop、ElasticSearch 等等,Java 社区的原则也比较统一,基本 Spring 一统天下,没那么多纠结,很成熟!这些都是很强的壁垒!

相较而言,Go 语言还比较年轻。但是,自从 Docker、k8s 的兴起,为 Go 语言的生态搭建了自己的壁垒,同时带来了一大批学习者,很有明星项目效应!

因此,在大型项目中,一般会多语言、多生态并存!

### Java 有哪些不足,Go 有没有解决

1. Java 目前大家抱怨比较多的是写法啰嗦,虽然新版本在不断改进,但毕竟有历史包袱。

2. Java 学习门槛较高。拿 Java Web 开发来说,首先你得学完 Java SE,然后是 Java EE,学习 Tomcat 这类容器,接着你还得掌握 SSH 框架,这些经过了很多年的发展,生态庞大,学习成本较高!

3. Java 程序内存占用较多,经常莫名卡死。目前公司使用了 confluence 一套系统,隔断时间就有人反馈打不开了,和美团的人聊过,他们也是遇到同样的问题,得定期重启。

4. Java 近期版权似乎也是个问题

Go 从诞生之日起,就崇尚简洁,崇尚工程实践,没有历史包袱,可以借鉴先辈们的优秀设计经验。比如 对 C 语言扬弃,保留指针,但废弃指针运算;避免隐式类型转换带来莫名问题,必须显示转换。虽然是静态语言,但从 Python 这样的动态语言借鉴了很多优点,语言层面支持 slice 和 map ,使得开发效率有很大提升;同时支持面向过程、面向对象和函数式编程 等等。

整体上,Go 语言简洁,易于学习,每个人写出的代码风格一致。在内存占用方面,因为没有重的 VM,还是比较少的。

在现在重前端的大背景下,服务端负责 API 的情况下,Go 会是很好的选择。

### Go 特别棒的特性

1. Go 的招牌是并发。因为原生支持协程(goroutine),使得写并发程序非常方便。goroutine + channel 一对招牌搭档!

2. 极快的编译速度。有一个段子说,Go 语言是在 C++ 项目在编译的时候开发出来的!

3. 强大的工具链。

4. 标准库提供 net 和 http 包,可以很方便的实现一个 HTTP 服务。

5. 类鸭子类型的接口,interface 的设计。

6. 标准库支持日志和单元测试。

7. 和Java 一样,自带 GC。

### 总结

无意语言之争,只是希望大家对语言有更全面的了解,根据情况选择适合的,没有最好,只有最适合!欢迎留言发表你的看法!

当然,Go 也在不断完善中,比如没有泛型,近期才对包依赖有了较好的官方支持,被人议论最多的错误处理等,如果 GC 一样,我相信 Go 会越来越好。

最后补充:Go 是谷歌出品的,创作者是几个骨灰级程序员,国内有很多大厂在使用 Go,学习 Go 语言能够让你比 Java 更容易接触底层知识!
...全文
29 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38065391 2019-09-20
  • 打赏
  • 举报
回复
Java学起来其实并不难,现在框架高度发达,java小白越来越多了,培训几天就能做事情了。很可怕。 go上手的难度相对来说比java的难度还稍微大了一点点,不过也就是大了一点点,都不难。 程序猿不值钱,成了搬砖卖苦力的了。

430

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧