刘思宁的学习笔记

后续更新会在简书进行:http://www.jianshu.com/u/99f3318bcc01

初学者的Rails黑箱

| Comments

初学者的Rails黑箱

什么是黑箱

Rails对于我来说是一个黑箱,对于其他人也可能是黑箱。
黑箱表现为什么情况呢?
就是我在一定程度上知道输入什么数据就能得出什么结果,但是我并不知道黑箱内部的运作机理。
之前看过一个黑箱的示意图,你以为小球从黑箱上进入,从黑箱下出来,中间是直着走的,但后来无意中在左上角发现了它,所以猜想小球是先去左上角然后再到黑箱底部;再接下来在黑箱的右上角又发现了小球,然后又结实说小球是怎样怎样的。
多于自然系统,人们的理解过程有一些就是这样的(可能很多,但我只知道一些)。比如化学,我学过无机化学中关于电子轨道的理论,能够解释一部分化学键的形成工程,但是有另外一些不适用,所以又有人设想了另外一套模型。生物也是这样的,人们以为水是被磷脂分子包裹起来进入细胞的,但是后来看到了水分子通道就有了新的模型。
所以,黑箱就是你可以在一定范围内观察到输入和输出的关系,但是因为你不了解里面的机制,如果你不小心输入跟以前不一样了,输出的结果可能就是你不能理解的了。
正式因为人们还没有完全看透这个黑箱,所以各种让人们看透这个黑箱的方法都存在着,没有统一的答案。宗教说,黑箱是神,求神拜佛吧,这样改变维持或改变输出结果。科学说,探索吧,这样能越来越了解这个世界的运行机制。最近接触到一种新的观点,叫:肌肉联系吧,先掌握这种观察再说,没有观察,连最基本是输入和输出的联系都还没建立,你研究什么黑箱的内部。

Rails乃人工黑箱

我觉得在一定范围内,人们还是能够了解到黑箱的运作机制的,比如用电子显微镜看到了细胞膜的结构,那就是让人们更加了解以前是黑箱的东西。
但是自然系统和人工系统还有一个区别。人们都不知道自然系统是如何开头的,只能从中途开始找,通过中途观察,在历史的这个时期,在短短的400年来(工业革命以来),不断的观察自然系统,能了解多少还是个未知数。因为自然这个黑箱到底有多庞大,人类能不能真正理解都是未知数。
但人工系统就不一样,人工至少是人做的吧,至少有人已经能理解了对吧。那我作为一个人就有可能完全理解,让黑箱变成透明箱。
但是,把rails这个黑箱变成透明箱真的重要么?这种可能的代价有多大?虽然我也是人,rails的构建也绝对在人类是知识边疆之内,但是,我跟那些rails的构建者的差别有没有可能就是我跟造物主的差别,rails的复杂程度有没有可能让我这个初学者看来就是跟自然系统有相近的复杂程度(比如rails的复杂指数是100,自然系统是10000,反正都挺复杂)。那我作为一个初学者,我就有了两种方法来学rails啊。一种是像人类研究自然一样,观察,观察,连接输入和输出的规律,有了积累之后再去找个理论揣测黑箱的模式;或者,直接了解黑箱,了解完了黑箱,自然能够判断输入和输出的规律。再补充一下,作为一个人工系统,他的模式都不用去揣测,去看说明文档就好了。要想了解一个黑箱的全部之后,再去看输入输出,有个问题是你可能知道了有什么输入之后就有什么输出,但是你可能不知道要输入什么,或者,你不知道到在人世间输入什么比较有价值(这是我猜的,我想到的是我在大学里学的无机化学,学的理论挺多的,但是我还是不知道要干什么,不知道如何把这个知识产生价值,当然也可能是因为我学的还不是特别精通)。
现在xdite在带着我们做的事情呢,就是对一个人工系统(复杂的人工系统)做类似于科学观察的黑箱探索,不是把rails内部结构全部摸透,而是把rails101做3遍,观察输入和输出的模式,你就知道自己写这段代码是干嘛用的了。

为什么说这些

因为今天我在用pry的断点来debug的时候,让程式一句一句的next,结果rails server走到了很多我不熟悉的角落,也就是说,rails这个黑箱里,我把小球丢进去,小球确实从下面出来了,但是中间的过程我还不是很理解。
想理解看技术文档,在有了观察结果后,带着目的去看,是不是记得更牢固呢?

Rails已经难道让我们把他当做黑箱去学习了,那更复杂的人工系统呢?

rails绝对不是一个人开发的,每个人都添砖加瓦,最后rails的复杂程度,包括生态圈的规模,不是任何一个单独的人能够理解的了。即使是老司机,也不可能知道rails的一切,至少,那么多gem,不会有人全知吧。
expert看rails可能就像一个透明箱,但他不会是对每个领域都expert吧,他在学习不熟悉的人工系统时必然也像黑箱。
世界上有这么多人工系统,而且很多系统都是很多人,经过很多年构建起来的,要想通过一己之力把黑箱看成透明箱,应该会很难吧。用重复三遍来观察系统的方法应该是一种路,他通往的可能不是理解全景,而是,在一个小范围内,让你能用,就像人们对自然系统一样,能够预测一部分,然后利用这部分的预测,进行生产(比如化工)。

Comments

comments powered by Disqus