《Python算法教程》译者序
在计算机的世界中,算法本质上是我们对某一个问题或者某一类问题的解决方案。也就是说,如果我们想用计算机来解决问题的话,就必须将问题的解决思路准确而完整地描述出来,同时计算机也要能理解这个描述。这需要我们这些程序员将整个描述转化成一系列清晰的指令,这些指令要能接收满足一定规范的输入,并在有限的时间内产生出相应的输出。我们通常将这些指令称为程序,而算法则是程序的灵魂。
然而,程序光有灵魂是不够的。例如,诚然搜索算法可以用来解决搜索类问题,但我们通常是不会为搜索而搜索的。所有搜索算法在进入程序的时候,都要面对一些实质性的内容,比如新闻信息、论文存档,而这些内容往往都有具体的存储系统,如数据库、文件系统等。这些系统本身也有各自的数据结构,如图、树、列表等,所以算法并不是我们写程序时唯一要考虑的问题。在很多现实情况下,它甚至还不是主要问题。
所以,如果用C或C++来进行编程教学的话,我们对于算法设计的专注力很容易被数据结构这种更为基础的细节干扰。毕竟用这些语言实现并使用好数据结构本身就已经很复杂了。因此,如果想专注于算法教学,就需要一种不太需要程序员在数据结构上花太多时间的编程语言。
在相当长的一段时间里,我们在进行算法设计的时候通常用的是一种更接近于人类语言的“伪代码”。这种代码足够抽象,能让我们专注于算法的表达,但遗憾的是,它们无法在计算机中执行,我们最终还是要将其翻译成真正的编程语言。这很管用,但显然不够优雅。我们需要一种既能在抽象层面接近于这些“伪代码”,又能在计算机上像C那样通用的语言。Python就是这样一种语言。
这本书就是一本用Python来进行算法设计教学的书,本书的作者在其上一本著作《Python基础教程》中已经展现了其丰富的教学经验和技术实力,我本人亦从中受益匪浅。能翻译他的后续作品,我深感荣幸。但翻译一本算法书所需要付出的时间和精力还是远远超出了我的想象。而且,当我译了近八个月,终于快将本书第1版译完的时候,它的第2版又出版了。于是我不得不找了两个朋友(见译者简介),他们的工作是重新针对第2版对译稿进行校对、增改以及最后两章的初译。我很感谢他们给予我的帮助。除此之外,我还要感谢我的好朋友、《深入解析Windows操作系统》(第6版)的译者范德成工程师,他全程参与了本书的校对,对译稿进行了严格审阅,提供了很多宝贵建议。
祝愿这本书能给读者们带来帮助,同时也希望你们阅读快乐。
《Python算法教程》译者序的更多相关文章
- python算法介绍:希尔排序
python作为一种新的语言,在很多功能自然要比Java要好一些,也容易让人接受,而且不管您是成年人还是少儿都可以学习这个语言,今天就为大家来分享一个python算法教程之希尔排序,现在我们就来看看吧 ...
- Python快速教程 尾声(转)
原文地址: http://www.cnblogs.com/vamei/p/3603046.html 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留 ...
- python快速教程-vamei
2016年10月26日 12:00:53 今天开始着手python的学习,希望能高效快速的学完! Python基础(上)... 7 实验简介... 7 一.实验说明... 8 1. 环境登录... 8 ...
- Python 简明教程 ---10,Python 列表
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 程序 = 算法 + 数据结构 -- Nicklaus Wirth 目录 从这句话程序 = 算法 + ...
- Python快速教程 尾声
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 写了将近两年的Python快速教程,终于大概成形.这一系列文章,包括Python基 ...
- 改写《python基础教程》中的一个例子
一.前言 初学python,看<python基础教程>,第20章实现了将文本转化成html的功能.由于本人之前有DIY一个markdown转html的算法,所以对这个例子有兴趣.可仔细一看 ...
- 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV
这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...
- .Net程序员之Python基础教程学习----列表和元组 [First Day]
一. 通用序列操作: 其实对于列表,元组 都属于序列化数据,可以通过下表来访问的.下面就来看看序列的基本操作吧. 1.1 索引: 序列中的所有元素的下标是从0开始递增的. 如果索引的长度的是N,那么所 ...
- 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇
始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...
随机推荐
- Java中main函数只能调用同类中的静态方法?
如果想调用本类中的非静态方法可以这么来写: public class TT{ public static void main(String[] args){ TT t = new TT(); t.fu ...
- redis缓存技术学习
1 什么是redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串). list(链表).set(集合)和zset ...
- ubuntu 搭建maven库 2.14.2-01并配置离线索引文件
前提 安装JDK版本1.8或者以上 1 下载 http://www.sonatype.org/nexus/archived/ 选择相应的版本 2 复制到/usr/local 下解压 sudo cp ...
- Win7 下IIS(7.5)发布 ASP.NET MVC
操作系统 Win 7 旗舰版 开发工具 VS2015 使用技术 IIS7.5 + MVC4.0 一 . 在IIS上部署程序后出现错误-当前标识(NT AUTHORITY/NETWORK SERVICE ...
- InnoDB 存储引擎的锁机制
测试环境隔离级别:REPEATABLE-READ 行级别的 - Share and Exclusive Locks 共享锁 S:允许持有S锁的事务对行进行读操作 排他锁 X: 允许持有X锁的事务对行进 ...
- class can not be find with platformType:1 step 1
使用第三方库的时候 (配合cocopods)混合使用一定要注意 为什么会出现这样的问题... 苦苦难为我半天时间 都有想打人的冲动 前天一切正常今天出来个这 原因很简单当使用cocopods的时候默认 ...
- 涵涵和爸爸习惯养成进度表(三)(June 25 - )
规则说明 23天内,没有哭脸,不超过三个无表情脸,可以给一个奖励(动画书等) 涵涵违反规则,在爸爸和妈妈都同意的情况下,可以给无表情脸 爸爸违反规则,在妈妈和涵涵都同意的情况下,可以给无表情脸 获奖记 ...
- MVC 支持同名路由,不同命名空间
有时候我们会碰到两个项目合在一起,那么必然会碰到两个同名的controller,其实MVC在注册路由,添加Route的时候可以指定当前规则解析那个命名空间下的所有Controller. 注:Contr ...
- C 计算数组长度
int data[4],length; length=sizeof(data)/sizeof(data[0]); //数组占内存总空间除以单个元素占内存空间大小,即等于元素个数 printf(&qu ...
- Liunx的各种小指令
tsshutdown -y ----关闭所有服务tsboot -g COMMON ----启动公共服务tsboot -g ETXX ----启动XX服务 tsma -e oet1 -l 172.X ...