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

polaris · · 635 次点击 · 开始浏览    置顶
向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 更容易接触底层知识!

入群交流(该群和以上内容无关):Go中文网 QQ交流群:798786647 或 加微信入微信群:274768166 备注:入群; 公众号:Go语言中文网

635 次点击  
加入收藏 微博
1 回复  |  直到 2019-05-30 14:45:24
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传