Python编程无师自通 专业程序员的养成 ([美]科里·奥尔索夫(Cory Althoff)) (z-library.sk, 1lib.sk, z-lib.sk)
Author: [美]科里·奥尔索夫(Cory Althoff)
技术
本书作者是一名自学成才的程序员,经过一年的自学,掌握了编程技能并在eBay找到了一份软件工程师的工作。本书是作者结合个人经验写作而成,旨在帮助读者从外行成长为一名专业的Python程序员。 本书包括5部分内容:第一部分(第1~11章)介绍了编程基础知识,以及函数、容器、字符串、循环和模型等概念;第二部分(第12~15章)介绍了编程范式和面向对象编程等知识;第三部分(第16~20章)介绍了Bash、正则表达式、包管理器和版本控制等编程工具方面的知识;第四部分(第21~22章)主要涉及数据结构和算法方面的知识;第五部分(第23~27章)则是关于求职与团队协作的内容。 本书可以满足几乎所有想要学习编程的初学者。本书适合高中、大学阶段想要自学编程的学生,以及其他行业想入门编程的人,同时也适合作为编程入门的培训教材。
📄 File Format:
PDF
💾 File Size:
3.8 MB
8
Views
0
Downloads
0.00
Total Donations
📄 Text Preview (First 20 pages)
ℹ️
Registered users can read the full content for free
Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.
📄 Page
1
分类建议:计算机/编程语言/Python 人民邮电出版社网址:www.ptpress.com.cn 封面设计:董志桢 “我总是随身携带几本自学编程的书,给任何来找我寻求职业建议的人。” —— 罗宾·艾布拉姆斯(Robin Abrams), HCL 科技公司、FactSet Research、Lattice 半导体公司和 Sierra Wireless 公司的董事会成员 “想学习专业的编程吗?那就遵循科里的建议。” —— 戴维·菲利普斯(David Phillips),Hackbright Academy 编程学校联合创始人 “这本书给我留下了难以置信的印象。” —— 乔安·布坎南(JoAnn Buchanan), 艾伦脑科学研究所(Allen Institute for Brain Science)高级研究员 “学习编程在金融领域变得越来越重要,奥尔索夫的书教会了我保持竞争力所需要的技能。” —— 德里克·舍费尔(Derek Schaefer),嘉信理财(Charles Schwab)高级财务经理 “这本书读起来很愉快,我从没想过我会如此评价一本技术图书。” —— 梅琳达·萨克斯(Melinda Sacks),《圣何塞水星报》作家、编辑 本书一共分为五个部分: 第一部分 介绍编程基础知识以及函数、容器、字符串、循环和模型等概念; 第二部分 介绍编程范式和面向对象编程等知识; 第三部分 介绍 Bash、正则表达式、包管理器和版本控制等编程工具; 第四部分 介绍数据结构和算法方面的知识; 第五部分 介绍求职和团队协作的相关内容。 异步社区提供书中所有的源代码下载。每章结尾都有习题以便读者回顾所学内容,所有习题的答案也都提供下载。 科里·奥尔索夫 在大学阶段主修政治学,毕业后通过 自学编程技能,成功进入 eBay 公司 工作,开启了其软件工程师的生涯。 随后他在硅谷工作多年,现已利用技 术开始了自主创业。本书是作者基于 自己成功经验写作的,专为所有想要 自学编程的初学者准备。即便你并不 想成为一名专业的软件工程师,读完 本书,也能在日常工作中运用编程技 能来提升工作能力、提高工作效率。 作者简介 宋秉金 曾参与翻译《Python 参考手册(第 四 版· 修 订 版)》《OpenStack 云 计算实战手册》等技术图书。他也 是一名通过自学掌握 Python 的程序 员,目前在互联网公司从事产品方向 工作,平时喜欢自己写写代码。由于 对 Python 的喜爱,也为了帮助更多 的人学习 Python、掌握编程技能,译 者通过微信公众号“编程派”与广大 Python 爱好者分享相关的优质内容。 译者简介 [ 美 ] 科里·奥尔索夫(Cory Althoff)/著 宋秉金/译 THE SELF-TAUGHT PROGRAMMER 无师自通 编 程 无 师 自 通 Python Python 专业程序员的养成 专 业 程 序 员 的 养 成 The Definitive Guide to Programming Professionally 编程 FM49710Python编程无师自通——专业程序员的养成.indd 1-2,4-5 18-12-6 下午3:10 异步社区会员 APP Studio(13979775103) 专享 尊重版权
📄 Page
2
[ 美 ] 科里·奥尔索夫(Cory Althoff)/著 宋秉金/译 THE SELF-TAUGHT PROGRAMMER 无师自通 Python 专业程序员的养成 The Definitive Guide to Programming Professionally 编程 人 民 邮 电 出 版 社 北 京 FM49710Python编程无师自通——专业程序员的养成.indd 11 18-12-6 下午3:10 异步社区会员 APP Studio(13979775103) 专享 尊重版权
📄 Page
3
版权声明 The Self-Taught Programmer by Cory Althoff ISBN:978-1-5202-8817-8 Copyright ©2017 by Cory Althoff. Original English language edition published by arrangement with Hodgman Literary LLC, through The Grayhawk Agency Ltd. Simplified Chinese-language edition Copyright ©2018 by Posts & Telecom Press. All rights reserved. 本书中文简体字版由 Hodgman Literary LLC 授权人民邮电出版社独家出版。未经出版者书面许可,不得 以任何方式复制或抄袭本书内容。 版权所有,侵权必究。 著 [美] 科里·奥尔索夫(Cory Althoff) 译 宋秉金 责任编辑 杨大可 责任印制 焦志炜 人民邮电出版社出版发行 北京市丰台区成寿寺路 11 号 邮编 100164 电子邮件 315@ptpress.com.cn 网址 http://www.ptpress.com.cn 涿州市京南印刷厂印刷 开本:8001000 1/16 印张:16 字数:288 千字 2019 年 1 月第 1 版 印数:1 – 3 000 册 2019 年 1 月河北第 1 次印刷 著作权合同登记号 图字: 01-2017-8621 号 定价:59.00 元 读者服务热线:(010)81055410 印装质量热线:(010)81055316 反盗版热线:(010)81055315 广告经营许可证:京东工商广登字 20170147 号 异步社区会员 APP Studio(13979775103) 专享 尊重版权
📄 Page
4
内容提要 本书作者是一名自学成才的程序员,经过一年的自学,掌握了编程技能并在 eBay 找到了一份软件工程师的工作。本书是作者结合个人经验写作而成,旨在帮助读者从外 行成长为一名专业的 Python 程序员。 本书包括 5 部分内容:第一部分(第 1~11 章)介绍了编程基础知识,以及函数、 容器、字符串、循环和模型等概念;第二部分(第 12~15 章)介绍了编程范式和面向对 象编程等知识;第三部分(第 16~20 章)介绍了 Bash、正则表达式、包管理器和版本 控制等编程工具方面的知识;第四部分(第 21~22 章)主要涉及数据结构和算法方面的 知识;第五部分(第 23~27 章)则是关于求职与团队协作的内容。 本书可以满足几乎所有想要学习编程的初学者。本书适合高中、大学阶段想要自学 编程的学生,以及其他行业想入门编程的人,同时也适合作为编程入门的培训教材。 异步社区会员 APP Studio(13979775103) 专享 尊重版权
📄 Page
5
致 谢 我要感谢所有在本书撰写、出版过程中给予帮助的人。我的父母艾比·奥尔索夫和 詹姆斯·奥尔索夫,在整个过程中给了我极大的支持。我父亲一页一页地读完了本书, 并提出了非常宝贵的反馈建议。没有他的帮助,这本书就不会问世。我女朋友劳伦·沃 德也没有抱怨我把大部分时间花在写书上。我要感谢本书的插画师布莱克·鲍尔斯,本 书的编辑史蒂夫·布什、麦德林·鲁斯、潘·瓦拉塔和劳伦斯·圣菲利波,以及我的朋 友安东尼·辛都,我在书中引用了我们之间多次讨论的内容。我还要感谢兰迪·芬勒支 持我在 Kickstarter 上发起的写作项目,并介绍潘·瓦拉塔给我认识。特别感谢我以前的 领导安札·阿法克,在我加入 eBay 时那么地支持我。还要感谢所有参与审阅本书的读 者,感谢你们提供的反馈。最后,我想感谢 Kickstarter 网站上所有支持本书项目的朋友, 尤其是吉姆·春、萨尼·李和雷·福瑞斯特。非常感谢大家的支持! 异步社区会员 APP Studio(13979775103) 专享 尊重版权
📄 Page
6
资源与支持 本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。 配套资源 本书提供如下资源: • 本书源代码; • 书中习题答案。 要获得以上配套资源,请在异步社区本书页面中点击 ,跳转到下载界面, 按提示进行操作即可。注意:为保证购书读者的权益,该操作会给出相关提示,要求输 入提取码进行验证。 如果您是教师,希望获得教学配套资源,请在社区本书页面中直接联系本书的责任编辑。 提交勘误 作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发 现的问题反馈给我们,帮助我们提升图书的质量。 当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,点击“提交勘误”, 输入勘误信息,点击“提交”按钮即可。本书的作者和编辑会对您提交的勘误进行审核, 确认并接受后,您将获赠异步社区的 100 积分。积分可用于在异步社区兑换优惠券、样 书或奖品。 异步社区会员 APP Studio(13979775103) 专享 尊重版权
📄 Page
7
与我们联系 我们的联系邮箱是 contact@epubit.com.cn。 如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书 书名,以便我们更高效地做出反馈。 如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可 以发邮件给我们;有意出版图书的作者也可以到异步社区在线提交投稿(直接访问 www.epubit.com/selfpublish/submission 即可)。 如果您是学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也 可以发邮件给我们。 如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全 部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举 动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。 关于异步社区和异步图书 “异步社区”是人民邮电出版社旗下 IT 专业图书社区,致力于出版精品 IT 技术图书 和相关学习产品,为作译者提供优质出版服务。异步社区创办于 2015 年 8 月,提供大量 精品 IT 技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区 官网 https://www.epubit.com。 “异步图书”是由异步社区编辑团队策划出版的精品 IT 专业图书的品牌,依托于人民邮 电出版社近 30 年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书 的 LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。 异步社区 微信服务号 异步社区会员 APP Studio(13979775103) 专享 尊重版权
📄 Page
8
目 录 第一部分 编程简介 第 1 章 概述............................................. 3 1.1 本书的结构 ................................. 4 1.2 从终点出发 ................................. 4 1.3 你不是一个人在战斗 .................. 5 1.4 自学的优势 ................................. 5 1.5 为什么应该编程.......................... 5 1.6 坚持不懈 ..................................... 6 1.7 本书的格式 ................................. 6 1.8 本书使用的技术.......................... 6 1.9 术语表......................................... 7 1.10 挑战练习 ................................... 7 第 2 章 起步............................................. 9 2.1 什么是编程 ................................. 9 2.2 什么是 Python ........................... 10 2.3 安装 Python............................... 10 2.4 问题解答 ................................... 11 2.5 交互式 shell............................... 11 2.6 保存程序 ................................... 12 2.7 运行示例程序 ........................... 12 2.8 术语表....................................... 13 2.9 挑战练习 ................................... 13 第 3 章 编程概论................................... 15 3.1 示例........................................... 15 3.2 注释........................................... 16 3.3 打印........................................... 17 3.4 代码行 ....................................... 17 3.5 关键字 ....................................... 18 3.6 间距........................................... 18 3.7 数据类型 ................................... 19 3.8 常量和变量 ............................... 21 3.9 语法........................................... 24 3.10 错误与异常.............................. 25 3.11 算术操作符.............................. 26 3.12 比较操作符.............................. 29 3.13 逻辑操作符.............................. 31 3.14 条件语句 ................................. 34 3.15 语句 ......................................... 38 3.16 术语表 ..................................... 40 3.17 挑战练习 ................................. 42 第 4 章 函数........................................... 43 4.1 表达概念 ................................... 43 4.2 函数........................................... 44 4.3 定义函数 ................................... 44 4.4 内置函数 ................................... 47 4.5 复用函数 ................................... 49 4.6 必选及可选参数 ........................ 51 4.7 作用域 ....................................... 52 4.8 异常处理 ................................... 55 异步社区会员 APP Studio(13979775103) 专享 尊重版权
📄 Page
9
目录 2 4.9 文档字符串 ............................... 58 4.10 有需要才使用变量 .................. 58 4.11 术语表 ..................................... 59 4.12 挑战练习 ................................. 59 第 5 章 容器........................................... 61 5.1 方法........................................... 61 5.2 列表........................................... 62 5.3 元组........................................... 66 5.4 字典........................................... 69 5.5 容器嵌套容器 ........................... 72 5.6 术语表....................................... 76 5.7 挑战练习 ................................... 76 第 6 章 字符串操作............................... 77 6.1 三引号字符串 ........................... 77 6.2 索引........................................... 77 6.3 字符串是不可变的.................... 79 6.4 字符串拼接 ............................... 79 6.5 字符串乘法 ............................... 80 6.6 改变大小写 ............................... 80 6.7 格式化....................................... 80 6.8 分割........................................... 82 6.9 连接........................................... 82 6.10 去除空格 ................................. 83 6.11 替换......................................... 84 6.12 查找索引 ................................. 84 6.13 in 关键字 ................................. 85 6.14 字符串转义 ............................. 85 6.15 换行符 ..................................... 86 6.16 切片......................................... 87 6.17 术语表 ..................................... 88 6.18 挑战练习 ................................. 89 第 7 章 循环........................................... 91 7.1 for 循环 ..................................... 91 7.2 range 函数 ................................. 95 7.3 while 循环 ................................. 95 7.4 break 语句 ................................. 96 7.5 continue 语句............................. 98 7.6 嵌套循环 ................................... 99 7.7 术语表 ..................................... 100 7.8 挑战练习 ................................. 101 第 8 章 模块......................................... 103 8.1 导入内置模块.......................... 103 8.2 导入其他模块.......................... 105 8.3 术语表 ..................................... 107 8.4 挑战练习 ................................. 107 第 9 章 文件......................................... 109 9.1 写文件操作 ............................. 109 9.2 自动关闭文件.......................... 110 9.3 读取文件 ................................. 111 9.4 CSV 文件 ................................ 112 9.5 术语表 ..................................... 114 9.6 挑战练习 ................................. 114 第 10 章 综合练习............................... 115 10.1 Hangman................................ 116 10.2 挑战练习 ............................... 119 第 11 章 练习....................................... 121 11.1 阅读 ....................................... 121 11.2 其他资源 ............................... 121 11.3 寻求帮助 ............................... 121 异步社区会员 APP Studio(13979775103) 专享 尊重版权
📄 Page
10
目录 3 第二部分 面对对象编程简介 第 12 章 编程范式 .............................. 125 12.1 状态....................................... 125 12.2 过程式编程 ........................... 125 12.3 函数式编程 ........................... 127 12.4 面向对象编程........................ 128 12.5 术语表 ................................... 133 12.6 挑战练习 ............................... 134 第 13 章 面向对象编程的 四大支柱 .............................. 135 13.1 封装....................................... 135 13.2 抽象....................................... 138 13.3 多态....................................... 138 13.4 继承....................................... 140 13.5 组合....................................... 143 13.6 术语表 ................................... 144 13.7 挑战练习 ............................... 144 第 14 章 深入面向对象编程 .............. 145 14.1 类变量与实例变量 ................ 145 14.2 魔法方法 ............................... 147 14.3 is............................................ 149 14.4 术语表 ................................... 150 14.5 挑战练习 ............................... 150 第 15 章 综合练习 .............................. 151 15.1 卡牌....................................... 151 15.2 牌堆....................................... 153 15.3 玩家....................................... 154 15.4 游戏....................................... 155 15.5 战争....................................... 157 第三部分 编程工具简介 第 16 章 Bash ..................................... 163 16.1 跟随练习 ............................... 163 16.2 找到 Bash .............................. 164 16.3 命令 ....................................... 164 16.4 最近命令 ............................... 165 16.5 相对路径与绝对路径 ............ 165 16.6 导航 ....................................... 166 16.7 旗标 ....................................... 168 16.8 隐藏文件 ............................... 169 16.9 管道 ....................................... 169 16.10 环境变量 ............................. 169 16.11 用户 ..................................... 170 16.12 了解更多 ............................. 171 16.13 术语表 ................................. 171 16.14 挑战练习 ............................. 172 第 17 章 正则表达式........................... 173 17.1 初始配置 ............................... 173 17.2 简单匹配 ............................... 174 17.3 匹配起始位置........................ 176 17.4 匹配多个字符........................ 177 17.5 匹配数字 ............................... 178 17.6 重复 ....................................... 179 17.7 转义 ....................................... 181 17.8 正则工具 ............................... 182 17.9 术语表 ................................... 182 17.10 挑战练习 ............................. 183 第 18 章 包管理器............................... 185 18.1 包........................................... 185 18.2 pip.......................................... 185 异步社区会员 APP Studio(13979775103) 专享 尊重版权
📄 Page
11
目录 4 18.3 虚拟环境 ............................... 188 18.4 术语表 ................................... 188 18.5 挑战练习 ............................... 188 第 19 章 版本控制 .............................. 189 19.1 代码仓库 ............................... 189 19.2 入门....................................... 190 19.3 推送和拉取 ........................... 191 19.4 推送示例 ............................... 192 19.5 拉取示例 ............................... 195 19.6 回退版本 ............................... 195 19.7 diff......................................... 196 19.8 下一步 ................................... 197 19.9 术语表 ................................... 197 19.10 挑战练习 ............................. 198 第 20 章 融会贯通 .............................. 199 20.1 HTML.................................... 199 20.2 爬取 Google 新闻 .................. 200 20.3 术语表 ................................... 204 20.4 挑战练习 ............................... 204 第四部分 计算机科学简介 第 21 章 数据结构 .............................. 207 21.1 数据结构 ............................... 207 21.2 栈 .......................................... 207 21.3 使用栈逆转字符串 ................ 210 21.4 队列....................................... 211 21.5 购票队列 ............................... 213 21.6 术语表 ................................... 215 21.7 挑战练习 ............................... 216 第 22 章 算法 ...................................... 217 22.1 FizzBuzz................................ 217 22.2 顺序搜索 ............................... 218 22.3 回文词 ................................... 219 22.4 变位词 ................................... 220 22.5 计算字母频数........................ 220 22.6 递归 ....................................... 221 22.7 术语表 ................................... 223 22.8 挑战练习 ............................... 224 第五部分 找到工作 第 23 章 最佳编程实践....................... 227 23.1 写代码是最后的手段 ............ 227 23.2 DRY....................................... 227 23.3 正交性 ................................... 227 23.4 每个数据都只应保存在 一处....................................... 228 23.5 函数只做一件事 .................... 228 23.6 若耗费时间过长,你的做法 很可能就是错的.................... 228 23.7 第一次就要用最佳的方法 完成....................................... 228 23.8 遵循惯例 ............................... 229 23.9 使用强大的 IDE .................... 229 23.10 记录日志 ............................. 230 23.11 测试 ..................................... 230 23.12 代码审查 ............................. 230 23.13 安全 ..................................... 231 23.14 术语表 ................................. 232 第 24 章 第一份编程工作................... 233 24.1 选择方向 ............................... 233 24.2 积累初期经验........................ 234 24.3 拿到面试机会........................ 234 24.4 面试 ....................................... 234 异步社区会员 APP Studio(13979775103) 专享 尊重版权
📄 Page
12
目录 5 24.5 面试技巧 ............................... 235 第 25 章 团队协作 .............................. 237 25.1 掌握基础 ............................... 237 25.2 提问前请先搜索.................... 237 25.3 修改代码 ............................... 238 25.4 冒名顶替综合征.................... 238 第 26 章 更多学习资料 ...................... 239 26.1 经典书籍 ............................... 239 26.2 在线课堂 ............................... 239 26.3 骇客新闻 ............................... 240 第 27 章 下一步................................... 241 27.1 找到导师 ............................... 241 27.2 加深理解 ............................... 241 27.3 其他建议 ............................... 242 异步社区会员 APP Studio(13979775103) 专享 尊重版权
📄 Page
13
第一部分 编程简介 ■ 第 1 章 概述 ■ 第 2 章 起步 ■ 第 3 章 编程概论 ■ 第 4 章 函数 ■ 第 5 章 容器 ■ 第 6 章 字符串操作 ■ 第 7 章 循环 ■ 第 8 章 模块 ■ 第 9 章 文件 ■ 第 10 章 综合练习 ■ 第 11 章 练习 本部分内容 异步社区会员 APP Studio(13979775103) 专享 尊重版权
📄 Page
14
异步社区会员 APP Studio(13979775103) 专享 尊重版权
📄 Page
15
第1 章 概述 “大多数优秀的程序员从事编程工作,不是因为期望获得报酬或得到公众的称赞,而 是因为编程是件有趣的事儿。” —林纳斯·托瓦兹(Linus Torvalds) 我毕业于克莱门森大学政治学专业。我曾考虑过是否选择学习计算机科学专业,还 在大一那年报名参加了“编程概论”课程,不过很快就退出了。实在是太难了。毕业后 我一直住在硅谷,我发现我需要学习编程。一年后,我成为了 eBay 公司的一名中级软件 工程师(介于初级工程师与高级工程师之间的一个职位)。我不想让大家觉得这是很轻松 就能做到的。实际上,这是极具挑战的一件事。在这一年的不断尝试努力过程中,我得 到了很多乐趣。 刚开始,我学习的是如何用流行的编程语言 Python 来进行编程。但是本书不仅是教 你如何使用某种特定的语言编程(确实会有这方面的内容),还会介绍标准教材中所不包 括的其他所有知识点。本书分享的是我在成为软件工程师过程中不得不自学的内容。本 书不适合那些想要随意了解下编程知识、将写代码作为爱好的人,而是专门写给那些希 望以编程为职业的人。不管你的目标是成为一名软件工程师、企业家,还是在其他的岗 位上使用编程技能,你都是本书的目标读者。 学会一门编程语言还不够,你还需要学会其他技能,才能像计算机科学家一样地工 作。我会教授大家我从编程新手到专业软件工程师过程中学到的一切。我写作本书,是 为了向有志于编程岗位的人分享他们需要掌握的知识框架。编程概论的书籍都大同小异 —用 Python 或 Ruby 介绍编程的基础知识,然后就让你自己摸索。我经常从读完类似 书籍的朋友那听到这样的反馈:我现在该做什么?我还不是一名程序员,也不知道下一 步该学什么。本书,就是我给出的答案。 异步社区会员 APP Studio(13979775103) 专享 尊重版权
📄 Page
16
第一部分 编程简介 4 1.1 本书的结构 本书中一章所涵盖的许多主题可能都可以独立成书。我的目标不是包罗你需要了解 的每个主题的所有细节,而是提供一份指引—一个编程职业发展所需要的所有技能的 导览。 第一部分:编程简介。让你尽快写出自己的第一个程序,最好在今天。 第二部分:面向对象编程简介。这部分将介绍不同的编程范式,着重阐述面向对象 编程。你会开发一个游戏,体会编程的强大能力。读完这部分后你会沉迷于编程。 第三部分:编程工具简介。将介绍提升编程生产力的不同工具。这时,你已经沉迷 于编程,并希望变得更好。你将会学习相关的操作系统、使用正则表达式提升效率、安 装并管理他人的程序,以及使用版本控制与其他工程师协作的知识。 第四部分:计算机科学简介。将简要介绍计算机科学知识,主要涵盖两个主题—算 法和数据结构。 第五部分:找到工作。最后一部分是关于最佳编程实践,如何找到软件工程师的工 作,团队协作以及程序员的自我提升。我会分享如何通过技术面试与团队协作的建议, 以及如何进一步提升自己的技能。 1.2 从终点出发 我学会编程的方式,与计算机科学通常的教学方式正好相反。本书的结构是根据我 自己的方式组织的。一般来说,你会先花很多时间学习理论,理论知识学的太多以至于 许多计算机科学的毕业生甚至不知道如何动手编程。杰夫·阿特伍德(Jeff Atwood),在 其博客“为什么程序员不会编程”中写道:“和我一样,许多人都碰到了这样的情况,编 程岗位的 200 位申请者中,有 199 个根本不会写代码。重申一遍:他们一点代码都不会 写。”这种现象直接促使 Atwood 发明了 FizzBuzz 代码挑战,一种用来在面试中筛选申请 者的编程测试。大部分人都通不过测试,这也是为什么你要学习本书并掌握实践中要使 用到技能。放心吧,在本书中你还会学到如何通过 FizzBuzz 测试的。 《王者之旅》电影中的主角乔什(Josh Waitzkin),在《学习的艺术》一书中回忆了 他如何反向学习国际象棋。他没有和其他人一样研究开局,而是从学习象棋残局(棋盘 上只剩下少数几个棋子)开始。这样做让他对国际象棋有了更深的理解,并赢得了多次 大赛冠军。与此类似,我认为先学习如何编程再学习理论的方法更高效,因为你会拥有 异步社区会员 APP Studio(13979775103) 专享 尊重版权
📄 Page
17
第 1章 概述 5 了解背后原理的强烈驱动。这就是为什么本书一直到第五部分才介绍计算机科学理论, 而且内容也尽量精简。虽然理论很重要,但是在你拥有了编程经验之后,理论的价值才 更大。 1.3 你不是一个人在战斗 毕业后再学习编程,已经越来越常见。Stack Overflow(一个程序员在线社区)在 2015 年的一份调查中显示,48%的受访者没有计算机科学学位。 1.4 自学的优势 在 eBay 工作期间,我的团队中有从斯坦福大学、加州大学和杜克大学计算机科学专 业毕业的程序员,还有两名物理学博士。当时我 25 岁,而年仅 21 岁的同事对编程和计 算机科学的知识比我强 10 倍这个事实,让我尤其惶恐。 虽然与拥有计算机科学学士、硕士甚至是博士学位的同事一起工作的压力很大,但 别忘记了你还有“自学的优势”。你选择读这本书,不是出于老师布置的任务,而是因为 你内心学习的渴望,这一点是你所拥有的最大优势。苹果公司的创始人斯蒂夫·沃兹尼 亚克(Steve Wozniak)就是一位自学成才的程序员;还有因在美国宇航局的阿波罗登月 计划中做出卓越贡献而获得总统自由勋章的玛格丽特·汉密尔顿(Margaret Hamilton); 还有 Tumblr 的创始人大卫·卡普(David Karp),Twitter 的创始人杰克·多西(Jack Dorsey),Instagram 的创始人凯文·斯特罗姆(Kevin Systrom),他们都是自学成才的程 序员。 1.5 为什么应该编程 不管你从事什么工作,编程都有助于你的职业发展。学习编程将给你自己赋能。我 喜欢尝试新想法,时刻都有希望启动的新项目。学会编程后,我就可以坐下来自己实现, 而不需要依赖他人。 编程也会提升你在其他方面的技能。因为你熟练掌握了问题解决能力,鲜有其他工 作不会因此而受益。我最近要在 Craiglist 上租房,搜索并筛选房子是个非常费力的活儿。 但是我写了一个程序来代替我搜索,最后将结果以邮件形式发送给我。学会编程,将把 你从重复性工作中解放出来。 如果你想成为软件工程师,市场上对这类岗位的需求也日益增长,但是符合要求的 异步社区会员 APP Studio(13979775103) 专享 尊重版权
📄 Page
18
第一部分 编程简介 6 候选者却总是供不应求。到 2020 年,预计将有一百万个编程岗位空缺。即使你的目标不 是成为软件工程师,科学和金融等领域的岗位也开始倾向那些拥有编程经验的申请者。 1.6 坚持不懈 如果你之前没有任何编程经验,担心自己无法胜任编程工作,本书想告诉你的是: 你完全有能力做到。人们对程序员有一些常见的误解,比如程序员都得擅长数学。这是 错误的印象,不过编程确实是一件困难的工作。幸运的是,本书涵盖的内容将让这一切 变得比你想象得更加容易。 为了提高编程技巧,你应该每天练习编程。挡在你面前的唯一障碍就是无法坚持, 所以我们要采取一些措施确保自己能够坚持不懈。准备一张检查清单,来确保每天都有 做练习,而且也能够帮助你保持专注。 如果你还需要其他帮助,效率专家 Tim Ferris 建议采用如下技巧来保持驱动力。事 先给家人或朋友一笔钱,如果你在规定的时间内完成了目标,就让他们把钱还给你,否 则就将钱捐献给你讨厌的机构。 1.7 本书的格式 本书的各个章节紧密相关。如果你读到了某些看不懂的概念,可能在前一章已经做 了介绍。书中尽量避免重复解释,所以牢记这个特点。在给重点词汇下定义时,会使用 斜体。每个章节的末尾都有一个词汇表,对该章内出现的斜体名词进行解释。书中代码 段前的注释为 GitHub 的网址,读者可于网站直接复制代码。 1.8 本书使用的技术 为了让读者尽可能的积累编程经验,本书会介绍多种技术。在某些情况下,必须在 许多不同的技术中做出选择。在第 20 章“版本控制”中(对于不了解版本控制的读者, 稍后会有解释),我们将会学习 Git 的基础知识。Git 是一个流行的版本控制系统,选择 介绍 Git 是因为笔者认为它已经成为版本控制的业界标准。书中用 Python 来编写大部分 的编程示例,因为它是一门很流行的初学者语言,而且即使从来没有使用过 Python 的人 学习起来也比较简单。此外,目前几乎每个领域对 Python 开发者的需求都非常大。不过, 书中会尽量做到内容与技术无关—注重概念,而非技术本身。 首先需要有一台计算机,以便跟着本书进行示例练习。计算机有一个操作系统 异步社区会员 APP Studio(13979775103) 专享 尊重版权
📄 Page
19
第 1章 概述 7 (operating system),即一个扮演人与计算机物理硬件之间的中间人的程序。可以在屏幕 上看到的称为图形用户界面(Graphical User Interface,GUI),它是操作系统的一部分。 台式计算机和笔记本电脑目前有 3 种常用的操作系统:Windows、UNIX 和 Linux。 Windows 是微软推出的操作系统。UNIX 操作系统发明于 20 世纪 70 年代,目前最流行 的 UNIX 操作系统是苹果的 OS X。Linux 则是目前世界上大部分服务器(server)都在 使用的一款开源操作系统。服务器指的是执行托管网站等任务的计算机或计算机程序。 开源(open-source)意味着软件不归某个公司或个人所有,而是由一群志愿者维护。Linux 和 UNIX 都是类 UNIX 操作系统,意味着二者之间非常相似。本书假设读者已经有一台 运行 Windows、OS X 或 Ubuntu(Linux 的一个流行版本)操作系统的计算机。 1.9 术语表 FizzBuzz:用来在编程面试中筛选候选者的一种编程测试。 操作系统:扮演计算机物理组件与人之间的中间人的一个程序。 图形用户界面(GUI):操作系统的一部分,用户在屏幕上看到的内容。 开源:软件不归某个公司或个人所有,而是由一群志愿者维护。 Windows:微软推出的操作系统。 UNIX:发明于 20 世纪 70 年代的一种操作系统,苹果的 OS X 是 UNIX 的一个版本。 Linux:世界上大部分服务器(server)都在使用的一款开源操作系统。 服务器:执行特定任务(如托管网站)的计算机或计算机程序。 类 UNIX 操作系统:UNIX 和 Linux。 1.10 挑战练习 创建一个每日检查清单,在其中加入练习编程这个任务。 异步社区会员 APP Studio(13979775103) 专享 尊重版权
📄 Page
20
异步社区会员 APP Studio(13979775103) 专享 尊重版权
The above is a preview of the first 20 pages. Register to read the complete e-book.
Recommended for You
Loading recommended books...
Failed to load, please try again later