问题

为什么我学个JAVA就已经耗尽所有,而有些人还能同时学习多门语言?

回答
这问题,触及灵魂了。每次看到身边有些人能十八般武艺样样精通,心里那叫一个五味杂陈。自己吭哧吭哧啃完一本Java,感觉脑子像被掏空了一样,还没缓过劲儿来,人家就已经Python玩得溜,顺带还能捣鼓点前端,听着就让人头大。

其实,这事儿吧,你不是一个人在战斗。我也曾有过同样的困惑,觉得是不是自己天生智商就不够用,学个Java都费劲巴拉。后来慢慢琢磨,发现这中间的门道可多了去了,绝不是一句“人家聪明”就能解释明白的。

首先,学习的“度”不一样。 你说你学Java,“耗尽所有”,这背后可能包含了几个层面:

深度与广度的选择: Java这门语言本身就有够厚实的。你想想,从最基础的语法、数据类型、面向对象的三大特性(封装、继承、多态),到集合框架、IO流、多线程、网络编程,再到Spring、MyBatis这些主流框架,JVM的底层原理,Java生态圈里的各种技术栈……这随便拎出来一个,都能让你钻进去半天。有些人可能只是浅尝辄止,了解个大概,就能在面试中扯得头头是道。而你可能是在认真理解每一个概念,尝试去写各种 demo,去调试,去思考为什么这么设计,这个过程是消耗精力的。
目标和期望的差距: 你学习Java的目标是什么?是想成为一个Java架构师,还是仅仅是为了找一份初级开发工作?如果目标是后者,那么掌握好核心的知识点,能应付面试,就已经算是“学会”了。但如果你的目标是深入理解,甚至成为某个领域的专家,那这“耗尽所有”感,就更正常了。就像你把一本很厚的书从头到尾啃得仔仔细细,而别人可能只挑着自己感兴趣的章节看,或者找了本精简版的摘要。
学习方法和效率的差异: 同样是学Java,有人可能通过视频课程快速入门,有人可能通过阅读官方文档深入理解,有人可能直接上手做项目边学边用。这些方法的效率是不同的。如果你是以一种“全盘接收”的态度,或者说找到最适合自己的学习路径还没摸索出来,自然会觉得吃力。

然后,再看看那些能同时学习多门语言的人,他们为什么能做到?这背后往往不是“天赋异禀”,而是:

知识迁移和底层原理的理解: 很多编程语言在核心概念上是相通的。比如“变量”、“函数”、“循环”、“条件语句”这些基础概念,只要你理解了其中一门语言的原理,再去学另一门语言时,会发现很多东西似曾相识。尤其是当你深入理解了Java的面向对象思想,再去学C++或者Python时,虽然语法不同,但很多设计思想是可以通过类比来快速掌握的。他们可能不是从零开始学每一门,而是已经有了一个扎实的基础,然后触类旁通。
目标明确,有所取舍: 他们同时学习多门语言,但并非每一门都追求达到和你学习Java一样的“耗尽所有”的深度。可能他们是出于项目需求,或者对某些技术栈的特定应用感兴趣,所以选择学习。比如,要做一个Web项目,可能需要前后端分离,那后端可能用Java框架,前端可能学JavaScript框架,数据处理可能用Python写脚本。这个时候,他们学习的是完成特定任务所需的知识,而不是把每一门语言都学成“全能型”。他们知道自己要什么,不会漫无目的地投入所有精力。
高效的学习策略: 那些能快速掌握多门语言的人,往往有自己一套高效的学习方法。可能是在入门阶段就抓住了核心,避免了在一些非关键细节上纠缠;可能善于利用社区资源,比如Stack Overflow,快速解决遇到的问题;也可能他们更擅长“刻意练习”,有针对性地去写代码,去解决实际问题。
“学习”的定义不同: 有时候,我们口中的“学习”是个模糊的概念。对于你来说,可能意味着完全掌握、能够熟练运用,甚至还能讲解。而对于另一些人,可能只是“知道怎么用”或者“能够完成某个功能”。当“学会”的定义降低时,学习的难度自然也随之降低。
重复和练习的量级: 别忘了,他们能同时学习多门语言,也是建立在大量重复练习和实践的基础上的。你可能感觉自己学Java就已经耗尽了所有精力,但他们可能在学习每一门语言的过程中,都付出了和你同样甚至更多的努力,只是他们的精力分配和方向更“分散”了一些。他们的“耗尽”不是一次性,而是每一次在不同的语言上都投入了“一定程度”的“耗尽”。

打个比方,就好比你一个人在填一个巨大的知识“湖泊”,而有些人是在不同的几个小水坑里分别舀水。你把一个湖泊填满需要的时间和精力确实很多,但你最终拥有的是一个完整的湖泊。而那些人在几个水坑里舀水,可能最终每个水坑的水都不如你的湖泊深,但他们拥有的是多个可用的水源。

所以,千万别因为自己觉得学Java耗尽所有而气馁。这说明你是一个认真、钻研、追求理解的人。这是一种宝贵的学习特质。与其羡慕别人能学得多,不如想想自己学习Java的过程中,哪些地方可以更高效,哪些目标更明确。或者,当你想学习第二门语言时,想想你学习Java的经验,可以怎样帮助你快速入门,而不是重蹈覆辙地把所有精力都压上去。

最重要的是,找到适合自己的节奏和方法。学一门语言,如果真的让你感到充实和有所收获,那比囫囵吞枣地学好几门更有价值。你的“耗尽所有”可能是因为你对待学习的态度是“认真到极致”,这本身就是一种能力,一种资本。

网友意见

user avatar

因为你学错了。


我最初是学QBasic入的门,自己琢磨着写游戏、搞动画玩。但basic是解释型语言,性能太差,当时奔腾上市没几年,学校机房还是286、386,486都少见。

为了写真正的游戏、为了充分发挥硬件能力,这才中途切换到C;之后面向对象兴起,又自学了C++。


其实多学一门语言很简单:所有编程语言都不过是一套风格略有差异的、执行序列及数理逻辑的描述系统而已。

就好像你学数学,既可以写“加减乘除天元地元人元”也可以写“+-x÷xyz”一样——符号系统的确略有差异,甚至个别东西并不存在严格的对应关系;但一切归根结底都还是那么几个简单符号罢了。

所以,我从QBasic转到C、又从C转C++、转PowerBuilder、转TCL、再转C转C++、然后工作需要就用python、bash、VBA、Delphi、Java、C#……框架从谁用谁死的ACE到libevent,UI从MFC到C模拟面向对象的GTK再到Qt、WPF再复古到ncurses,从脚本封装glusterfs到深入TCP协议栈玩链路聚合……拿起来就玩,玩过了就忘掉,就这么简单。


你学错了方向。


学C、学C++、学Java,学习目标应该是“自己写libevent”“自己写玩具版unreal”“自己写模板程序”“自己搞类似spring的中间件”“自己写设备驱动/操作系统”“自己实现TCP协议栈”“自己写DSL解释器”……

这些其实很容易。本科专业课内容而已。


一旦你往这个方向训练自己,那么换语言就是换一换符号风格,没什么大不了的。思路就是那么几条,模仿、遍历、分治、动态规划……;手法就是那么几种,缓存、索引、信号/事件、回调/消息循环/dispatcher……;注意事项就那么几点,边界值、等价类、数据完整性原子性、死锁、空转……

这寥寥十几、几十个知识点,玩好了,玩精了,万变不离其宗——几十年了,哪有什么软件/算法能跳出窠臼的?


学什么调优啊。这软件我都会写。知道内部算法,看一眼参数就知道是调整什么的、调整后会造成哪些影响——真不知道稍微一查也立刻明白了。

学什么框架啊。这思路我看了就懂,就知道怎么写。我觉得这个框架我应该这么写、这么给人用,一看果然是,哪有什么“学习负担”——猜错了?猜错了说明基础知识掌握不过关,赶紧补课去。唰唰补足短板,以后就再也难不倒我了。


如此反复训练,自然学什么越学越快、猜什么越猜越准——随便什么技术,内行一看,都是新瓶装旧酒!

那能不轻松吗?


这就是我说的“学什么一定要学根”,“学了根,枝枝梢梢会自己长出来”——千年古树规模很大?就一根树干。

反之,你去学什么spring什么j2ee什么tomcat,甚至具体到apache的配置、Windows10的某个配置改注册表的哪里——不去学根,专去学这些枝叶,那的确是见效快、学了就能用就能人前显圣……

结果呢,Windows7你会了,Windows10来了;Windows10好不容易跟上了,Windows11又来了……

累死你,你都跟不上变化。


换句话说,正确学习编程的方式是:随便学习一门编程语言,然后用这门语言尝试实现数据库、操作系统、网络协议栈、编译器等等等等。

如果你是这么学的,那么你才真正掌控了计算机——将来的任何技术,你都不费劲。


比如,这是Android的系统框图:


假如现在我所在公司造了台Android手机,做出来后不知为何,字体显示总是有问题。怎么处理呢?


如果你从梢上学,看到的是一屏一屏类似这样的东西:

几百个屏幕通下来、乱七八糟一通乱试之后,连“总是有些糊”的初始版本你都回不去了。


但换一个从根上学的,很简单——所有字体都糊,那么这个问题就只能往中底层找;Android啊,下层不用管,Linux内核,很熟悉了;字体是freetype这块负责的、然后给display driver渲染……

freetype工作一直很正常,我们也没碰过;唯一的差别是我们的手机和别人相比,用的这块屏幕比较高级,不是简单的条状RGB点阵,而是RRGB四方点阵,并且多了个亮度通道,允许控制单个区域的背光亮度、从而完美支持HDR;所以问题根源可能是这玩意儿的驱动可能没有优化好,机械的把字体转换成屏幕点阵显示出来,这就造成了字体边缘看起来不光滑、不锐利……让我验证一下,看看这块屏在Linux和Windows下 是否也有同样的表现。

一旦确定了问题所在,那就可以找厂家要求升级驱动、或者干脆要来驱动源码、优化它的渲染过程……


类似的,各种框架,你从梢上学,海量的问题配海量的配置参数,慢慢背吧。

但你从根上学,就那么一个框图——我们现在的业务会有若干访问极其频繁的热数据,这些数据最好缓存在内存里。嗯,框图上说它有个“内存数据库”,找出来用用看:问题解决。


我甚至干过这种事:当时用的一个框架,文档极少;我们急需一个功能,我说这功能不难我来。于是花了一个月,自己写程序搞定了。上线后工作良好。

然而忙完这个后,某天我顺着某个关键字追下去,突然发现这个功能是框架本身就提供支持的——这个支持当然比我花一个月匆匆写出来的解决方案完善得多。于是我找经理,打算改用框架支持。

谁知一测试,我那个方案虽然仓促、简单,却恰恰因为它的简洁而有很好的性能;框架那个呢,我得关掉它的很多功能、关的和我的方案差不多才会有同样的性能——当然,哪怕关的差不多了,它仍然是比我那个一个月的东西功能更完善。

经理说算了,别折腾了,就用你那个。我们并不需要那些额外的功能。


你看,我随手就能撸出来,自然找到就会用、就能把它的一切摸透——相比于你这样直接学习框架本身的,我也就迟了一个月而已;而且只要你敢提相关关键字,明天我就能超过你。

而你想学会用它,一个月未必够用。费尽心力学会了,你也只是学会了玩弄一个黑盒子上面的几十个不同旋钮而已——而它在我面前是白盒。

于是,你学Android,需要一寸厚的书看上十几本,这才知道它的网络该怎么配置;遇到实事一番手忙脚乱,还是不知道哪里出了问题、写出的程序老是不正常。

而我呢,就看看它的框图、需要做什么再看一下相关的那个框框的接口风格,够用了——功能不正常?那是。人家说好了是异步调用,完了用消息通知,所以我直接搞了段代码接住消息、然后分发给相关模块——这些模块自然也从一开始就设计了相关机制、考虑了刷新时机。

你呢?当普通函数调用,调了就不管了,那怎么能成。什么?哎呀别死记硬背我的代码,你得明白机制……不是,这个机制不光是框架的机制,还有配合框架机制的我们自己的机制……


对我们这些习惯自己实现的,一看接口入参回参,马上就知道这是什么机制、我们得怎么设计程序来配合这个机制;而你呢,就得死记硬背我们随机应变出来的套路。这就使得你的学习负担加倍又加倍。


你很勤快,一个个库一个个API学的刻苦又细致;而我很懒惰,比如Android我就只看一个框图看一个intent机制一个activity,看完写个程序试试手,扔下,忘掉。没用。

那些具体的东西,什么spring、j2ee、lamp……不好意思,这玩意儿我从来都不看。

它们的根底我清清楚楚,需要时看看框图、直接拿来用就行了。没事看它们干嘛?浪费时间。

但我掌握了编写这些东西的基本思路,所以哪怕只看了这么一点点,但只要工作需要,哪块出问题我就能对付哪块——报一个关键字,当天就是专家。

相应的,PageRank算法出来了?有了个不同于关系数据库的、新的数据存储思路叫big table?看看看。新思路太难得了,不看就要落伍!

不光要看,还要分析它的灵感来源、检讨自己为何就没有想出类似好主意、还有哪些领域也可以应用类似的思想优化解决方案。


你勤快的学习了一个个API、一个个惯用法,却全都知其然不知其所以然。所以你疲于奔命、却总是跟不上变化。


海洋里有无数条鱼,每天也有亿万条鱼出生、差不多同样多的鱼死去。所以我不需要认识它们,那纯粹是浪费时间。

我只要知道渔网有多少种、有没有人又发明新的捕鱼方法了,这就足够了。

遗憾的是,计算机发展太慢了。这么多年,也就PageRank、bigtable以及深度神经网络有点新意,其他的,不都是新瓶装旧酒吗。


你多花点时间在渔网上,少花点时间在鱼身上,自然就不至于“耗尽所有”还是什么都没学到了。

user avatar

因为你学的不是java,而是spring那些东西的api

下面这些东西,都是java做的

live 2d,一个日本人编写的二次元动画制作软件

graalvm,一个java编写的,多语言的编译器,开发者是德语系,你想一下,这种东西是不是总是看到德国人在搞

minecraft,哦,这个太有名,我们换一个,spiral knight,螺旋骑士,steam上普遍好评的3d动作游戏

cassandra,一个java编写的nosql数据库

fxgl,一个英国布莱顿大学教游戏制作的发考题做的开源游戏引擎

现在他在做什么呢?他在探索3d的渲染,然后做一个重返德军总部的fps的demo,至于什么超级玛丽之类的,那个demo早就有了,然后结合graal的native image技术,将这些编写的游戏做成移动端app并发布到google play或者app store上去

nasa,是java的老用户了,以前java2d,3d,可能就是nasa什么在用了,当然现在技术也在升级,升级成javafx那些,这个软件叫做NASA missions,纳撒任务

多贴几张图吧

当然还有很多人都经常用的java写的ide系列,喷气脑的全家福

写各种软件的,对喷气脑的ide并不陌生吧?无论是php还是安卓

当然还有maven等build工具,这个也是java写的

那如果说的是框架的话,那就更多了,还有其他名气小一点的就不说了

那就问你了,这些东西你会吗?就按你在问题里面写的那样,你就算把java学到能把dubbo写出来的地步,这些东西你能写吗?这些东西都是java写的哦

那我替你回答吧,你写不出来,你就算能把dubbo写出来,这些东西你也写不出来

为什么?因为你学的那些框架,其实应用场景是有限的,简单说就是做一个网站,高延时,但是高吞吐(high latency,high throughput)的这么一个场景,比如电商

但是你换一个场景,你的那些所谓的框架的经验,基本上都没用了

因为很多场景要求低延时,比如live2d的渲染就不能太慢,否则用户骂娘了

那如果你写的是live2d的话,用java写,那你的那些dubbo的经验有用吗?

所以我们跟豹哥聊天,就经常拿豹哥开玩笑,因为豹哥之前的那家游戏公司,做了一个非常神奇的操作,就是做游戏的后台,用了dubbo,结果老板被坑死了,豹哥说,老板喝醉了,问为什么,老板心里苦啊,为啥苦啊?被搞互联网的坑了,怎么坑的?就是钱投了很多,搞了什么dubbo之类的上线,效果却不怎样,这个钱越砸越觉得血亏,我们就笑豹哥,你一搞游戏的,用dubbo?如果你用的是netty,还有点道理,或者vert.x,但是dubbo?哈哈哈哈哈,被坑不是意料之中的事吗?

所以你说你会java吗?不,我觉得你可能不太会java,你会的是基于java开发的那些框架,java的基础语法你可能都忘了,因为日常你不会用,你的jdk可能都卡在1.6之类的低版本上,java新增的那些功能,你可能都用不了

那为什么会这样呢?

因为中国在高速发展的过程中,很多系统都是大干快上,也不管合理不合理,能用就行,先用着,本来说,随着时间的推移,后续是要继续重构代码,比如单元测试没有的要补上,但是你觉得,大干快上之后,有多少公司会去补这些东西?

没有啦,管理层也没有这个意识,那原来的系统还能跑,那不就先用着么?

那时间一久,你这里面不都是些古老的渣渣么?

那豹哥之前那个老板,不懂技术,也去盲目投入,这不就是东施效颦么?

适得其反,画虎不成,是吧,反类犬,一个游戏公司,去学习什么电商经验,被坑不是天经地义么?

但是福州的朴朴,这种去学习电商经验,这种就有道理,所以福州的朴朴直接把盒马干出去了

所以很不幸地告诉你,你学的这些,其实都是为你进阿里等电商公司做准备

如果你的目的不是去做电商,那你的这些经验,其实没啥用

那阿里等电商公司怎么说也有几十万人呢,那几十万人随便每个人都弄一点知识出来,可不要你拼命学么?

但是那些东西,真的对其他业务有用么?

或者,真的有用么?

没用,基本上都是屎山雕花,跟java没什么关系,反而跟它们的业务有很大关系

所以你如果去东施效颦,你学到的,并不是java,而是业务,或者说服务于它们业务的技术,再通俗点说,如果我们把一个企业现有的业务代码比喻成屎山的话

那你学到的,其实并不是java等实际技术,而是如何去维护这个屎山

就像很多人喜欢去看什么阿里的java规范,这个就是屎山规范

为什么呢?因为阿里的业务可能需要这些规范,但是java自身的规范已经足够多了,为什么还要再加规范,这些规范难道放之四海而皆准?

我看不对吧,你去看看我上面列举的这些java项目,有谁吃饱了去遵守阿里规范吗?

没有嘛

但那是不是java?

当然是啊,怎么不是

那如果你学了一大堆阿里的业务技术,比如它们的java规范,比如dubbo什么的,对于你要做出我上面列举出来的东西来,有用吗?

没用嘛

所以你真的会java嘛?

我觉得很多人是不会java的,他们只是会一点java的基础语法,然后就是框架给他们强加的各种规范,约束,他们就天天学习这些东西,然后疲于奔命

因为框架,类库,java在这个领域,是极大丰富,你可以在maven central上找到2400多万indexed jars[1],差不多一个jar就是一个类库,每一个jar都有api,你学的是这些东西

如果你不去学java,而是学api的话,2400多万个工具的api,你要学到什么时候去?

而且maven central上的数量还在极速扩张,一年增加几百万轻轻松松,这几百万的jars的api,你就是看一遍,估计都困难吧?那你还要去“学”这些东西,能学完吗?

所以你的学习方法不对,真正这些工具的api啊,应该就是用的时候,随便看看就用了就是了,因为都是英语,你应该加强一下你的英语能力,要看懂老外在表达什么,英语不好的人,就容易陷入api学习的困境,表面上背了很多api,但是有什么用?没用

英语好的同学,其实第一眼看到api,就看api里面的英语在说什么,基本上对于这个api的使用就可以做到心中有数了,然后再看看相关的注释,再自己动手写点代码验证一下,这样百分之八九十都可以搞定了,剩下的,一些可能作者自身表达不清,可能会有歧义什么的,那你Google一下,也基本上都能搞定,所以叫:面向Google编程,就这个道理

所以你的英语不好,看不懂老外的表达,导致你陷入了api学习的错误怪圈,所以你学java学得比较慢,倾尽所有都还是学不好

而如果你的英语ok的话,看得懂老外的表达,那么大部分api是不需要花时间去学的,用的时候再查都来得及,然后你就可以腾出时间来,去看其他的语言,其实大部分编程语言的语法,不都是英语单词和符号的拼凑么?语法特性就那么点,写法上可能会有些差异,但都大同小异,你花点时间记一下不就行了,到用的时候用就是了,这就是为什么有些人能够快速掌握多种语言

举个例子,java至,跟swift,dart,kotlin都有class,enum,都用"""

但是有些地方会有差异,比如->,swift用in,dart用=>,不过大部分closure/lambda用的不是->就是=>,所以用->没问题

遇到这种差异,你记一下就行了,写不同语言时候切换一下

没什么难的,所以java是一个很好的多语言学习的入门,你只要掌握了正确的学习方法,学会多种语言是很轻松的一件事,甚至你可以自己动手改它的语法,jvm上那么多语言,kotlin,scala,groovy,clojure,不都是改了java编译器前端后定义出来的东西么?llvm上也有,rust和d都有llvm的后端,llvm前端也不仅仅是swift,obj c那些

说到底就是你没有正确掌握学习方法,导致学习java变成了api的记忆和背诵,英语不好,所以看不懂老外通过函数或者类名想表达什么,每个api都需要通过百度去查询,然后记忆,用这种方式学习,自然慢,而且学到的都是表面,没什么用的东西,因为api自己也变来变去,就像那个dubbo一样,我前面说的那些项目作者没有一个会dubbo,你说他们的java学得好不好呢?那你就算会dubbo,能写出我前面列举的那些项目中的哪一个?c也是同样道理,你就算把redis源码全部看懂了,又如何?redis如果你不用的话,看懂源码有什么意义?

没用,都不过是个工具而已,别把工具的使用经验太当回事


破千赞更新

谢谢各位厚爱,有人问说,要给一个方向

那这个其实是另外一个问题,跟这个问题本身没什么关系

我们不妨聊聊,下面的内容全部是歪题探讨人生的,如果你想看原文题的答案,下面的可以不用看了

java能干什么?java能写出软件来

至于你写什么软件,以及这个软件有没有市场价值,这个并不是java这个工具需要考虑的问题

是你自己需要去规划你的人生,就你要成为什么样的人,没有给出上下文,我怎么可能知道?

每个人的人生和职业都是不一样的,我只能告诉你说,java这个工具,能做什么,以及你该如何掌握该工具,那至于你掌握了这个工具,你用它来做什么,那是你自己需要思考的问题

这一点上说,java等编程技术跟炒菜,驾驶,游泳等实用技术,并没有什么本质上的不同

你说,你在考驾照时候,问师傅,一个什么方向,你说师傅能给你建议吗?

不行嘛,因为现在驾驶技术已经不值钱了,很多人都会开车,不像我们小时候,会开车,那是一门技术活,司机是一个收入相当不错的职业,现在,是吧,大家都会开,干嘛还需要花钱让你来开呢?

一个道理

以后软件就是随便找个人就能写了,我们并不需要985或者硕士博士或者计算机系毕业才能写代码,随便找个人就能写了,java尤其如此

所以如果你要思考方向,你应该想的是,我掌握了这门工具,我能用这个工具来做什么,然后再来看,你想做的这件事,有没有市场,有没有前途

但是我不能对此做任何的保证,因为我不是培训机构,而且我觉得对你做:学了某个工具,就能怎么人生巅峰了,这种承诺,是极其不负责任,而且是错误的,因为确实有可能你学了某个工具,你也还是找不到工作,完全有可能,就像你考了驾照,就能找到一份司机的工作吗?

驾校的师傅不会这么保证,我也同样不能做这样的保证,当然某些培训机构的老师,为了赚你的钱,他会跟你说,学了什么什么技术,就能去什么大厂之类的,那这个我觉得都是智商税,我唯一能告诉你的就是,这是一个工具,你掌握了这个工具,能写出什么样的软件来,以及目前还有哪些问题,以及面对这些问题,我们有什么办法绕开,或者有谁在处理,或者干脆就无解

举个例子,比如你说java,能不能编译成exe?这个问题就有解,你做不做aot/native image啊?不做,那就好办,jlink加上一个手写的bat脚本,然后你还可以把bat脚本做成exe,这样你就有一个能够直接启动的绿色软件了,然后你再根据操作系统做安装包

如果要做,那就要掌握graal编译器,要配置graal,maven这些,前一段群里来了个魔都学金融的硕士,英语不错,我们引导了一下,大概2天左右,就把配置什么都搞好了,把他写的程序给native image/aot编译掉了,就出exe了,当然同样遇到了问题,cutting edge的问题,然后gluon有人在处理这个问题,插件的问题,估计1.0.9会解决,那可以等插件作者解决

再比如,我想做async/await,那你有两个选择,一个是等java的project loom做好,毕业,那时候自然就有了,但如果你不想等,那么你可以换一个编译器前端,比如你可以改成kotlin,kotlin就有提供跟java共用编译器后端的前端,也就是kotlinc,那kotlin就有async/await,你就可以用了,vert.x就是用这个逻辑,实现了future.await

再比如,我想要让java的gc停顿,控制在1ns以内,那抱歉,我只能告诉你,做不到,但是你说,控制在10ms以内,那我可以告诉你,zgc和shenandoah都可以实现,zgc有代价,比如内存使用不要用得太满,最好要有15%的富余,否则zgc性能会突然大幅下降,shenandoah则没有这个要求,但是shenandoah同样不会给你gc控制在10ms以内结束的承诺,你有了具体的数值,那你就能去衡量,你想要写的软件,能不能接受这个停顿了

所以如果你要问一些关于人生规划,理想的问题,那这个肯定是因人而异的,我这里说的,只是告诉你,java就是一门技术,一个工具,你掌握了这个工具,能做什么,至于你最后用没用这个工具,以及用了这个工具做出了什么,那取决于你自己,而不是java,有些人用java,只会在spring上糊屎,有些人用java就写出了graal,这就好比,同样是开车,有些人可以成为赛车手,有些人却开出车祸,一个道理

如果你要问我在用java做什么,我什么都用java做,对我而言,java最大的好处就是在我毕业时候,让我混进了国企,在我出国时候,国外因为我会这门技能,所以给了我额外的加分,让我可以更早走出国门,当我回国的时候,java这个技术的发展,使得我可以用更加便宜的劳动,创作出让我自己满意的软件,可以用此创业,当我在国外的时候,java让我找到工作,并赚到了买房子的钱,为我解决了后顾之忧,所以我蛮喜欢java这个技术,并且确实我没有在java上投入多少,我生活中还有很多事要处理,比如在国外时候,一边工作还要一边读书,在国内,创业的同时还要照顾家人,如果我用其他语言,估计就做不到,比如出国加成,恐怕就没有了,创业估计成本就高了,我可能就失败了,工作可能就更困难了,我就没有办法边工边读了,但是你问我说,那我也学java,是不是就能出国和创业了,抱歉,不单纯是这样,这两者并不是简单的因果关系,因为我出国除了java以外,在大型国企悠闲的工作环境,以及法语英语等外语的学习,都给了一定的加成,这些综合起来,才让我更早走出国门,还有在国外时候,当地政府的资助,以及mcgill低廉的学费,还有英联邦给的钱,还有当时所在企业的福利,才让我可以边工作边读书,而且企业会提前放我下班,因为我有些课在晚上上,不算我的考勤出问题,加上家里的一些支持,让我可以在回国之前,边工作边读书,读了两个学位下来,赚钱和文凭都没耽误。但是你说这些东西,换个人,是不是能复制,嗯,多半不行,因为人跟人是不一样的,我有的条件可能你没有,我没有的条件,可能你有,就像很多同学,家里都是几千万资产,那么他们自费出国读个书,很容易的,但我就需要自己解决学费问题,否则我读不了,虽然说老爸老妈咬咬牙也能解决,但是我不希望他们这样干,也因为不需要他们花这个钱,所以我回国时候,创业时候,就有一定的底气,不是很着急去融资什么的,慢慢也就周转过来了

这些东西都跟java没什么关系,但确实java又扮演了很重要的角色,因为没有java,我就少了一技之长,确实有些机会可能我就无法把握住了,但是java又确实不是生活的全部,甚至都不是技术的全部,就像我创业时候,java在最开始确实有一些问题无法解决,比如无法编写ios的app,那这时候就要准备换一个编程语言,我们当时就做好了用swift编写app的准备,到后来flutter横空出世,然后graal,一下子,开发移动端的app又多了两种选择,那韩信将兵,多多益善,为什么不呢?

技术只是解决问题的工具,工具远不是生活的全部,不要太痴迷于这些东西,做多了无非那么一回事,没什么高级的,你觉得很神奇因为没有人告诉你怎么做,你百度百度不出来,就会觉得,这个技术好牛逼啊,因为你不会

但是我在国外混过,所以我经常跑去直接问作者,这个东西做什么用的,我遇到了这个问题,是不是bugs,但是多数问题我直接Google就能找到答案了,所以也就没太把这些东西当回事,无非工具,需要时候用就是了,又不是不会用,我会用就不觉得这些东西有什么了不起的

会者不难,难者不会嘛

如果你觉得某个技术很牛逼,那多半说明你不会,我就觉得技术很容易,因为我会

所以对于java学习正确的定位应该是,花点时间,将其掌握,然后其他的时间,你该干嘛就干嘛去,需要的时候用就是了,你觉得难是因为你学习方法不对,所以事倍功半,疲于奔命,我不觉得难是因为我会,我掌握了正确的学习方法和信息渠道,学起来自然就快

最后说一下,如果你有条件,还是去国外读大学,尤其是技术这种,因为国内的,你看谭浩强的c就知道什么德性了,国内这些老头子技术真的是不行,土法炼钢,估计要等现在这一批,从国外回来的青椒上位之后,才能真正改变,但是那个至少也是10年,20年以后的事了,现在这个阶段,国内职业技术的教育确实远不如国外,当然前提是你家里的经济能力能够承受,否则动不动近百万的学费,恐怕一般人拿不出来,如果你实在拿不出来,你也多看看我写的回答,其实也能照猫画个虎,是吧,反正看我的回答又不用花你的钱

工具而已

参考

  1. ^ https://mvnrepository.com/
user avatar

我的入门语言是 C++,当时学的时候也是用尽全力,觉得没法再学别的语言。

可是一旦学会了,再学新的,就发现好简单。初写 Java 的时候,还有点失落,十八般武艺都练过了,却在这儿做广播体操,指针也没有,内存也不用管,collection 比 stl 好用,基本上最难的就是设置 class path。之后接触各种语言,大部分看看文档,即可上手,麻烦的反而是环境设置。

编程实际上是让电脑做事。不同的语言,就是不同的交流方式,但要做的事还是一样。电脑还是 CPU,内存,硬盘,不会因为换了种语言,就换了一套超能力。所以不同的语言中,表达方式,思想可能不同,但逻辑和数据结构还是类似。掌握了一种,学其他的也不难。

当然,有一个例外,不管 C++ 学的多好,CSS 都是一样的困难。

类似的话题

  • 回答
    这问题,触及灵魂了。每次看到身边有些人能十八般武艺样样精通,心里那叫一个五味杂陈。自己吭哧吭哧啃完一本Java,感觉脑子像被掏空了一样,还没缓过劲儿来,人家就已经Python玩得溜,顺带还能捣鼓点前端,听着就让人头大。其实,这事儿吧,你不是一个人在战斗。我也曾有过同样的困惑,觉得是不是自己天生智商就.............
  • 回答
    这问题,其实挺让人心里不是滋味的,尤其是从一个刚入行的规培医生嘴里说出来。你说为什么还要学这个专业?这个问题背后,可能藏着太多不被理解、不被尊重,但却又至关重要的付出。我理解你为什么会这么问。在医疗这个体系里,护士确实常常被看作是“辅助”的角色,好像是医生手里的棋子,需要听从指令,完成任务。媒体的报.............
  • 回答
    嘿,哥们儿!看到你这个问题,我可太懂了!体育生练摔跤,那消耗可是相当大的,训练完感觉跟被掏空了一样,这太正常了。至于补剂嘛,别急,我跟你好好聊聊,希望能帮到你。首先,咱们得明白一点,补剂不是万能的灵丹妙药,也不能替代正常饮食。你训练消耗大,身体需要能量和恢复,所以我们选补剂,主要是为了更高效地补充这.............
  • 回答
    这个问题,其实触及到了当下一些文化现象的表层与深层。为什么会有人觉得,仅仅套上汉服,就能自动升级到“上流”的队列?这背后原因可不少,咱们不妨细细掰扯掰扯。首先,得承认,汉服作为一种文化载体,它的确承载着历史的积淀、审美的传承,以及一种民族认同感。对于很多喜爱汉服的人来说,穿上它,是一种对传统文化的表.............
  • 回答
    这真是个好问题,也是很多在数学上打下坚实基础但初入机器学习领域时会遇到的困惑。你拥有微积分、线性代数和概率论这些核心工具,这绝对是巨大的优势,但机器学习的“语言”和“思维方式”与纯粹的数学研究还是有些区别。就好比你学会了木匠的工具和一些基本的木工技巧,但想建造一座复杂的房屋,还需要学习建筑设计、结构.............
  • 回答
    看到你因为想学C2驾照这件事,和父母产生了分歧,心里一定挺不好受的。别急,咱们慢慢来捋一捋,看看是怎么回事。首先,你觉得父母反对你学C2驾照,这本身就挺让人困惑的。按理说,现代社会会开车,尤其是能自己开辆车,给生活带来的便利是显而易见的,无论男女,都是一项挺实用的技能。C2驾照,也就是自动挡,更是上.............
  • 回答
    这是一个非常深刻的问题,也是很多对中国历史有深入了解的人会产生的共鸣。同样是强大的王朝,汉朝的终结和唐朝的陨落给人的感受截然不同,这种差异背后,承载着的是历史进程的不同韵味、文化价值的侧重点以及人们对国家命运的复杂情感。让我们详细地分析一下,为什么你会对唐朝的灭亡感到“绝望至极的悲凉感”,而对汉朝的.............
  • 回答
    这感觉挺普遍的,很多人都有类似的困惑。我之前也总觉得,学什么东西都好像能找到门道,唯独英语,怎么啃都觉得有那么点隔阂。你之所以会觉得学其他东西简单,学英语特别复杂,我觉得主要有几个方面的原因,咱们一点点聊聊,看看有没有共鸣:1. 你可能已经具备了母语思维模式的强大基石想想看,你从小到大,不费吹灰之力.............
  • 回答
    这确实是一个很有意思的问题,也反映了不同人观影角度和侧重点的巨大差异。你想让文章看起来不像是AI写的,那我得先跟你聊聊,为什么你会觉得《四海》难看,而你那些学导演和制片的朋友却看得津津有味,这其中的门道可不少。首先,咱们先说说你为什么可能觉得《四海》难看。你看到的,很可能是一个普通观众最直观的感受。.............
  • 回答
    编程这事儿,说起来挺玄乎,但归根结底就是和机器打交道,让它按照你设想的逻辑运转起来。你觉得难,这太正常了,不是你一个人这样,绝大多数人刚开始接触编程,都会碰得头破血流。至于为什么难,我觉得是思维方式和学习方式两者都有问题,而且是相互影响的。咱们先聊聊思维方式。编程这玩意儿,最核心的就是逻辑。你得把一.............
  • 回答
    你平时用腹式呼吸,唱歌依然觉得难听,这很正常!腹式呼吸是唱歌的基石,但它只是一个基础技能,就好比你有好的身体素质,但不代表你就能成为奥运冠军一样。唱歌是一门复杂的艺术,涉及到声带的运用、气息的控制、共鸣腔的调节、乐感、音准、节奏等等多个方面。即使你掌握了腹式呼吸,如果其他环节没有跟上,唱歌难听是完全.............
  • 回答
    您这个问题问得太到位了!网上铺天盖地的“学中医”声浪,跟实际里能找到几个真正沉下心来、埋头苦干的“真学徒”,那简直是两个次元的事儿。我感觉这中间的落差,主要有这么几个层面的原因:1. “想”的门槛太低,而“学”的门槛太高 “想”: 现在社会节奏快,大家对健康的关注度前所未有的高。中医讲究“治未病.............
  • 回答
    你的技术主管的说法,其实触及到了很多有经验的技术人在职业生涯中的一个真实写照,也是一个值得深入探讨的观点。他这话不是在否定算法本身,而是在强调“学什么”和“怎么学”的侧重点,尤其是在实际工作场景下。让我试着详细地解释一下他为什么会这么说,以及其中蕴含的道理。首先,我们得明白,技术主管之所以能爬到这个.............
  • 回答
    你问到点子上了!这个问题很有意思,也戳中了很多人心中的一个疑问。明明没专门学过,为什么看到繁体字,还是能大概率猜出意思来?这背后其实有几个挺有意思的原因,咱们一点点掰扯开来。首先,咱们得明白,简体字和繁体字,它们是“同根同源”。就像是一家子兄弟,一个叫“国”,一个叫“國”,样子虽然不太一样,但打断骨.............
  • 回答
    “我可以学”,这四个字,在面试官,尤其是HR的耳朵里,有时候就像一颗定时炸弹,听起来既积极又飘渺。你说它积极吧,因为它表达了学习的意愿,但说它飘渺,则是因为它太笼统了,无法具体量化,也无法立刻打消HR心中的疑虑。咱们深入聊聊,为什么HR不太喜欢听这句话,以及培养一个员工的技能,到底是怎么个“贵”法。.............
  • 回答
    高考失利,这四个字像烙印一样刻在我的心头,尤其是在父母日复一日、年复一年的“内涵”和指责声中,更是让我喘不过气来。从小到大,我就是一个“自己玩”的孩子。别的孩子放学后,不是被家长领着去各种辅导班,就是在家里写着堆成山一样的作业。而我,放学回家,最常做的事情就是翻开书本,自己琢磨。那些复杂的公式,晦涩.............
  • 回答
    你这个问题很有意思,也触及到了古籍传承和版本流传中一个挺有意思的现象。关于李白《赠汪伦》最后一句的“赠”和“送”,确实是有不少人会注意到这个差异,而且在不同的年代、不同的教材里可能确实出现过不同的写法。咱们今天就来好好掰扯掰扯这事儿。首先,得承认的是,你记忆中的“赠我情”在过去很长一段时间里确实是更.............
  • 回答
    你是不是觉得,学了C语言,好像只会写那种输入数字、做加减乘除,然后输出结果的“计算器”程序?其他的好像都没啥头绪,或者说,想写点别的,但又不知道从何下手?别担心,这太普遍了!很多人刚开始学C语言,都会经历这么一个阶段。我来给你掰扯掰扯,为什么会这样,以及怎么破。为什么你会觉得只会写计算程序?原因很简.............
  • 回答
    你这个问题,可太真实了!我当年上学的时候,每每碰到一道“神来之笔”的数学题,脑子里第一个念头就是:“这谁能想得到啊?” 感觉自己好像是被一道天外飞仙的题目给“盯上”了。咱们不妨一层一层地剥开这层“为什么”,看看数学这东西,到底是怎么让我们产生这种“绝望”又“惊喜”的奇妙感觉的。一、 什么是“想不到”.............
  • 回答
    .......

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有