卡卷网
当前位置:卡卷网 / 每日看点 / 正文

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

作者:卡卷网发布时间:2024-12-29 14:21浏览数量:85次评论数量:0次

我见过两类人,这两类人学习新编程语言都非常快(都在半天内从零学习并开始使用 java 写软件)。他们很好地代表了两种思维模式,最终殊途同归。我下面简单讲讲这两类人的作品和爱好,以及一些别的什么的。


第一类人 DFS:深度优先学习。以我本科的技术挚友为例,那家伙只用C++,高中时用C++写了一个GUI框架PAL_GUI,包括其中的光栅化,染色,图层判断等等操作都是自己实现的。本科课设别的同学用 QT 写课设,他用自己的框架写软件。(甚至他自己实现了一套 Windows 上的 iostream)

下图是他当时写的文件浏览器,内存占用远远低于windows自带的。在微软商城可以下载到。主要是可以预览特定文件内容和加背景图片。当时的win10的文件管理器还没有这些功能。所以每当Windows更新,我们都调侃说微软又抄袭 champion 的设计了(他的外号叫 champion)

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

上面的三角形元素的光栅化他是直接人肉光栅化,写直线方程和着色判断

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

用二维动态规划做的模糊处理

做的时间分析器

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

数据挖掘课设,别人都是用 python 的 matplotlib 画图,他因为懒得学习 python,于是自己按照 matplotlib 的接口做了一个 C++ 版本的 matplotlib,然后完成了数据的可视化。

他的电子元件和工具非常多,每次需要万用表和电动螺丝刀我都会去找他。我很喜欢他做的小台灯:

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

他在技术上最大的爱好就是写操作系统了,他曾经最大的愿望就是写一个自己的操作系统,在他大三时,他实现了这个愿望,但是因为一些写过操作系统的朋友都知道的原因,他目前主力机还是 Windows。

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

这家伙最近迷上了写 RiscV 模拟器:

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

这家伙最喜欢的游戏是各类小众游戏(嗜血代码系列就他拉我入坑的),《我的世界》还有《仁王2》(steam 在线时长 500小时)

我还记得我们两个当时比谁能在最短时间内通完嗜血代码的一个周目(通关这游戏所有结局需要至少4个周目)

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

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

日语N1,能啃生肉,从不追热门动漫(除了《孤独摇滚》)。酷爱看各类老番和冷门番剧,甚至连播放器都是自己写的。

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

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

爱折腾硬件,因为不满意市面上的音响,于是他自己研究声学和材料,在监听设备简陋的情况下,自己制作了一套公放电路,并且自己做了一对音响(没错,是自己做了一套,我还记得当年我们一起往里面塞填充材料调整音响的声学参数),外壳用的是木头做的。

<此处是他满满的一整页音响原理笔记和设计图纸.onenote>

研究生后,因为横向的要求,他不得以学习了 java,但是也是只花了半天时间。

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

因为写过操作系统,对C++的了解深入到了汇编层面,对于桌面软件的认知达到了 event loop 和系统调用层面。学习一门新的编程语言自然易如反掌。


第二类人 BFS:广度优先学习。这个就拿鄙人举例以博阁下一笑。我本科就比较菜了,我最早玩得是 python,后来在大一写课设(就是上面那个资源管理器的课设),因为 python 的性能太垃圾,我用 C++ 写了一套 ABI 编译成了 pyd,然后让 python 调用,内部实现了一个非常简单的内存级数据库,包括主键建模和 CRUD,最后写了一个花里胡哨的界面:

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

我当时对 Qt 的内部实现完全不知道,当我听到 champion 讲 event loop 时,其实第一时间思维并没有发散开来。

后来大一接触到了深度学习,觉得这玩意儿很好玩,于是一发不可收拾。从 NLP,到强化学习机器人控制,再到 CV基本玩了一个遍。其中产出了一部分论文和专利。

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

2020年 用 LSTM 训练的一个聊天机器人

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

用目标检测 + win32API 做的 CS 自动瞄准与开火系统,详细请见: https://kirigaya.cn/blog/article?seq=22

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

当时我提出的一个无图导航算法的 demo,成文后发在了某个SCI一区

后来觉得写深度学习积木太无聊了,于是我就去研究深度学习框架底层原理了:

K的深度学习框架

后来实习有幸跟着尤洋做HPC通信优化和 GPU RPC,发现了 nccl 驱动的一个 bug。那是在 chatgpt 火起来之前。我还记得当时团队训练了一个350G的OPT,当时就已经涌现了一部分智能,导致我对于半年后推出的 chatgpt 并没有感到很惊讶,因为一年前就已经出现了 demo。这期间,我完成了 ColossalAI 的流水线并行(PP)部分的去中心化调度算法和底层通信协议的实现。两年过去了,ColossalAI 从当时的 3k star 已经到现在的 38k star 了。当然,我只是完成了里面很小的一部分,不足挂齿。

github.com/hpcaitech/Co

后来对应用层逐渐失去兴趣,开始玩 verilog 写 CPU 软核:

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

再后来,又对 web 全栈感兴趣,常看我知乎博客的朋友应该知道,我这几年一直在发 js 相关的博客,但其实我并不是前端的从业者。我当时因为觉得 hexo 和 hugo 用起来太反人类了,所以纯手搓,从0实现了一个个人网站,前端 vue 后端 go。

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

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

做了不少性能上的优化

现在,我的业余技术爱好变成了写 B端软件 和做咖啡

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

推销一下我最近做的玩具:

全新的 VCD 波形渲染器! Digital IDE 0.3.3 更新简述_哔哩哔哩_bilibili

时不时去 jyy 直播间整个活

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


爱好之一就是在 steam 上给游戏做 mod 和写评测

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

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

终焉莉莉丝的续作——终焉马格诺利特

mod 主要是语音类的 mod,如果你是求生之路的玩家,对于我做的全中文/日文配音 mod 一定不陌生,我用原神角色的音色给求生之路2的角色用 TTS 技术重新生成了全新的中文/日文配音。

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

可以看这期视频:

基于VITS的原神人物音色的求生之路2 自动配音_单机游戏热门视频


我最喜欢的游戏是steam上的 galgame 和星际争霸2

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

命运石之门

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

星之终途

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

应该只有资深玩家才能知道这游戏了吧

银河恶魔城类游戏算是少数我也非常喜欢的:

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

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


《星际争霸2》游戏时长为12年(小学开始玩的),最喜欢的就是一个人打4个电脑(作弊者难度)

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

因为日语很差,有些动漫和 galgame 在没有中文翻译的情况下只能看英文版

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

目前我在主导一个数据平台相关的项目,其中的后端选择使用 java,主要是照顾其他同学,会 java 毕竟比较多。从学习语法到开始写 springboot,我也只花了半天时间。其中一大半时间全都在 maven 的运行目录上了(原项目的问题)。

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

我认为我之所以可以如此快学习一门新的编程语言,是因为学习了足够多的知识后,脑中已经形成了一种隐式的对于知识共性的建模。每当学习一门新的编程语言时,我已经能知道它与其他编程语言的不同,包括但不限于

  • 判断,循环怎么写
  • 变量的申明与生存周期,是在栈上还是在堆上
  • GC 如何实现
  • 多文件组织如何进行
  • 有没有包管理器

我对于编程语言的认知并没有我的朋友那么深入,但是对于像我一样的普通人来说,通关不断学习足量的新的知识后,就能自然而然地学会如何学习。

就和音乐一样,我早年间作曲总是沉溺在绚丽的和弦组合和各种奇奇怪怪的合成器,当你接触到的音乐风格足够多了之后,内心被斗争撕裂过无数次之后,你就会知道真正动人心弦的乐曲到底应该如何作编。

如果阁下还是疑惑,不知道如何启程,或许我曾经写的这篇回答能够帮到你:

请问平时学的算法最后真的能用到吗?

其实,哪有什么学习编程语言的技巧,阁下想要求索的,或许是撷取知识果实的台阶。当你想明白了学科、社会、人性的联系,学习任何一个学科就会变得非常快。我已经感受到了这种学习若干个学科知识的欢愉,所以,我对此深信不疑。

我多么希望那一天的到来,所有的知识,9种或是更多的思维模式,可以更加自洽地被人们选择,学习,使用。或许,它早以到来,或许,它永远也不会到来。原因你我心知肚明。

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


2024.06.07 更新

既然大家都如此感兴趣,其实如若不嫌弃,阁下可以翻阅我在知乎上之前留下的文章。如果阁下细心,就会发现,其实我的博客和知识都是串成一条线的。我的大量博客看似毫无关联,但是它们都是我在探索某种系统搭建过程中产生的。

这里举个例子。我最近实现了一套 QA 客服机器人系统,自动解答群友的问题:

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

这套 QA 是我设计并开发的第二套问答机器人系统,整个系统由 7 个子模块组成。NTQQ 接入层框架完全由我开发,欢迎大家使用:

锦恢:全新的QQ机器人框架,帮你的机器人快速接入QQ

不确定度计算基于二阶概率模型,由于找不到实现细节,我曾经一怒之下手推了 EDL 的损失函数并实现了它。现在放在这里做拒答流模块,刚好合适,欸嘿~

锦恢:检验分类器概率的置信度:Evidential Deep Learning(EDL)原理讲解与代码实现

系统组织大量运用了依赖注入,我的 QA 可以在极短时间内更换策略模块来改变回答策略,如果别人使用我的框架,也可以直接使用:

锦恢:浅入浅出——从装饰器的角度谈谈 python 和 typescript 中的依赖注入

系统的运维管理使用 pm2,非常好用~

锦恢:超级好用的进程管理器 pm2 使用教程

我的 QA 的 RAG 模块的知识库通过爬取网络上的文本得到,构建 CSR 爬虫服务器在我之前写 puppeteer 中有所提及。

锦恢:网络爬虫进阶(二)更加现代的无头浏览器 puppeteer 安装与使用

再利用CV技术,就可以绕开安全验证,爬取互联网上大部分的文本知识了。


可以看到,一个 QA 就把我曾经的若干博客和知识全部串在了一起。设计模式,编程技巧,数学公式,深度学习,网络爬虫等等全部联系在了一起。

没有知识是孤立存在的,只是我们现在解决问题时喜欢把一个问题拆分成若干个子问题,从而实现社会分工,好处不必多说,坏处嘛。。。大部分人离“系统边际”越来越远,看不到自己手头的工作真正的意义是什么,从而对生活产生了迷惘。问下一句“为什么”在一些生活场景下似乎越来越成为一种奢侈。

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

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

欢迎 发表评论:

请填写验证码