有人常说,编程语言对软件工程师来说并不重要,更重要的是软件工程思想、架构设计能力等更高层面的内容。
这个观点本身没有问题,但它更多的是针对有相当工作经验的程序员。对于绝大多数的人,编程语言依然是最重要、最核心的技能,也是通往更高层面的敲门砖。所以,精通一门编程语言,不仅仅要熟悉其语法与原理,更要了解其周边的生态,包括框架、开源库、中间件等,以及掌握它适用的业务场景。
所以,作为一名将Go语言作为主要开发语言的工程师,如果你能合理地利用好这个敲门砖,你的职业发展必将更加通畅。下面,我会从几个常见问题谈起,分享我的经验与见解,希望能给各位带来启发。
需要,而且非常有意义。但是,我们的精力毕竟有限,更应该关注哪些内容呢?我推荐三点:
try-catch
面向对象编程
、函数式编程
、依赖注入
Julia
在大数据体系中对Java
的冲击上面这些例子是一些很发散的内容,但能证明你的视野足够广阔。不过,在关注编程语言之争的同时,我们仍应把主要精力聚焦于一门语言的深入学习,这才是我们的核心竞争力。
说到一门语言的不可替代性,核心关注两点:
上面这两点,也间接地回答了一个很常见的问题:Go
能替代Java
成为主流业务开发语言吗?我个人短期内并不看好。
回到问题,那么Go最擅长的领域是什么呢?答案也是大家耳熟能详的云原生技术。
Kubernetes
与大量相关套件都是用Go语言开发的,短期内无法被替换CNCF
的推动下,已经在各类云厂商中形成事实标准当然可以使用!Go语法简洁的特性能让代码更容易阅读,但我们要清楚地认识到其弊端,才能长期地坚持走这条路:
Spring
的编程框架做强限制,不同人的代码风格差异还是很大,最好前期有个资深专家 做好前期框架规划,才能更好地体现Go的优势Hive
、Flink
等大数据体系时,Java
仍是第一选择也许你看完这三个问题,会觉得自己学Go语言的热情被劝退了,但其实换个角度来看问题,其实答案也很有意思:
综合上面讨论的问题来看,现有阶段用Go语言做业务开发并不是最快的。
但是,从目前云原生理念被越来越多的人接受,我相信Go语言做业务开发也是一个很棒的选择。这里,我强调一个点:借势。怎么理解这个词呢?
上面聊的比较抽象,我再举两个具体的例子:
Istio
上,而不需要在应用程序中加上一堆计算流量的代码Flink
计算业务数据,那就用利用JAVA的SDK开发一个对接的小服务,通过HTTP或MQ对外输出结果,而复杂的业务逻辑放在Go服务中从能力层面来说,我认为Go语言工程师的核心技能点分为四层:
加粗的为Go语言特别关注
这四层的内容极多,我建议围绕着两个重点进行学习:
整个Go语言学习路线到此已经更新完毕,很高兴有朋友陪我走到最后。后续我也会持续更新这个系列的文章,保证内容的实时性。
学习技术是一个长期的过程,敝帚自珍很容易中途失去信心而放弃,大家一起鼓励、探讨,就能走得更远。
欢迎大家私聊我探讨问题,也可以通过公众号加入到Go学习小组中交流更多日常问题。
Github: https://github.com/Junedayday/code_reading Blog: http://junes.tech/ Bilibili: https://space.bilibili.com/293775192 公众号: golangcoding