笔者最近出版了一本书,先给大家亮个相吧:
首先说明一下,这里的“算法”不是人工智能领域的目标函数最优化算法,而是计算机领域的更通常意义上的算法。即,一个接受输入数据,对其进行某些操作并产生输出的有限指令序列。
此种意义上的算法,是编程的核心。
与编程结缘的过往
第一次接触编程是 20 世纪 80 年代:
当时参加的是宋庆龄儿童活动中心举办的一 项编程体验活动,就是照着前面黑板上写的代码在现场的机器上敲一遍,然后运行。
当时到底用的是什么语言已经记不清了,但是当年却花费了好大力气,摸索着敲了一遍完全不清楚 其含义的字符串,然后按照说明运行,最终毫无动静。
虽然请教了巡场的工作人员,但他们也不知道是什么问题,到离场时都没能让程序“跑”起来。
难道,编程就是要用计算机“写” 一堆“密码”吗?如果这堆密码“跑”起来了,又会是怎样的效果呢?
初次不成功的体验后,直到 20 世纪 90 年代,因为学校开设了计算机课,笔者才再度接触编程:
老师在课堂上讲了一点 Basic 语言知识,编写的是 a+b=c 之类的程序,然后运行得出结果。
笔者由此知道了编程语言,期末考试成绩也不错,但对于编程是什么,计算 机能干什么,还是不明所以。
国外的影视剧中用计算机能做生意,能管理企业,但我们编写 的程序只能做算术题,这是为什么呢?
算法与计算思维
上大学后,除了编程语言,笔者还学习了“数据结构”、“计算机原理”、“计算机体系结构”、 “编译原理”、“操作系统”和“软件工程”等专业课程,这才逐渐明白了:算法是什么,计算机是如何运行的……
后来进入职场,当时十几年程序员,开发过不同类型的实践项目,在工作中不断学习、揣摩,才逐渐领悟到抽象算法和现实问题之间的关系 :软件开发就是通过各种算法实现具体的业务逻辑,把繁杂的过程抽象化、可计算化的过程。
而软件开发工作背后的思维逻辑——将一个个具体的问题及其解决方案表达成计算机可 以处理的形式,并设计计算的方式,将客观世界解释为一个复杂的信息处理过程——则被称为计算思维。
世界上的问题有大有小,所需要的资源有多有少,但抽象到最高层面的方法论可以是一致的。计算思维是各行各业都需要的。
通过对经典算法的研习和实践,掌握“用数值表达现实事物,用运算描述任务目标,再通过算法处理数据找到到达目标的最优路径”的方法。
如此,既是一种有效的思考力训练,又是形成计算思维的过程。由此形成的思维能力是内力,而同步掌握的编程技能则属外功。
综上,就是笔者写作本书的目的。
关于《算法第一步》
本书针对没有任何程序设计基础的读者,同步讲解两方面内容 :使用 Python 语言编写程序 ;基础经典算法。由编程学算法,以算法促编程。
同时,为了帮助读者理解算法,本书还介绍了计算机的基础运行原理。在大学计算机专业课程中,本书所介绍的内容往往被拆分在如下几门课程中:
程序设计语言(如 Python)
数据结构
计算机组成原理和体系结构
本书将几个领域的知识融合在一起,从日常事物开始,介绍软件、程序和算法的基础知识,接着讲解了编程的两大要素:控制流程和数据结构。
由数据结构的限制和实现引出现代电子计算机的基础——二进制和冯·诺依曼结构。
然后进入算法阶段,由简至难,一边讲述算法原理,一边展示它们的编程实现。还介绍了作为算法思维基础的分治和引递归等算法策略。
为了使零基础的读者能够上手编程,本书从操作角度阐述了编程工具的使用和程序编写、运行、调试的过程。
下面放几张实拍图:
感谢专业的设计师帮我改图片,专业的编辑帮我审稿,一起打造出《算法第一步》这个产品。手捧新书,还是挺激动的,希望这本书能够大卖!
想入手的朋友建议趁早,优惠非常划算,点击链接或长按识别下方二维码就可以购买:
京东:
https://item.jd.com/13034396.html
当当:
http://product.dangdang.com/29162832.html
京东二维码
当当二维码