Archive for August, 2010

Android JNI SetIntField 是如何定义的

August 22, 2010

窍门在下面的代码里

/home/bhj/src/android-nv-froyo/dalvik/vm/Jni.c:2638: #define SET_TYPE_FIELD(_ctype, _jname, _isref) \
=> #define SET_TYPE_FIELD(_ctype, _jname, _isref) \
Advertisements

写给表弟(三)

August 14, 2010

靠,用的这个weblogger.el肯定有问题,贴(2)的时候把(1)给弄没了。没了就没了吧,没什么大不了的。

关于学C++拘泥于各种偏僻语法的人,还有一个例子能说明他们有多可笑,就是鲁迅先生笔下的孔乙己,专门研究茴香豆的茴字有多少种写法。

题目叫“要有识”,怎么说得好像有些知识是不用学的呢?没错,因为有些知识你学了一辈子也用不着,就像茴字有多少种写法,无疑是一种知识,把这知识用出来的人,却遭人耻笑。

还有些知识,你现在或者一时半会儿用不着,所以即使学了也会忘记,反而浪费你的时间,妨碍你用已经学会的知识去解决你已经能够解决的问题。这些用不着的知识,往往是学起来最费劲的,道理很简单,就是因为用不着。用得着的,用过几次就能加深印象,用不着的它就容易忘记啊。唉,又狗咬自己尾巴了。

说到最后,建议你学一点哲学,这是“关于知识的知识”,比如矛盾论之类的。上一篇提到的小狗,就可以套一下矛盾论的说法,它是从一个小坡上滚下来,完了对它反而有点好处,如果完全没有滚,那就谈不上了;如果是个太大太陡的坡,说不定滚死了,最后都没有好处。这就是一个矛盾、平衡的问题。

就像什么知识该学,该什么时候学,花多大力气去学,也是这么一个平衡的问题。

如果不明白我说的意思,没关系。并不是什么东西都需要弄懂的,你不懂的东西,不会对你造成伤害。把你懂得东西,尽你最大的可能用出来,是很重要的。

What you don’t know, won’t hurt you!

写给刚学计算机的表弟(二)

August 14, 2010

要有识

俗话说,艺高人胆大,所以可见胆大不大跟一个人的技术水平也很有关系。我得小心一点,别说着说着又回到胆子问题上去,变成狗咬自己尾巴,团团转。

但是团团转似乎还真难以避免。学计算机就像学走路,呃,就像小狗崽子学走路,人还是狗都无所谓。记不大清了,可能是杰克·伦敦写的一本小说里,描写了两只小狗学走路的场景。狗妈妈一不留神,两只小狗从狗窝里爬了出来,一只比较胆小,迟迟不敢离开狗窝太远,另一只稍微胆大一点,越走越远,一不小心还从一个小坡上滚了下来,吓得它呜呜直叫(可见其实它的胆子也不比它兄弟大多少)。最后这两只小狗就有了完全不同的境遇。

学知识可不就跟小狗探索未知的世界一样吗。很多东西,你没有亲身经历过是不可能学到的,光看书一点儿用也没有,光看你表哥跟你这儿瞎扯也一点儿用也没有。必须真正地从小坡上滚下来过,才能知道那是怎么回事。

看见别人滚下来,去问问它,什么感觉?它不可能跟你说明白,它只能告诉你,没事儿,你不会受伤的。对它的这个说法,你可能相信,可能不信;即使相信,也可能犹豫、徘徊很长时间,最终还不敢滚一滚。

C++的作者 Bjarne Stroustrup 对学C++的人最爱说的一句话是,What you don’t know,won’t hurt you(你还未学到的知识,不会伤害于你)。

他为什么老说这句话?就跟为什么人们说“罗马不是一天建成的”一样,说明肯定有很多人不信。我就曾经是这样的一个傻子。

我学C++的时候,很怕自己有什么东西给遗漏了,没学仔细。整天纠缠于那些最偏僻、最邪门的语法,其实是很没有用的。忘记了学任何一门语言,最终的目的都应该是用它去解决问题,而不是把它所有的语言规则都弄懂。或者很多人根本没想过这个问题:我为什么要学这个,为什么要学那个?

仔细想想其实很正常,因为我们从小到大一直被灌输的思想就是“为了应付考试”。但是请你相信我,如果你走上社会后还继续抱着这种思想,那就是最大的傻子。