jacky解读麻省理工《计算机科学与Python编程导论》第1集
文:@数据分析-jacky(朱元禄)
(一)导言
本课程讲的中心思想就是五个字:计算机思维
Python只是辅助工具,是辅助大家理解计算机思维,仅此而已
- 急功近利是人性,适得其反是结果:我们看到有很多讲Python的资料,严格意义上来说,并不是Python入门,只是帮大家找找敲代码的感觉,而已;
讲师太大牌了,主讲人是麻省理工校长 Eric;
本系统课程的坑:大神知识渊博,喜欢旁征博引,难免一讲嗨,一些辅助的知识点风头会盖过主线,导致主线不是那么清晰,这就需要大家多捋顺主线逻辑,有主次的学习;
(二)计算机的发展史
在大牌的讲师,要系统的讲述一个课程,也都要从历史开始讲,这是必然的
关于计算机历史的逻辑线,Eric并没有像普通教授那样照本宣科按照时间年限开始讲,而是从计算机的两大能力展开的,把握住这个逻辑,我们就可以听明白第二部分了;
2.1 逻辑线的展开-计算机的两大能力
无论我们是说计算机思维也好,Python编程也好,我们能依靠的载体是不是都是计算机,计算机也是我们解决实际问题的工具,那么怎样才能利用好这个工具呢?是不是最大程度的把工具的能力发挥出来;好,要发挥出工具(计算机)最大能力,就要弄清楚2个问题:
第一个问题就是:计算机的能力是什么?
第二个问题就是:我们怎样把计算机的能力充分的发挥出来?
2.1.1 计算机的能力是什么
能力1:计算
能力2:存储
- 计算机所具有的两个根本特性——超快的计算速度和超大的内存。计算机拥有的计算速度,可以达到每秒钟十亿次,与此同时,相较与需要存储的内容而言,计算机具有近乎无限的存储空间。正是因为在这两个惊人特性的组合,便赋予计算机强大的功能。
2.1.2 如何充分发挥计算机的能力
(1)用算法将计算能力发挥到极致
(2)用数据结构将存储能力发挥到极致
- 虽然我们拥有超快的计算速度,但是面对异常复杂的问题时,单纯蛮力式的进行运算,是不明智的。这时候算法就派上了用场,通过一些巧妙的的算法,我们可以把一个问题简单化,这样运算自然简单了许多。同样的道理,面对复杂的问题,需要存储的内容和数据是巨大的,如何通过巧妙的存储以利于数据的读写,这就是数据结构的内容了。这也是为什么我们一般会把算法和数据结构放在一起讲授,因为它们本来就是一个整体。
2.2 计算机的发展史就是计算和存储能力的发展史
(1)第一阶段:固定程序计算机-为算法制造的机器
- 说白了就是只能解决特定问题的计算机,比如说我们最常见的计算器,当然Eric教授用他深厚的内功给我们举了很多例子,告诉我们什么同样也是固定计算机,比如专门解决线性问题的Atanasoff计算机(1941),二战时期专门破译代码的bombe计算机,
(2)第二阶段:存储程序计算机-既能计算又能存储的计算机
(三)编程语言只是工具,而已
为了说明这个问题,Eric从下面几个方面展开,其实都是为了说明,Python只是一个工具,他真正要教授的是编程思维;
3.1
计算思维的过程,概括起来主要有四个内容——抽象、可计算、运行、优化。 具体说来,面对一个问题的时候,先利用抽象能力,找到问题的本质,随后将其转换为可计算的内容来运行得到结果,但是到这一步并未结束,在得到结果后我们还有对其进行优化,以得到更好的结果,而且这个优化过程是往复多次的。
jacky解读麻省理工《计算机科学与Python编程导论》第1集的更多相关文章
- (2)麻省理工:计算机科学和 Python 编程导论
语义描述了我们如何从那些表达式中推导出相关的含义,从而解决我们想解决的问题. 语法描述了如何将合法表达式组合在一起. 我们要选择什么样的编程语言? 1. 不管我们选什么,都有如下过程: 输入信 ...
- (1)麻省理工:计算机科学和 Python 编程导论
本门课用的语言是python2.7,我的主要学习语言是C++11,所以不是特殊说明,则认为和C++中的是一样的(不管是语法还是表达式),当然,也有我不懂而错认为与C++一样的东西~ Week1 第一讲 ...
- Python编程导论第2版|百度网盘免费下载|新手学习
点击下方即可免费下载 百度网盘免费下载:Python编程导论第2版 提取码:18g5 豆瓣评论: 介绍: 本书基于MIT 编程思维培训讲义写成,主要目标在于帮助读者掌握并熟练使用各种计算技术,具备用计 ...
- MIT 计算机科学及编程导论 Python 笔记 1
计算机科学及编程导论在 MIT 的课程编号是 6.00.1,是计算机科学及工程学院的经典课程.之前,课程一直使用 Scheme 作为教学语言,不过由于 Python 简单.易学等原因,近年来已经改用 ...
- (麻省理工免费课程)C语言内存管理和C++面向对象编程
此课程有全部讲义和习题. 课程描述实在得令人发指.翻译如下: 您是否由于自己的Python程序比同僚们的C程序慢而垂头丧气?你是否想不用JAVA实现面向对象?加入我们,学习C和C++吧!我们带您从简单 ...
- 麻省理工《C内存管理和C++面向对象编程》笔记---第一讲:认识C和内存管理
最近一年都在用.net和Java,现在需要用C了.昨天看到博客园首页的麻省理工开放课程,就找来看看,正好复习一下.这门<C内存管理和C++面向对象编程>不是那种上来就变量,循环的千篇一律的 ...
- python编程入门之简介
引用百度百科: Python是一种面向对象.直译式计算机程序设计语言,由荷兰人Guido van Rossum发明于1989年,1991年发行第一个公开发行版.它常被昵称为胶水语言,它能够很轻松的把用 ...
- Linux运维人员如何学习python编程
Linux运维人员如何学习python编程 从不会写代码,到自己独立能写代码解决问题 .这个问题很重要!盲目学习所谓的项目,最后 还是不会自己写代码解决问题.首先解决了独立能写代码解决问题,再通过项目 ...
- Python 编程规范-----转载
Python编程规范及性能优化 Ptyhon编程规范 编码 所有的 Python 脚本文件都应在文件头标上 # -*- coding:utf-8 -*- .设置编辑器,默认保存为 utf-8 格式. ...
随机推荐
- (十一)Activitivi5之流程控制网关:连线
一.案例 1.1 需求 我们希望如果是重要情况才需要班主任审批,否则班长审批就行. 1.2 案例 当流程走到“班长审批”任务节点的时候,如果是一般情况,则如下: /** * 完成任务 */ @Test ...
- (九)mybatis之延迟加载
一.为什么要使用延迟加载? 使用延迟加载的意义 在进行数据查询时,为了提高数据库查询性能,尽量使用单表查询,因为单表查询比多表关联查询速度快. 如果查询单表就可以满足需求,一开始先查询单表,当需要关联 ...
- C# XML 序列化帮助类
/// <summary> /// Xml helper class /// </summary> public static class XmlHelper { #regio ...
- C++编译 C # 调用方法
C++编译 C # 调用方法 编译时使用 public ref class ABC { ... }; 调用时 右键---引用 --- 添加dll引用 即可
- Redis 测试 数据类型
- vue+scss动态改变主题颜色
1.新建.scss后缀公用文件,放在assets或者其他地方都可以 /*需要切换的颜色变量*/ $color-primary1:#1776E1; /* 更换的颜色 */ $color-primary2 ...
- Java 之 LinkedMap 集合
LinkedHashMap 概述 java.util.LinkedHashMap<k,v>集合 extends HashMap<k,v>集合 LinkedHashMap的特点: ...
- leetcode-3 最长无重复字串
3. Longest Substring Without Repeating Characters 题面 Given a string, find the length of the longest ...
- 【ASE模型组】Hint::neural 模型与case study
模型 基于搜索的提示系统 我们的系统用Pycee针对语法错误给出提示.然而,对于语法正确.结果错误的代码,我们需要另外的解决方式.因此,我们维护一些 (错误代码, 相应提示) 的数据,该数据可以由我们 ...
- 根目录/缺少执行权限x产生的两种错误
Linux根目录缺少x权限,产生的两个错误: 以root用户执行systemctl命令报权限相关问题 [root@hps2 ~]# systemctl stop hps-manager * (pktt ...