语义描述了我们如何从那些表达式中推导出相关的含义,从而解决我们想解决的问题。

语法描述了如何将合法表达式组合在一起。

我们要选择什么样的编程语言?

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 编程导论的更多相关文章

  1. jacky解读麻省理工《计算机科学与Python编程导论》第1集

    文:@数据分析-jacky(朱元禄) (一)导言 本课程讲的中心思想就是五个字:计算机思维 Python只是辅助工具,是辅助大家理解计算机思维,仅此而已 急功近利是人性,适得其反是结果:我们看到有很多 ...

  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. u盘--软驱

    https://item.taobao.com/item.htm?spm=a230r.1.14.26.XUgxcR&id=12352589458&ns=1&abbucket=5 ...

  2. Connection节点配置错误解决方案

    问题:配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息并适当地修改配置文件.分析器错误信息: 无法识别的配置节“connectionStrings”源错误:行 ...

  3. sql 按中文排序

    sql server:select * from [表名]order by [字段],[字段] collate Chinese_PRC_CS_AS_KS_WS mysql:select * from ...

  4. sqlalchemy多表联合查询的左连接、右连接等使用

    #按用户名摸糊查询trans_details.query.join(Uses).filter(Users.username.like('%xx%'))#select xxx from trans_de ...

  5. Cookie对象的特点

    1.存储少量不重要的数据2.存储在客户端的文本文件中(必须设置有效期,否则不被存储)3.安全性差4.存储的数据类型--字符串5.浏览器窗口无关,但与访问的站点相关6.具体特定的过期时间和日期7.在客户 ...

  6. makefile中的一点知识

    makefile文件里以下这一部分展开是什么样的呢? .. . mytarget=foo  $(mytarget): $(mytarget).c        gcc -o $(mytarget) $ ...

  7. 另类创业招聘(REV#2)

    项目一 项目名:苏格拉底网 项目性质:人才測评为主.辅助以简易人才招聘功能的小众功能站点.项目使用了自主研发的人才測评算法以及人格分类模型(与MBTI非常相似). 项目相关网址:sugeladi.ne ...

  8. 数据结构 - 希尔排序(Shell&#39;s Sort) 具体解释 及 代码(C++)

    数据结构 - 希尔排序(Shell's Sort) 具体解释 及 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/2 ...

  9. H264编码技术[3]

    H.264的目标应用涵盖了目前大部分的视频服务,如有线电视远程监控.交互媒体.数字电视.视频会议.视频点播.流媒体服务等.H.264为解决不同应用中的网络传输的差异.定义了两层:视频编码层(VCL:V ...

  10. 7-74 JavaScript 事件

    7-74 JavaScript 事件 学习要点 掌握常用的javaScript事件 基本概念 事件是一些特定动作发生时所发出的信号,JavaScript中的事件是可以被 JavaScript 侦测到的 ...