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

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

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

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

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

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

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

  1. python算法介绍:希尔排序

    python作为一种新的语言,在很多功能自然要比Java要好一些,也容易让人接受,而且不管您是成年人还是少儿都可以学习这个语言,今天就为大家来分享一个python算法教程之希尔排序,现在我们就来看看吧 ...

  2. Python快速教程 尾声(转)

    原文地址: http://www.cnblogs.com/vamei/p/3603046.html 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留 ...

  3. python快速教程-vamei

    2016年10月26日 12:00:53 今天开始着手python的学习,希望能高效快速的学完! Python基础(上)... 7 实验简介... 7 一.实验说明... 8 1. 环境登录... 8 ...

  4. Python 简明教程 ---10,Python 列表

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 程序 = 算法 + 数据结构 -- Nicklaus Wirth 目录 从这句话程序 = 算法 + ...

  5. Python快速教程 尾声

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 写了将近两年的Python快速教程,终于大概成形.这一系列文章,包括Python基 ...

  6. 改写《python基础教程》中的一个例子

    一.前言 初学python,看<python基础教程>,第20章实现了将文本转化成html的功能.由于本人之前有DIY一个markdown转html的算法,所以对这个例子有兴趣.可仔细一看 ...

  7. 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV

    这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...

  8. .Net程序员之Python基础教程学习----列表和元组 [First Day]

    一. 通用序列操作: 其实对于列表,元组 都属于序列化数据,可以通过下表来访问的.下面就来看看序列的基本操作吧. 1.1 索引: 序列中的所有元素的下标是从0开始递增的. 如果索引的长度的是N,那么所 ...

  9. 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇

    始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...

随机推荐

  1. iOS 指定圆角个数

    需要实现的效果很明确,只要左上和右上两个地方圆角,以前都是通过layer 直接设置四个角都变成圆角,然后我就开始了强大的搜索功能 然后我就获得了我想要的东西 技术链接:http://www.xuebu ...

  2. centos设置静态ip地址

    1.修改网卡配置 编辑:vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 #描述网卡对应的设备别名,例如ifcfg-eth0的文件中它为 ...

  3. 2014优秀的好用的20款免费jQuery插件推荐

    2013 年最好的 20 款免费 jQuery 插件,世界买家网 www.buyerinfo.biz在这里分享给大家 这些插件对设计者和开发者都有很大的帮助,希望大家能够喜欢:) 现 今互联网市场上提 ...

  4. Xcode 7如何 免费 真机调试iOS应用

    运行Xcode后,点击菜单中的Preferences…进入Accounts标签,这里选择添加Apple ID: 在弹出的对话框中登入你的Apple ID,没有的话去注册一个就是了,登录成功后会看到下面 ...

  5. ios 开发中 动态库 与静态库的区别

    使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...

  6. 在WPF中获取DataGridTemplateColumn模板定义的内容控件

    xaml格式描述: <DataGrid Name="dataGrid" Grid.Row="1" ItemsSource="{Binding}& ...

  7. github代码收集推荐

    https://github.com/AFNetworking/AFNetworkinghttps://github.com/jessesquires/JSQMessagesViewControlle ...

  8. 利用certutil.exe实现在批处理(bat)中嵌入可执行文件或者各种媒体、图片之类二进制文件的简单方法!

    实际上利用certutil.exe 把二进制文件(包括各种文件,exe可执行程序,图片,声音,mp3) 经过base64编码为文本,可以实现把这些文件嵌入到批处理代码中. 有什么用?: 举个例子,批处 ...

  9. 通过JavaScript改变HTML样式

    语法:Object.style.property=new style; 基本属性表如下: 示例: 改变 <p> 元素的样式,将颜色改为红色,字号改为20,背景颜色改为蓝: <p id ...

  10. django个人总结

    今天是周末,多写写吧,和大家分享交流一下,虽园子django使用者不多,但算作自己的自我提升吧 django的网站建站的一点点自己的建议. 1:隐藏自己的前端行为或者能后端做的尽量不要在前端进行. 如 ...