随笔——关于学习

近日回顾和一些观点摘录

近日简记

自从回家没把本带回去,半个月隔绝linux,隔绝各类和计算机相关的东西。在这里的日志便从每三四天一篇缩减到似乎不再维护似的。其实现在倒一点没闲下来,只是没以前那么有大把大把的时间了。六点半起床,打开电脑看奥运新闻,洗衣服,早饭、去自习,中午午饭回来上网看看、学学python,小憩一下,滚到教室继续自习,偶尔会去实验室打打酱油。晚饭回来,继续打开电脑折腾。其实这一天天就这么过去了。半个月之前晚上八点去操场慢跑一个小时,现在缩短到九点跑个半小时……日子就这么一天天过去。

Learn Python

从一个月之前断断续续地,竟然把A Byte of Python看完了,虽然很多东西也不甚明白,而且忘了大半。但总有了个轻松愉快的开端,总之这本书看起来令人愉快。之后看看《learn python the hard way》,作者的很多话我深以为然,反正那篇NB哄哄的序言把我吸引进来了,结果发现有之前那本书的底子之后看起来太简单了点……但作者关于学习一样东西的许多见解确是很值得一看的。

The Hard Way Is Easier

这里有段很精彩的关于练习和坚持的言论,我真得很喜欢它:

** A Note On Practice And Persistence

:CUSTOMID: a-note-on-practice-and-persistence

While you are studying programming, I'm studying how to play guitar. I practice it every day for at least 2 hours a day. I play scales, chords, and arpeggios for an hour at least and then learn music theory, ear training, songs and anything else I can. Some days I study guitar and music for 8 hours because I feel like it and it's fun. To me repetitive practice is natural and just how to learn something. I know that to get good at anything you have to practice every day, even if I suck that day (which is often) or it's difficult. Keep trying and eventually it'll be easier and fun.

As you study this book, and continue with programming, remember that anything worth doing is difficult at first. Maybe you are the kind of person who is afraid of failure so you give up at the first sign of difficulty. Maybe you never learned self-discipline so you can't do anything that's "boring". Maybe you were told that you are "gifted" so you never attempt anything that might make you seem stupid or not a prodigy. Maybe you are competitive and unfairly compare yourself to someone like me who's been programming for 20+ years.

Whatever your reason for wanting to quit, keep at it. Force yourself. If you run into an Extra Credit you can't do, or a lesson you just do not understand, then skip it and come back to it later. Just keep going because with programming there's this very odd thing that happens.

At first, you will not understand anything. It'll be weird, just like with learning any human language. You will struggle with words, and not know what symbols are what, and it'll all be very confusing. Then one day BANG your brain will snap and you will suddenly "get it". If you keep doing the exercises and keep trying to understand them, you will get it. You might not be a master coder, but you will at least understand how programming works.

If you give up, you won't ever reach this point. You will hit the first confusing thing (which is everything at first) and then stop. If you keep trying, keep typing it in, trying to understand it and reading about it, you will eventually get it.

But, if you go through this whole book, and you still do not understand how to code, at least you gave it a shot. You can say you tried your best and a little more and it didn't work out, but at least you tried. You can be proud of that.

这的确是本很“简单的书”,我觉得作者以下的话可以送给那些妄想走捷径自大而不愿付出的人(No pains,no gains):

Empty before you fill. You will have a hard time learning from someone with more knowledge if you already know everything.

当然还有这一句玩笑话……

Go learn Lisp. I hear people who know everything really like Lisp.

关于一个看上去很艰巨的大任务或者大项目,比如面临考研复习的自己,作者送出了这么一段句话:

One final word of advice: Every programmer becomes paralyzed by irrational fear starting a new large project. They then use procrastination to avoid confronting this fear and end up not getting their program working or even started. I do this. Everyone does this. The best way to avoid this is to make a list of things you should do, and then do them one at a time.

Just start doing it, do a small version, make it bigger, keep a list of things to do, and do them.

好像人们常说的细化目标,日积月累,步步为营。更关键的在于-–—开始去做。

就像当你决定做什么时,空想除了让你更好受永远不会有任何作用,但当你走出房门的那一刻,虽然什么也没做,情况确彻底地改变了。1

作者经常让你花上几乎一整周的时间来/记忆/,记忆一定是学习一样东西时非常重要的东西,不管怎样,基本的东西你要记住。这些东西像英语中的词汇一样,是一切开始的基础。所以不要偷懒,/No pains, no gains/.

在学习的过程中我们经常性挫败感十足,这很糟糕。因为就我目前体验来说,要没有之前安装配置linux那种成就感让我如此上瘾,我真不会如此视折腾为乐事“坚持”到现在。所以,想办法让自己充满成就感。

尝试受挫会让自己感觉很蠢,but

The most important thing when doing this exercise is: "There is no failure, only trying."

学习一段时间会很累?感觉有些不明白?作者经常安慰吾等菜鸟读者说:

Just take it slow and do not hurt your brain. Hopefully by now these symbols are natural for you so this isn't a big effort. It's best to take 15 minutes at a time with your list and then take a break. Giving your brain a rest will help you learn faster with less frustration.

很多credits都要求读者去自己求助于搜索引擎、文档,我觉得这才是学习,这才是zen,这才会有乐趣。

除了非常重要一致不能跳过的东西2,大多东西都可以先跳过的,总之不要让自己挫败感十足。充满自信和乐趣是持续前进的动力。

Happy hacking,happy learning


这是题外话

很多想得很好却没做到的事情。只能说自己想得太多:

梦想很美

在weibo上说,我现在在学python。于是一位common lisp造诣很高的高人问我?你不学scheme了?我这才想起来从图书馆借的htdp,看着还不算累,但东西实在多。之后因为sagemath和自己在学校的创新项目和python的千丝万缕,又碰到python简明教材这本令人愉快的读物,投到scheme的热情便完全转移到python上了。

忽然便想起最近背的单词passion。激情、喜爱简直是一码事。虽然生活如此如此那般,但有passion的人生还是幸福的。

Footnotes:

1

我其实在说晚上去跑步的情况。有时候会拖到很晚才去。

2

比如说python的安装……