向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 会越来越好。
网友评论