学习目标

  1. 了解硬件 & 操作系统 & 软件(应用系统)之间的关系。
  2. 了解常见的操作系统都有哪些。
  3. 了解编译器和解释器的区别和作用。
  4. 了解编程语言进行分类
  5. 了解Python解释器的种类
  6. 了解CPython解释器的版本

01. 计算机基础

1.1 基础概念

  • 计算机的组成

计算机是由多个硬件组合而成。

常见的硬件有CPU、硬盘、内存、网卡、显示器、机箱、电源、键盘鼠标、音响...

机械地将硬件组合在一起,它们之间是没法进行协作、工作的。

与硬件打交道的语言是0和1的二进制语言。

  • 操作系统

用于协调计算机的各个硬件,让硬件之间进行协作工作,以完成某个目标。

本质上是对一些系统调用进行封装。

常见的操作系统分类:

  • windows 优点:生态完善,相关的软件多;缺点是运行较慢

    • xp
    • win7
    • win10
    • ...
  • Linux 优点:由于开源免费,大多用于作服务器系统,资源占用少,运行最快;但无生态。
    • centos
    • ubuntu
    • Redhat
    • ...
  • Mac 由苹果公司开发,既有生态,运行也较快
  • 软件(应用程序)

软件的本质是使用编程语言开发出来的一大堆代码的集合,依赖于操作系统。

1.2 编程语言

全球的编程语言2500+种,常见的由C+\C++\java\python...

学习编程语言,本质上是学其语法。

不同的编程语言语法不同,但编程思路大致相通。

  • python中的输出语法
print("hello, world")
  • Golang中的输出语法
fmt.println("hello, world")

1.3 编译器和解释器

编译器/解释器,就是一个翻译官,将程序员所写的代码翻译成计算机能识别的命令。

(计算机只能识别二进制语言)

翻译的方式有两种:一个是编译,另外一个是解释

两种方式之间的区别在于翻译时间点的不同。

当编译器以解释方式运行的时候,也称之为解释器。

  • 编译器:全文翻译,运行时先将全部代码编译成一个临时文件,再将文件交由操作系统读取。运行速度快,但跨平台性低。

  • 解释器:逐行解释(读取一行,就翻译一行,继而执行一行)运行速度慢,但跨平台性高。

1.4 编程语言的分类

  • 翻译的维度

 - 解释型语言:python、PHP、JavaScript、ruby...

 - 编译型语言:C、C++、Go、Java...

  • 高低的维度
  • 低级语言:写出来的代码能直接被计算机识别

    • 机器语言:101 011 00001 00010 00001100001,也称为机器码,直接交给计算机运行
    • 汇编语言:MOV DNC ... 对应机器语言制作的指令,也可以直接交给计算机运行
  • 高级语言:写出来的代码无法直接被计算机识别,但可以通过某种方式将其转换成计算机可以识别的语言

    • C、C++、Java、python、Ruby...这类编程语言在编写的时候,几乎是人类可以读懂的
    • 代码完成后交由对应的编译器或解释器翻译成机器码,然后再交给计算机去执行

注意:现在基本上都使用高级编程语言。高级语言的出现降低了编程的门槛。由这发展的过程可以预见,未来编程语言必将越来越高级,越来越简单易学,以致全民编程...

02. Python 简介

2.1 Python的由来

人生苦短,我用python——Life is short, you need python.

  1. 1989年的圣诞节期间,吉多•范罗苏姆(Guido van Rossum)为了在阿姆斯特丹打发时间,决心开发一个新的解释程序,作为 ABC语言的一种继承(感觉下什么叫牛人)
  2. ABC是由吉多参加设计的一种教学语言,就吉多本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,吉多认为是非开放造成的。吉多决心在 Python中避免这一错误,并获取了非常好的效果
  3. 之所以选中Python (蟒蛇)作为程序的名字,是因为他是BBC电视剧--蒙提•派森的飞行马戏团(Monty Python's Flying Circus)的爱好者
  4. 1991年,第一个Python解释器诞生,它是用C语言实现的,并能够调用C语言的库文件

全球众多编程语言,为何Python可以脱颖而出成为业界炙手可热的编程语言?目前位居TIOBE排行榜第三名并且一直呈上升趋势。

Python如此火爆的原因如下:

  • 语法简洁 & 适合小白学习,相比较于其他编程语言Python的学习成本非常低,甚至可以让其他行业的人快速掌握编程技能,通过编程提供工作效率,例如:Excel自动化办公、文件和文件夹的处理等。
  • 类库强大,Python自诞生之初就任其自然生长,经过多年的发展,造就其在很多领域都是积累了很多方便的类库,自然也成为了运维自动化、数据分析、机器学习首选编程语言。
  • 开发效率极高,结合Python语法精炼和类库齐全的特点,所以在使用Python进行开发时可以用更少的代码完成更多的功能,大大提升开发效率。例如:Python10行代码实现的功能,用其他语言可能需要100+行才能完成。

2.2 Python的设计目标

1999年,吉多•范罗苏姆向DARPA提交了一条名为"Computer Programming for Everybody"的资金申请,并在后来说明了他对Python的目标:

  • 一门简单直观的语言并与主要竞争者一样强大
  • 开源,以便任何人都可以为它做贡献
  • 代码像纯英语那样容易理解
  • 适用于短期开发的日常任务

这些想法中的基本都已经成为现实,Python已经成为一门流行的编程语言

2.3 Python的设计哲学

  1. 优雅
  2. 明确
  3. 简单
  • Python开发者的哲学是:用一种方法,最好是只有一种方法来做一件事
  • 如果面临多种选择,Python开发者一般会拒绝花俏的语法,而选择明确没有或者很少有歧义的语法

在Python社区,吉多被称为"仁慈的独裁者"

2.4 Python解释器种类

Python在全球都非常受欢迎,出于提高效率的考虑,很多大公司就都开发了Python解释器

  • CPython 【主流】底层是由C语言开发出来的Python解释器;
  • Jython,是由Java语言开发出来的Python解释器,方便让python和Java的代码做集成;
  • IronPython,是基于C+语言开发出来的Python解释器,方便让python和C+的代码做集成;
  • RubyPython,...
  • PyPy,是对CPython的优化,它的执行效率提高了,引入了编译器的功能,本质上将Python代码进行编译,再去执行编译后的代码

2.5 Python解释器的版本

CPython的解释器主要由两大版本:

  • 2.x,目前最新的版本是python2.7.18.(2020后不再维护)

Being the last of the 2.x series, 2.7 received bugfix support until 2020. Support officially stopped January 1 2020, and 2.7.18 code freeze occurred on January 1 2020, but the final release occurred after that date.

  • 3.x,官方主推的版本

03. 安装python环境

3.1 下载安装包

python官网:https://www.python.org/

并不一定要选择最新版本。最新版本有可能不太稳定、存在bug。

对于初学者来说,各个版本都差不多。

3.2 Mac系统

Mac系统默认Python解释器安装目录:

/Library/Frameworks/Python.framework/Versions/3.9

bin目录下有一个 python3.9 文件,它就是Python解释器的启动文件。

解释器路径:

/Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9

3.3 Window系统

总结

  1. 简述硬件 & 操作系统 & 软件(应用系统)之间的关系。

硬件是计算机的物理组成,但仅是硬件组合在一起是无法工作的;

操作系统是用来整合、协调各个硬件的,从而使硬件之间能协作,以完成用户的指令。

操作系统本质上封存了很多系统调用。

软件是由编程语言编写的一堆代码,依赖于操作系统,以实现对计算机的调动。

  1. 列举常见的操作系统都有哪些。

1.由微软开发的windows:生态完善,但占用资源多,运行速度较慢;

2.免费开源的Linux:生态性差,但占用资源少,运行速度最快,多用于作服务器系统;

3.由苹果公司开发的Mac:生态较完善,运行速度佳。

  1. 简述编译器和解释器的区别和作用。

在于对代码的执行方式不同,

编译器是将代码一次性全部读取,翻译成一个临时文件,再执行这个临时文件;

而解释器是逐行翻译,翻译一句即执行一句。

编译器的执行效率比较高,但是跨平台性较差,而解释器刚好相反,执行效率不高,但跨平台性好。

  1. 编程语言进行分类

依编译和解释的不同可分为编译型语言与解释型语言;

依与计算机底层的距离可分为高级语言与低级语言。

  1. Python解释器的种类有哪些?

以C语言开发的Cpython;

以Java开发的Jpython;

甚至有以python本身语言开发的pypy。

  1. CPython解释器的版本有哪些?你现在用的是哪个版本?

PCython主要有两个版本:2.x与3.x。主流为3.x。

  1. 系统环境变量的作用是什么?

设置了环境变量,就可以再终端运行python

  1. Python和Pycharm的区别是什么?

python是一门面向对象的解释型编程语言;pycharm是一个IDE,python的集成性开发环境

python01-基础概念与环境搭建的更多相关文章

  1. Java基础学习之基础概念与环境搭建(1)

    1.Java基础概念 1.1.Java语言的特点 Java语言是简单易学的 Java语言是面向对象(封装.继承和多态) Java语言是平台无关的(一次编译,到处运行) Java语言是可靠的.安全的(异 ...

  2. Elasticsearch技术解析与实战(一)基础概念及环境搭建

    序言 ES数据架构的主要概念(与关系数据库Mysql对比) 集群(cluster) 集群,一个ES集群由一个或多个节点(Node)组成,每个集群都有一个cluster name作为标识.一下是我们的4 ...

  3. Dapr实战(一) 基础概念与环境搭建

    什么是Dapr Dapr 是一个可移植的.事件驱动的运行时,可运行在云平台或边缘计算中.支持多种编程语言和开发框架. 上面是官方对Dapr的介绍.有点难以理解,大白话可以理解为:Dapr是一个运行时, ...

  4. Python基础学习之环境搭建

    Python如今成为零基础编程爱好者的首选学习语言,这和Python语言自身的强大功能和简单易学是分不开的.今天我们将带领Python零基础的初学者完成入门的第一步——环境搭建.本文会先来区分几个在P ...

  5. Appium基础知识与环境搭建

    基础知识:  环境搭建: 1.安装jdk,配置java环境变量 (1)新建变量"JAVA_HOME",变量值"D:\Frameworks\Java\jdk1.8.0_18 ...

  6. 从零搭建ES搜索服务(一)基本概念及环境搭建

    一.前言 本系列文章最终目标是为了快速搭建一个简易可用的搜索服务.方案并不一定是最优,但实现难度较低. 二.背景 近期公司在重构老系统,需求是要求知识库支持全文检索. 我们知道普通的数据库 like ...

  7. Hadoop基础教程-运行环境搭建

    一.Hadoop是什么 一个分布式系统基础架构,由Apache基金会所开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. Hadoop实现了一个分布式 ...

  8. Maven基础:Maven环境搭建及基本使用(1)

    1. Maven环境搭建 1.1 Maven简介 1.2 Maven下载及环境设置 Maven下载地址:http://maven.apache.org/download.cgi 当前下载版本:apac ...

  9. Spring MVC基础知识整理➣环境搭建和Hello World

    概述 Spring MVC属于SpringFrameWork的产品,采用Model-View-Controller进行数据交互,已经融合在Spring Web Flow里面.Spring 框架提供了构 ...

  10. Go语言学习之1 基本概念、环境搭建、第一个Go程序

    一.环境搭建 见我的这篇博客 https://www.cnblogs.com/xuejiale/p/10258244.html 二.golang语言特性1. 垃圾回收    1) 内存自动回收,再也不 ...

随机推荐

  1. croc-文件传输工具

    前言 croc是一款用go语言开发的命令行文件传输工具,该工具允许两台计算机设备以一种简单和安全的方式来传输文件. GitHub项目地址 环境信息 IP 系统版本 croc版本 说明 192.168. ...

  2. SpringBoot3之Web编程

    标签:Rest.拦截器.swagger.测试; 一.简介 基于web包的依赖,SpringBoot可以快速启动一个web容器,简化项目的开发: 在web开发中又涉及如下几个功能点: 拦截器:可以让接口 ...

  3. PHP秒杀面试题

    什么是秒杀系统:秒杀系统是一个处理大量并发用户请求的系统,通常用于限时促销或特定活动中,用户可以在特定时间内以抢购的方式购买商品或服务. 秒杀系统可能面临的挑战是什么?秒杀系统可能面临以下挑战: 高并 ...

  4. 《Java极简设计模式》第01章:单例模式(Singleton)

    作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe.gitcode.host 文章汇总:https://binghe.gitcode.host/md/all ...

  5. Linux下后台运行Java程序

    1.背景描述 用Java编写了一个程序(可执行的jar),需要在Linux中启动并持续运行 1.1.直接执行程序 直接执行程序后,在程序执行期间,无法在当前会话中再执行其他操作 1.2.直接执行程序后 ...

  6. docker 搭建php环境(踩坑经验!!)

    本次安装的推荐配置: nginx 1.24.0 mysql 5.7.43 php 7.4.3-fpm redis 7.2.0   一.安装虚拟机 vm虚拟机需要4g内存,网络使用nat模式设置静态ip ...

  7. 《Linux基础》02. 目录结构 · vi、vim · 关机 · 重启

    @ 目录 1:目录结构 2:vi.vim快速入门 2.1:vi 和 vim 的三种模式 2.1.1:一般模式 2.1.2:编辑模式 2.1.3:命令模式 2.2:常用快捷键 2.2.1:一般模式 2. ...

  8. [EasyExcel] 导出合并单元格

    前言 使用spring boot 对excel 进行操作在平时项目中要经常使用.常见通过jxl和poi 的方式进行操作.但他们都存在一个严重的问题就是非常的耗内存.这里介绍一种 Easy Excel ...

  9. Dubbo3应用开发—Dubbo直连开发相关概念:通信、协议、序列化

    Dubbo RPC直连应用的概念 所谓的Dubbo RPC直连应用,指的就是Consumer直接访问Provider,而无需注册中心的接入. Dubbo完成的仅仅是RPC最基本的功能. 从这个角度Du ...

  10. 记一次 .NET某新能源MES系统 非托管泄露

    一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序有内存泄露,跟着我的错题集也没找出是什么原因,刚好手头上有一个 7G+ 的 dump,让我帮忙看下是怎么回事,既然找到我了那就给他看看吧,不过 ...