开坑学习PLT
一个开篇,把一些文章读完,争取写个sicp小demo出来。 鸽了
这是个巨坑,指望瞬间掌握是不现实的。只是期望把之前学到的东西重新复习一遍,串起来。同领域的概念总会走到一起,如果没有,那就是深度不够。
- Programming Languages: Application and Interpretation http://cs.brown.edu/courses/cs173/2012/book/
- 上面的中文版 https://lotuc.gitbooks.io/plai-cn/content/
- PLT理论书单 https://steshaw.org/plt/
引用一个答案 说的戳中我内心。
作者:啥玩应啊
链接:https://www.zhihu.com/question/36328468/answer/68011955
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
题主,请原谅我借你这个问题多说两句,有心的人看一看,我相信或许对这些人有些帮助,也算我在知乎的最后一答了吧(至少我现在是这么想的)。
很抱歉近段时间诸多邀请都没有回答,主要原因很简单,我不懂。你让我说,我东拉西扯的也能整两句,忽悠到几个赞和几个感谢刷个存在感,在虚拟的社会中聊以慰藉一下自己都鄙视的虚荣心,骗骗自己,骗骗时间。但仅仅这样我既帮助不了提问的人,又不能给自己带来真正分享的快乐(因为我真不懂啊,这就是为什么我非常羡慕R大),而且又因为我这么一个答案的更新或多或少刺激了一些关注者的多巴胺,让他们总期待知乎上马上会有一些有用的东西,而且他们总假设这些东西一旦能知道,就能掌握,继而就能成功。这样短时间还好,长时间后人是非常容易浮躁的。世界太大,知识领域太多,我只是个nobody,所以这些话就讲讲给自己小圈子的人听吧,那些关注题主这个问题的,PLT的人。
我相信在知乎关注PLT的人大多数都是年龄比我小的,而且有的小很多(我是一个快毕业的,在这个领域混的博士),很难能可贵的是在中国这样的环境中(我们的中国计算机学会CCF甚至连编程语言的专委都没有,是被软件工程专委代理行事的)看到这么一群年轻的同学对PLT感兴趣,想好好努力好好做。你们的热情和对知识的渴望深深地吸引到了我,加之我也想在知乎上交两个志同道合的朋友(很庆幸我交到了),所以我就在知乎里呆了几个月,说实话确实长了见识,但是同时也发现一些问题,我想借这个题目简单说一下,也算我为你们这些未来有着无限潜能的PLT界(或其他)的有用之材添一舀水吧。我虽资质平平,在知乎上比我牛的人多的太多,但是毕竟本人还算是一个愿意做自我检讨和总结的人,带过不少优秀的学生,在自己的小领域内做出过一些算是有用的贡献,所以下面的话不是妄谈,算是一点心得,主要讲给那些励志于在PLT中想做contribution的人。
PLT这么大,读过基本书的人自然大有人在,有的人一边读,一边敲,自然有多一层的收获。可是这,但凡目标明确些的、有点坚持的人都可以做到。你会发现这些人往往会搬运问题和答案,但是鲜有人会解决问题。典型的就是在知乎上科普上的解答,答案中的话虽都出于自己的理解,但是还是书中的话,传来传去的话,书的作者想让你知道的话。
想在PLT中做出贡献,要学会放弃,放弃你科普的时间,放弃你自己读科普书的时间。因为一旦你赤裸裸地面对一个真正的问题的时候,你会发现你其实懂的实在是很欠火候。你会发现你已有的知识树要倒过来重来一遍,一些叶子放大了,更绿了,一些平常在知乎讨论挣破皮的问题变的不值一谈了,但一些隐藏的枝干却被发现了,它们才是求解问题的关键,无论你指出它们的位置和重要性,还是自己添加枝干叶子,甚至把这颗树拔倒了,都是一种贡献。
不要想着现在只有多读书,读广书将来才会融汇贯通,你没有这个时间。在一个真正问题下暴露出来的知识,你一点点顺藤摸瓜找出的知识才是你的知识,这个问题是上下文,在这个上下文下说出来的见解的深度、清晰度才能标示着你在PLT中真正的水平,所谓论文也。
所以,你想在PLT做贡献,不要时间都花在读书读论文上。要读问题,悟问题,书和论文是工具,是参考,之前有一个大致的理解就够了。我拿自己举例,我读博之前自以为OO的一些设计已经有一定的理解了,本科时国内外OO设计和编程的书读的多,代码敲的也多,真东西也干过,自以为掌握一些真谛。博士期间当真正有一个问题的时候,从问题本身出发的时候才发现,自己懂的多么少,已有的知识只够在思路中游走,一个一个自认为熟悉的概念设计回到书中做确定然后从新理解,发现原来它们被设计成这样还会有这等好处(在书中未提及是因为现在的教材都是科普的,没必要那么深)。未有的知识却无从参考,自己想法设法自己定义它们理解它们,慢慢的发现这些自己定义设计的东西和XXX其他方向的XX概念是相似的,然后又找到相关书籍和论文不停的查阅、理解、讨论以精确确定自己的理解到底是多了几分,还是欠了几分,还是换种表达就是完全一样的。。。现在这个实际的PLT界中公开的棘手问题我相信我理解一些了,起码我贡献的用于解决它的方法是目前世界上最好的发表出来的方法。我没有读过很多PLT的书籍,甚至可以说是知乎里面懂PLT的人中读过PLT书最少的人之一了。但是通过真正问题的带动,我这一遭豁然开朗了很多。
你没法什么都懂,什么都懂又有什么用呢?真懂和懂的很多一定有一个平衡,PLT中的这些大师们也都是各有所长,都是通过一个个真的问题(例如好的论文的发表)带动自己对这一领域慢慢了解,慢慢贯通的,之后的书是他们写出来的,留给我们读的。你通过他的书和实现他项目的代码是成为不了他的。
读问题和悟问题固然重要,但前提是你得有一个好的问题。在知乎中PLT里我几乎看不到这样的好问题。怎么样找一个好的问题难,怎样精确地定义一个好的问题难上加难。鉴于我以上这些话都是说给那些日后励志给PLT做贡献的人听的,所以我假设你想要在研究上发力,例如读一个硕士或博士。如果你现在是本科,我建议你把基础打好,问一个题主这样的问题后,回去好好选两本书好好用功,少上知乎,虽然现在没有什么好的大问题要你提出解决,但是你在学一个东西的时候肯定有各种乱起八糟的小问题,这些问题之所以被问及往往是因为你是在看书不是在读书。每次读书前都带着目的去读,别想一下子就都吃懂,如果那些小问题跟你读书的目的(读当前这遍的目的)相关你就试着自己解决它理解它,不想关你就扔掉它。不要随便问问题,这个习惯不好。慢慢的,你了解了,你自然在专业上说话谈吐就不一样了,这样你申请一些好的学校的老师老师就能注意到你了,以后解决大问题的机会就更大了,我不相信一个老师跟姚培森这样的学生聊过后决定不要他,机会是自己的,自己努力争取吧。如果你已经是硕士或博士,那么就利用一下自己的老师和自己讨论一些要解决的问题吧,如果你的老师水平一般或不管你,你就看看国外好的研究组的基金和论文,结合一下自己的兴趣,起码大的方向不会差太多,但是也要注意避免竞争。
多读书,多敲代码,写几个编译器解释器就觉得把书和知识理解透了是一种经验性的偏见,如果单纯的想着这样就已经强过很多人了,能找个好工作受重视,这种大家都懂的、知乎里常说的方法倒不失为一种比较实际的手段。但是年轻人的价值怎么能用当前社会认可的价值来衡量呢,不为了多挣那么几万块钱,也不用为了给国家争口气,也不用为了给这个世界的知识库留下一点自己的贡献,就为了在知识中寻找一个无限可能的自我来慰藉这有限的生命吧。
实际上我说了这么多都是王明阳的“知行合一”。你看这句话谁都听过吧,谁都感觉自己懂那个意思吧,又有谁在做呢。“知”乎?不“行”怎知呼,“行”就让真正的问题去带动吧,少上网看热闹,快点踏踏实实动起来吧。
注:寥寥心得,一家之谈,不为争辩,但求知己者闻而有所明。
我最近这几个月,主要是在划水,没有明确目标的划水,然后在知乎上答题,瞎答强答,慰藉自己没有浪费时间。实际上就是上面说的,一种showoff,没看书没实践,还是粗人一个。怎么能就仅仅止步于此呢?
实际上我CS的概念基本都不熟,完全没有概念。需要补课的东西太多,干着急,紧张的划水着。
从这篇开始,争取真的多写点东西。不要在踌躇了。
也得把自己的 收藏夹整理一下。