python计算入门_Python入门教程02-01(计算机核心基础)

python入门课程第二章-计算机核心基础

Python入门教程01-01(ATM+购物车)学习过后,我们需要了解一下计算机的核心基础,目标就是为了让后面更好的理解python这门语言,更容易接受后续新的课程难点。下面我们来一起学习第二章吧~~~~

一 引子:

接下来一段时间,我们的目标的是:学会使用python这门编程语言来编写ATM+购物车程序,那么问题来了:

1.1 什么是语言?什么是编程语言?为何要有编程语言?

语言其实就是人与人之间沟通的介质,如英语,汉语,俄语等。

而编程语言则是人与计算机之间沟通的介质。

那么为何要有编程语言,或者说人为何要与计算机沟通呢?这是因为在编程的世界里,计算机就好比是人的奴隶,人与计算机沟通的目的就是为了奴役计算机,让计算机按照人类的思维逻辑自发地去工作从而把人力解放出来。

此处我们可以提炼出如下两个重要的概念

1.2 什么是编程?为什么要编程?

编程就是人把自己想命令计算机干的事用编程语言翻译出来并写到文件里(这一系列的文件就是程序),那么为什么要编程?

小人类编程的目的就是为了让计算机按照人类的思维逻辑(程序)自发地去工作从而把人力解放出来。

综上,我们接下来的学习应该分为两个层面

1、为了更好地控制人类的奴隶(即计算机),我们需要学习计算机是由什么组成的、它能做什么事、它是怎样工作的(详见计算机组成原理、操作系统概述)

2、我们需要学习编程语言,从而把原来需要人力来完成的业务(比如ATM和购物)交给计算机去做

二 计算机组成原理2.1、什么是计算机?

俗称电脑,即通电的大脑,电脑二字蕴含了人类对计算机的终极期望,希望它能真的像人脑一样去工作,从而解放人力。

2.2、为什么要用计算机?

世界是由聪明的懒人统治的,任何时期,总有一群聪明的懒人想要奴隶别人。在奴隶制社会,聪明的懒人奴役的是真正的人,而人是无法不吃、不喝、不睡觉一直工作的,但是计算机作为一台机器是可以做到的,所以把计算机当奴隶是上上之选。

2.3、计算机的五大组成部分

计算机有五大组成部分,既然计算机是人的奴隶,那么计算机设计核心肯定也是在模仿真正的人,所以我们完全可以把计算机的五大组件比喻成人类的各种器官

2.3.1、控制器

控制器是计算机的指挥系统,用来控制计算机其他组件的运行,相当于人类的大脑

2.3.2、运算器

运算器是计算机的运算功能,用来做算术运算和逻辑运算,相当于人脑。

ps:控制器+运算器=CPU,cpu相当于人的大脑

cpu详解见附录1

2.3.3、存储器

存储器是计算机的记忆功能,用来存取数据。

存储器主要分为内存与外存:

内存相当于人的短期记忆。断电数据丢失

外存(如磁盘),相当于记事的本子,断电数据不会丢失,是用来永久保存数据的

ps:内存的存取速度要远远高于外存

2.3.4、输入设备input

输入设备是计算接收外界输入数据的工具,如键盘、鼠标,相当于人的眼睛或耳朵。

2.3.5、输出设备output

输出设备是计算机向外输出数据的工具,如显示器、打印机,相当于人说的话,写出的文章。

ps:存储器如内存、磁盘等既是输入设备又是输出设备,统称为IO设备

一个非常重要的基础知识:与运行程序相关的三大核心硬件

我们编写的程序一定是要运行于计算机硬件之上,而站在硬件的角度,与运行程序有关的三大核心硬件为CPU、内存、硬盘。

程序最先是存放于硬盘中的,程序的运行是先从硬盘把代码加载到内存中,然后cpu是从内存中读取指令运行。

三 操作系统概述3.1、操作系统的由来

大前提:我们编程目的就是为了奴役计算机,让计算机硬件自发地运行起来,然而硬件毕竟是”死的“,硬件的运行都是由软件支配。

倘若我们要开发一个应用程序,比如暴风音影,该软件的一个核心业务就是播放视频,开发者若要编写程序完成播放视频这个业务逻辑,必先涉及到底层硬件硬盘的基本运作(视频文件都是先存放于硬盘中),这意味着开发者在编写业务逻辑代码之前,必须先编写一个控制硬盘基本运行的控制程序,然而这仅仅只是一个开始,事实上,在编写应用程序的业务逻辑前,需要开发者编写出一套完整的控制程序用来控制所有硬件的基本运行(这要求开发者需要详细了解计算机硬件的各种控制细节,例如我们必须把CPU里面所有指令集都掌握一遍),如此,所有的开发者在开发程序时都必须依次开发两种:

#1、编写一套完整的的控制程序,用来控制硬件的基本运行,以及把复杂的硬件的操作封装成简单的接口

#2、基于控制程序的接口开发包含一系列业务逻辑的程序,为了与控制程序区分,可以称为应用程序,以ATM这款应用程序为例,业务逻辑有提款、转账、查询余额等

综上,对于不同公司的开发者来说,应用程序的业务逻辑各不相同,但硬件的控制程序都大致相同,为了避免所有程序员做重复劳动,以及不用再耗费精力去了解所有硬件的运行细节,有公司专门跳出来承担起控制程序的开发任务,这里所说的控制程序指的就是操作系统。

操作系统的功能就是帮我们把复杂的硬件的控制封装成简单的接口,对于开发应用程序来说只需要调用操作系统提供给我们的接口即可

3.2、系统软件与应用软件

硬件以上运行的都是软件,而软件分为两类:

#一、应用软件(例如qq、word、暴风影音,我们学习python就是为了开发应用软件的)

#二、操作系统,操作系统应用软件与硬件之间的一个桥梁,是协调、管理、控制计算机硬件与应用软件资源的控制程序。

3.3、计算机系统三层结构

综上,我们开发应用程序本质是在控制硬件,但是我们直接打交道的是操作系统,应用程序都是通过操作系统来间接地操作硬件的,所以一套完整的计算机系统分为三层,如下

一个非常重要的基础概念:平台

应用程序都是运行于操作系统之上,而操作系统则是运行于硬件之上的,所以承载应用程序的是一台运行有操作系统的计算机,称之为应用程序的运行平台,即:硬件 + 操作系统 == 平台

常见的平台有:windows系统+某款硬件、linux系统+某款硬件、ubuntu+某款硬件等,我们在开发应用程序时就需要考虑到应用程序的跨平台性,如果能开发出一款可以在任意平台运行的应用程序,那对于开发者来说真是极大的福音。而决定应用软件的跨平台性的关键因素往往是编程语言的选择,python恰好是一款跨平台性语言,这也是我们学习它的原因之一。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489656.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php字符串反转abcdefg_php中实现字符串翻转的方法

字符串:$str "abcdefg";方法一(直接使用php自带函数strrev($str))print_r(strrev($str));使用for循环方式,str_split($str)$newArrOne [];//初始化一个新的数组$newStrOne ;//初始化一个新的字符串$newArrOne str_split($str);$arrCount count($newArrOne);for …

RISC-V浪潮来袭!115页PPT超详论述,如何与ARM争锋!(一)

来源:芯潮近两年来,在ARM和Intel主导的竞争格局中,一个新的开源指令集架构RISC-V在芯片江湖声名鹊起。面对来势汹汹的AI和IoT浪潮,RISC-V提供了一种高能效低成本解决方案,吸引了谷歌、高通、IBM、镁光、西部数据、三星…

redisb并发访问慢出现的问题

最近项目一上线,就问题颇多,本地测试,ok,上线后,大用户量的时候,顶不住。用了一个礼拜的时间发现的问题,总结下来。 项目是netty4.0,reids2.8,nginx等框架。目前是4台proxy服务器&am…

python idle运行anaconda_在Python IDLE 下调用anaconda中的库教程

大家都知道,Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。下载了anaconda我们可以很方便的随时调用这里面的库。原先我自己在Python官网下载了python 3.7开发环境,anaconda的后面下载的,…

php知识点_PHP那些琐碎的知识点(整理)

PHP不会检查单引号 字符串中变量内插或(几乎)任何转义序列,所以采用单引号这种方式来定义字符串相当简单快捷。但是,双引号 "" 则不然,php会检查字符串中的变量或者转义序列,并输出变量和转义序列的值。$a "123&…

有关军事混合智能的思考

来源:中国指挥与控制学会0引言随着深度学习、强化学习等新一代人工智能技术的发展,其在计算机视觉、语音识别、自然语言处理、生物医疗领域及游戏博弈等方面取得很大的突破,人工智能在军事领域应用也愈加广泛,催生了军事智能的概念…

nginx动静分离配置_Nginx 动静分离与负载均衡的实现

一、前提企业中,随着用户的增长,数据量也几乎成几何增长,数据越来越大,随之也就出现了各种应用的瓶颈问题。问题出现了,我们就得想办法解决,一般网站环境,均会使用LAMP或者LNMP,而我…

scala shuffle

val arr (0 to 100).map(_ * 1d) /// 下面这一步只能用to不能用until,scala里面实现返回的两个Range继承路径不同,不能混用 val a_shuffled util.Random.shuffle(0 to arr.size -1).map(arr(_)) 转载于:https://www.cnblogs.com/suanec/p/6043286.html…

计算机、数学、运筹学等领域的32个重要算法

来源: 必达智库奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)的Christoph Koutschan博士在自己的页面上发布了一篇文章,提到他做了一个调查,参与者大多数是计算机科学家&am…

Fibonacci(求前四位数)

FibonacciTime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uDescription2007年到来了。经过2006年一年的修炼,数学神童zouyu终于把0到100000000的Fibonacci数列 (f[0]0,f[1]1;f[i] f[i-1]f[i-2](i>2))的值全部给背了下来。 接…

fiddler如何设置过滤https_手把手教你如何给网站设置https

我也是小白一枚,最近开了一个博客站点,个人博客除了微信分享功能不能开通外,其他的功能我都要试着做一下,磨练磨练自己。跟一些大佬分享有所不同,我这篇文章是以一个小白的角度来写,这样有一个优势&#xf…

php 解释语言,php是解释型语言吗

PHP是属于解释型语言,还是编译型语言?下面先来看一下计算机语言的发展史:第一代:机器语言,全部都是01010二进制代码,计算机能够直接的识别,运行效率是最高的,但是难编,难…

清华大学施路平:发展人工通用智能最好的时机到了!

来源:学术头条 今年8月,一辆来自清华的无人驾驶自行车登上了Nature的封面。这是中国的人工智能芯片首次登上Nature,在全球引发热议。这辆自行车不仅可以平衡自身,还可以绕过障碍物,甚至可以响应简单的声音命令。自行车…

Debian10降级安装php,如何在Debian 10 Linux上安装PHP

PHP是最常用的服务器端编程语言之一。在本指南中,我们将讨论如何在Debian 10 Buster上安装PHP。我们还将向您展示如何将PHP与Nginx和Apache集成。Debian 10随附PHP 7.3版,最流行的CMS和框架(如WordPress,Magento和Laravel)均支持该版本。先决…

设置线程堆栈大小_哇擦,传说中的堆栈溢出和快速排序

stack overflow堆栈溢出和快速排序这两个概念对开发人员来说并不陌生,但是通知都只是听说过,真正开发过程中却很少会遇到。我也是敲代码好些行后非常有幸撞上了,而且还是两个一起出现的,这其中过程的滋味还是相当酸爽,…

模板引擎的简单原理template

​var templateStr "我的名字叫<%name%>我是一只小狗,今年<%age%>岁。";var data {name:旺财,age:18};/*会利用正则来匹配*///console.log(/<%\s*([^%>]\S)\s*%>/.exec(templateStr));var match /<%\s*([^%>]\S)\s*%>/.exec(templa…

八张图看懂上海人工智能产业发展现状

来源&#xff1a;中商产业研究院据《行动方案》提出&#xff1a;集聚优势创新资源&#xff0c;聚焦开展专项行动&#xff0c;到2021年&#xff0c;全力打响上海人工智能“一流创新生态”标志性品牌。此外&#xff0c;《行动方案》中还提出多项任务&#xff0c;大力推进上海市人…

- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender

目的是为了点击应用程序左上角的关闭按钮&#xff0c;应用程序消失。转载于:https://www.cnblogs.com/ITliufei/p/6045992.html

车牌号随机函数 php,模拟生成车牌号的程序.程序运行.生成十个随机的车牌子.......

package demo;import java.util.ArrayList;import java.util.Random;//举例: 京C.85100 / 津K.45H88//* 要求:1.车牌子为京字或津字开头,后面字母为 C E F H J K中随机.//* 2.号码为五位.数字和大写字母随机.(数字为0-9, 字母为A-G)//* 3.定义生成号码的方法…

软件版本号命名规范_软件发布版本介绍

一、 软件版本阶段介绍Alpha版: 此版本表示该软件在此阶段主要是以实现软件功能为主&#xff0c;通常只在软件开发者内部交流&#xff0c;一般而言&#xff0c;该版本软件的Bug较多&#xff0c;需要继续修改。Beta版: 该版本相对于α版已有了很大的改进&#xff0c;消除了严重的…