随着IT行业越来越火,有很多小伙伴也就入了编程的坑。IT行业就业前景好使毋庸置疑的,从事IT行业的人,就算是跳槽再就业也是不会有什么难度的,与其他行业相比,IT行业只要有技术,其他的就都微不足道了。所以会有很多程序员从只会一种编程语言进化到会多种编程语言,这样来提高自己的竞争力。
就拿最近看到的一篇帖子来说,有网友说,服务端未来是go的,说go不好的都是看了点go语法的,觉得语法标新立异看不下去的lowb,写上半年,再来比较java go,观点立变,go还比较新,有很多问题没有解决,但是无法阻挡go成为云计算时代并发时代编程的王者!不用看未来,现在go就是王者,java不会死,但是go会更多
然后就有评论说,学学PLT,就知道go的语法设计的有多烂了。
但是楼主觉得这位网友是来喷语法的,然后说道,那只是你习惯了c语言java语言而已,写上三天你就习惯了,左右手互换拿鼠标而已,有啥可喷的?一个新时代的语言,c语言的发明者发明的go语言,语法设计会不如你?完全抛弃了其他语言的历史包袱,go简洁之上的感觉你体会不到吗?你喷只是因为你不熟悉,流于表面而已。但同是也表明自己的并没有否定java,只是说go更适合服务端
但有网友认为,生态圈恰恰是java的短板。我用一个语言为什么不整明白整个生态圈就用不好?为什么要自己创造一大堆问题再用繁复的方式去解决然后很牛逼?go不需要生态圈,他代表了一个方向:程序员就应该把所有的时间利用在写代码上,而不是装ide,搞破解,装插件,配环境,装vm,再堆上一堆浪费时间的设计模式,最后再和runtime作斗争。自己曾经问过快手的后台开发,为什么选java,他告诉我是因为他们所有人都很熟悉java,他们能搞定一切问题。我认可,不过我私自觉得,go没有问题,不需要搞定什么问题,不是更好么……
楼主也表示,生态圈说白了只是一个时代需求的累积而已,hadoop hive这些都是java,所以大数据领域大部分是java,但是到了云计算时代,docker kubernetes etcd 这些具有颠覆性的产品,不都是go吗?云计算时代,必须属于go
但小编觉得这位网友说的挺有道理的,他觉得语言就是工具,工具就是方便人干活的玩意。一群孩子们看不明白程序员本来就如同车钳工一样,java是钳子,cpp是螺丝刀,go是电钻。电钻刚出,没几个会用敢用的。所以不好招人。但是早晚电钻会普及的。钳子会被电钻替代的?
对于以上网友对Java和go编程语言的争论,大家有什么不同的看法和观点了呢?欢迎在下方评论区吐槽!
网友评论
1. go import 包是和远程库强关联的, 对 fork 极度不友好
2. 一些 goer 说 Java 啰嗦,但是,如果采用面向对象思想, go 也很啰嗦好吗
3. 关于 go 的 interface ,一直说自己说无入侵的,但是这样真的好吗? 个人认为入侵是必须的,我承诺实现哪些是我说了算,不是用的人说的算,否则,当我改动时 我不清楚该通知谁,甚至都不觉得应该通知谁,因为我对这个方法没有做任何承诺。
说句不好的,两条腿的鸡和两条腿的人是同一个 interface
看语言现在,要看生态; 看未来,要看领头羊是否原因接受意见,是否足够谨慎
1. 你这没解决 fork 问题呀,这里问题很多,你想听哪个?举一例子: 假设最初的原版已经停止维护了, 而且我没有原仓库权限,现在我想发布自己的一些特性,肯定和原分支有不通用的地方,在这种场景 golang 怎么能使用和原来一样的包路径,你这不是暗示别人找到旧仓库去吗,
2. 这里仅仅从语法角度,"成员方法" 每次声明都需要重复敲一遍"类"名,如果你要认同 getter setter ,比 java 更啰嗦(有非官方的自动生成 getter setter 的方案),因此,go 更倾向于让你"承诺数据结构" 而不是"承诺接口", 在面向对象领域,这是倒退
3. 袋鼠如果要用,那就得改接口,而不是偷懒,偷偷就用了,否则原来设计接口的人不知道你是袋鼠,加了一个 "说话" 接口 你如何解决,这不符合 "契约", 投机行为日后一定数倍偿还,除非你说我的项目以后不接新需求,用几次就扔
2. 问题是写java除非个人项目,你敢不那么啰嗦吗?
3. 某天袋鼠也要用同一个interface怎么办呢?加一个适配器伪装成鸡?不多此一举吗