欢迎光临散文网 会员登陆 & 注册

Java罪大恶极

2021-04-08 01:10 作者:スレーブ_スレイヤー  | 我要投稿

最开始就是想要搞黑客,外挂之类的东西才学的编程,奈何学了Java以后渐渐走远了……

直到现在,了解了WIN的API,学了一些X86汇编还有ARM汇编以及一些数据结构以后,依旧连一个简单的游戏外挂都写不出来,于是开始怀疑人生……编程可能真的是需要天赋的。

当然,一开始直接去改植物大战僵尸之类的东西肯定是没问题的。然而上来就挑战安卓平台,还是一个已经和外挂对抗多年的游戏,确实有些眼高手低。Unity的游戏编译到安卓平台,会把原本的C#代码转换成il中间码,大概就类似Java的smali码……然后这个il中间码又会被转换成C++的代码,最后把C++代码编译成so文件……安卓手机都是ARM处理器,所以so文件存储的是ARM汇编代码,和X86不同,网上能够找到的ARM汇编的资料很少,而且大多是为嵌入式开发提供的。结果就是,到现在我还不知道怎么更改一条指令的参数……因为ARM并不是说某个字节对应指令,某个字节对应参数,一条指令对应的四个字节,其中两个字节改动都会导致指令变化……甚至像MOV R0,#0这种带常数的指令,16进制里面都看不到0这个数字。具体的规则网上也没可以参考的资料,直接给我看到脑溢血……

这就是习惯了JAVA的症状——总是想着用现成的东西,从不自己研究。

初学冒泡排序的时候我就在想,直接Array.sort()不就行了吗,还整几层for循环那么麻烦……

学那些数据结构的时候也是,想着用List不就行了,队列什么的也都有现成的,还去自己实现有什么意义,实际开发又用不上。

这种想法养成习惯,最后就变成一个代码巨婴,什么都是直接拿来用,麻烦一点点的东西都不愿意自己去实现……

还有就是内存。

对于以前的程序员来说,JAVA帮忙解决了内存分配,回收的问题,肯定是皆大欢喜的。但是对我而言,因为JVM做的过于完美,导致我在很长一段时间对内存的概念是模糊的。

初次看到C的malloc函数还觉得很奇怪,觉得变量申明的时候就已经分配了内存,重新malloc一遍意义何在。

还有学C++时,觉得析构函数这种臃肿的东西为什么经历了那么多版本还没被阉割……

以前觉得C++好捞,写个类麻烦又臃肿。现在看,C++才是那个真正对我好的语言;JAVA甚至连程序员掌控内存的能力都要剥夺,企图把那些本该了解操作系统的程序员都变成JVM的奴隶,实在恶劣。

和面相对象思想一样,JAVA中用户只关心结果而不必关心内部实现,所以JVM掩盖了一些操作系统本身的特性。导致我直到18年才知道Windows系统的内存分页等等特性,虽然那一年才刚买电脑……

最后还是通过汇编语言把空缺的这一块补了。

总结,JAVA让程序员很难直接接触到数据结构,算法,内存,操作系统……这些核心的东西,拉低了全体程序员的水平,罪大恶极。

Java罪大恶极的评论 (共 条)

分享到微博请遵守国家法律