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

Week1 第一讲

Each programing language provides a set of primitive operation

任何一门编程语言都提供了原语集

图灵完备性中的六个基本类型:

https://stackoverflow.com/questions/28148562/what-are-the-six-basic-primitives-in-turing-complete

这些基本类型或者说原语集可以组合成复杂的指令去执行我们需要的操作——就好像变量定义、函数定义、数值运算等基本语句组合后可以变成具体的功能软件一样。

Primitive constructs

谈到语言的时候,首先要描述什么是原语结构?放在一起的元素是什么?

——programming language—numbers,strings,simple operators

编程语言中的一些基本元素:数字、字符串(或叫字符序列)、简单的操作符。这些等效于英语里的word

当这些东西组合时就触及了语言的语法概念。

语法告诉我们这些基本word的哪些组合在语言中是符合文法的组合,比如:

数字+操作符+数字就是正确的语法

语法对了,还要考虑语义。

语义指表达式所关联的意思,语义有两类:

1.     static semantics—which syntactically valid strings have a meaning

静态语义。指的是符合语法的句子里哪些是有含义的,例如:

对于1/abc,字符+操作符+字符,在语法上是可行的。但是在静态语义上是无效的,数字不能除于字符串,这样写报错的是结果错,不是语句错。

2.     semantics—what is the meaning associated with a syntactically correct string of symbols with no static semantic errors

语言的形式语义或者叫全语义,指的是符合语法和静态语义的句子表达的是什么意思,例如:

英语的句子会有歧义,中文也有,比如“孩子没了父母真悲伤”——是孩子没了父母悲伤还是孩子没有父母所以悲伤?

这种意思要靠上下文、语调等环境来正确理解。

在编程语言中,一条语句有且仅有一种意思。(我在想,这是不是意味着“可修改性强”的意思不是某个语句的意思可以任意改,而是指单个语句意思必须确定,但是可以通过在语句之间或者外面加入新语句之类的办法)

很多时候某个语句所表达的意思并不完全是程序员想的那个意思。

以上就是语义存在的意义,她告诉我们表达式到底表达了什么意思,而我们要做的就是反过来通过语义推导出正确的语法来达到我们的目的。

为什么会有bug?

1.     Syntactic errors

语法错误挺容易发生,但也很容易被计算机捕捉到

2.     static semantic errors

静态语义错误很少。对于编译型语言,是在执行程序前就去查这种错误;像python这样的解释型语言中,程序是一直在执行的,也就是解释器一直在解释整个程序,于是就在出现错误的地方马上警告我们

3.     programs don‘t have semantic errors,but meaning may not be what was intended

1、2都没有时也就是没有语义错误,就一定是有意思的语句。只是可能这种意思和我们像表达的不一样,比如:

1.crashes(stops running)程序崩溃

2.runs forever 程序一直运行不停止

3.produces an answer,but not programmer‘s intent最烦的是这种,给出了结果但却不是想要的那个

我们的目标是:学会如何组合哪些基本原语集,来表达我们想要的东西给计算机,让计算机按我们的想法去实现我们的目标

(1)麻省理工:计算机科学和 Python 编程导论的更多相关文章

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

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

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

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

  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. 实战恢复2950交换机的IOS

    本来想用两台交换机做实验的,可是通过console口进入其中一台交换机后却发现这个台交换器的IOS文件丢失了 本来正常进入交换机后应该是首先进入到用户模式的,而且提示符应该是">&qu ...

  2. 【cocos2d-x 3.7 飞机大战】 决战南海I (三) 敌机实现

    如今来实现敌机类 敌机和我方飞机相似,具有生命值.能够发射子弹.而且有自己的运动轨迹.事实上能够为它们设计一个共同的基类,这样能够更方便扩展. 不同的敌机,应设置不同的标识.属性 // 敌机生命值 c ...

  3. 【智能路由器】让MT7620固件openwrt支持USB

    [智能路由器]系列文章连接 http://blog.csdn.net/u012819339/article/category/5803489 首先确定硬件有USB,这个得检查板子是否引出了usb口,一 ...

  4. django 名词解释

    1) 什么是slug http://stackoverflow.com/questions/427102/what-is-a-slug-in-django 如上链接红色部分就是slug,它就是链接的最 ...

  5. 策略模式&反射

    业务代码 class Operate { public string _firstKey; public string _secondKey; public string _extendKey; pu ...

  6. DEV Express控件VScorllBar控件使用

    今天使用VScorllBall控件做了个控制界面上下滑动的功能,网上也找了这方面的资料,大概综合借鉴了一下之后,搞了一个适合我自己的自定义功能控件. 下面话不多说,直接上代码. private voi ...

  7. cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第五步--button控制主角Jump&amp;Crouch

    说明:这里是借鉴:晓风残月前辈的博客.他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...

  8. Java 中 modifer &#39;public&#39; is reduntant for interface methods

    http://androidren.com/index.php?qa=322&qa_1=java-%E4%B8%AD-modifer-public-is-reduntant-for-inter ...

  9. cocos2dx 纹理优化

    description: 为什么要谈纹理的问题,游戏的画面无时无刻不充斥着图像,通俗意义上一款精致的游戏都有着非常精美的画面.这样往往能给玩家带来更好的游戏体验,这一点也是对于游戏制作者来说所尽力追求 ...

  10. WEB端应该使用DataTable/DataSet吗?

    有一次和同事讨论起具体的技术细节,同事说不要用什么实体类,从数据库访问到的数据,直接用DataTable.DataSet 就好.理由是,从获取到的数据集转换成实体类,有一定的性能损耗. 呵呵,性能.我 ...