《Design of Computer Programs》学习笔记(1 - 5)Winning Poker Hands - Office Hours 1
2018-02-24 22:17
435 查看
Winning Poker Hands
Office Hours 1
视频链接:Office Hours 1 - Udacity
1.Office Hours 1
Prajeet:当你着手处理一个新的问题,你会做多少研究?你会寻找已经写好的方法吗?或者你通常会自己写这些工具?你怎么样平衡研究的时间和花在写的时间上面?Peter:成为一个程序员的重要的一部分是,知道什么应该自己做,什么是你应该利用别人已经做好了的。我想说2个方面。
1是低级工具——内置函数和数据类型,例如strings和sets和字典,Python的一部分。你应该保持学习,并且提醒自己,所有的函数功能确切是什么。核心功能,你如何取得1个列表的第n个元素,这样,通过核心,你将会很快知道。但是有很多独特的、单独的方法methods,像如果计算1个列表中的项的数量,等等。你可能不记得所有的,所以你将要持续第看文档,查找东西,知道这种类型有什么可用的方法methods。
2是大片的代码。你想要一个web服务器,或者你想解析和响应email。那些是你期望的东西,有人已经完成过那些。这是个庞大的工作。我可能不会做这个。然后你开始搜索,你找到正确的模组,实现了你需要的。所以,编程总是联合你必须自己做的东西、和你找到的别人已经做好的,组合进你的解决方案中去。
Serge:怎样评价一个具体的解决方案的清晰程度?是否优美?当给你一个代码的两个选择,2者都同样的正确、甚至同样的有效,你怎么评价哪一个比另一个更好?
Peter:如果我的代码听起来像是英文的句子,我认为,代码就足够的清晰了。英语描述到代码描述的1对1的映射。对话的长度可以帮助沟通的清晰性,也可能伤害它。
Clair Dunn:我们用在第1单元中的对自顶向下的问题解决办法。我们经常定义函数,甚至假设要使用不存在(还没有写出来的)的函数。相较于自底向上(我们先建立所有的碎片,然后,在poker函数中,使用那些碎片),这种解决问题的方法的优势是什么?
Peter:现在的问题是,以什么顺序,你安排它们?我认为,这绝大部分依赖于域、依赖于你哪里是清楚的,你对哪里是不确定的。如果我们有域domain的1个详细说明书,我们已经理解了,那么,这对于从顶部开始,有很大的意义。如果你不理解发生了什么,然后,有时,从底部开始,向上构建,会更有意义,也就是说,域domain的碎片是什么,它们如何配合到一起?让我一点一点地玩它们,然后,我会想出1个好的方式,把它们放到一起。自顶向下、自底向上,都可以,这取决于你当前的理解的程度,但是,我认为关键在这里,永远不要害怕忙于思考,也就是说,要是我有1个函数、做了正确的事情就好了。然后我就可以前进了。你应该总是愿意以那种方式前进。
last question:如果写代码?你对现在CS的学生,有什么建议?
Peter:利用好互联网搜索,保持和别人交流
参考文献:
Design of Computer Programs - 英文介绍 - Udacity;Design of Computer Programs - 中文介绍 - 果壳;
Design of Computer Programs - 视频列表 - Udacity;
Design of Computer Programs - 视频列表 - YouTube。
相关文章推荐
- 《Design of Computer Programs》学习笔记(1 - 0)Winning Poker Hands - 简介
- 《Design of Computer Programs》学习笔记(1 - 1)Winning Poker Hands - Lesson 1
- 《Design of Computer Programs》学习笔记(1 - 3)Winning Poker Hands - Andy'S Corner
- 《Design of Computer Programs》学习笔记(1 - 4)Winning Poker Hands - Problem Set 1
- 《Design of Computer Programs》学习笔记(1 - 2)Winning Poker Hands - Bonus:Shuffling
- 《Design of Computer Programs》学习笔记(2 - 3)Back of the Envelope - Office Hours 2
- 《Design of Computer Programs》学习笔记(0)简介(关键词:程序设计)
- 《Design of Computer Programs》学习笔记(2 - 0)Back of the Envelope - 简介
- 《Design of Computer Programs》学习笔记(2 - 1)Back of the Envelope - Lesson 2
- 《Design of Computer Programs》学习笔记(2 - 2)Back of the Envelope - Problem Set 2
- "Principles of Computer Systems Design"
- The Design of Design - Essays from a Computer Sientist
- 读书笔记(一) -- Structure and interpretation of computer programs
- Research on Computer Aided Design Method for the particles distribution of Table-tennis racket
- 一点SICP(Structure and Interpretation of Computer Programs) 资料 (转载加整理)
- 干粮 -- 计算机程序设计艺术(The Art of Computer Design) - 1
- Structure and Interpretation of Computer Programs 读书笔记
- structure and interpretation of computer programs
- 体系结构笔记(1)Fundamentals of Computer Design
- 《设计模式——可复用面向对象软件的基础》学习笔记(1.4)The catalog of design patterns