How to learn a new computer program language
大部分程序员在自己的整个编程生涯中都不会仅仅只学习一种计算机程序语言。那么,在已经有了编程经验之后,如何开始一门新编程语言的学习呢?
这个问题的答案因人而异,于现在的我而言:
- 如果是为了工作,那就在工作中边学边用,边用边学
- 如果是为了单纯的学习,那就要站在高处概览语言全貌,潜入深处体会语言细节,抛弃实用的想法,因为一门语言的实用性只有在你真的去使用时才会出现
- 如何概览全貌:
- 语言本身提供了哪些原语
- 自带数据类型
- 自带过程
- (甚至于,也可以适当考察下官方库提供了哪些方便功能)
- 语言本身提供的组合原语的手段
- 表达式
- 过程定义
- 数据类型定义
- 语言本身提供的抽象手段
- 数据抽象
- 类型组织系统
- 接口抽象
- 泛型
- 多态
- 数据抽象
- 语言本身提供了哪些原语
- 如何潜入深处
- 深究语言特色之处
- 深究语言诡异之处
- 深究语言侧重之处
- 潜入是为了潜出,永远不该陷入其中
- 单纯学习目的下的最好学习对象:Lisp(方言众多,推荐 Scheme)
- 语言本身高度简洁,除了语法糖之外,几乎没有任何冗余设计
- 表达的描述本身即是程序所要解析的数据,code is data
- 体会最纯粹的抽象
- 过程抽象
- 数据抽象
- 过程即数据
- 元语言抽象
- 真正明白赋值的代价(收益当然也是巨大的)
- 要想模块化,define 和 set! 缺一不可
- 因为有了 set!,环境模型成为最简洁的求值模型
- 明白任何一个程序员写的任何一段程序,都算是针对特定语言设计了一个临时的特定求值器
不知是该恭喜,还是该怎样,总之阅读到该文的,你是第 人。每一次刷新,都是不同的自己。