一、计算机基础概念
1、什么是计算机
很多老一辈的人,管下面这个叫做计算机。然而,它只是 “计算器”,和计算机是有很大区别的。
现在我们所说的计算机,不光能进行算术运算,还能进行逻辑判断、数据存储、网络通信等等功能,以至于可以自动的完成非常复杂的工作。以下这些都可以称为 “计算机”:
- CPU - 中央处理器,处理算术运算、逻辑运算等
- 存储器(内存,硬盘等存储数据)
- 输入设备(键盘,鼠标,麦克风等负责和用户进行交互)
- 输出设备(显示器,音响,耳机,打印机等负责和用户进行交互)
CPU 是目前人类科技的巅峰之作,科技含量能和 CPU 相提并论的,只有氢弹了。美国限制向中国出口 “芯片”,这里的芯片主要指的就是 CPU。目前国内虽然有自主研发 CPU 的能力,但是整体的水平相比于国际一线的 Intel,AMD 等厂商相比,还是有一定的差距的。
重要的硬件不是还有显卡吗?但是太贵了。
内存与外存(硬盘等)的区别:
- 内存的存储空间较小,外存的存储空间较大。
- 内存的访问速度快,外存的访问速度慢。
- 内存比外存成本更高。
- 内存上的数据容易丢失(断电,数据就没了),外存上的数据能够持久化存储(相对于内存来说可以存的更长久,一般机械硬盘存储数据的时间是几年到十几年)(断电数据也在)。
有的设备既是输入设备,又是输出设备,比如触摸屏、网卡等。
- 显卡并没有被归纳到上面,其实显卡(GPU)是和 CPU 类似的计算芯片,CPU 是 “通用计算芯片”,可以处理各种场景下的各种问题(类比大学毕业生)。而 GPU 是 “专用计算芯片”,特别擅长处理浮点数运算(类比计算机专业学生)。
以上的组成结构称为 “冯诺依曼体系结构”,冯诺依曼可以称为计算机的祖师爷。
冯诺依曼除了是计算机祖师爷之外,还是一位数学家、物理学家、化学家、“博弈论” 的创始人,参与过曼哈顿计划(担任原子弹制造顾问)。据传闻,冯诺依曼大佬六岁心算八位数除法,八岁掌握微积分,十岁通读了世界史,十七岁发表了第一篇数学方面的论文。
计算机的祖师爷除了冯诺依曼之外,还有一位图灵大佬,也在二战中发挥了至关重要的作用。
2、什么是编程
计算机需要硬件赋予之躯体,也需要软件赋予之灵魂。
“软件”(或者叫做程序),指挥了计算机要按照什么样的规则来执行任务。
软件不是凭空出现的,是要被 “开发” / “设计” 出来的。制作软件就是在明确这个软件要完成什么样的任务,这个过程就称为 “编程”,或者也可以叫做 “软件开发”。
例如,妈妈让我去买两个面包,如果遇到卖西瓜的就买一个(这句话很明显存在歧义,计算机会直接 “摆烂”)。那么这个交代任务的过程就是 “编程”,只不过执行这个程序的是我,不是计算机。再进一步展开来说,就是由人来告诉计算机,接下来要做什么任务。
换个角度看,人脑也能算术运算,能逻辑判断,能数据存储,能输入输出.....,也可以视为是一个广义的计算机。
编程本身并不是一件很容易的事情,它是一件比较严谨、复杂的事情,因此就衍生出了一个专门负责编程的职业,也就是程序员。程序员进行编程的过程中,需要使用一个专门的方式和计算机沟通,就是 “编程语言”。使用编程语言编写软件的具体过程就称为 “软件开发”,俗称 “敲代码”。
3、编程语言
- 机器语言
- 汇编语言
- 高级语言
其中机器语言和汇编语言都是更贴近计算机的,人类理解起来并不容易。因此目前程序员使用的编程语言主要是高级语言。
高级语言的种类有很多很多,以下列出的都是实际开发中常用的编程语言:
二、Python 背景知识
1、Python 是如何来的
吉多·范罗苏姆(Guido van Rossum)是一个荷兰程序员(人称龟叔,因为他名字前三个字母是 Gui)。
龟叔在 1989 年圣诞节的时候(当时 33 岁),因为在家里待着无聊,为了打发时间,开始了 Python 的开发。第一个正式版本发布于 1991 年,1991 年是一个神奇的年份。Python、万维网、Linux、Vim、Qt、第一台笔记本电脑,都诞生于 1991 年。
2、Python 能干什么
经历了多年的发展,Python 目前是一个应用场景非常广泛的编程语言。
- 科学计算&数据分析
- Web 开发(搭建网站)
- 自动化运维
- 人工智能
- 爬虫程序
- 自动化测试
三、Python 的优缺点
1、优点
- 语法言简意赅,容易上手。
- 功能强大,用途广泛。
- 生态丰富,具有海量的成熟第三方库。
- 方便调用 C/C++ 编写的代码进行高性能/系统级操作。
2、缺点
- 执行效率比较弱。
- 对于多核心并发程序支持偏弱。
- 动态类型系统对于大型项目不太友好。
四、Python 的前景
虽然 Python 的应用场景很多,但是纯粹使用 Python 的岗位是比较少见的。
以知名互联网招聘网站拉钩网为例,设置工作地点为北京,工作年限为 3 年以下。
- 搜索 Python 关键字得到的岗位个数为 500+ 个。
- 搜索 C 关键字得到的岗位个数为 83 个。
- 搜索 C++ 关键字得到的岗位个数为 77 个。
- 搜索 Java 关键字得到的岗位个数为 158 个。
上述数据只是简单采样,并不能精确反应岗位的整体情况。
更常见到的情况是,把 Python 作为一个辅助性质的语言。
在工作中,Python 更像是一个工具,需要用到的时候随手拿起来就用,能够方便的解决不少问题。Python 和其他的编程语言本质上并没有啥区别,并不存在某个场景是 “非得 Python 才能做,而其他语言做不了” 这样的情况。编程语言只是工具,作为一名程序员,要做到十八般兵器都能样样精通。