java太卷了,要不要转go?
作为程序员不要把自己局限于某门语言,不要给自己贴标签:Java程序员,go程序员,.net程序员。程序员真正要精通的是底层知识:计算机组成原理、计算机网络、操作系统、数据机构与算法。不管你用什么语言开发程序,最终都是运行在操作系统中的,所以踏踏实实的掌握底层知识才是王道。单独学习一门新语言没那么复杂,夯实了底层基础知识,多掌握几门语言完全不在话下,万变不离其宗。
蓝海永远值得尝试。当然golong其实已经发展挺久了,算不算蓝海看机缘。
我个人对golang是持支持态度的。那天和同事聊天,另两个人对golang都持保留态度。仨人都算是j***a码农吧。他们的理由是:golang第三方库的质量经常有问题。也不如j***a的稳定。性能上也确实没啥大优势。而且其实golang优化的空间并不大。跟j***a你不可能去干扰jit一样,golang本身并不需要你优化,要优化就是看看profiling,找到主要矛盾,看看能不能换个做法而已。和c++可以likely,unlikely的折腾不是一个意思。
golang我个人觉得做工具是真好用。协程的支持让kotlin哭晕在厕所。所谓的大型系统,我没参与过,没发言权。但,以geth、consul等的成功来看,golang起码不差。而且从有***的解决问题角度,golang做得不错的。
你可以吐槽golang的语法如何坑,但人家是拼标准库的。人家也不想ioc。人家所有东西一定要打在一起。这是人家的设计理念。
从未来市场说,我觉得起码在游戏后端开发上,golang较j***a有理论上的优势(开发+运行时)。其他只要是io密集型的,都比j***a有一定的开发效率优势。至于是否适合计算密集型呢...我只能说,抛开极端的混合c程序之外,在直接用golang开发算法实现上,其实golang也有一点点的优势:golang允许多返回值。我曾经写过一点儿手动的数学规划的代码,赶脚golang比j***a写起来顺。
golang的短板,就是表达复杂的OO模型结构。interface这个玩意儿吧...继承、抽象工厂疑似是一点儿脾气都没有。但反过来想:你难道打算用golang搞窗口控件绘制吗?如果不打算搞个golang的dom浏览器,其实生活里其他可能的用处也许就是地图数据的使用实例,如a star了...而且还可以用通用树结构来解决问题。
OO的那种继承树,其实大部分都属于提前所说的“次要复杂度”的范畴。golang疑似就是为了解决主要复杂度而生的。这句话有双面:好是解决主要问题,孬是软件弹性靠人维护。所以才说做工具是绝佳的。
至于怕卷找蓝海...比别人强,哪里都是蓝海。比别人弱,你就是红海。
J***a和Go都是非常流行的编程语言,它们各自都有自己的优点和特点。如果你对J***a感到很倦,那么转换到Go可能是一个不错的选择。
Go是一种开发效率非常高的语言,其语法简单、易学易用,而且其并发性能也非常强,非常适合开发网络应用程序和分布式系统。与J***a相比,Go更加注重代码的简洁性和可读性,同时也更加注重并发编程和网络编程。
如果你想要更好地理解Go的特点和优点,可以先学习一些Go的基础语法和特性,然后通过编写一些简单的项目或练手的小工具来实践。另外,可以阅读一些优秀的Go项目或框架的源代码,学习其他开发者是如何利用Go的优势来实现高效的应用程序的。
当然,是否转换到Go还需要考虑你自己的实际情况和需求,包括你当前的技术水平、工作需求、[_a***_]技术栈等等因素。最终的决定应该是基于全面的考虑,权衡利弊后做出的决策。
J***a和Go是两种不同的编程语言,在软件开发方面各自有一些优势和劣势。以下是它们的主要特点:
J***a的优势:
J***a的劣势:
Go的优势:
Go的劣势: