编程语言学习概要与学习方法

启程——本文逐渐完善中...


 

三个普适性主题:系统的问题解决方式,抽象能力,以及将计算思维作为思考世界的一种方式。

 

应当学会以下技能

初级技能

  • 使用语言进行编程与计算

  • 学会系统性地组织编写调试中等规模的程序;

  • 理解算法复杂度

  • 将模糊的问题转化为明确的计算方法,以此解决问题,并对这个过程有深刻的理解;

  • 掌握一些有用的算法以及问题简化技术

中级技能

  • 对于那些很难得到封闭解的问题,知道如何使用随机性和模拟技术进行清晰阐述;

  • 学会使用计算工具(包括简单的统计,可视化以及机器学习工具)对于数据进行理解与建模。

编程本身就是一件非常困难的事情。正如那句名言所说:“在几何中,没有为国王铺设的大道”。对于编程而言,没有捷径可走。想学会的话,得练,得多练,得用心练!

计算机只能用来做两件事,执行计算与保存结果,但是它把这两件事做到了极致。世界上第一台通用电子计算机ENIAC为科学家们提供了一种不同于之前任何计算器的工具,先前在手动计算器上花费12小时的弹道计算可以在30秒内完成(因此被称为比炮弹还快),但是每秒也仅能执行几千次计算。而现在常见的台式机与笔记本电脑每秒钟大概可以执行十亿次计算。许多问题被证明可以通过计算机来解决(当然也有不能通过计算机来解决的)。

希望大家可以熟练地将计算思维应用到解决工作学习生活的问题中。

 

所有的知识可以被归结为两类:陈述性知识,程序性知识。

陈述性知识由对事实的描述组成。例如:若y×y=x,则x的平方根就是数值y。这就是对事实的描述,但是它并没有告诉我们怎样求出平方根。

程序性知识说明如何做,描述了信息演绎的过程。例如告诉我们怎么样求出平方根(引用[2]中的描述是说亚历山大的海伦第一次提出如何计算一个数的平方根)。方法如下

  1. 随机选择一个数g;
  2. 如果g×g的符合达到x的精度,那么停止计算,g就是x的平方根;
  3. 否则,选择一个新的数字(g+x/g)/2;
  4. 将(3)中选择的新数字作为g,然后重复(1)~(4)的过程,直到g×g的符合达到x的精度时停止。

算法:以上这个方法描述了一系列简单的步骤,以及一个控制流,用来确定某个步骤在什么情况下得以执行。这种描述的方式称为算法(这里说的比较通俗,没有给出算法的形式化定义,想仔细探究的去看算法的百科吧,附带谈一下科学史,算法这个词源于波斯数学家穆罕默德-穆萨-阿尔-花剌子模

 

世界上目前存在几百种编程语言,没有哪一门语言是最好的(尽管你可以数出一些最差的)。每门语言都有自己的长处。

每种编程语言都有基本结构,语法,静态语义,语义。

我们举个栗子:就拿英语来说,它的基本结构是单词,语法则是来描述那些单词放在一起可以组成通顺的句子,静态语义则定义了哪些句子是有意义的,语义则定义了句子的实际含义。

下面是更加详细的解说;

英语的基本结构,比如:

1 名词 noun n. student 学生6 数词 numeral num. three 三
2 代词 pronoun pron. you 你7 冠词 article art. a 一个
3 形容词 adjective adj. happy 高兴的8 介词 preposition prep. at 在...
4 副词 adverb adv. quickly 迅速地9 连词 conjunction conj. and 和
5 动词 verb v. cut 砍、割10 感叹词 interjection interj. oh 哦

 

 

 

 

 

 

英语的语法定义了字符和符号组成句子的正确形式,比如:

<代词><系动词><形容词>的形式在语法上是有效的,而<名词><名词><名词>这样的句子形式在语法上是不对的。

 

英语的静态语义定义了哪些语法有效的句子是有意义的,比如:

英语中I are big.这个句子符合语法<代词><系动词><形容词>的形式,但是它不是有效的句子,因为are是复数形式,而代词I是单数,这在静态语义上是无效的。

 

语义为每个语法正确又没有静态语义错误的句子关联一个含义,比如:

在自然语言中许多句子是模棱两可的。比如句子I cannot praise this student too highly可以是一种赞扬也可以是一种批评,而编程语言是被精心设计过的,所以每个语言都只有一种确切的含义(所以不用担心相同的程序执行时会出现不同的结果,这可是编程语言很重要的一个特性呢)。

 

编写程序会出现的错误

语法错误是最常见的错误,但危害性最小。每种严谨的编程语言都会尽力去检查语法错误,绝不允许用户运行有语法错误的程序。大多数情况下,语言系统都会给出足够明确的提示,指出错误的位置,让用户懂得如何修复错误。

静态语义错误比较复杂,但是一般编程语言会做很多的静态语义检查,但是不一定会捕捉所有的静态语义错误。这些错误如果没有检测出来,程序的运行结果往往是不可预知的。

通常我们不会说出现语义错误。如果一个程序没有语法错误,也没有静态语义错误,那么它就具有某种含义,也就是语义。

 

初学者遇到的困难

初学者学习一门新的编程语言时,最常遇到的问题是记不住编程语言的关键字与语法结构,很遗憾没有快速记住和掌握它们的捷径,只能靠多练。最常遇到的错误是语法错误,但是语法错误的危害性却是最小的,也是最容易排查的,所以刚开始学习编程的时候不要怕犯错,不要过于追求程序的完美,即便犯错了也是能很快纠正的,犯的错多了自然就掌握啦,总不至于会在同一个地方跌倒一千次吧,相信自己一定能成功地掌握的(๑•̀ㅂ•́)و✧。

 

[1]python编程导论第二版,John V.Guttag著,陈光欣译

[2]Introduction to Programming in Python : An Interdisciplinary Approach

[3]Celebrating Penn Engineering History: ENIAC,https://www.seas.upenn.edu/about/history-heritage/eniac/,2018.12.29

  • 41
    点赞
  • 129
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值