2020-04
10

强大到让我瑟瑟发抖的递归

By xrspook @ 8:41:56 归类于: 烂日记

大学学习C语言的时候,基本上我不会写单独的函数,所有要解决的事都在主函数里搞定了。当时我学过判断和循环,但是,我却从来没学过递归。在解决一些简单事情的时候,循环跟递归,没什么差别。从理解程度来说,我觉得循环更简洁一些,但是,当某个东西像套娃那样一层叠一层,每层里面依然用同样的规则继续套叠,不知道要叠多少层的时候。递归就会展现它无穷的魔力。循环难以实现这个,又或者循环并非实现不了,但是递归在完全不需要体现循环的框架下,简洁的语言就已经在做着循环的事情。

昨天,我第一次在Python里见到这个恐怖的递归。外国人的书,我觉得都有一个特点。正文的时候举的例子都很简单,但是一到习题,就会把你彻底搞死。习题里面会偷偷带入一些超纲的东西。大概写书的人理所当然默认你应该知晓。这种事情我已经在学习Java的时候领略过。当时那本书之所以没法看下去,就是因为我没办法想象出作者的脑洞到底是什么。他们的习题几乎可以说大多是一些填空题,但要实现一个功能,其实未必一定就得用某种方法。你给我一个条件,给我一些目标值,我能做出来也就OK了,为啥必须走你的路呢,这非常难。之前我不觉得自己跟外国人的脑洞到底差多远,但是当我对比过自己和他们写的程序以后,我发现真的差挺远的。虽然我们都能实现某个功能,就效率而言,感觉上没差多少,因为我只是在做一些非常初级的东西。应试教育的时候,有标准答案,当然好判定成绩,但实际上,编程这种东西真心应该天马行空。给我一个效率的限制,比如说完成某件事,必须在多长时间之内解决,代码长度不能多于多少,至于我用什么办法,这是我的事。

说回递归函数这件事,在处理几个简单数字的时候,可能你感觉不到它的强大,但是,当我见识过用那个东西画出来的层级图形以后,我简直就只有站在旁边瑟瑟发抖的份儿。真的不知道是哪个神经质想出来这么强大的东西。但实际上,深究下去,那也不是很强大,那不过是不断地重复一些已经设计好的事情而已。如果要人去做那些重复,一开始还好,但是随着事情的深入,会慢慢乱套,但是计算机不会,他们会一根筋地执行我们的指令。最终出来的结果是令人惊叹的优雅,还是乱七八糟一坨屎:就得看设定规律的人的功力了。

递归现在对我来说是一个非常恐怖的东西。因为我不了解它,所以我害怕它,就像当年认识循环一样。但是,用好递归以后,我的武器库里就会增加一个杀伤性非常大的家伙。说到递归,让我联想起新冠病毒。这个东西的递归到底什么时候才是个头?我觉得这肯定不是一个死循环,自然界非常擅长递归,处处都是数学和逻辑你知道吗?!但是,到底要递归多少次,全人类才最终能看到隧道尽头的曙光呢?到底这个新冠病毒函数的递归里埋伏了多少个随机数呢?学习递归让我明白到,层级少好对付,层级一旦扩增,那就是次数级的增长,而且,说不准到达一定层级的以后就会触发某些大招炸弹,想想都心寒。

编程是一个让我重新理解自然规律的过程。

2020-03
31

如果可以再选一次编程初恋

By xrspook @ 8:59:02 归类于: 烂日记

编程是什么,我也不知道,但显然对我的很多同学而言,那是一个别人给你的任务,要你去实现它。那就像是一次测验或者一次考试,把那东西拿下,他们就会有成就感,或者那根本谈不上成就感,完全是因为那跟成绩挂钩,那跟学分挂钩。任何东西和那扯上关系,他们都会觉的有满满的肾上腺素。他们不是为自己而变成。情况就像那些沉迷于游戏的人。当然我之所以这么说,大概因为我不玩游戏,我是一个游戏渣,所以我才会有这样的看法。当我的同学花很多时间听歌、看电影、看电视、看综艺的时候,我花了很多时间在我的blog上,有可能是回忆某天我干了些什么,有什么感悟,也有可能我正在改进blog的。有可能是版面装修,也有可能是某篇日志里某个图片的PS。现在回想起来,那真挺神奇的,为什么我每天都可以为自己的日志配张图呢?现在我已经不记得是不是每篇日志都这么干了,但的确很多日志我都用心地配了图。有些简单一点,直接是照了个相,然后处理一下,修改一下大小也就可以了,顶多是加个滤镜什么的,但更多的那些是集合了好些操作的。

相比于PS,我更喜欢写代码。但实际上,当时我接触的代码不过是CSS而已。网站的基本结构很简单,因为高深的东西已经被BlogBus封装起来了,所以我能操作的不过是最基础的HTML代码。以及可以随意让我修改的CSS。当时我可以修改CSS,但我不可以随意增加或者减少CSS的起效位点。有些东西他们没有把控制权放出来,所以某些部位我是没办法通过CSS控制的。当时,甚至可以这么说,我没有接触到真正的编程。因为什么判断循环都是不存在的,又或者格式输出也是不存在的。更加不用说什么变量参数之类的东西。

为什么我大二的时候会对C语言那么着迷呢?我真的不知道。如果还可以选的话,我会主动选择C语言吗?当时的我根本不知道居然有那么多编程语言。直到后来,我终于见识到了各种各样了强大的东西,比如说昨天我上的那节课,说Python居然不需要用大括号把语句框起来,只通过缩进就能判断,那是同一个层级的。这简直把我脑子里的编程语言给颠覆了!如果那是在其它语言,无论是C还是PHP,又或者是其他东西。根本不可能运行成功,但Python通过4个空格的缩进就实现了。于是我不得不问一句,为什么我们当年要学习C而不学Python呢?当我用过VSCode以后,我觉得debug的过程很爽快,写代码也很轻松,因为你写好一半,另外一半就蹦出来了。前面你对某个东西定义了,后面当你打出一点点,余下的东西你可以通下拉把它选出来。当你写出判断之类的东西,回车后自动缩进是自然而然的事。代码写出来以后,不同类型的东西有不同的颜色,一眼就看得出来。正在写或者保存以后,如果某个地方出现了红色波浪线,意味着那里通常出状况了,有可能是静态的语法判断把你冤枉了,但对我来说,通常那都是我的粗心大意。如果当年学习C语言的时候也有这么多帮助,大概我们就不会在语法和格式上面纠结半天。实际上,我们的脑子应该用在天马行空上,而不是死在那些花括号对碰上,不是吗?当年,我可是用txt记事本写C语言的。更多时候,我身边没有电脑,我是拿草稿纸写的。的确,这样白手起家锻炼了我,但我觉得,用VSCode写代码,才会让我真正感受到写码的快乐。

34岁才开始和Python交朋友,我觉得这还不算太迟。

2020-02
26

微观世界

By xrspook @ 9:50:17 归类于: 烂日记

上个星期我花了128块钱买了一个有60-120倍变焦的显微镜,那个东西很小,只有手掌心这么大。正常人看来,那就只是一个儿童的玩具,但我觉得那个东西相当有趣。第一眼看的时候我已经喜欢上。买个望远镜,才几十块钱的东西,我想前想后,纠结了半天。当时之所以想买望远镜,因为我想观察我家楼下那家外卖店的猫,但幸没买,因为当我有买望远镜欲望后,没过多长时间,那个店的猫就被挪走了。于是,我就没有了买望远镜的欲望。我不是天文爱好者,甚至可以这么说,我有点讨厌天文这种东西。以前明珠台播纪录片的时候,我最容易打瞌睡的就是看那些天文题材的,不知道为什么当时我不去做别的事,又或者转台。反正天文的东西播多长时间,我就几乎神游多长时间。我也不是那种喜欢拿个望远镜去偷窥人家秘密的人。

相比之下,我更喜欢微观世界。很多微缩模型我都会看得入神,甚至看到不想离开,但我很确信自己是个手残的人。所以我只能是那些微观模型的参观爱好者,而不会成为制作者。

我是从初中开始接触显微镜的,当时用的是单目显微镜,高中用的也是单目,印象之中那些都是功能最简单的显微镜,所以显微镜不自带光源,初中的时候,对光的时候我们得靠窗外的日光。阴天的日光实在太难找了,但又不能保证上生物实验课那天一定是晴天。高中虽然和初中用的是同款显微镜,但是每个显微镜都配了一个台灯,所以对光简单很多。初中的时候我觉得我是显微镜白痴,考试的时候我根本没找到,老师要我找的那个东西。也不知道是那一次我学乖了,还是高中的时候我突然有点开窍,所以高中时期用显微镜,我觉得自己还做得可以。大学的时候,显微镜的操作我甚至可以用很溜来形容我自己。初中的时候只是观察玻璃上老师写的字母,初中观察的是某些植物的部分,到了大学,我们观察的是微生物,终于,大学的显微镜自带光源了。即便用上大学教学里普通显微镜的最高放大倍数,我们也只能看到细菌。病毒那些那么高端的东西我们肯定不能接触。当时学院也没有那么高端的实验室,让给学生观察病毒。细菌真菌放线菌我们都有玩过,相比之下,放线菌最折磨人,但因为教我们的微生物学老师非常痴迷放线菌,好段时间我也跟他做实验,所以我也不得不对放线菌有感觉。跟其它微生物混在一起的时候,放线菌很难培养得出来,所以放线菌的那个培养基必须加入抑制剂让其它微生物不好长。抑制剂是老师个人的独门配方。好长一段时间在培养放线菌的时候,无论我们怎么努力。埋片培养的时候,东西总会被污染,后来发现,其实那不是我们的手法的问题,而是因为那个通风橱实在太烂了,导致环境污染严重。后来,当我们转到另外一个新的实验室的通风橱,效果好了很多。

至今我依然很怀念那些在实验室里折腾微生物的日子。要看清它们的细胞机构我们必须依靠特殊的仪器。肉眼只能大概识别出它们的菌落。那些像鼻涕一样的细菌,像毛球一样的是霉菌,还有那些非常不起眼,但却让老师非常痴狂的放线菌。

如果一切可以重来,我愿意继续留在那个地方,跟我的微生物打交道。

2020-01
28

又见面了,老马

By xrspook @ 17:32:03 归类于: 烂日记

这个春节假期我已经连续好多天都待在家里,重新看完了加西亚·马尔克斯的《番石榴飘香》,然后莫名地让我再次觉得,我之所以喜欢他的作品,一定程度上是因为我们有一些相似点,又或者其实这些不能算是相似点,而是我能明白的某些东西,那是我在其他作家那里无法得到的。我不知道为什么,在看其他作家的作品的时候,某些情况下,我会觉得自己无论如何都很难看下去。越是欧美那边越是有名的,我越会有这种感觉,大概是因为我内心深处一直在抗拒他们吧。于是,我有时会想,翻译的那个到底是如何完成他们的工作的呢?如果遇到某个翻译的人根本不喜欢的作品,他要如何才能开展工作呢?对我这种普通人来说,没有兴趣我就不会主动接受那个任务,但是对那些专业的人来说,那是他们的工作。进行不带情绪的翻译有可能吗?起码对我来说,这是不可能的。哪怕我翻译的是一本科技书籍。还记得读大学的时候,我跟过一个教微生物学的老师做实验。他曾经给我们每人都发了一章英文原版的微生物学,让我们翻译。现在我已经不记得为什么他要这样,是考验我们的专业水平,还是考验我们的英语水平我不知道。反正,我不仅把正文翻译了,而且也把里面的图片都全部截图下来,然后把里面的单词PS成中文。很多科技类的书籍会把正文翻译成中文,但图片仍然是原文的。我这种连图片也PS掉,也要翻译为中文的,属于神操作。当时我没想过不这么做,因为我觉得一套东西全部翻译才叫做完了,只有把图片都翻译了,读者才不会在看图片和看正文的时候一脸懵逼。翻译那本专业书籍的时候,其实我是有点喜欢上的。翻译得好不好是我能力的问题,但我这种的做法让微生物老师大吃一惊,因为这样的态度显然不是逼出来的,而是发自内心的认真。

在看完马尔克斯的《番石榴飘香》以后,我开始看另外一本我还没拆掉塑封的,名叫《蓝狗的眼睛》。看之前我根本不知道这本书讲的是什么。我只是看着一堆还没被拆封的书,随便挑了一本,挑了一本不算厚的,而且从书名也看不出到底是什么的,同时,我也没有看封面的那些介绍。看了两个短篇以后我才发现,原来这本书可能说的都是一些比较神奇的东西。科学一点,那里形容的是人的一些感觉,有可能是实体的,也有可能纯粹是幻想。那里讲的是与死亡相关的故事。说得玄乎一点,这本书整本都在说鬼怪。当我看完第一个故事以后,我就觉得这本书有点像《变形记》。前几个故事都是马尔克斯在四十年代的作品。据说他老人家开始写小说也是因为看到了《变形记》后灵感爆发。之所以喜欢马尔克斯,可能是因为他能把人的那种感觉写的特别真实。不是通过语言,而是通过内心活动,有些作家很喜欢把非常大的篇幅用在描写景物上,但是那些完全是描写死物自己。马尔克斯的各种描写最终都是为了表达人物。我觉得马尔克斯作品的镜头感非常强,看他的书的时候,我眼前根本就是一幕幕的电影画面,大概正是因为这样,所以我欲罢不能,但是,也会有例外,比如《族长的秋天》就看得我很憋闷。那是一本一整本书只有一个句号的作品。之所以有这样的感觉,大概是因为里面很多俚语之类的东西我没读懂,翻译的人也未必都搞清楚了。

我喜欢跟物打交道,但我喜欢知道人的故事。

2019-08
14

主动做某事

By xrspook @ 9:22:18 归类于: 烂日记

义气这种东西,有时我真的不知道跟谁才能真的去谈。但我发现一个现象,越是有钱的人,你也不能跟他们谈那个东西,因为在他们的眼里,几乎所有东西都是用钱去衡量的,而义气这种东西,本来就是不计成本,无论付出多少金钱、精力或者时间。

我觉得义气对我来说非常重要,大概是因为还是少年的时候,我武侠小说看多了,但实际上,在我看看武侠小说之前,那个东西早已扎根在我心里。之所以发生这种事,大概是因为我还是少年的那个年代社会主流的风气就是那样,所以当时的电视剧和动画片潜而默化地就会给我们灌输那种东西。什么是好,什么是不好,怎么才完美?

我觉得现在的人的价值观跟我们那个年代完全不一样。现在我该怎么跟00后,10后他们谈什么是义气呢?他们还小的时候,家长就用无数物质上的奖励诱导他们做些什么或者不做什么。比如我的一个同事,儿子四年级了,有一次家里吃饺子,她出20块钱让儿子包10个,也就是包一个饺子两块钱。我跟我的同事说,我可以给你包100个,你给我200。她跟我说用不着,因为他们吃不完。在我那个年代,孩子为家庭做事是理所应当的,当你不自觉去做的时候,你就会被责备。孩子的天性是贪玩图新鲜,所以看到大人干那些的时候自己也会恨不得帮一把。我小的时候,更多情况是大人不让我帮忙包饺子,因为他们觉得小孩子包的不好,老是散开,增加了他们的工作量。但是,当我读小学以后,尤其是初中以后,家里包饺子的操作基本上都由我一个人负责,如果我躺在床上没及时起来干活,我妈一定会把我骂死。我妈从来不会恐吓我说如果我不去包饺子我就没得吃,要自己顾自己。在她的狮吼之下,我也不可能一直躲在被窝里不起来。在家里,我妈没有一天是不吼,所以我觉得被她吼是再正常不过的事,我从来没想过吃饺子的时候我不亲手去包。从前我妈觉得她包得比我好,但她后来觉得无所谓了。还记得大学某次班级活动包饺子,我居然成为了同学的师傅,原来无论男女都有很多没包过饺子。但这也说得过去,因为我们是南方的孩子,所以我们没有在某些特定节日吃饺子的习惯。我熟练的手法把他们吓了一跳,因为他们觉得这跟我平时表现出来的那种气场很不一样,在他们眼里包饺子是很女人的事,但在我心中,工作无所谓男女,只要力所能及,那份工作就可以做。为什么包饺子这种事情就一定是女性独有的活儿呢?虽然在包饺子这个问题上,我包得很在行,但我不会擀饺子皮。在南方,我们的饺子皮是从外面买回来的,不需要自己擀,所以如果你让我整套流程下来,包括馅料调味以及从面粉开始做饺子皮,这些步骤我肯定不在行。但只要给我几次学习以及练习的机会,我必定能把那掌握好。倒不是因为我觉得这或许在以后会成为我的谋生手段之一,而只是觉得掌握这种技能挺有趣。

如果孩子必须得用各种物质奖励的手段诱使才会主动去干某事,我觉得这个社会就没救了。

© 2004 - 2020 我的天 | Theme by xrspook | Power by WordPress