今天周六,早上看到了这篇文章在此分享一下。
《Teach Yourself Programming in Ten Years》
Why is everyone in such a rush?
Walk into any bookstore, and you’ll see how to Teach Yourself Java In 24 Hours alongside endless variations offering to teach C, SQL, Ruby, Algorithms, and so on in a few days or hours. The Amazon advanced search for title: teach, yourself, hours, since: 2000 and found 512 such books. Of the top ten, nine are programming books(the other is about bookkeeping). Similar results come from replacing “teach yourself” with “learn” or “hours” with “days”.
析: 此段作者描述了一种现象,在书店或者亚马逊上你能看到到处都是关于 24 小时学些某某编程语言的书籍,并附上了亚马逊网站搜索的信息。
The conclusion is that either people are in a big rush to learn about programming, or that programming is somehow fabulously easier to learn than anything else. Felleisen et al. give a not to this trend in their book How to Design Programs, when they say “Bad programming is easy. Idiots can learn it in 21 days, even if they are dummies.” The Abtruse Goose comic also had their take.
析: 这一段就有点意思了,作者应该是用讽刺的口吻来说出了上面的结论。通过上面书店或者亚马逊上的 21 xx 的书籍现象的书了一个结论就是,要不就是人们急于学习编程,要不就是编程是一件极其容易的事情,而且作者还引用了一本书籍和一幅漫画来说明这些问题(通过点击链接你可以去看看那本书和那副漫画)
Let‘s analyze what a title like Teach Yourself C++ in 24 Hours could mean:
Teach Yourself: In 24 hours you won’t have time to write several significant programs, and learn from your successes and failures with them. You won’t have time to work with an experienced programmer and understand what it is like to live in a C++ environment. In short, you won’t have time to learn much. So the book can only be talking about a superficial familiarity, not a deep understanding. As Alexander Pope said, a little learning is a dangerous thing.
C++: In 24 hours you might be able to learn some of the syntax of C++(if you already know another language), but you couldn’t learn what C++ is actually good(and bad) for. So what’s the point? Alan Perlis once said: “A language that doesn’t affect the way you think about programming, is not worth knowing”. One possible point is that you have to learn a tiny bit of C++ (or more likely, something like JavaScript or Processing) because you need to interface with an existing tool to accomplish a specific task. But then you’re not learning how to program; you’re learning accomplish that task.
- in 24 Hours: Unfortunately, this is not enough, as the next section hows.
析: 这一段作者直接分析了 “24小时自学 C++”这个书名,这其实是《如何阅读一本书》中第三层阅读中第一步的实践,就是从书的标题中你能获得什么。首先说了,自学这件事,24 小时内你写不了几个重要的程序,也不能从从成功或者失败中学习到什么东西。更进一步,你也没有时间和其他有经验的开发者交流学习以及不能够熟悉 C++ 的开发环境。总之,你没有太多的时间来学习,所以这本书一定是不求甚解的。作者最后还引用了一句谚语,其实中文就是不求甚解是很危险的,我还特意查了下这句谚语处处,看连接 A little knowledge is a dangerous thing。
接下来,作者摘除了 “C++” 这部分,24 小时,如果已有编程经验的话或许可以学习 C++ 的语法,但是针对于如何使用这门语言你是不可能学到太多的。也就是说,如果你是一名 Basic 语言的开发者,你也许在 24 小时内可以将 Basic 程序用 C++ 语言来翻译一遍,但是你却无法参透 C++ 的优劣。所以,这 24 的重点又是什么呢?或许你知识为了通过学习 C++ 来完成一个任务,而不是通过学习 C++ 来学习编程这件事。作者还引用了Alan Perlis 的一句话,就是 “如果一门一语不能够影响你的编程思维,那么这门语言是不值得学习的”,他的至理名言还有很多,你可以通过点击上面的连接来了解。
最后一部分是时间,很不幸,这点时间根本就不够,这部分将在后面继续论述。
读到这里,其实我已经对作者很佩服了,他的知识面的广度真是令人佩服。所以我查了下作者,原来是谷歌的顶级人物。其实,看到这里,已经能学习到很多东西了,那本书《How to Design Programs》,那页漫画,以及 Alan Perlis。
好了,继续