程序设计语言学习笔记
来源:互联网 发布:人脸变老软件电脑版 编辑:程序博客网 时间:2024/04/30 08:37
最近稀里糊涂地在Coursera上学Programming Language Part A,到今天实在是坚持不下去了,一方面英语很捉急(尼玛我一直以为自己的英文很好,我去),另一方面在牛客网看了别人面筋中的面试题后想死的心都有了,他妈的哪有时间学这个。。。。。(然后我uneroll了课程,打游戏去了。。。。。。其实都是赤裸裸的借口了),不多说,下面就谈一下学到的几点浅薄的知识:
不是学一门具体的语言(我最后也掉到里面去了,所以觉得没意思)而是”how any language “fits together” to make you more effective programming in any language”,用的是ML语言,Emacs编辑器。
表达式三部曲:
- Syntax
- Type-checking
- Evaluation
对递归的考虑
- 避免重复递归,比如爬楼梯,一次可以爬1层或2层,递归关系是f(n) = f(n-1)+f(n-2),那么f(n-1)和f(n-2)就很大重复了,会使递归复杂度以指数形式增长,在Java就可以考虑用数组保存已经递归好的n,再在函数最前端判断是否被递归过,是则直接return。或者直接用for循环来写。在ML中对应的概念就是let表达式
- Tail Recursion:节省递归调用的使用空间,调用函数后直接返回,比如下面:
fun sum1 xs =case xs of[] => 0| i::xs' => i + sum1 xs'
以及Tail Recursion版:
fun sum2 xs =let fun f (xs,acc) =case xs of[] => acc| i::xs' => f(xs',i+acc)inf(xs,0)end
- ML中变量是immutable的,重复声明前面的变量会被Shadow,即有不同的environment ,值和函数与变量都是binding的关系,这也带来一个好处就是修改变量的值不用考虑对最前的影响(感觉我说的有的扯。。。)
- Syntactic Sugar的概念,原来在入门一门语言的时候都有它的身影
还有一些ML中特有的把函数当成变量传来传去,函数与定义的环境相关而不是调用等等比较奇葩的概念,因为没有坚持下去,所以不是太懂。。。。
又放弃一门Mooc,本来可以拿证书的。。。。。
0 0
- C程序设计语言学习笔记
- c程序设计语言学习笔记
- 程序设计语言学习笔记
- C++程序设计语言特别版 学习笔记(0)
- 《C程序设计语言》学习笔记--第二章
- C程序设计语言学习笔记(1)
- C程序设计语言学习笔记(2)
- C程序设计语言学习笔记(3)
- C程序设计语言学习笔记(4)
- C++程序设计语言学习笔记(一)
- C++程序设计语言学习笔记(二)
- C++程序设计语言学习笔记(三)
- C程序设计语言(K&R)第一章学习笔记
- C程序设计语言(第二版)学习笔记
- 个人学习C程序设计语言(第2版·新版)笔记
- C程序设计语言——第2章学习笔记
- C程序设计语言(K&R)学习笔记--4.const小结
- C程序设计语言(K&R)学习笔记--5.extern小结
- 使用 Maven Profile 和 Filtering 打各种环境的包
- selenium webdriver使用笔记
- Android 系统语言切换监听和设置
- 在控制台和mfc平台下调用caffe库会出现的bug及解决办法
- Qt按钮为什么设置了三态点击样式效果,无法得到预期,enabled属性为何无法选中 - C/C++解惑之Qt
- 程序设计语言学习笔记
- 碎碎念_天天更
- MFC控件实例之Slider Control实例
- 【多校】ZZULIOJ 1919 D
- 二分图--最大匹配
- caffe使用draw_net.py网络结构绘制
- Fiddler使用和数据抓包
- 55. Jump Game
- 你们还在为区块链狂热,Gartner已经站出来帮你认清“五大迷思”了