新書推薦:
《
推荐连接万物
》
售價:HK$
63.8
《
严复与福泽谕吉启蒙思想比较(王中江著作系列)
》
售價:HK$
165.0
《
甘于平凡的勇气
》
售價:HK$
49.5
《
存在与结构:精神分析的法国转向——以拉康与萨特为中心
》
售價:HK$
52.8
《
生成式人工智能:AIGC与多模态技术应用实践指南
》
售價:HK$
108.9
《
石油帝国的兴衰:英国的工业化与去工业化
》
售價:HK$
97.9
《
古典的回響:溪客舊廬藏明清文人繪畫
》
售價:HK$
437.8
《
根源、制度和秩序:从老子到黄老学(王中江著作系列)
》
售價:HK$
121.0
|
編輯推薦: |
笔者作为资深的企业软件设计师和架构师,主持研发的产品PSA多次荣获软件技术和产品奖:
2002年获得全球年度开发伙伴奖
2007年获得澳大利亚最佳第三方开发伙伴奖
2014年获得非洲年度开发伙伴奖
在超过二十年的职业生涯中,主持过多个国家大型系统研发:
2006年负责开发中国Veolia Water项目管理系统
2007 年负责开发加拿大Avantage项目及计费系统(ATBS)
2009年负责开发埃塞俄比亚电信(ETC)运营系统
2013年负责开发加纳民航局(GCAA)人力资源系统
|
內容簡介: |
本书是关于计算机编程的科普书,它包含了计算机软件的发展历史、原理、数据结构,以及基本算法等内容,并进一步探讨了动态规划、概率统计和神经网络等进阶知识。作者通过轻松的笔调,由浅入深地对编程的本质进行了直观、具体的讨论。虽然书中的例子都是用Python编写的,但是介绍的编程方法和思想却是通用的。书中的实例都有对应的完整代码实现,涉及初等数学、数据结构、排序与查找、数理统计、动态规划及神经网络等多个方面。这些实例把编程原理讲解和程序代码结合在一起,从而让概念更加容易理解。
本书适合学习Python,以及编程的读者阅读。
|
關於作者: |
郭屹:中国Java研发工程师鼻祖之一,JDBC Driver、Minis开发者,Norming软件国际CTO。曾在Sun Microsystems公司Java研发中心担任J2EE研发工程师。
|
目錄:
|
目 录
前言
第1章 程序、数字与进制1
1.1 概述1
1.2 何谓程序?1
1.3 计算机只有两根手指?3
1.3.1 为什么偏偏是二进制?3
1.3.2 计算机与十进制4
1.4 Python怎么掰手指?4
1.5 Python语言入门5
第2章 计算机内部探秘8
2.1 计算机本来就叫计算机8
2.2 化计算为加法9
2.2.1 从小学的1 1开始9
2.2.2 计算机的移位操作10
2.2.3 不单单是乘除法实现12
2.3 进制转换及数据存储14
2.3.1 进制的转换14
2.3.2 计算机如何存储数据?15
2.3.3 形象一点来看晶体管16
2.3.4 抽象一点来看数据存储逻辑19
2.3.5 字符的编号20
2.4 从加法到芯片20
2.4.1 万法归加法20
2.4.2 自己做个加法器21
2.5 101页报告改变了世界23
2.5.1 又笨又快的图灵机23
2.5.2 从101页报告到极简计算机25
2.5.3 跟着“极简”执行代码26
第3章 编程基础概念31
3.1 计算机的外包装31
3.2 计算机的高级语言32
3.3 Goto语句有害33
3.4 说说数据结构34
3.5 面向对象编程36
3.5.1 什么是面向对象编程?36
3.5.2 Python的混合编程36
3.6 进程与线程37
3.7 递推与递归38
3.8 关于分治39
3.9 算法及性能分析39
第4章 数学与编程是一家41
4.1 什么是函数?41
4.1.1 先算一个阶乘41
4.1.2 往前走一步—求平方根43
4.1.3 再往前走一步—求阶乘的
平方根46
4.1.4 Python常见的库49
4.2 面向对象编程,再来求一求
素数50
4.2.1 捋清思路50
4.2.2 过程执行52
4.2.3 验证哥德巴赫猜想53
4.2.4 验证与证明55
4.3 递归,还记得斐波那契数列吗?55
4.3.1 斐波那契数列55
4.3.2 生活中的斐波那契数列56
4.3.3 用递归重写阶乘57
4.4 深入递归,汉诺塔问题58
4.4.1 汉诺塔传说58
4.4.2 塔也是递归,递归也是树59
4.5 Python解方程61
4.5.1 二次方程61
4.5.2 高次方程63
4.5.3 Python解同余方程64
4.6 Python用刘徽割圆术求面积66
4.6.1 刘徽割圆术求面积66
4.6.2 进入递推,交给Python68
4.7 跟着Ada计算伯努利数
(向Ada致敬)70
4.7.1 分析计算伯努利数70
4.7.2 为什么要向Ada致以敬意?72
第5章 字符处理73
5.1 先来谈谈字符编码73
5.1.1 首先是Unicode73
5.1.2 有了Unicode还不够74
5.2 Python如何操作字符串75
5.2.1 丰富的字符串操作75
5.2.2 开始造个轮子76
5.3 凯撒密码(Caesar cipher)78
5.4 字符串查找(KMP算法)80
5.4.1 从笨的方法开始80
5.4.2 聪明一点的方法83
5.5 Python如何操作文件88
5.5.1 操作文件的方式88
5.5.2 简单地演练一下88
5.6 JSON是谁90
5.6.1 JSON对象90
5.6.2 解析JSON91
5.6.3 解析复杂JSON93
5.7 关于正则表达式95
5.7.1 正则表达式的功用95
5.7.2 正则解释器97
5.7.3 正则表达式的应用99
第6章 数据结构103
6.1 Python的序列103
6.1.1 ArrayList和LinkedList操作103
6.1.2 首先是ArrayList104
6.1.3 接下来是LinkedList107
6.2 关于栈—先进后出112
6.3 括号如何匹配114
6.4 数学表达式解析115
6.4.1 计算机读取数学表达式115
6.4.2 获取操作数与操作符序列116
6.4.3 开始计算119
6.5 关于HashMap121
6.5.1 Python中的字典操作121
6.5.2 手动做HashMap122
6.5.3 增删改查123
6.5.4 HashMap遍历127
6.5.5 成果验收128
6.6 树之遍历130
6.6.1 先构建一棵二叉树130
6.6.2 再遍历二叉树131
6.6.3 换一种方式遍历133
6.7 树之构建和查找134
6.7.1 还是先构建树134
6.7.2 然后查找特定元素136
6.7.3 让树更加泛用137
6.8 平衡树(AVL算法)138
6.8.1 平衡二叉树138
6.8.2 平衡二叉树增加节点140
6.8.3 不平衡就旋转142
6.9 图的表示146
6.10 拓扑排序148
6.11 短路径(Dijkstra算法)151
6.12 关键路径CP154
第7章 查找与排序160
7.1 查字典—冒泡排序160
7.2 每次吃甜的葡萄—选择
排序161
7.3 抓牌看牌—插入排序162
7.3.1 先来描述一下场景162
7.3.2 进入Python162
7.4 向左向右看齐—快速排序164
7.4.1 先来分而治之164
7.4.2 开始编写快速排序程序166
7.5 先分叉再排序—堆排序167
7.5.1 先理解堆排序思路167
7.5.2 Python的时间169
7.6 不会淘汰的季后赛—归并
排序170
7.7 以上排序的比较172
7.8 插入排序2.0—希尔排序173
7.9 桶排序—计数排序174
7.10 二分查找(试着做一个
字典)176
第8章 动态规划182
8.1 游戏币贪心算法—DP导入182
8.1.1 游戏币的动态规划182
8.1.2 随机数字三角的动态规划184
8.2 序列的公约数—LCS186
8.3 基因序列比对(Levenshtein
算法)187
8.4 背包问题192
8.4.1 背包问题解析192
8.4.2 开始变成程序194
第9章 数理统计与人工智能196
9.1 人均收入统计196
9.1.1 先从数据出发196
9.1.2 进入程序世界198
9.1.3 来看点经济学(基尼系数)199
9.2 用贝叶斯公式智能诊断201
9.2.1 先来谈谈概率201
9.2.2 “智能医生”的训练202
9.3 预
|
內容試閱:
|
前 言
欢迎来到程序的世界。
使用一门编程语言,主要的目的是用它来解决各种实际问题。本书的重点就是如何用Python语言来解决问题。因此本书会用很多篇幅讲解编程技术本身,同时也将会有大量的代码演示。
在用计算机进行编程时,会处理各种数据,使用各种算法,所以,本书将涉及计算机基础原理、数据结构、算法等方面的知识。由浅入深,一步步讲解如何编写程序。本书讲解的知识绝不仅限于Python,这里的知识是通用的,读者可以不费劲地用另一门语言替代书中的Python程序。
本书将按照章节由浅入深地讲解编程的基本内容。初会介绍计算机的发展历史以及原理,让读者了解到程序的思维是如何起源的,一段程序代码在计算机内部是如何执行的;然后从初等数学题目开始,用程序来解决初等数学的常见问题,如找素数、列数列、算面积以及解方程;之后再扩展到用程序来处理字符,处理文件;接着会介绍常见的数据结构,如线性序列、树,以及图,并讲解基本的排序与查找算法,现实中常用的动态规划方法;后,会介绍数理统计以及人工智能中的神经网络。
有了这些知识,相信大家会对编程的本质有一个初步的了解。
本书面向具有中等教育文化程度以上,且对编程感兴趣的读者,行文风格兼具趣味性和严谨性。
由于作者水平有限,疏漏之处在所难免,恳请广大读者批评指正。
|
|