『代码的未来』读书笔记

从一个语言设计者的角度,纵览了一遍目前热门的编程语言,和它们背后的意义。很有启发性的一本好书。它回答了我下面的这些问题。

什么是元编程?
在程序运行过程中也可以对程序本身进行操作。
例如,描述数据所具有的结构的数据,也就是关于数据本身的数据,被称为元数据(Metadata)。再举个比较特别的例子,小说中的角色如果知道自己所身处的故事是虚构的,这样的小说就被称为元小说(Metafiction)
=》“用程序来编写程序”
意义:获取和变更程序本身信息的功能,并动态更改 -》即 Ruby 的动态运行模式
实例语言:Javascript、Ruby

什么是函数对象?
比如js,把函数当成值来用,高阶函数(目的:提高程序通用性)

一个编程语言设计者眼中的编程语言学习与如何评价一门编程语言?
-元编程
-内存管理 – 垃圾回收
-异常处理
-闭包
-服务器端 客户端
-动态 静态

什么是闭包?
闭包(Closure)这个词原本就是封闭的意思。被封闭起来的变量的寿命,与封闭它的函数对象寿命相等。也就是说,当封闭这个变量的函数对象不再被访问,被垃圾回收器回收掉时,这个变量的寿命也就同时终结了。
1. 生命周期
2. 作用域

什么是动态语言?
1. 动态运行模式
2. 动态类型

V8为什么这么快?
通过『特殊化』

Go 语言是什么?
意义:解决 C 和 C++ 的效率问题
特点:
没有继承关系的面向对象 – 有鸭子样的就是鸭子
基于 C 的特点,带垃圾回收
多返回值
并发的 Go 关键字

Dart 语言是什么?
意义:解决 js 问题:几乎所有数据(除了数值和字符串)都是对象(散列表),散列表的对象的性能问题(跟数组和结构体)。Dart 用基于类的对象系统(结构体)取代。

CoffeScript 是什么?
基于 JS 的一种语言(有点像 JS 的另外一种语法规范)。解决了全局变量的问题。借用了 Python 和 Ruby 的语法。

什么是MapReduce?
MapReduce是将数据的处理通过Map(数据的映射)、Reduce(映射后数据的化简)的组合来进行描述的。
简单来说就是将计算分块,然后整合每个分块结果的一种方法。
MongoDB 也有 MapReduce,用来计算。

什么是面向文档数据库?
例子:MongoDB。里面保存的 JSON 就是文档。(DB,Collection,Document)
特点:
以JSON(JavaScript Object Notation)格式保存数据
不需要结构定义
支持分布式环境
乐观的事务机制
通过JavaScript进行操作
支持从多种语言进行访问

日本旅行笔记

上月初,和蘑菇一起去了日本度蜜月,大致行程是:上海飞大阪,然后在京都住5晚(其中一天去了大阪),在白浜住了两晚,在东京住了4晚,然后从东京回上海。回来后先制作了一部旅行小短片『鱼和蘑菇的日本蜜月旅行』,今天没什么事,把旅行笔记整理了一下。

旅行对我来说最大的好处是能够影响到一些自己的生活态度和看法,可能是因为看到和感受到一些与日常不同的地方,能够打破思维的定势,去思考这些不同的地方形成的原因,以及它所解决的问题。


图:东京御苑,言叶之庭的原型

买不到的餐巾纸

日本是个物质极其发达的地方,什么奇怪的东西都买的到,唯一让我很郁闷的是走了好几家便利店都没有卖『餐巾纸』。在日本看到的情况也是用餐巾纸的人非常少,大家基本都用手绢。
于是去搜索了一下『日本人为什么不用餐巾纸』,却搜出来一些关于中国的数据:中国现有手绢年生产能力大概6亿条,每年出口4.5亿条,留给国人消费仅1亿多条。作为全球仅次于美国的第二大纸巾消费市场,中国每年消耗440万吨一次性纸巾,需每年砍伐7400多万棵十年生的大树,而中国森林覆盖率还不到17%。
日本人虽然物质发达,但还是至今保留了用手帕的传统。想到我小时候,国人也都是用手帕的,可惜现在几乎没人用了,加上现在空气不好,呼吸道问题很多,更加恶性循环。不如跟超市塑料袋一样,提高售价,逼迫大家回到用手帕的传统吧。

吃冷饭的日本人

在去白浜的路上正好路过一家车站便当,做得非常精美,于是毫不犹豫拿下两盒。
但拿到手后就发现两个棘手的问题:
能不能加热?貌似没看到车站便当店有微波炉。
在哪里吃?到日本好几天了,除了在餐馆外,我们就没见到什么人在公众场所吃东西的。
只好拿着便当去车站休息室里百度知道一下先。终于查到,日本人的确是吃冷饭的,主要原因是因为冷的食物好保存,而后来日本做便当的食材本身也选择了那些冷的不难吃的。至于在哪吃,因为饭本身是冷的,几乎没什么味道,所以在休息室或者列车上食用也就没什么问题了。
不过说实在的,初冬在地铁候车室吃冷饭这事,就算这饭做得再好看,也还是让人挺难接受的。

受不了的“静”与“吵”

日本的公众场所基本都特别的安静,特别是地铁车厢,满满一车人几乎很少有人说话。日本人认为安静是一种享受,这点我很非常赞同,在日本旅行期间我的阅读效率非常高,不管在哪,很快就能进入『入静』的状态。

但是日本这个国家反差真的很大,一不小心进了家日本的游戏机房(本以为是汤姆熊那种),结果被吵得2分钟就逃出来了。钢珠在机器内翻滚轰鸣,声音大到里面的人即使大喊,边上的人也听不清对方在说什么。据说这些弹珠赌博游戏在日本还深受欢迎,佩服那些可以在里面坐得一动不动的日本人。

卖东西的方法

观察了一下日本店铺营销的常用手法,主要有下面几点特别有趣:
1. 奇怪的名字。比如我们在去京都高台寺的路上看到一个小摊位,名字叫『幻的蜜芋』,再仔细一看,就是卖烘山芋的。
2. 试吃。先有付出才有回报,当然前提是在一个中产社会。
3. 限定。各种维度的限定,比如季节限定、地区限定、店铺限定等等,反正就是让你觉得这东西特稀罕,别处买不着。
4. 人气 No.1。早听说日本喜欢给各种东西做排名,自己店的商品也非要排个先后,不过这也的确有好处,至少选择恐惧症的人就可以不用纠结了。还有个好处是潜意识里把:选择要不要买,变成选择应该买哪一个呢。
5. 大满足。这个词在各种商品广告出现,一种不强调商品功能,而强调用户体验的宣传策略。
6. 包装精美。漂亮的包装纸、颜色图案的搭配、精美的封口贴、需要冷藏的食物盒子有冰袋隔层,让人拆也不舍,拆完了扔也不舍。现在家里还有几个盒子蘑菇不让扔呢。

智能的公车

在京都的出行主要是做公交,所以发现了一些特别的地方:
1. 准时。公共汽车能够按照时刻表,非常精准的到站,这点很了不起,因为如果这是一个统一运营标准的话,对社会运行效率的提升是非常厉害的,所有人都会把准时做为一个生活准则。
2. 下车按钮。和国内公共汽车只有少数几个、按了你也不知道会不会有反应的下车按钮不同,日本公交的下车按钮是在每排位子,和每排拉手附近都有的,只要有人按下,所有的按钮都会亮起来。
3. 停车倾斜。虽然不是每辆车都有,但我发现有些车在停车的时候,车身会往左边开门的方向倾斜,方便老人和小孩上下车。
4. 智能的投币机。投币机不但能够识别投币金额,而且还能完成换零钱的工作。

我的 TOP 3

学习一下做排名的方法,下面是我觉得:

在日本吃到的最好吃的东西
No 3. 大阪Pablo蛋挞
No 2. 银座Manneken华夫饼
No 1. 筑地「鮨勘」的寿司饭

印象最深刻的景点
No 3. 一个人霸占整个白浜武藏露天风吕男汤
No 2. 高台寺夜景
No 1. 宫崎骏吉卜力博物馆

日本旅行的书

首先吐槽一本书『东京制霸』,非常坑爹,又厚又重,比如它推荐了一家银座有名的玩具店,号称整个一层卖日本最有特色的娃娃,结果就是一家卖芭比娃娃的店。
推荐两本漫画风的好书:
林竹闯关西』,京都的行程基本是按照林竹的推荐走的,非常靠谱。
JR 29站!東京山手線 美食 伴手禮 散步』,东京太大了,第一次去绕着山手线至少不会 lost。
另外两本我在旅行中看完的『一本书读懂日本史』、『极简欧洲史』也很不错,值得一看。

日本旅行资料收集

作为这次日本旅行的副产品,我总结了一种用印象笔记做旅行计划的方法,以后具体来写写这个方法。
我把一些为这次旅行用 Evernote收集的攻略发布在这个网站了,包括我们住的旅店,手机网络旅行用到的App,打算去日本旅行的朋友可以参考一下。

更多的照片可以移步我的 instagram 观看。

我的2013

按照年初的计划,完成了两个抱着学习心态的个人项目。
IdeaPad,免费的关联Dropbox的极简风笔记iOS App,已经收获了2000次下载。
微信工厂,针对微信公众账号的定制工具,Node开发,免费放到市场上,虽然没有达到预期效果,而且投入了很多业余时间,最大的收获是在做的过程中得到的关于产品、技术、设计、运营的思考。

养成了2个好习惯:一个是成为了印象笔记的付费用户,用印象笔记做知识管理;另外一个是用Omnifocus做GTD时间管理。这两个习惯对个人成长和提高时间效率特别管用。

2次旅行,上半年的马来西亚之旅学会了潜水,下半年的日本之旅触发了很多关于设计的思考。

最后,今年解决了自己的终身大事,结婚也是个特别大特别复杂的项目,感谢亲爱的蘑菇的大力support~