Demon.Lee 2022-08-17 10:19

输出,是最好的输入。

Use three times, and it is yours.

Demon.Lee 2022-08-16 09:21

对耗子叔的这个观点我是认同的,应试教育大多数情况下只告诉我们做什么,怎么做,却很少告诉我们为什么要做,以及为什么要这么做。

因为我自己就不会思考,也不知道怎么思考,如果考试能拿高分,那肯定是背的。

丢了为什么,也就把思考的思维给丢了,此后的学习更多的是一种机械的刻意练习,了无生趣。这里并不是说刻意练习不好,但得知道为啥要刻意练习,明白其中的原理,才能走的更远。

最近在读《一个数学家的叹息》,作者在书中将数学的应试教育批评的一无是处。

观点虽然犀利,但现实往往也是如此。

举一个化学课的例子,老师让我们平衡化学方等式,我们按照套路实现了,老师点赞。然后呢?没有然后。


                KMnO4 + HCl = KCl + MnCl2 + H2O + Cl2

学习的目的是为了应用,为了反思,为了解决问题。如果老师说,学校旁边的那条小河的水很脏,很臭,我们现在想把污水变清水,怎么做?

此时再把化学课中的内容搬上来,就不一样了,会极大地激发很多同学的乐趣。

这就是“为什么”带来的乐趣。

Demon.Lee 2022-08-16 08:46

在计算机科学中,闭包(英语:Closure),又称词法闭包(Lexical Closure)或函数闭包(function closures),是在支持头等函数(即函数为一等公民)的编程语言中实现词法绑定的一种技术。闭包在实现上是一个结构体,它存储了一个函数(通常是其入口地址)和一个关联的环境(相当于一个符号查找表)。环境里是若干对符号和值的对应关系,它既要包括约束变量(该函数内部绑定的符号),也要包括自由变量(在函数外部定义但在函数内被引用),有些函数也可能没有自由变量。闭包跟函数最大的不同在于,当捕捉闭包的时候,它的自由变量会在捕捉时被确定,这样即便脱离了捕捉时的上下文,它也能照常运行。捕捉时对于值的处理可以是值拷贝,也可以是名称引用,这通常由语言设计者决定,也可能由用户自行指定(如C++)。

闭包的概念出现于60年代,最早实现闭包的程序语言是Scheme。之后,闭包被广泛使用于函数式编程语言如ML语言和LISP。很多命令式程序语言也开始支持闭包。

在支持头等函数的语言中,如果函数f内定义了函数g,那么如果g存在自由变量,且这些自由变量没有在编译过程中被优化掉,那么将产生闭包。

闭包和匿名函数经常被用作同义词。但严格来说,匿名函数就是字面意义上没有被赋予名称的函数,而闭包则实际上是一个函数的实例,也就是说它是存在于内存里的某个结构体。如果从实现上来看的话,匿名函数如果没有捕捉自由变量,那么它其实可以被实现为一个函数指针,或者直接内联到调用点,如果它捕捉了自由变量那么它将是一个闭包;而闭包则意味着同时包括函数指针和环境两个关键元素。在编译优化当中,没有捕捉自由变量的闭包可以被优化成普通函数,这样就无需分配闭包结构体,这种编译技巧被称为函数跃升。

今天听郝林老师在《Go 语言核心 36 讲》中的解释,顿时清晰了。

闭包一般由高阶函数生成,并且大多数情况下会引用外部的自由变量,这个自由变量会在具体调用这个匿名函数时得以确定。

表面上,闭包只是延迟实现了部分程序功能或逻辑,但其真正的意义在于动态生成的那部分程序逻辑所带来的灵活性。

闭包之所以称为闭包,正是因为这个自由变量在调用时被确定了,原来的开放状态也就变成了闭合状态:

1、提高某个功能的灵活性,让使用方可以提供部分功能的实现。但这部分大小仍然由自身决定。
2、提供动态替换某个功能实现的可能性,这里的重点是动态。
3、使得代码动态替换的粒度降低到了函数级别。相比之下,模版类型的动态替换粒度是实例级别的。

Demon.Lee 2022-08-14 21:23

写书,是作者在思考;读书,是作者牵引着读者一起思考。

透过事物或情绪的表象,去探寻本质,挺难。但通过别人的爱恨情仇,来反思自己的酸甜苦辣,却是一条捷径,我们为何不去做?

Demon.Lee 2022-08-12 10:46

反思

想到昨天下午跟同事们说的一些话,有些后悔,我应该少说,甚至不说。

除非你在对方心中有影响力,否则没几个人真的愿意听你讲这讲那,大多数人在大部分情况下都会反感,甚至心怀不满。

也许对方表面上不说,但心里活动可能是:

你以为你是谁?有什么资格这么说我?我觉得你的建议也是垃圾…

人很多时候都是被情绪化左右的,喜欢听好听的,不喜欢啰里八嗦的建议。

为啥喜欢听好听的?因为“好听的”,就是自己内心真实的写照:心中早已有了答案,问你的建议,不过是想获得认同,难道还真听你的建议?

当然,人群中也许有 1% 的人真正愿意谦卑地听取他人的建议,我们称这种人具备成长性思维,他们归因于己,在因上努力,在果上随缘。

可是我能遇到多少这样的人呢?

所以,我告诉自己:

  • 少说多听,配合对方情绪的宣泄;
  • 少提或不提建议,尤其是大道理:因为大部分大道理我自己都没有在生活中落地,有啥资格劝说别人;
  • 不做月老,不给人推荐相亲对象:因为他们成了之后,不管过的好不好,都会牵扯上你,过的好,感激你,过的不好,埋怨你。其实他们好与不好,都是他们自己经营的结果,跟别人没有关系;
  • 不在朋友圈发消极的东西,少发状态或情绪(哪怕是正向),多发思考;

多读书,多思考,多写作。

Demon.Lee 2022-08-11 17:32

工程级语言,内置一套完整的测试工具,确实香,还能看到测试覆盖率。

Demon.Lee 2022-08-10 19:55

静下来,咱们认真聊聊相亲、爱情和婚姻

“在任何一段关系里,你最终获得的都是对自己更清晰的认识,获得的是自己的成长。每一段的关系都会带给你完全不同的人生体验,这种体验就是你人生的财富,而不是成本。”

池老团队和李一帆老师直播的干货,非常有启发,触发我们思考。

为什么思考这么重要?因为思考是不常见的。

观察一下朋友圈,你会发现大部分内容都是:状态和情绪。

我是谁,我在哪,我在干什么,哪里哪里打卡等等,这些都是状态。而我今天开心,难过,愤怒等等,都是情绪。

那问题又来了:为啥思考这么少?

Demon.Lee 2022-08-10 08:34

反问自己:

  • 我怀疑了吗?
  • 我思考了吗?
  • 我交流了吗?
  • 我提问了吗?

一问就脸红,我好像很少与同道中人交流,与高人交流,也很少提出很好的问题。

要改变,要改变。

Demon.Lee 2022-08-10 08:03

go 1.19 终于上新了...

➜  vifile >arch -arm64 brew upgrade go
==> Upgrading 1 outdated package:
go 1.18.5 -> 1.19
==> Downloading https://mirrors.ustc.edu.cn/homebrew-bottles/go-1.19.arm64_monterey.bottle.tar.gz
######################################################################## 100.0%
==> Upgrading go
  1.18.5 -> 1.19 

==> Pouring go-1.19.arm64_monterey.bottle.tar.gz
🍺  /opt/homebrew/Cellar/go/1.19: 12,426 files, 628.8MB
==> Running `brew cleanup go`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Removing: /opt/homebrew/Cellar/go/1.18.5... (11,990 files, 596.2MB)
Removing: ~/Library/Caches/Homebrew/go--1.18.5.arm64_monterey.bottle.tar.gz... (168.2MB)
➜  vifile >
➜  vifile >go version            
go version go1.19 darwin/arm64
➜  vifile >
Demon.Lee 2022-08-09 08:51

我们时常听到“谁谁谁没有安全感”之类的话,那安全感是什么呢?

我理解有点像我身上的焦虑症,对某个方面不自信,隔三差五需要一些正向的反馈续命。

又有点像我们圈子里经常有人说的“35 岁职场危机”,当然其他职业也一样。这里的危机应该也算安全感缺失的一种:对未来的自己是否具有竞争力的那种不确定感。

还有一种可能,小时候某一方面的爱缺失了,比如《倚天屠龙记》里面的周芷若,张无忌等,所以他们可能一直都在找寻安全感。

“有的人的童年可以治愈一生,有的人一生都在治愈童年。”