delphi搞多了,现在写java都是有点胆战心惊啊,然后又是暗自庆幸
delphi里面的对象谁生成谁释放,有create,必有free
如果是生成的指针内存,那更加要注意释放了,就是有new 有dispose
写了一阵子java,感觉面对着满屏的JAVA代码,都感到暗自震惊
这么多的对象,拿来就用,用完就不管,真的这么好吗?会不会造成内存占用过多?JAVA虚拟机啥时候收回这些内存?
如果他一直不收回咋办?有没有手动强制回收的功能?
看的我是心惊肉跳啊
比如说同样的是往服务器POST一个数据
DELPH下要建立 http对象,json对象,如果是HTTPS,还要建立 SSL对象,用完一定要释放
哪怕你是try,也要在finally里面Free掉
JAVA就不同了
哇靠,HttpURLConnection建了就扔了,URL OutputStreamWriter BufferedReader InputStreamReader
JSONObject 这么多对象,用完就不管了
说实在的,本人并不觉得C的指针功能有多么不友好,内存管理对于程序员来说是一个必备的技能,不能全部交给编译器,或者说是交给操作系统
JAVA以及一些其他语言把指针当鸡肋,隐藏内存分配释放细节,对一个真正训练有序的程序员来说,比如我,是非常不习惯的.就好比拿了别人的东西没有还一样
指针并不难,如果你在初学的时候,用OD和CE结合程序来学指针,我保证你学的比谁都懂.
那些小学都没毕业的易语言开发者,都在那不停地找CALL,找基址,虽然他们未必明白那就是指针,但这些人比很多科班出身的人都要懂指针原理
这是为毛啊?因为他们根本没有听说过什么指针,分配这些乱七八糟的东西,他们用OD和CE直接进入内存,在里面不停地扒拉自己想要的数据,扒拉的久了,自然知道数组在内存中长啥样,链表,二叉树在内存中长啥样.
有些大学生,整天把这些数据结构挂嘴边,学个半调子,始终不能真正的懂,就是因为没有用OD深入到内存里, 如果你深入了,你就会看到链表 二叉树的一个结点,你要进另一个结点,你要动鼠标进入另一个内存地址,你会感觉这些数据结构的实体形象,这样你就能学好了.
我以前学C的时候,看到那些教科书上画的关于内存的表格,头都要大了,可能写的人懂,但看的不懂啊.
现在仍然能看到这种图,我的心都要碎了,这特么的就是误导小朋友啊,什么乱七八糟的,内存根本不长这个样好不好
根本没有2000这样的地址好不好
咱们学内存学指针,就不能拿点诚意出来嘛
32位应用程序,代码段地址不都是401000开头的么,你拿个2000 3000的地址糊弄别人有意思吗,学生娃真正用的时候看到401000不得吓坏了么?
下面的链表就更离谱了,什么next都出现在内存中了,你这是赤裸裸的误导,你必须在OD中告诉他,next处是一个内存地址,地址要跟进去,才出现下一个结点.内存数据不是在那里让你一眼就看到的,你要根据他的特性,去计算他下一步要看哪一个内存地址来查找数据.
最近也看了几本书,有些人疯狂攻击指针,疯狂攻击C++和C,说什么过时了,移动互联网时代不堪一击,没什么卵用,说了一大堆说的还不过引,居然把战火引向C的指针,说JAVA才是时代王者,编出来的软件没有指针,不用管内存分配和释放,稳定,相比 C++写出来的动不动就崩溃的软件,不知道要强到哪里去了.
我看到这里,就真他妈的怒了,没有C,unix就没了linux更是不知道在哪里, python,php,各种乱七八糟的阿里云百度云,都不知道在哪里.你还上你妹的网啊你,苹果的IOS用的就是C语言的一个方言,android只是开发语言是java,你他妈的还当android是JAVA写的啊?
想起我们之前在Windows下面的编程磨难,从最初的只会调用api,老老实实给windows打工,到后来的内核重载,过游戏保护,编译wrk,写各种驱动,调试修改win7内核都不敢称一句大神在此.
android开发不到一个月,我就在csdn上发现无数的android大神,我去你妈的个B的,你那个只叫能调用android平台给你一些API而已,大神你妈B.
比如说,网上很多人会用几个adapter,写了几个animation的特效,在github上注册一个仓库,能解释几个新出组件的原理,什么handle binder通信原理,就被一群傻子捧为大神,飘飘然不知所矣.
大家要擦亮眼睛,你会在Windows下编程了,会在android下编程了,实现了一些效果,这个东西,只能讲说你进入了工具时代,别人给你的工具你用的真是熟练到家了.你是一个合格的农民 奴隶.在操作系统眼里,你什么JB毛也不是,就是操作系统的狗. 当然在我眼里,你什么也不是.
那么说了半天,什么才能叫程序界的大神呢?
现在程序界有二种风气非常坏,让中国程序员不管新手老手都很浮躁
1.由github这些玩意所带来的一种炫耀的风气,是个人都敢往上面传代码,让人star,真是日了狗了
2.有些屁精不去好好扎实学技术,整天泡在公众号论坛上给人点赞,逢人必称大神,他们期待大神一高兴扔一只骨头给他们.
写到这里我非常的愤怒,我想给真正有志于技术的人一句话:
在大学期间,或者专门拿出时间来,踏踏实实学习基础,学操作系统原理,CPU原理,编译原理,C语言,INTEL X86 开发手册, TCP/IP协议和其他互联网底层协议,学成之后,我保证你能达到以下效果:
1.天下语言,全部都是狗屁,没有一天学不会的语言,没有需要你学的语言,你要用什么语言的时候,能直接用,根本不需要学.
2.各种乱七八糟的框架内核在你眼中无所遁形,不管他们包装的多么高大上,在你眼中就是一个屌丝本质(比如说android这个操作系统有很多非常糟糕的特性),瞬间就能知道运作机理.
3.有起码的分辨能力,不会逢人就叫大神,记住,被叫大神的,往往都是伪大神,真正的大神,你只有0.0000001%的机率在网上遇见.