
获得徽章 0
简单记录下自学数据抽象(Data Abstraction)的内容。
数据抽象包括 4 个部分:
- 构造器:用于构建抽象的实例
- 选择器:用于获取抽象的组成部分
- 操作:用于操作抽象,同时保持抽象的使用与其表示的内部细节之间的屏障
- 契约:指定构造器和选择器及其行为之间的关系
闭包是处理复合数据时的一个关键概念,意味着我们用来组合数据对象的粘合剂不仅应该允许我们组合原始数据对象,还应该允许我们组合复合数据对象。
数据抽象包括 4 个部分:
- 构造器:用于构建抽象的实例
- 选择器:用于获取抽象的组成部分
- 操作:用于操作抽象,同时保持抽象的使用与其表示的内部细节之间的屏障
- 契约:指定构造器和选择器及其行为之间的关系
闭包是处理复合数据时的一个关键概念,意味着我们用来组合数据对象的粘合剂不仅应该允许我们组合原始数据对象,还应该允许我们组合复合数据对象。
展开
评论
点赞
数据抽象(Data Abstraction)感觉有点“道生一,一生二,二生三,三生万物”的感觉。
比如,我们熟悉的【点--线--面--体--万物】。
- 创建一个点 Point:(cons x y),即用 cons 来 pair 最原始的横坐标 x、竖坐标 y
- 创建一条线 Line:(cons point1 point2)
- 创建一个面 Triangle:(cons line1 cons (line2 line3))
...
比如,我们熟悉的【点--线--面--体--万物】。
- 创建一个点 Point:(cons x y),即用 cons 来 pair 最原始的横坐标 x、竖坐标 y
- 创建一条线 Line:(cons point1 point2)
- 创建一个面 Triangle:(cons line1 cons (line2 line3))
...
展开
1
1
SICP Lecture 7 课堂笔记:如何写好程序
- 程序设计(创建合适的数据结构存储信息,维护接口,流程抽象和理清数据流)
- 写文档说明
- Debug
- 类型(Type)作为程序编写和调试的强大工具
- 程序设计(创建合适的数据结构存储信息,维护接口,流程抽象和理清数据流)
- 写文档说明
- Debug
- 类型(Type)作为程序编写和调试的强大工具
评论
点赞
这本书居然这么老!
Alonzo Church 在 1941 年写的 The Calculi of Lambda-Conversion。它详细地介绍了 Lambda 演算,这是一种用来研究函数和计算的数学工具。Lambda 演算后来帮助人们创造了一种新的编程方式,叫做函数式编程,这对计算机科学的发展有很大帮助。
Alonzo Church 在 1941 年写的 The Calculi of Lambda-Conversion。它详细地介绍了 Lambda 演算,这是一种用来研究函数和计算的数学工具。Lambda 演算后来帮助人们创造了一种新的编程方式,叫做函数式编程,这对计算机科学的发展有很大帮助。
评论
2
"我认为未来整个行业的管理层级将会减少。
如果让我猜测的话,懂技术的产品经理或具有产品洞察力的工程师可能会成为公司中最有价值的人。"
— Perplexity 联合创始人 Johnny Ho
如果让我猜测的话,懂技术的产品经理或具有产品洞察力的工程师可能会成为公司中最有价值的人。"
— Perplexity 联合创始人 Johnny Ho
评论
点赞
Structure and Interpretation of Computer Programs(简称 SICP)确实是一本好书。
1、控制大型软件系统复杂性的主要技术:抽象、接口、新语言
2、λ 演算后面看看 Philip Wadler 的演讲
3、
worrydream.com
1、控制大型软件系统复杂性的主要技术:抽象、接口、新语言
2、λ 演算后面看看 Philip Wadler 的演讲
3、
展开
评论
点赞
如何写好程序:
- 判断哪些信息应该归组在一起
- 创建相应的数据结构来存这些信息
- 维护数据结构的接口
The key thing to note is that when designing a computational system,
it is extremely valuable to decide what kinds of information naturally should be grouped together,
and to then create structures that perform that grouping,
while maintaining interfaces to the structures that hide the details.
- 判断哪些信息应该归组在一起
- 创建相应的数据结构来存这些信息
- 维护数据结构的接口
The key thing to note is that when designing a computational system,
it is extremely valuable to decide what kinds of information naturally should be grouped together,
and to then create structures that perform that grouping,
while maintaining interfaces to the structures that hide the details.
展开
2
点赞
花 2 小时了解了下 Lambda 演算,发现:
- 一个不错的教程(纽约大学 Chris Barker)
- 3 本高质量的入门书
- 一个不错的教程(纽约大学 Chris Barker)
- 3 本高质量的入门书
评论
1
学校注重做题和死记硬背,但没有教会我们如何解决问题。
How to Solve it by Computer 这本书是致敬数学教育家 Polya,聚焦在如何用程序来解决问题。
感觉对学习算法是一本不错的书。
How to Solve it by Computer 这本书是致敬数学教育家 Polya,聚焦在如何用程序来解决问题。
感觉对学习算法是一本不错的书。
评论
点赞
学习 Lambda Calculus 和编程的 3 本入门书:
- 克里斯·汉金(Chris Hankin)的 An Introduction to Lambda Calculi for Computer Scientists。
- 丹尼尔·弗里德曼(Daniel P. Friedman)和马蒂亚斯·费莱森(Matthias Felleisen)所著的 2 本:The Little Schemer 第四版和 The Seasoned Schemer
- 克里斯·汉金(Chris Hankin)的 An Introduction to Lambda Calculi for Computer Scientists。
- 丹尼尔·弗里德曼(Daniel P. Friedman)和马蒂亚斯·费莱森(Matthias Felleisen)所著的 2 本:The Little Schemer 第四版和 The Seasoned Schemer
展开
评论
点赞
什么是第一性原理?
大厨(Chef)和厨子(Cook)的区别:大厨是第一个做出披萨🍕的人;厨子是之后所有做披萨的人。
小麦、番茄、盐和牛奶的历史可以追溯到很久以前,但在某一刻,有人说:"如果我把这些食材这样处理……再这样……再那样……"最终,世界上第一个披萨就诞生了。这就是主厨的工作。
从那时起,不知有多少人制作过披萨。这就是厨子的工作。
大厨从基本原理出发思考,对他们来说,基本原理就是未经加工的可食用原料。这些是他们的拼图碎片,他们的积木。他们从这里开始,运用自己的经验、直觉和味蕾,一步步向上创造。
而厨子则是在已有的基础上工作——可能是某种食谱,或是他们尝过并喜欢的一道菜,又或是他们看别人做过的一道菜。
大厨(Chef)和厨子(Cook)的区别:大厨是第一个做出披萨🍕的人;厨子是之后所有做披萨的人。
小麦、番茄、盐和牛奶的历史可以追溯到很久以前,但在某一刻,有人说:"如果我把这些食材这样处理……再这样……再那样……"最终,世界上第一个披萨就诞生了。这就是主厨的工作。
从那时起,不知有多少人制作过披萨。这就是厨子的工作。
大厨从基本原理出发思考,对他们来说,基本原理就是未经加工的可食用原料。这些是他们的拼图碎片,他们的积木。他们从这里开始,运用自己的经验、直觉和味蕾,一步步向上创造。
而厨子则是在已有的基础上工作——可能是某种食谱,或是他们尝过并喜欢的一道菜,又或是他们看别人做过的一道菜。
展开
评论
1
推荐这 4 个高质量技术演讲,极具启发性,值得反复观看内化。
- Turning the Database Inside Out (Martin Kleppmann)
- Inventing on Principle (前 Apple UI 设计师 Bret Victor)
- Developing ClojureScript with Figwheel(Bruce Hauman)
- Live React: Hot Reloading with Time Travel (React 核心开发者 Dan Abramov)
- Turning the Database Inside Out (Martin Kleppmann)
- Inventing on Principle (前 Apple UI 设计师 Bret Victor)
- Developing ClojureScript with Figwheel(Bruce Hauman)
- Live React: Hot Reloading with Time Travel (React 核心开发者 Dan Abramov)
展开
评论
点赞