文:@数据分析-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集的更多相关文章

  1. (2)麻省理工:计算机科学和 Python 编程导论

    语义描述了我们如何从那些表达式中推导出相关的含义,从而解决我们想解决的问题. 语法描述了如何将合法表达式组合在一起. 我们要选择什么样的编程语言? 1.     不管我们选什么,都有如下过程: 输入信 ...

  2. (1)麻省理工:计算机科学和 Python 编程导论

    本门课用的语言是python2.7,我的主要学习语言是C++11,所以不是特殊说明,则认为和C++中的是一样的(不管是语法还是表达式),当然,也有我不懂而错认为与C++一样的东西~ Week1 第一讲 ...

  3. Python编程导论第2版|百度网盘免费下载|新手学习

    点击下方即可免费下载 百度网盘免费下载:Python编程导论第2版 提取码:18g5 豆瓣评论: 介绍: 本书基于MIT 编程思维培训讲义写成,主要目标在于帮助读者掌握并熟练使用各种计算技术,具备用计 ...

  4. MIT 计算机科学及编程导论 Python 笔记 1

    计算机科学及编程导论在 MIT 的课程编号是 6.00.1,是计算机科学及工程学院的经典课程.之前,课程一直使用 Scheme 作为教学语言,不过由于 Python 简单.易学等原因,近年来已经改用 ...

  5. (麻省理工免费课程)C语言内存管理和C++面向对象编程

    此课程有全部讲义和习题. 课程描述实在得令人发指.翻译如下: 您是否由于自己的Python程序比同僚们的C程序慢而垂头丧气?你是否想不用JAVA实现面向对象?加入我们,学习C和C++吧!我们带您从简单 ...

  6. 麻省理工《C内存管理和C++面向对象编程》笔记---第一讲:认识C和内存管理

    最近一年都在用.net和Java,现在需要用C了.昨天看到博客园首页的麻省理工开放课程,就找来看看,正好复习一下.这门<C内存管理和C++面向对象编程>不是那种上来就变量,循环的千篇一律的 ...

  7. python编程入门之简介

    引用百度百科: Python是一种面向对象.直译式计算机程序设计语言,由荷兰人Guido van Rossum发明于1989年,1991年发行第一个公开发行版.它常被昵称为胶水语言,它能够很轻松的把用 ...

  8. Linux运维人员如何学习python编程

    Linux运维人员如何学习python编程 从不会写代码,到自己独立能写代码解决问题 .这个问题很重要!盲目学习所谓的项目,最后 还是不会自己写代码解决问题.首先解决了独立能写代码解决问题,再通过项目 ...

  9. Python 编程规范-----转载

    Python编程规范及性能优化 Ptyhon编程规范 编码 所有的 Python 脚本文件都应在文件头标上 # -*- coding:utf-8 -*- .设置编辑器,默认保存为 utf-8 格式. ...

随机推荐

  1. Unity中的Character Controller

    Unity中默认提供了一个Character Controller的组件用于实现角色控制,一个3D的游戏物体,可以直接添加.Character Controller会自动模拟出Capsule Coll ...

  2. jvm类加载原理和类加载器介绍

    虚拟机的类加载机制 在Class文件中描述的各种信息最终都需要加载到虚拟机中之后才能运行和使用.   虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被 ...

  3. .net core 依赖注入在特性中的应用

    .net core 依赖注入在特性中的应用,不知道怎么用属性注入,那么在特性中的构造函数里,怎么用接口的方法呢? 来一个简单的例子: 主要思路是把ServiceProvider 静态全局化: publ ...

  4. 最近公共祖先 LCA (Lowest Common Ancestors)-树上倍增

    树上倍增是求解关于LCA问题的两个在线算法中的一个,在线算法即不需要开始全部读入查询,你给他什么查询,他都能返回它们的LCA. 树上倍增用到一个关键的数组F[i][j],这个表示第i个结点的向上2^j ...

  5. stm32 rtc 实时时钟

    STM32的实时时钟是一个独立的定时器 通常会在后备区域供电端加一个纽扣电池,当主电源没有电的时,RTC不会停止工作 若VDD电源有效,RTC可以触发秒中断.溢出中断和闹钟中断 备份寄存器BKP 备份 ...

  6. undefined reference to `udev_device_get_action'

    /usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/libusb-1.0.a(libusb_1_0_la-linux_udev.o): In ...

  7. [Mac][Python][Jupyter Notebook]安装配置和使用

    Jupyter 项目(以前称为 IPython 项目),提供了一套使用功能强大的交互式 shell 进行科学计算的工具,实现了将代码执行与创建实时计算文档相结合. 这些 Notebook 文件可以包含 ...

  8. sql注入原理,利用与防护

    一.sql注入原理 注入攻击的本质就是把用户输入的数据当作代码来执行.所以注入攻击有两个必要条件 1.用户能够控制的输入. 2.原本程序要执行的代码,拼接了用户输入的数据. 二.sql注入分类 按照请 ...

  9. python实践总结与反思

    2019.6.20 python近期实践总结与反思 记录一些这两天python犯的一些低级却易犯的错误.千万不要犯第二次啊!! 1. py文件名字问题 py文件命名不能和调用的模块名一样! 比如,我要 ...

  10. 用js刷剑指offer(链表中倒数第k个结点)

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 牛客网链接 思路 设置两个指针,p,q,先让p走k-1步,然后再一起走,直到p为最后一个 时,q即为倒数第k个节点 js代码 // 空间复杂度1 ...