Yan He

He is a Recreator

Page 6


蒙特利尔的街头音乐

8511658932089_.pic.jpg
Jack是我在蒙特利尔遇到的第一位街头演奏者。在老港教堂广场上。他的演奏特别适合教堂广场。一把古典吉他,演奏的是舒缓的不知道是啥年代的单旋律曲子。

技术:3
新奇:1
听感:5

8641658933243_.pic.jpg
Rose是我在多伦多的一个Jazz 音乐吧遇到的萨克斯风演奏者,她的演奏非常震撼,solo部分的即兴感情充沛,经常用一些不和谐音来推高情绪,听众被她搞的都快高潮了。非常不循规蹈矩。有失控感。

技术:4
新奇:5
听感:5

8521658932092_.pic.jpg
Ben是一个年轻的从美国来的流浪音乐人。他爱玩电子音乐,用了临时录音的方法,先录下吉他和铉和电子鼓,然后一边重复播放刚才自己录的伴着,一边弹唱,并且唱的估计都是自己原创的,不那么“流行”的歌。

技术:3
新奇:2
听感:3

8531658932453_.pic.jpg

这对中国夫妇是在老港广场遇到的,还和我聊了几句,自称为“蒙特利尔地铁艺术家”。演奏的都是一些中国口水歌。

技术:3
新奇:1
听感:2

8541658932459_.pic.jpg
Robot是我很喜欢的一个小提琴演奏着,他喜欢在老港教堂和老港广场这一带表演。一听就是古典乐专业出身,技术极好,感情极好,专业!我挺喜欢他的,还和他聊过一次天,他和我说了一些关于中国的话题。只不过他总是演奏别人的曲子,希望他能演奏自己创作的曲子。

技术:5
新奇:2
听感:4

8551658932462_.pic.jpg
老J是一个特别优雅的Jazz单簧管演奏着,我在Atwater的桥头遇到的,这是我遇到的第一个Jazz街头音乐人。演奏完他还问我是不是音乐家?还说他有自己的工作,来着演奏只不过是为了玩,他都80多少岁了,明天还要去工作。我说我也打算学Jazz,他说,那样你老了也能来演奏。

技术:2
新奇:2
听感:3

8561658932466_.pic.jpg
运河音乐节里很喜欢的一个乐队,主唱的气场极好,放松,自信。声音和音乐也很好。这是一只40年的乐队。

技术:4
新奇:3
听感:4

8611658932497_.pic.jpg
蒙特利尔一年一度的Jazz音乐节,多个舞台同时表演,这是其中一个在音乐酒吧的室内演出,极好。

技术:4
新奇:3
听感:4

8581658932478_.pic.jpg
还是Jazz音乐节,一只来自纽约的Jazz乐队,主角是这个日本小号手。他们的风格很纽约,演奏过程中总会有休止符,大家一起停顿,这个让人感觉音乐是黑色的,挺...

Continue reading →


注意力与慢加速

1.举一个场景:我们要将一个乒乓球扔到墙壁上,目的是让乒乓球出手后的飞行的速度尽量的快。

2.有两种方式。

3.第一种方式:紧张发力法,即,从一开始就紧张肌肉,目的是让手臂瞬间达到最快速度。然后,将球扔出。

4.第二种方式:放松发力法:即,一直让手臂保持放松状态,通过脚部扭转,腰部扭转,大臂转动,小臂转动,最后手腕,手指。这样一个蓄力的方式,让球一直处于一种慢慢加速的过程中,最后“甩”出去。

5.这两种方式的本质不同是什么?答案是加速的方式不同。第一种紧张发力法,加速很快,然后因为手臂紧张,很快加速停止,进入匀速模式。而,第二种放松发力法,加速很慢,但是一直处于加速状态,所以整个过程看上去很慢,但是最后出手的一瞬间,球的速度却很快。

6.所以,我将第二种的本质抽象出一个模型,即,慢加速。

7.慢加速有什么好处?因为一直放松所以不累,不容易受伤。又因为放松,所以更容易控制精准度。因为一直加速,所以最后的速度会更快。

8.在慢加速的模式中,如何要提升自己的发力品质,让球出手时更快,我们究竟要练习什么?答案就是,觉知密度。

9.觉知密度越大,对身体的肌肉的控制就越细微,紧张的阻碍加速的肌肉就越少,整个发力过程就会越顺滑,加速度就越大。从外人的视角看上去,我们的扔球动作在整体上就变快了。但是在主观上,我们确感觉更放松了。也就是说:越放松球速反而越快。多了的只是觉知量。

10.结论就是,增加觉知密度,可以让我们的动作变快。产出更多。换句话说就是我们的主观世界里的时间变多了。外部世界反而变成了慢动作。

11.放松–>一直加速–>输出更好–>外部世界变成慢动作–>主观世界时间增加。

12.觉知密度越高—->肌肉控制的越细腻—->放松的更好

13.类比:甩鞭子。

Continue reading →


Positioning SICP 5: Computing with Register Machines

Positioning SICP 5: Computing with Register Machines

作者:何岩,recreating.org出品,谢绝转载。
阅读SICP,站在Lisp发明者的上帝视角来思考:“我为什么要这么设计Lisp?”

0.前言

1)本章开始,进入硬件层面,如何用硬件来模拟Lisp解释器,本质上等价于,如何用硬件来模拟Lambda演算。只有连接到物理世界,计算才可能真正发生。
2)首先用寄存器系统来模拟简单计算过程
3)发明一种寄存器语言来描述寄存器系统的物理现实。
3)再用lisp语言来模拟寄存器语言,就等于是用lisp来模拟寄存器系统的运行,这样的目的是可以用文字来表达寄存器系统,否则用图像来表达真实的寄存器系统的设计成本太高。
4)再用寄存器语言构建出lisp解释器。就等于有一个硬件可以解释器lisp语言。就等于计算可以自动的发生在物理世界。
5)当然,本书缺少的一部分是,更底层的寄存器是如何用继电器来实现的。这部分可以看这本书《编码的奥秘》,探索到最底层,可以知道,所有的一切都由电磁效应这个物理规律所承载,但是电磁感应如何成立呢?
6)电磁感应就是光的解释器。

Chapter 5.1 Designing Register machines

1.目的:用机器来模拟计算

例如:模拟gcd
(define (gcd a b)
(if (= b 0)
a
(gcd b (remainder a b))))

用画图来表示寄存器机器,分为两个部分
1.Data path
(img)
2.Controller
(img)
这两个部分都是硬件,尤其是控制部分,也是由硬件的组合来表达。

2.用一种机器语言来描述寄存器机器

(controller
test-b
(test (op =) (reg b) (const 0))
(branch (label gcd-done))
(assign t (op rem) (reg a) (reg...

Continue reading →


Positioning SICP 4: Metalinguistic Abstraction

Positioning SICP 4: Metalinguistic Abstraction

作者:何岩,recreating.org出品,谢绝转载。
阅读SICP,站在Lisp发明者的上帝视角来思考:“我为什么要这么设计Lisp?”

0.前言

1)从这一章开始,我们进入了SICP的“解释”部分。即,对于lisp这个语言的支撑。而之前都是用lisp这个语言在进行构建。构建是往上层走。解释是往下层走。
2)Why 为什么要学习lisp语言的解释?因为,我想知道这个世界上的奥秘。而lisp是对世界的浓缩抽象。通过理解lisp的解释,就可以类比的理解整个世界的运行规律。
3)Why? 为什么要构建语言的抽象?因为,我们的根本目的是模拟复杂的真实世界。当lisp语言无法满足模拟某些领域的时候,针对这个领域开发一种新语言(中间层)则是一个更有效的思路。所以,我们要研究如何构建语言。
4)How?如何研究构建新语言呢?我们先从构建lisp自身开始,构建lisp的本质就是写一个lisp expression的解释器,解释器的本质就是一段程序,输入就是一个表达式结构的Data。然后我们再来通过改造这个解释器来体会构建语言的妙处。例如通过改造解释器实现一种新的求值order,即,Normal order evaluation。通过改造解释器实现一种新的语言:logic language。
5)How?学习构建语言抽象的意义是什么?答案是,丰富视角,从更抽象的通用视角来看待整个计算机科学,万物都是解释器。普通程序也是解释器。普通程序就是支撑具体一个业务的语言。所以,我们可以将任何算法都称为语言。语言的本质就是规则的载体。用这个语言构建的业务,就可以看成是遵守了某个规则下的游戏。

Chapter 4.1 The Metacircular Evaluator

1.Why lisp can evaluate itself?为什么可以用lisp来构建lisp的解释器?

1)因为,解释器本质就是规则,lisp可以构建规则,当然可以构建lisp解释器。
但是,有一个关键点,新的lis...

Continue reading →


Positioning SICP 3: Modularity, Objects, and State

Positioning SICP 3: Modularity, Objects, and State

作者:何岩,recreating.org出品,谢绝转载。
阅读SICP,站在Lisp发明者的上帝视角来思考:“我为什么要这么设计Lisp?”

0.前言:Why I design those concepts—Modularity, Objects, and State?为什么我要设计模块化,对象和状态这些概念?

为了,更简单的模拟物理世界。
我们看世界的视角有两种:
1)将世界看成由彼此对立的物质对象组成,即,Object View
2)将世界看成彼此始终相互作用的信息流构成,即,Stream View
虽然真实的世界是Stream的。但是如果我们人脑用Stream View很难理解和模拟试卷,所以为了简化,降低人脑负荷,我们采用Object View来简化的模拟真实世界。

而,我们生下来被教育的也正是Object View,对象世界观,我们都习惯于此,误以为真实的世界就真的只是Object组成,却不知道,还有另一种看世界的方式Stream View,而,佛经里的世界观就是Stream View,所以很难理解,但是又那么自洽。

我们用代码来对比一下Object view和Stream View,给自己找点感觉先:
有这样一个需求:银行账户account,取款withdraw,显示余额balance。
1)Bank Account with Object View
(define balanc 100)

(define (withdraw amount)
(if (>= balance amount)
(begin (set! balanc (- balance amount))
balance)
“Insufficient funds”))
2)Bank Account with Stream View
(define (stream-withdraw balance...

Continue reading →


Positioning SICP 2: Building Abstractions with Data

Positioning SICP 2: Building Abstractions with Data

作者:何岩,recreating.org出品,谢绝转载
阅读SICP,站在Lisp发明者的上帝视角来思考:“我为什么要这么设计Lisp?”

0.前言:Why I design the concept of Data? 为什么要设计Data这个概念?Procedure不够用吗?

因为,control complexity。
因为,人脑习惯Object View,需要让人们产生Data这个Object想象体。这样可以降低思考复杂度。
因为,Object/Data的抽象思想是Black-Box Abstraction,也可以称为modularity。modularity可以降低复杂度,因为,modularity减少了关系发生的数量。
因为,统一视角,抽象思维,type的本质。例如:Java中的接口
Procedure is Stream View
Data is Object View

Chapter 2.1 Introduction to Data Abstraction

1.How I design the implementation of Data?我如何设计Data的实现?

— Chapter 2.1.3 What Is Meant by Data?
我将用Procedures来虚拟出Data。
Data对外提供可以被感知到的是一层interface,interface的本质就是procedure。
用户就会想象,Data貌似真的存在。
其实,那些作为interface的procedure也是由更底层的procedure组成的。
例如,用procedure来模拟Pairs的存在
为了欺骗使用Pair的人,我会提供Cons/Car/Cdr这三个Procedures作为interface。
使用Pair的人会这么操纵Pair暴露的interface:cons/car/cdr:
=>(define x (cons 1 2)...

Continue reading →


Positioning SICP 1: Building Abstractions with Procedures

Positioning SICP 1: Building Abstractions with Procedures

作者:何岩,recreating.org出品,谢绝转载。
阅读[SICP],站在Lisp发明者的上帝视角来思考:“我为什么要这么设计Lisp?”

0.前言

本系列为Recreating Lisp的准备阶段。因为,硬核知识要基于SICP,所以,我需要一边读SICP一边构建“纯”定位体系。
文字就像是线,串起来的珍珠就是SICP中的Lisp代码。
所以,这本书的创造,换句话说,就是面向代码定位,而非面向概念。
第一本书是面向概念定位,因为概念容易描述清楚。
而本书很难面向概念定位,因为SICP是将如何编程的,很难之用文字描述清楚,代码的描述是最客观的。所以,这也决定了,这个书更适技术背景的读者。

WHAT - 本系列写的是什么?
定位,定位概念体系,定位Lisp的概念体系,定位为什么Lisp如此设计?以及,为什么这么使用Lisp来构建抽象?

WHY - 为什么要写定位?
1.因为,让自己站在创造者的视角,用自己的眼睛看世界,用自己的语言表达一遍SICP中讨论的各种概念,才能真懂。
2.另外,SICP的文字的并不是面向定位的,所以比较难看出结构来,而我的文字目的就是要表达定位,所以我的文字的价值能有倾向性。

HOW - 我如何写?
1.我要站在Lisp发明人的上帝视角不断的提问:“我为什么要设计这个概念?(Why I design this concept?)”
2.通过问题来引出SICP中的代码实现。
3.再即兴的加入感悟的文字,关联其他领域,例如:Bitcoin,哲学等生活体验。
4.最终呈现一个概念体系,体系的核心是Lisp。

1.Why - 我为什么要创造Lisp这个高级编程语言?

为了构建抽象。
写到第二篇产生的感悟是:为了构建复杂,但是由于脑力限制,我们还要控制复杂。所以,编程就是既要构建复杂,又要控制复杂。解决的方法就是:抽象。

WHY - 为什么构建抽象?
为了模拟真实世界。

WHY - 为什么要模拟真实世界?
更高效的处理...

Continue reading →


Learn by Positioning

Why?为什么要Learn by positioning?

因为,做定位,就是讲读到的知识挂接到我的概念体系中。
我们只能真的理解,属于我们概念体系里的东西。
外界的知识,我们可能记得,但是不能真的理解。
这就是,为什么记得那么多道理,却依然不会用。

How?对于学习/看书的指导意义是什么?

1.每次学习一本书,要开一个读书笔记的系列。
2.补充书中缺少的WHY,用WHY将书中的概念挂接到自己的概念体系中。
3.因为,WHY是我们自己问出来,必然是基于我们的概念体系。
4.挂接过程:我们的概念体系 —> WHY?(我们提出的问题) —> 书中概念(作者的答案)

What?这一切的本质是什么?

1.理解的载体是关系。
2.关系比对象更有质量。
3.关系才是信息的载体,而非对象内部的状态。

View →


事是做出来的

1.WHAT流行观念事什么?

大多数人的观念事,事是计划出来的,先要知道如何做,才能开始去做,否者不敢行动,所以大多数人一辈子都在安全的等待中度过。
如果你问一个人,你真正想干的是什么?
他会说,我想成为一个作家。
你问什么不去做呢?
因为成为作家对我来说太难了,我没有基本功。我不知道写什么,即便我知道了想要写的主题。我也不知道如何构建一本书。这太难了。我还没准备好。如果我写不出来一本书怎么办?如果我写出来了,没有出版社给我出版怎么办?如果出版社出版了,卖不出去怎么办?我如果想要成为全职作家,得辞职,如果我赚不到钱怎么办?
看看,这些思维的底层假设就是:“我只敢去做确定性的事,所以我要看清了计划,才能开始行动”
这种假设就是一种世界观,即,精确系统的世界观。
如果用爬山来隐喻,精确系统的世界观就是依赖精准的地图才敢行动。
而,另一种与之截然不同的复杂系统的世界观,则是只需要指南针。

2.WHAT另一种相对观念是什么?

另一种完全不同的观念是:我不知道,但是我选择先做起来,试试看。
我只知道大致的方向,我不用知道我会遇到的具体小问题是什么。我甚至不知道如何解决那些可以遇见的问题。我只有走到眼前,摸到了石头,看到了石头的纹理,才能知道踩到哪里,手抓到哪里,翻过去,还是绕过去。
最坏的一种情况是,真的过不去,那么我就宣布自己失败,放弃这条路,再选一条别的路重新开始即兴的探险。我们不必每次都成功走到山顶。享受爬山的本身才是目的,走了一半,兴尽而归,未尝不是另一种美好。
事是做出来的,摸到问题纹理之前,我不可能知道如何解决。甚至是摸到了纹理,我也要用身体去尝试,试着试着也许就过去了。

我们的大脑很强悍,但那是面对真实的问题的当下时刻。
里的太遥远,我们的大脑就是一个白痴。
这就是另一种世界观,复杂系统世界观。

3.我遇到的情况

我想要写第二本书,将SICP重构,我来添加定位,得到全局定位感。
我不知道如何写。但是我开始行为了。
我会写读书笔记。就像今天,我遇到的灵感:“原来我的工作本质是,定位。”
所以,定位才是我的热狗,故事只是番茄酱。
我很开心,解决方案就像自动...

Continue reading →


Recreating SICP 1:从一个计算器开始

作者:何岩,禁止转载。

0.前言

你知道MIT计算机专业的第一门课是什么吗?
那就是SICP(Structure and Interpretation of Computer Programs)
SICP被评为是一本神书。两位作者就像是炼金术士,将自己对计算机科学的真知灼见浓缩在不算厚的SICP之中。
虽然看上去SICP文字不多,但是信息量极大。很多我们常见的争论议题,例如面向对象和面向函数之争,SICP只需要几行文字就能点到本质。看完之后总有一种“原来这个问题的本质是这样!”的恍然大悟。然后才知道,之前的自己只是以为自己懂了。
SICP如此伟大,确少有人读,可谓最被忽略的宝藏。
我将用故事的形式,将其重新开采。
希望通过这个系列,让你可以“看见”SICP的光辉。

故事的主角来自神剧:Rick & Morty

1.png

1.Rick & Morty

Morty家的车库是Rick的工作室。

Rick是全宇宙最聪明的科学家,大部分时间都在这里鼓捣他的发明创造。

Morty是他的外孙,身体总是软绵绵的,和他的智商一样让人觉得不可靠。

木头桌子前,Rick盯着电脑屏幕,用鸡爪一样的双手,敏捷的敲打着键盘。

电脑的另一端连着一个发光的立方体。

Morty指着立方体问:“Hi Rick,这是你的新发明吗?”

“这是我造的小宇宙,它可以像电池一样给我的太空船供电” Rick说

“现在它有点不正常,从外面看不出问题,得进去看看。”Rick拿出两支类似蓝牙耳机的设备:“来Morty,把这个插在耳朵里,用它可以进入小宇宙,它的名字叫做:MI(意识转换器,英文全称:Mind Interpreter)”

Morty看着手中的MI,心想为什么啥事都要拉上我,本来还想看会电视。

两人同时按了一下耳朵上的MI,便失去意识,倒在了地上。

2.BUG来自GC(垃圾回收器)

Rick和Morty在一家咖啡馆醒来,墙上写着“Recreating Cafe”。

牛头人端着咖啡走过来:“Rick,你可来了!最近这里发生了一些特别可怕的事情。”

2.png

牛头人是宇宙联邦的一级通缉犯,为...

Continue reading →