作者Aurim (Who cares?)
看板Soft_Job
标题Re: [请益] 目前发展学习JAVA或C#
时间Sat Aug 23 01:36:54 2008
※ 引述《iman00b (I'm a n00b)》之铭言:
: 其实我很认同你原来那篇文章的大部份看法,
: 如您所说程式语言只是工具,不应该过度学习程式语言。
: 但不才我认为,就算我们对任何技术都能灵活运用以一贯之,
: 那也不代表我们有任何轻视技术跟基础能力养成的本钱。
: 而且你这样会误导一些根基不稳的初学者,
: 让他们以为原来程式语言的能力养成是如此简单。
: 而你却没告诉他们这是所谓台上十分钟,台下十年功的道理。
: 毕卡索任意挥毫能收天价,难道随便一个阿猫阿狗也能吗?
第一个语言就是机械语言或组合语言的人,
我以为看语言的角度与从高阶语言学起的人是刚好反过来的,
一个从机器的角度看待语言,一个从人类的角度看待语言。
一堆高阶语言写的程式在编译後,还不都是生出机械码或中间码的东西?
从不同的角度看待事情,有的事情会变很简单,有的看起来就很难。
前几年有看一些机器学习人类语言的paper,
说不同人类语言之间,有些语意表达的方式出现频率有跨语言的共通pattern,
机器可以先挖出那些共通pattern,再来推导整句话其他字词的意义;
当然少不了要有许多的前後文可以参考推敲的。
这样做的程式不需要依赖预先输入的人类语言知识,靠的只是频率统计。
现在也许那个方法离实用还有很长一段路要走,
但是人脑差不多也用一样的方式在处理与学习语言。
在我(以及其他许多习惯快速自学的人)来说,我们已经有前面的自学经验,
也多半有前面的知识(少则数年,多则数十年),只要还没老到会忘东忘西,
那请参考前面机器学习的例子,很多时候是整个程式语言的文件都还没看到,
光是看程式原始码,就已经知道那在卖啥膏药。
你问我有没学过,我会说我没学过。你问我有没看过那程式,我会说我没看过。
可是你要我照着改出一个可以动的东西来,我会说我会。
你要我抓它的bug,我会说没问题。
当然我会很希望有些工具书、工具文件类的东西,在我对一些地方有疑义的时候,
可以帮我解除疑义,顺便告诉我哪些地方是该注意的。
从机器的角度来看,没有什麽程式是真的难的,有差别的只是规模与层次的深度。
我也只是照着机器可能怎麽执行一段code的方式去思考而已。
有的人很质疑三分钟可以摸会什麽东西,这要看那三分钟是拿来干什麽...
直接看source code,瞄一眼,沿着脉络走一下,有时候收获比翻一堆文件要多。
我觉得这就像是要机器从一整篇文章里,不依赖预先输入的语法知识看懂它一样。
我觉得这样做很好玩,但是很多人会直接说那是做不到的事情。
拿我没看过的东西来问我会不会,我会说我不知道,看了再说。
可是等我看过了,我又不好意思跟那些在上面下了很多苦工还参不透的人说,
我已经会了,这边该怎样做,那边该怎样做,哪边哪边有怎样的bug...
会跟不会中间的境界线愈来愈模糊,
你们也知道机器永远不会跟你说它不懂一段专门喂给它跑的code的。
一个framework如果从最上层到最下层只有不到15层,
对於可以毫无障碍的从最上层trace到最下层的人来说,
也没有什麽要看了一大堆文件才知道它哪边在干嘛的问题。
看到哪边就学到哪边,谁规定一定要看过文件才会用?
何况现代的程式很多都有良好的命名规则,
看到物件类别名称与物件方法名称,写写code後trace进去试试看,
不也就是那样子而已?
没有人规定没学过的东西就不能抄来用啊,
也没有人规定不能把它反组译、反编译剥开来看。
(也许法律上有限制,但是反正没抓到就不被罚,你看到了就是你的知识了...)
如果把一个framework当成黑箱子看,
用很久的人会比初看就已经把它从里到外都已经剥开来看过的人强?
我是不觉得啦......程式也只是程式。
看code快的人也不会在乎爬那几万行、几十万行code,看它到底是怎麽做的。
没看过别人爬code爬那麽快的人会以为那是做不到的,但是这就是境界上的差异了。
当然这样做还是有盲点,常常会只知其然,不知其所以然。
知道程式是那样运作,不知道它为什麽要那样运作。
我想这才是把那个东西摸很熟的人的强项,
除非他所谓的熟也只是不知其所以然的照着用。
: 水桶如果满了,就再也装不下水了,共勉之。
讲到水桶,不如说是容器。
把知识比拟成水,把人比做容器的话,
有的容器入口窄,一次只能倒一点水进去;
有的容器入口宽,可以一次倒很多水进去。
窄口的容器不见得就浅薄,宽口的容器里头也不见得就宽广深厚。
人比人会气死人,大家走的路都不一样,但是说起来都是同修啊。
心态当然是有要紧,有没资质也差很多,不过个人认为兴趣是最要紧的。
觉得不好玩的话,就不会去学了。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 216.143.48.99