about 3 years ago

我第一次见到 X 大哥的时候, 他正独自坐在教一 5 楼空旷的实验室里, 用咔咔作响的黑轴键盘写代码, Emacs 的黑底 Buffer 显示在笔记本屏幕和一个外接显示器上, 每段代码的结尾有一串 ))). 他说他在用 Common Lisp 写一个 Python 的解释器. 旁边的桌上有画满了道道、写满了笔记、翻得卷边的《计算机程序的构造和解释》、《算法导论》和打印的《Common Lisp the Language, 2nd Edition》. 那是 2012 年的秋冬之交.

 
over 3 years ago

…… 标题一点都没谦虚。


1 - LoveLive and Pony


2 - 或且非

 
almost 4 years ago

Head

嘻嘻,记一下昨天(20150221)练钢琴的 log.
工具是手机的秒表,以及小本子:

  • 练习和计时同时开始;
  • 每练完一个阶段(或开始下一个阶段(这里的「或」是 exclusive 的,即「要么 p 真 q 假,要么 p 假 q 真」))时,点一下 lap(记圈儿),然后在小本子上记一下该阶段干了什么。
  • (窝不喜欢写「计划下一阶段要干什么」,因为经常偏离主题,神游物外)

Body

21 点多开始。

阶段(「圈数」) 事项 时长
1 哈农("1312 1312 1656 4534") 01:54
2 哈农("3423 1345 6565 6543") 01:50
3 12 个大调音阶练习 06:55
6 自编的手指练习("3454 5343", 仅用 3-4-5 指, 3 遍) 05:07
7 哈农("1878 6858 4838", 2 遍) 04:08
8 La valse d'Amélie 复习到「自己满意」 14:45
9 某 QM(1~20 小节, 高声部复习) 05:57
11 某 QM(21~47 小节, 高声部右手基本满意, 左手 TODO) 01:16:59
12 某 QM(1~47 小节, 高声部串一遍) 04:05
13 Comptine d'un autre été 复习 03:16
14 One Man's Dream 熟悉 3 遍 07:45

有些「圈数」漏掉,是因为误触了秒表的 lap 键。
秒表显示总时长 2:14:43.35。23 点多结束。
青年小李表示从来没有弹过这么久。
哦不,是在家没弹过这么久。大一大二大三混进宏福珍贵琴房的时候,是一定要弹到时间不允许或生理上受不了的。sigh

Script

NEXT(

  • 要事为先……
  • 练习要更模块化。先单手,放慢 -.-
  • E♭ 音阶的指法看一看……
  • 秒表数据导出 + convert to markdown
  • 「事项」列拆分,列名语义化

)

写作用的 领域符号整理 给自己看的

练习 熟悉 复习 演奏
正确化 感情化
曲目(演奏参数列表) 遵循编程习惯用半角括号逗号引号
曲目编号 太local太private
3-4-5 // 哈农记法

Side Note

昨天还:

  • 练了两小时台球(炸裂!八球桌原价 ¥35/h,美团上 ¥19.9/2h),享受摆球服务w
  • 学习了炒菜花 -。- 试图优化刷锅洗碗流程
  • 开始玩 Jubeat(iOS)
  • 在去打球的路上(15 min)胡思乱想道:

一个工作流程
如果太复杂
窝就不会去用它

一个工作流程
如果不去用它
它就屁用没有

 
almost 4 years ago

编辑历史

20141231 init
20150103 merge q 同学的补充,在文末

正文

Stephen Wolfram 博士,2014 年 12 月 29 日在北京师范大学京师学堂第七会议室举行了讲座,主题是 "The Future of Computation & Knowledge".

Stephen Wolfram 是 Wolfram Research 公司的创始人和 CEO。他和他的公司创造了 Mathematica, Wolfram|Alpha 和 Wolfram Language. 他的著作 "A New Kind of Science" 记述了他的基于元胞自动机的系统理论.

这场在北师大的讲座是 Stephen Wolfram 跨年访华之行的第一站,也是他第一次来中国。接下来的行程是 12 月 30 日清华大学,1 月 3 日西安理工大学,1 月 5 日上海交通大学。详见 http://weibo.com/p/100808501780651d8ccbd49a83dd7545ef383e

(啊!这阮一峰先生式的开头……)

好吧,这篇文字的主要目的是,整理我听讲座时的记录,在一定程度上复原讲座现场的 replay,以便让没能到场的 Mathematica / Wolfram|Alpha / Wolfram Language(这三个不妨记作 "w-系列") / NKS 爱好者减少遗憾。(于是,本文的目标读者是对 w-系列 有一定了解的同学。)

由于我词汇量、听力以及相关知识的不足,加上当时记录方式仓促且业余,下文一定有疏漏和错误。将来宣传上有了问题,我是要负责的。
如果有当时在场的同学发现文中有错,或者有要补充的地方,请一定联系我 :)

符号约定

下文的一些简写:mma := Mathematica, alpha := Wolfram|Alpha, wLang := Wolfram Language, NKS := A New Kind of Science, sw := Stephen Wolfram.

Replay

开始的时候

  • 会议室人满为患。容量约 100 人,到场约 150 人。绝大多数是学生模样。

  • sw 问有谁用过 alpha,举手者大半;问有谁用过 mma,举手者小半。sw 说 thank you.

演示 alpha

  • sw 开始演示 alpha 的功能。


  • 速度稍有些慢呢。sw 解释到,计算请求发到美国服务器,再传回来,所以比较慢。

  • 有的计算结果半天都出不来。组织方工作人员解释说,访问国外网络会受到些阻碍,同学们会心笑。

  • 太机智了!sw 在讲座之前缓存了一些计算结果,以保存网页的形式。

演示 mma

  • 计算 1+2. 计算三位数^三位数。计算三位数^四位数。计算结果充满一屏,观众 "wow~"。 Plot[]+Sin[] 画图像. Plot[]+Sin[]+Manipulate[] 画可用滑块调参数的图像. 观众 "wow~"。

  • 使用 CurrentImage[] 开启摄像头自拍。用 EdgeDetect[] 边缘检测,配合 Dynamic[] 对摄像头捕捉内容动态边缘检测。

  • 用 ImagePartition[] 切割,配合 Manipulate[] 和 Rotate[] 旋转切开的小图。

演示 wLang

  • sw 打开本地应用 Wolfram Desktop. 然后似乎去开了一个 VPN……

  • 用一个 Movie 什么的函数找到 top 多少的电影。用 DominantColor[] 找出这些电影的海报里的主要颜色。

  • GeoGraphics[], 展示以埃菲尔铁塔为圆心的、不同半径的区域能覆盖地图上的什么范围。

  • DictionaryLookup[], 以及英语单词长度的分布直方图。

  • 用 Import[] 获取联合国官网的首页多国文字,用 StringSplit[] 按行划分,用 Classify[] 识别出每行是什么语言。

  • 用 CloudDeploy[] 和 FormFunction[],光速且 one-line 地部署了一个 “输入猫的品种名,找出猫的图片” 的网页应用。

  • 打开网页版的 Wolfram Cloud,连接顺利,可喜可贺。sw 指出 Wolfram Desktop 和 Wolfram Cloud 是 wLang 的两个前端,用来在不同的使用场景做类似的事情。

  • sw 又指出,wLang 会很重视自然语言处理(NLP)。似乎 alpha 还没支持中文自然语言搜索吧。不过 sw 展示了 Wolfram Desktop(还是 mma?忘了)的某种意义上的中文支持:开启某个选项之后,Notebook 里的部分代码旁边会标注中文翻译,譬如把 Sin 加一个“正弦”的标注。sw 似乎说,这表明对中文 NLP 的支持正在进行中。

观众提问

  • 这时开始了第一轮观众提问。在下的听力完全不够用辣……

  • Q1: 怎么看 IPython?

  • A1: 大概意思是说,那玩意还 too simple;Python 是模块化的通用语言,IPython 是借鉴了 mma notebook 思想的 Python+科学计算库 的前端;而 Wolfram Language 的目标是高度集成的知识引擎,两者目标截然不同。

  • Q2: alpha 的功能这么复杂,bla bla,Can't imagine 它的后端会有多复杂。

  • A2: 我忘掉 sw 说什么了 (`・ω・)

  • Q3: 怎么保证 alpha 给出结果的正确性?

  • A3: sw 先明确了一下,对 mma / alpha 这种系统,有两种正确性要保障:正确计算三位数^四位数的那种正确性,以及正确查找纽约市人口数的那种正确性。

    • 对第一种正确性,因为很多系统都依赖 mma 的计算内核,所以会严格测试 bla bla。
    • 对第二种正确性,sw 指出:他们尽量从官方源找数据;多个消息源是好的,但很多情况下确实只有一个源;多个源还有 choose from 的工作量;等等。(基本上听懂了这些……
  • Q4: Wolfram Language 和其他语言的互通?

  • A4: sw 先强行插入了一些对 symbolic 特性的介绍……

    • 介绍了 EmbedCode[], 似乎是生成一段其他语言(python,java 什么的)代码,使得能在以这些语言做服务器后端的网页中嵌入已经 CloudDeploy[] 好的应用…
    • 介绍了 InstallJava[]。我没用过,投影上帮助文档字又小,所以不知道干嘛的…

介绍 NKS

  • 介绍刚才漏掉的 Wolfram Connected Devices Project.

  • (同去的 q 同学:物联网相关的协议出现得蛮早的

  • 开始讲 A New Kind of Science 了!sw 说,这对他很重要。

  • sw 提到,他为了研究物理而制造了 mma,一造就是若干年。他觉得,后来还能用自己的工具研究若干年物理,是很幸运的。

  • sw 似乎说,若干(二三十?)年前,基于数学公式的自然科学模型式微,基于计算机程序的模型兴起。

  • 元胞自动机,图灵机,bla bla。我没看过 NKS 所以完全不明白……(这部分的 presentation 是“已经懂了的人才能懂”的节奏哇……

又一轮观众提问

  • Q5: 用 mma 科学计算,太慢怎么办?提问者是北师大物院搞暗物质的,长发帅哥,说他天天用 mma 计算,但是有时确实慢,经常一算一天什么的。

  • A5: 我又忘了 sw 回答了啥了,或许是根本没听懂=。= 但是由此引发了非常有意义的事情:

    • 和我同去的 q 同学跟我说,mma:
    • 1. 缺少迭代器的机制,总是要整个列表展开算,有时为了内存不爆掉不得不写For[]。
    • 2. 有些(全部?)尾递归不能优化掉
    • 3. 惰性求值机制有时成了对第一点的弥补(?)
    • 散会之后,q 和该物理小哥交流,小哥说很多时候确实要写 For 提高效率。另外,小哥有一次用 mma 做矩阵的某种运算实在等不及,自己怒用 C 写一天写了出来。
    • 前面三点,窝会再和 q 交流一下… 窝作为新闻工作者还需要学习一个(`・ω・)
  • Q6: mma 的中国市场政策?提问的观众看起来不是学生。

  • A6: sw 说,中国的 mma 销售份额(不懂术语…)很小。比芬兰大一些。bla bla。sw 说这次中国之行也有商业推广意图。

最后

  • 不得了的东西!(^o^)ノ “钨狼”,这是 Wolfram Lanuage 的吉祥物中文名首发吗?

  • (q 同学:像刘看山呢。)


  • (w-系列 的粉丝,以后会叫“钨丝”吗?ww

  • q 同学帮照的合影…… Thank q!

真最后

还是开头说的那样:如果有哪位(特别是当时在场的观众)发现文中有错,或者有要补充的地方,请一定联系我~

新年快乐 :)

图床 powered by 七牛云存储。

事后的补充

  • q 同学:wolfram language(在我看来),简单来说就是 NLP->ML->可视化,从头 hot 到尾。=-=
 
over 4 years ago
  1. 如果你对 Java Annotation (就是形如 @Xxx, 但并不写在注释块里的语法结构) 熟悉的话, 也许你已经知道, Java 标准库内置了四种用于修饰自定义的 Annotation 的 Meta Annotation:

(

2016-04-24 补丁:

原先写的时候不知道. 其实从 Java 8 开始, java.lang.annotation 包中加入了 @Native@Repeatable.

  • @Repeatable 是个 "Meta Annotation" (即 @Target(value=ANNOTATION_TYPE)).
  • @Native 不是. 它 @Target(value=FIELD).

)

  • @Documented (功能 = "若 @Documented 修饰 Annotation A, 则 @A 将在生成的 Javadoc 中出现, 就像 Javadoc 内置的 @return 什么的.")

  • @Inherited (功能 = "若 @Inherited 修饰 Annotation A; 而 @A 又修饰类 C1 或修饰{类 C2 的方法 M}; 且 CC1 继承 C1, CC2 继承 C2, 则 @A 将影响 CC1 或 {CC2 中未被 override 的方法 M}. 否则 @A 不影响子类或其中的方法.")
    ( ref http://wangyu.iteye.com/blog/210818 )

  • @Retention (功能 = "决定 @Retention 所修饰的 Annotation 是仅存在于代码中 (但不参与编译), 还是保持到编译后的 class 文件 (但不被 JVM 解释), 还是保持到运行时 (被 JVM 解释; 能被反射获取)."

  • @Target (功能 = "约束 @Target 所修饰的 Annotation 能修饰哪些语法结构, 如 PACKAGE, ANNOTATION_TYPE, etc.")

它们被定义在 java.lang.annotation 包里. 前几天学 Annotation 的时候, 我的 Meta-欲勃发, 想到 "Meta annotation 也是 annotation, 也会被 meta annotation 修饰"...
于是看了一下它们的定义. 四个写在一起是这样的:

package java.lang.annotation;

# @Target

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
    ElementType[] value();
}

# @Retention

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {
    RetentionPolicy value();
}

# @Documented

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Documented {
}

# @Inherited

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Inherited {
}

OK! 得到一个结论...
四个 Meta Annotation 都被修饰成:

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)

用简写 (譬如 R 表示 @Retention(RetentionPolicy.RUNTIME)) 和箭头表示四个 Meta Annotation 的依赖关系, 形如下图:

      ↙↖
      ↘↗
       D
    ↗ ↑ ↖
  ↗   │ ↘ ↖  ↙↖
I←----┼----→R  |
  ↘   ↓ ↗ ↙  ↘↗
     ↘│ ↙
       T
      ↙↖
      ↘↗
#ASCII Crap

第一节完...

To be continued...