程序员都知道,数组、列表等的下标都是从0开始的,因此,学习一门语言,真的需要从0开始。
近段时间,由于工作需要,对Python进行了系统。从零到一,从无到有的学习过程,收获特别大。一定程度上甚至改变了自己的思维方式、工作方式。把近期学习整理的笔记发布出来,也算是对学习的小结。同时希望能够对大家有所帮助。
[TOC]
1. 概述
1.1 什么是程序?
所谓程序,就是为了实现一个需求而设计的逻辑流程。有程序作为媒介,我们才可以分离设计者、调用者和执行者的角色。虽然程序的执行效果未必能让其设计者满意,但它已经可以脱离设计者而存在,可以被其他人执行、验证和改进。
1.2 什么是编程?
所谓编程,就是指编写程序。将烧菜的过程写成菜谱,本质上就是在编程。通过编程,我们更加透彻地理解并阐述了事物的本质,让曾经专属于某个人、某个团体、某个地方甚至某个时刻的东西,得以独立的存在和发展。从这个角度来讲,说编程是在创造生命也不为过。
编程,其实就是一种标准化的写作。 标准化保证了服务和产品的质量,也使大规模复制和扩张成为可能。我们每天的生活,都在和各种技术产品和服务打交道,比如导航、搜索引擎、聊天软件……你可曾想过,这些产品和服务背后的原理是什么?相信除了程序员群体之外,绝大多数人不会去想这些问题,因为编程的本质就是:设计一个逻辑流程来实现指定的需求,使调用者无需了解实现细节即可达到目的。
1.3 学习编程的重要性
- 让可以自动化的工作自动化。 编程是一种用时间换时间的解决方案。每当我们通过编程实现了一个需求,就好比造出了一把锤子。今后你遇到类似的问题,都可以拿这个锤子来解决。当然有时会遇到锤子不称手的情况,需要改进和调整。但在大多数情况下,这个锤子都是可以直接拿来用的。也就是说:完全相同的问题,你只需要解决一次就好,不会浪费时间在重复的工作上。通过编程,你可以将那些枯燥无味的重复性工作交由机器来接管,这样就可以将你的时间和注意力从具体的事务中解放出来,去做更有价值的事情。
- 满足自己的特殊需要。 我们常常会想要一个软件的某一个功能,却没有实现。世界上只有很少一部分人,有能力自己去实现那些别人不能满足的需求。他们能在原有软件的基础上开发插件,对软件进行二次开发,甚至写出一个全新的软件。如果说学好英语能为你的世界打开一扇门,让你拥有更多选择的话;那么学好编程就能让你有机会以“上帝视角”来认识和改造这个世界,并拥有几乎无限的可能性。因为在现实中的一切最终都会被信息化,而你可以通过编程来对信息做任何形式的加工和处理,只要你想得到,就能做得到。
- 开启全新的思维模式。 编程是一种对人的思考进行再思考的行为。编程是将人的想法“实体化”的过程,这要求我们进行更深入、更细致、更全面地思考。那些表面上我们认为可能已经很清楚的事,如果用编程思维,可能远远不够。编程要求我们能够对事物和流程进行各种维度上的拆分,并在不同的抽象层次上进行完整自洽的思考,这使我们有可能去解决那些规模无比庞大的问题。
- 提升解决问题的能力。 这不是一句空话。编程是不断解决问题的过程,也是不断完善解决问题的方法论的过程。一个优秀的程序员总是解决问题的高手。在编程的需求定义、方案设计、编码实现、调试纠错等各个阶段中,都将面临无穷无尽的问题。这个问题要不要解决?什么时候解决?其根源是什么?需要考虑哪些方面?如何做取舍?有哪些方案可供选择?选择的原则是什么?只有在实践中,才能提升能力 。
- 在未来更加有竞争力。 当人工智能在某个思考领域的能力接近或超过人类,而其成本极其低廉时,在资本意志的作用下,这个领域就会将不可逆地被人工智能迅速占领。人工智能全面普及的时代正在以光一样的速度向我们飞奔,可能下一秒就将我们远远地甩在身后,连车尾灯都看不到。只有那些理解人工智能,能够很好地和人工智能合作,并帮助改进人工智能的人,才能在那个时代更好地生存下去。
2. 为何选择Python
2.1 学得快
刚接触Python没几天,就发现现在的编程和以前学C语言的时代已大有不同,特别是有一定的编程功底和对编程语言的理解,上手快。现在的程序开发不用太多的关注底层逻辑,可以直接对接需求,边学就可以边用了。
2.2 Python库丰富
数据分析有Pandas,sciepy,numpy等,通用的图像处理有opencv,scikit-image,用于遥感图像的有spectral-python。更重要的是,如果想涉足机器学习,python更有从较通用的sklearn到深度学习的Tensorflow、keras等。
2.3Python资源多
网上有大量的教学、教材、视频等,基本上遇到的每一个问题,都已有答案。都能在stackoverflow等找到答案。
下一篇 将讲如何安装运行环境。