(2)麻省理工:计算机科学和 Python 编程导论
语义描述了我们如何从那些表达式中推导出相关的含义,从而解决我们想解决的问题。
语法描述了如何将合法表达式组合在一起。
我们要选择什么样的编程语言?
1. 不管我们选什么,都有如下过程:
输入信息-提供给电脑(即源代码(source code))
经过某种计算过程
输出结果或者计算机反馈结果
在“经过某种计算过程”这一步,我们面临选择——这种选择与计算机如何处理过程并将之变为输出息息相关,这些选择有:
1. low level language uses instructions similar to internal control unit:
——move data from one location to another
低级编程语言:即我们输入的指令和物理实现很像,比如把内存中某处的数据移动到另一处,或者是执行一个简单的算术逻辑单元操作
此时,名为checker(检查器)的进程会处理低级代码,确认语法和静态语义正确,之后就会把具体的指令序列传到interpreter(解释器)的进程,解释器会按序执行指令,最后输出结果
2. a high level language uses more abstract terms invert a matrix, compute a function
高级编程语言:更抽象化,即忽略掉一些底层的东西后的抽象化编程
1.在编译型语言中,那些抽象的东西将首先被checker,像1中那样转换回低级代码,然后靠compiler(编译器)将这些检查过的指令序列转变为那些我们需要的基本计算机指令。在之后指令进入interpreter实际执行
2.在解释型语言中,和编译型语言一样先通过checker进行检查,然后通过一种特别的程序把源代码转换成一种内部中间数据结构,然后按序把每一步转换成低级机器指令来执行——这表示我们每次只对一条指令进行转换和执行
那么,这些都有什么值得权衡或者说优缺点呢?
编译型语言,代码更快——因为我们之前就把所有工作做完了,即通过编译器把指令转换成低级机器指令。但问题是如果我们代码有漏洞或者错误,当已编译的代码遇到那个错误,要找出这个错误的原因就很困难——因为我们要进入那些杂乱无章的编译指令中找出实际指令中的错误之处,这很困难。
解释型语言,会慢些,但不会很慢——因为我们要实时转换,一次一条指令。但是一旦我们遇到错误或漏洞,就能很容易地找到引起错误的地方, 因为我们能知道是在转换哪条指令时错了,从而定位bug之处。(python就是解释型语言)
Program(or script) is a sequence of definitions and commands
程序又称脚本,包含一系列定义和命令
定义指被计算机存储的东西,命令则是shell程序中python解释器实际执行的东西。
Shell只是一个程序,她允许输入命令,这些命令被计算机的操作系统直接执行,即shell使使用者得以忽略底层细节。
Command(or statement) instructs interpreter to do something
什么是指令或者说是语句?她们是指示解释器做某事的东西
一些简单的python命令:
本质上每个程序都会操作一个数据对象,每个数据对象都有一个类型,类型定义了程序可以对这个对象做的事情。
Scalar objects 与non-scalar后面会再详讲,这里先讲简单的。
Scalar objects标量对象——不可分割的
1. int——used to represent integers
2. float——used to represent real numbers
3. bool——used to represent Boolean values true and false
non-scalar 非标量对象——拥有一个可以访问的内部结构
python shell运行:
输入:3 输出3
输入3.0 输出3.0
输入true 报错
输入True 输出True
输入type(3) 输出<type ‘int’> 这里的()表示一个函数,3是表达式
Expressions表达式由操作符和数据对象一一构成
大部分是这样的形式:<object><operator><object>
Python中的除法,如果有一个是浮点数,就和数学上的除法一样。
如果都是整数,结果就是去掉余数后的商,且是整数——如果想得到余数,就用“%”代替“/”
2**3——表示2的3次方,“**”是次方运算符
a and b————a和b都是给定的布尔型表达式,则a、b都为真,这个表达式为真
a or b——其中一个为真则为真
type conversions(type casting)类型转换(强制类型转换):
输入float(3) 输出3.0
None这个关键字是python中唯一一个没有类型的值,常用来表示不存在的值
分数不能完全存储为二进制(例如,没有办法存储0.33333无限精确下去,只能进行选择存0.3333(具体存几位看标准)),这一点在其他语言也存在,同时可以预知的是,所有语言的类型转换都大有文章!
(2)麻省理工:计算机科学和 Python 编程导论的更多相关文章
- jacky解读麻省理工《计算机科学与Python编程导论》第1集
文:@数据分析-jacky(朱元禄) (一)导言 本课程讲的中心思想就是五个字:计算机思维 Python只是辅助工具,是辅助大家理解计算机思维,仅此而已 急功近利是人性,适得其反是结果:我们看到有很多 ...
- (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 格式. ...
随机推荐
- linux 虚拟网卡
linux中可以通过一个物理网卡,模拟出多个虚拟网卡,并在网卡中配置ip. 下面做一个实验. 实验描述: 我们有server A (ip 10.79.148.205),server B (10.79. ...
- Linux下搭建maven私服Nexus 3.2.1-01
1. 私服介绍私服是指私有服务器,是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构建.有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库:否则, ...
- Dell PowerEdgeServerT110II USB Boot更新
可引导USB设备更新Dell PowerEdge服务器 当显示Boot Options(“启动选项”)时,选择option 1(选项 1)以开始固件更新. 现在正在加载的Linux发行版本 然后固件更 ...
- 网络安全-安全散列函数,信息摘要SHA-1,MD5原理
-----------------------------------------------欢迎查看网络安全连载博客-----------------------------------[网络安全] ...
- android学习笔记NO.5
Intent 能够理解为信使 由Intent来协助完毕android各个组件之间的通讯. 感觉基础薄弱就又复习了一遍基础知识,整理了一遍! gen 保存自己主动生成的R资源目录 gen->com ...
- 开发人员调试工具Chrome Workspace
Workspace是个什么样的东西呢?他可以在开发人员工具中调试改动js或者css同一时候自己主动保存文件.可以避免开发人员在工具中调试好,再到编辑器中改动一次代码的反复操作,可以提高一定的效率 配置 ...
- .net mvc4 + ajaxfileupload.js 解决IE浏览器中弹出下载对话框问题
摘要:每一个人遇到的问题都不一样,在网上找了一大圈都没有解决到我的问题!由于我的环境如标题所看到的.攻克了这个问题. 主要问题:在于响应头的设置 Controller: [HttpPost] publ ...
- MySQL-删除数据(DELECT)
数据库备份介绍: 数据库一旦删除数据,它就会永远消失. 因此,在执行DELETE语句之前,应该先备份数据库,以防万一要找回删除过的数据. MySQL提供了非常有用的工具,用于在服务器上本地备份或转储M ...
- nRF52832之硬件I2C
这几天一直在折腾nRF52832的硬件I2C,到了今天最终出现了成果,在此也印证了那句话:"耕耘就有收获" 52832的硬件I2C尽管官方提供了demo,可是自己对I2C通信理解的 ...
- 【Poj3126】【BNUOJ3245】Prime Path
http://poj.org/problem?id=3126 https://www.bnuoj.com/v3/problem_show.php?pid=3245 题目鬼图 刚开始看到题目的图觉得这题 ...