沮丧的旧金山日本城的下午

在旧金山的领事馆办理完护照后,我加急脚步去邻近的日本城果腹。先是点了一份special yuzu风味的章鱼小丸子,上来一看五个丸子被深深埋藏在葱花里面。

然后去吃了博多拉面,也许是面汤上的油层太厚,香味物质都被紧紧盖住,散发不出来。叉烧的风味不错,可惜只有一块,而面条细且硬。不知是我的心情不着调还是面条的发挥不到位,吃到一半便陷入深深的depressed中,因为太过油腻,硬着头皮吃完以后整个人变得更加沮丧。

过后为了平复心情,去吃soft ice cream,专门选择了上次sold out的西瓜口味,没想到西瓜味冰激凌口味平平,类似更软一些的sorbet,已经冷却的华夫蛋筒和冰激凌的口味完全不搭调,华夫碎屑很硬,冰激凌也没有很浓郁的牛奶风味包裹住,令人遗憾。

九月的太阳竟如此炎热,走在旧金山路上了无生气,傍晚,悻悻而归。

Review: A Tour of Go

很高兴用了周末的一点时间看完了”A Tour of Go”。回顾了一下,自己之前尝试写过的语言类型林林总总——C/C++/C#,C family应该是学习和工作使用时间最长的语言。大一入学编程课程的第一门课就是C++,第一份在亚马逊的工作是C,现在在微软的工作则是C++。可是用的时间虽然很长,但是期间并没有认真研究过语言本身的很多特性,以及更新后的每一代C++的新的特点和功能,至于编译器背后的逻辑,内存的如何分配,线程的调度很多知识都还给书本和老师了。JAVA短暂的用过一些,用的最多的就是在Leetcode刷题的时候,当时才研究生刚毕业,觉得Java的容器比C++的方便,又不用担心指针的问题,所以刚开始刷题和面试的时候常用Java。写过一些Android的小程序,还有好些课程作业,用Android Studio,Eclipse等,也都是Java。Python应该也是从研究生起才开始用,当时用来做NLP的作业。发现脚本语言用Python写十分方便,后来的两份工作中Python也用作同样的目的。当然也有用Python写的相对更大的程序,我就主要是user而不是developer了。其余的语言大抵都是为了写简单网站而学习的HTML,CSS,PHP和JavaScript了。

这次学习Go,感受到了很多知识融会贯通的乐趣。比如开头的package main,让我想到Java;import又会想到Python。在一步一步的学习过程中,又会发现很多与C和C++相似的点。这些都是很有意思的体验。函数和变量的定义让我感受到语言发明者想distinguish这种语言和其它语言外观区别的努力,而在pointer和reference的使用上又让我看到C语言在几十年前的智慧。defer的出现也会让我觉得像是类似finally的定义。slice和map是这个tour中介绍的两种常用数据结构。slice的cap和len很耐人寻味,我觉得会是一个容易产生bug的地方。在function closure这一节,我又回过头去研究同样的功能是如何在C++中实现的。花费了不少的时间,写出了一个C++ function closure版本的Fibonacci求和代码。与Golang相比,C++如果没有了Lambda Function,写出这样的功能一定要大费周章了。Function closure让这个function本身有了状态,可以存储只有自己可见的变量,应用场景还是很独特的。

Go里面的method,struct和interface让我想到了当时看到过的C的代码,C用各种struct和function pointer来实现一个类似C++一样的面向对象编程的架构。这里Go把这些都统一起来了。看完了Goroutines,我猛然有种想用Go重写一遍现在project的C++代码的冲动。许多当时用C++繁复的实现,Go都可以有更直接和简洁的替代方式。channels和select是现在这个project的核心关键————我们用redis的subscribe和publish的功能以及Linux的select()来实现一系列的channel给进程间通信,channel的性能很大的影响了整个程序的运行。我很好奇Go的实现是否能不单单简化代码,还可以提升整体性能。

很期待能在接下来的时间里《GoLang从入门到精通》。

2019年8月23日星期五晚,美加边境的我成为了一个笑话。加拿大签证的日期与美国签证的日期格式大相径庭——日/月/年 v.s. 月/日/年。于是我被拦在了国境线,签署了一份request to enter Canada被回绝的拒信,重新送回美国境内。与我说再见的——骑行至温哥华的成就,以及接下来的九天智利之行,仿佛梦一场。

生活到底无法一成不变的。即使每天,每周,每月,每年如一个个的循环,循环上的每个点都仍需要不尽相同。就好比早上起床的时间,从家出发去往公司的路,停车的车位,喝的饮料的种类,中午食堂和午餐的选择,偶尔划水时翻看的网站,下班后去的超市,买的蔬菜或是肉,睡前看的书或者剧的类型,睡觉的姿势。如果这些往复的活动都一成不变,很快就会发现生活进入了一个死循环,除了时间作为计数器告诉你循环了多少次以外,人就如同空转的机器了。只可惜本来期待良久的打破这个routine的机会与我开了一个玩笑罢了。

很少翻动过往写的文章,猛然间发现已经过去十年。当时的自己还在烦恼的话题,现在只不过换了一个而已——同样的烦恼,同样烦恼的人。我愈发觉得自己变得更加只属于自己了。我的意思是,更进一步的发掘到了只属于自己的一个人独享的痛苦,和建立在这种痛苦之上的快乐。

我选择登山和滑雪。我耽于这种腠理肌肤所及的疼痛后带来的成就感,和即达目的便如释重负一骑绝尘的爽快。我担忧这种饮鸩止渴似的运动,让我选择性的遗忘生活中错失方向踟蹰不前的窘境,以及虎头蛇尾撒手而别的不负责。生活不是登山,没有一条事前规划好的路线和一个既定的终点;也不比滑雪,享受任何快乐的时光时背上的一切包袱也都无法卸下。好在登山时同样会有迷失方向的状况,肩负三十升的背包滑雪也时刻提醒着我旅途尚未完成也同样不能松懈。

当然——“所以兴怀,其致一也”。每曾抵达一处不曾抵达之处,总会感叹:“夫夷以近,则游者众;险以远,则至者少。而世之奇伟、瑰怪,非常之观,常在于险远,而人之所罕至焉,故非有志者不能至也。”这便是“仰观宇宙之大,俯察品类之盛”的乐趣了。