《Python算法教程》译者序

在计算机的世界中,算法本质上是我们对某一个问题或者某一类问题的解决方案。也就是说,如果我们想用计算机来解决问题的话,就必须将问题的解决思路准确而完整地描述出来,同时计算机也要能理解这个描述。这需要我们这些程序员将整个描述转化成一系列清晰的指令,这些指令要能接收满足一定规范的输入,并在有限的时间内产生出相应的输出。我们通常将这些指令称为程序,而算法则是程序的灵魂。

然而,程序光有灵魂是不够的。例如,诚然搜索算法可以用来解决搜索类问题,但我们通常是不会为搜索而搜索的。所有搜索算法在进入程序的时候,都要面对一些实质性的内容,比如新闻信息、论文存档,而这些内容往往都有具体的存储系统,如数据库、文件系统等。这些系统本身也有各自的数据结构,如图、树、列表等,所以算法并不是我们写程序时唯一要考虑的问题。在很多现实情况下,它甚至还不是主要问题。

所以,如果用C或C++来进行编程教学的话,我们对于算法设计的专注力很容易被数据结构这种更为基础的细节干扰。毕竟用这些语言实现并使用好数据结构本身就已经很复杂了。因此,如果想专注于算法教学,就需要一种不太需要程序员在数据结构上花太多时间的编程语言。

在相当长的一段时间里,我们在进行算法设计的时候通常用的是一种更接近于人类语言的“伪代码”。这种代码足够抽象,能让我们专注于算法的表达,但遗憾的是,它们无法在计算机中执行,我们最终还是要将其翻译成真正的编程语言。这很管用,但显然不够优雅。我们需要一种既能在抽象层面接近于这些“伪代码”,又能在计算机上像C那样通用的语言。Python就是这样一种语言。

这本书就是一本用Python来进行算法设计教学的书,本书的作者在其上一本著作《Python基础教程》中已经展现了其丰富的教学经验和技术实力,我本人亦从中受益匪浅。能翻译他的后续作品,我深感荣幸。但翻译一本算法书所需要付出的时间和精力还是远远超出了我的想象。而且,当我译了近八个月,终于快将本书第1版译完的时候,它的第2版又出版了。于是我不得不找了两个朋友(见译者简介),他们的工作是重新针对第2版对译稿进行校对、增改以及最后两章的初译。我很感谢他们给予我的帮助。除此之外,我还要感谢我的好朋友、《深入解析Windows操作系统》(第6版)的译者范德成工程师,他全程参与了本书的校对,对译稿进行了严格审阅,提供了很多宝贵建议。

祝愿这本书能给读者们带来帮助,同时也希望你们阅读快乐。

时间: 2024-08-09 20:38:35

《Python算法教程》译者序的相关文章

《JavaScript面向对象编程指南》读书笔记②

概述 <JavaScript面向对象编程指南>读书笔记① 这里只记录一下我看JavaScript面向对象编程指南记录下的一些东西.那些简单的知识我没有记录,我只记录几个容易遗漏的或者精彩的知识点,以后再看也可当做拾遗之用! 内容 1.枚举属性用for-in循环显示. 2.当我们对对象的prorotype属性进行完全重写时,有可能会对对象constructor属性产生一定的负面影响. 3.uber--子对象访问父对象的方式Triangle.uber = TwoDShape.prototype 4

《JavaScript面向对象编程指南》读书笔记①

概述 JavaScript快忘完了,想看一本专业书拾遗,所以看了这本<JavaScript面向对象编程指南>. 个人觉得这本书讲的很透彻很易懂,一些原来有疑惑的地方在这本书里面豁然开朗,看起来非常爽! 现在我只记录一下我看这本书记录下的一些东西.那些简单的知识我没有记录,我只记录几个容易遗漏的或者精彩的知识点,以后再看也可当做拾遗之用! 记录 对象,方法,属性和类的通俗解释:对象往往是用名词来表示的(也被称为实例):方法一般都是些动词:属性值则往往是一些形容词:类就是相似对象的共同特征. 什么

《JavaScript面向对象编程指南》译者序

相对于Perl.Python等动态脚本语言来说,JavaScript确实是一门饱受误解的语言.对于译者这种从20世纪90年代末走过来的C++程序员来说,尤其如此.在那个年代,提起JavaScript总是会让人联想起各种花哨的小玩意儿.令人讨厌的恶作剧.浏览器之间的恶斗(例如IE与Netscape)等令人不太愉快的场景.总而言之,我长期以来对JavaScript的评价基本上是比较负面的,认为那不过是一个旁门左道的.不务正业的玩具罢了. 但随着AJAX技术在21世纪最初10年里的爆炸性发展,人们突然

[已读]JavaScript面向对象编程指南

又是一个忽悠人的书名,其实这本书的花了大量内容阐述JS的基础语法,BOM,DOM,事件,ajax(这个和很多js书一样).最后一章则是编程模式与设计模式. 我觉得与面向对象没多大关系,要算的话,prototype与继承,它确实有提到,但是不多(要看继承,还是应该去看<javascript高级程序(第三版)>). 最后一章的设计模式不错,工厂模式.单例模式.装饰器模式与订阅者模式都讲得很详细. PS,这个作者还写过一本书叫<javascript模式>,已经很老了.

《JavaScript面向对象编程指南》读书笔记—Function

4.2.3 Function 函数是一种特殊的数据类型,它实际上是一种对象. 4.2.3.3 call( )和apply( ) 1.在JavaScript中,每个函数都有call()和apply()两个方法.这两个方法的两个功能: (1)用他们来触发函数,并指定相关的调用参数. (2)他可以让一个对象去"借用"另一个对象的方法,并为已所用.这也是非常简单而实用的代码重用. 2.通过一个例子来讲解call(1)定义一个some_obj对象,该对象有一个say()方法: var some_

JavaScript面向对象编程指南——学习笔记1

第1章 引言 1.1 回顾历史 1.2 变革之风 1.3 分析现状 1.4 展望未来 1.5 面向对象的程序设计 1.5.1 对象(属性和方法的集合) 1.5.2 类 (相似对象的共同特征,如麻雀.老鹰都是鸟类) 1.5.3 封装 (将属性和方法集合起来,也有封闭作用域的概念,如封装一个播放器对象) 1.5.4 聚合 (将几个对象合并成一个对象) 1.5.5 继承 (一个实例对象继承父级对象的一些属性和方法) 1.5.6 多态 (一个对象调用其他对象的方法,call和apply) 1.6 OPP

javaScript面向对象编程指南笔记

变量声明: var v1,v2 = 'hello',v3=42; javascript中的数据类型分两部分:基本类型(数字,字符串,布尔值,undefined,null)和对象类型. - 查看变量类型操作符 typeof 变量或数值 - 当一个数字以0开头时,就表示这是一个八进制数.0377 代表十进制数255  :0x前缀的是十六进制数 - Infinity  任何超出了javascript的数,除以0结果也是Infinity - 字符串用于算术运算时,会被当做数字类型使用.字符串 -> 数字

JavaScript面向对象编程指南

1.面向对象程序设计 2.基本数据类型

javascript 面向对象编程指南 的一些题目

1. function C () { this.a = 1; return false; } console.log (typeof new C()); object function C () { this.a = 1; return "bbb" } console.log (typeof new C()); 也是object 除非return {} ,才是真正return的值,其他的都是object

[连载]JavaScript讲义(03)--- JavaScript面向对象编程

[连载]JavaScript讲义(03)--- JavaScript面向对象编程,布布扣,bubuko.com