Computational-Thinking 中文(part 1)

计算思维

It represents a universally applicable attitude and skill set everyone, not just computer scientists, would be eager to learn and use. 它代表了一种普遍适用的态度和技能,每个人,不仅仅是计算机科学家,将渴望学习和使用。

  Computational thinking builds on the po limits of computing omputational thinking wer and processes, whether they are executed by a human or by a machine. Computational methods and models give us the courage to solve problems and design systems that no one of us would be capable of tackling alone. Computational thinking confronts the riddle of machine intelligence: What can humans do better than computers? and What can computers do better than humans? Most fundamentally it addresses the question: What is computable? Today, we know only parts of the answers to such questions.     计算思维建立在计算过程的能力和限制之上,无论这些计算过程是由人还是由机器执行的。计算方法和模型给了我们解决问题和设计系统的勇气,这些问题和系统是我们任何人都无法单独解决的。计算思维面临着机器智能的谜题:人类有什么能比计算机做得更好?还有什么电脑能比人类做得更好呢?最根本的问题是:什么是可计算的?今天,我们只知道这些问题的部分答案。   Computational thinking is a fundamental skill for everyone, not just for computer scientists. To reading, writing, and arithmetic, we should add computational thinking to every child’s analytical ability. Just as the printing press facilitated the spread of the three Rs[1], what is appropriately incestuous about this vision is that computing and computers facilitate the spread of computational thinking.     计算思维是每个人的基本技能,而不仅仅是计算机科学家。除了阅读、写作和算术,我们还应该在每个孩子的分析能力中加入计算思维。正如印刷术促进了三个r的传播一样,计算和计算机促进了计算思维的传播。   Computational thinking involves solving problems, designing systems, and understanding human behavior, by drawing on the concepts fundamental to computer science. Computational thinking includes a range of mental tools that reflect the breadth of the field of computer science.     计算思维包括利用计算机科学的基本概念解决问题、设计系统和理解人类行为。计算思维包括一系列反映计算机科学领域广度的思维工具。   Having to solve a particular problem, we might ask: How difficult is it to solve? and What’s the best way to solve it? Computer science rests on solid theoretical underpinnings to answer such questions precisely. Stating the difficulty of a problem accounts for the underlying power of the machine—the computing device that will run the solution. We must consider the machine’s instruction set, its resource constraints, and its operating environment.     要解决一个特定的问题,我们可能会问:它有多难解决?最好的解决办法是什么?计算机科学为准确回答这些问题提供了坚实的理论基础。描绘问题的难度解释了机器的潜在能力 – 将运行解决方案的计算设备。我们必须考虑机器的指令集、资源约束和操作环境。   In solving a problem efficiently, we might further ask whether an approximate solution is good enough, whether we can use randomization to our advantage, and whether false positives or false negatives are allowed. Computational thinking is reformulating a seemingly difficult problem into one we know how to solve, perhaps by reduction, embedding, transformation, or simulation.     在真正地解决一个问题时,我们可能会进一步问近似解是否足够好,是否可以利用随机化的优势,是否允许假阳性或假阴性。计算思维是将一个看似困难的问题重新表述成一个我们知道如何解决的问题,也许是通过约简、嵌入、转换或模拟。   Computational thinking is thinking recursively. It is parallel processing. It is interpreting code as data and data as code. It is type checking as the generalization of dimensional analysis. It is recognizing both the virtues and the dangers of aliasing, or giving someone or something more than one name. It is recognizing both the cost and power of indirect addressing and procedure call. It is judging a program not just for correctness and efficiency but for aesthetics, and a system’s design for simplicity and elegance.     计算思维是递归思维。它是并行处理。它将代码解释为数据,将数据解释为代码。它是量纲分析的推广,是类型检验。它是认识到混叠的优点和危险,或者给某人或某事一个以上的名字。它认识到间接寻址和过程调用的成本和能力。它不仅从正确性和效率来判断一个程序,而且从美观来判断一个程序,从简洁和优雅来判断一个系统的设计。   Computational thinking is using abstraction and decomposition when attacking a large complex task or designing a large complex system. It is separation of concerns. It is choosing an appropriate representation for a problem or modeling the relevant aspects of a problem to make it tractable. It is using invariants to describe a system’s behavior succinctly and declaratively. It is having the confidence we can safely use, modify, and influence a large complex system without understanding its every detail. It is modularizing something in anticipation of multiple users or prefetching and caching in anticipation of future use.     计算思维是在处理大型复杂任务或设计大型复杂系统时使用抽象和分解。这是关注点的分离。它是为问题选择适当的表示形式,或为问题的相关方面建模以使其易于处理。它使用不变量简洁地描述系统的行为。它是我们有信心安全地使用、修改和影响一个大型复杂系统,而不需要了解它的每个细节。它是在多个用户预期的情况下对某些东西进行模块化,或者在可预见的未来使用的情况下对某些东西进行预取和缓存。   Computational thinking is thinking in terms of prevention, protection, and recovery from worst-case scenarios through redundancy, damage containment, and error correction. It is calling gridlock deadlock and contracts interfaces. It is learning to avoid race conditions when synchronizing meetings with one another.     计算思维是从最坏情况中恢复的角度来思考预防、保护并通过通过冗余、容错和纠错来实现的。它采用堵塞、死锁和约定接口的方式。它正在学习在同步相遇时避免竞态条件。   Computational thinking is using heuristic reasoning to discover a solution. It is planning, learning, and scheduling in the presence of uncertainty. It is search, search, and more search, resulting in a list of Web pages, a strategy for winning a game, or a counterexample. Computational thinking is using massive amounts of data to speed up computation. It is making trade-offs between time and space and between processing power and storage capacity     计算思维是利用启发式推理来发现问题的解决方案。它是在不确定的情况下进行计划、学习和调度。它是搜索,搜索,更多的搜索,结果是一个网页列表,一个赢得游戏的策略,或者一个反例。计算思维是利用大量的数据来加速计算。它在时间和空间、处理能力和存储能力之间进行权衡 [1] the three Rs: reading, writing and arithmetic