学编程还是学计算机科学的思考方式?
2017-07-28
Allen Downey在他的书Think python第一章就强调:此书目的是教你像计算科学家一样思考。什么是计算机科学家的思考方式?他举三个例子说明。1. 像数学家,用规范语言表达思想;2. 像工程师,组装系统权衡利弊;3. 像科学家,观察行为验证假设。我好奇,关于这个问题,其他人是怎么定义的呢?于是就Google了一下。不看不知道,一看吓一跳。不明觉厉,说的就是这种感觉。
信息话头
-
这里是wikipedia对computational thinking的定义。
没细读,摘出那张太极图,贴在anki条目里了。
-
这里有给所有人的关于计算机化思考的pdf。
-
Quora里还有人问:解决问题时,计算机科学家和计算机编程者有什么不同?回答有:
- 计算机科学家不会暴力解决问题,或不满足于暴力解决。
- 计算机科学家知道什么问题暂时不可解,而编程者会一直不放弃。
- 编程者会很快鼓捣出来一段代码,帮助用户改善一部分生活。
- 科学家关心算法的证明是不是优雅,而不是算法的实施是否漂亮。
-
我通读了这篇文章,Don't Just Learn to Code, Learn How to Think Like a Computer Scientist,它讲清了to code和to think的关系,可以帮我面试的时候回答学习路径问题。里面关键文章的链接,也值得一看。
-
Quora这个帖子里,有人问学了优雅的算法,觉得挺好,但是怎么能自己想到新的算法呢?问答质量超级高。
迎接挑战
今天我肤浅地通读了上面Quora帖子中,Sam King的回答。这里是它在个人博客里的复制:How to Think Like a Computer Scientist
他这个观点很触动我:与其要知道计算机科学家怎么想?不如迎接他们一样的挑战。
每一条挑战,都有比较具体的建议和窗口。
误导大众
Maybe Not Everybody Should Learn to Code这篇文章骂得好。
布什和奥巴马都跳出来鼓动:人人都要学编程。作为一个严肃程序员,Chase Felker表示担忧:那不是噩梦么。
有个比方挺有意思。你读了费曼的书,感到物理学好神奇,但是大多数人不会去努力成为物理学家。然而,在编程方面,从欣赏到实作之间的鸿沟可没有那么大。第一天上手python,就可以做出真正的东西。然后,教育步伐继续前进,你会看到几乎是一座“荒野西方世界”(查注:2007年开园两个月即关门至今)从文化和实体意义上都建起来了。
计算机领域,不像其他科学,它只认你的程序作品,而不是看你打扫的实验室的主任名气有多大。但是这种缺乏权威的状态,也让社会上任何人都可以自封为老师,向不知批判的学生散播没大意义的东西。据说在他们那里,已经有专家撰文出来抱怨,有些求职者,过高估计了他们的信用,所以面试就不拉家常,从难题问起,节省时间。这里的关键在于:他们不知道他们不知道,所以某种自信很容易获得。这篇2013年8月的文章说的就是当下我们的全栈营啊。
文末,他的建议是:你先有个主要问题要解决,而编程对此有帮助,因此来学编程。我们不需要每个人都能编程,我们需要每个人都会思考。
上下求索
YEVGENIY BRIKMAN的文章Don't learn to code. Learn to think.好大气。
世界确实到处都是程序,将来真的是数据至上。你怕了?想跟上?先看看前面的路,又长又远。
什么是计算机科学?包含哪些方面?
什么是编程?学编程有什么好处?
我们要搞清楚编程和思考的区别,然后才能正确提出问题。
不是问:布隆伯格哪天一觉醒来会了java,对他那天当纽约市长的工作有什么帮助?
而是问:如果布隆伯格学了编程,并因此更有逻辑性,掌握了一种新的解决问题的策略,总之提高了思维水平,这会让他工作更出色吗?
答案是显然的。
怎么做?镇静镇静:路漫漫其修远兮,你需上下而求索。文末的课程和组织,都有很大影响力。而这些,我过去都没听说过,汗。
以上,2017-07-28更新。题目2017-07-26起头。