当前位置: 首页 > 工具软件 > web-poker > 使用案例 >

《Design of Computer Programs》学习笔记(1 - 5)Winning Poker Hands - Office Hours 1

诸福
2023-12-01

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:利用好互联网搜索,保持和别人交流

参考文献:

  1. Design of Computer Programs - 英文介绍 - Udacity
  2. Design of Computer Programs - 中文介绍 - 果壳
  3. Design of Computer Programs - 视频列表 - Udacity
  4. Design of Computer Programs - 视频列表 - YouTube
 类似资料: