Skip to content

Instantly share code, notes, and snippets.

@tiye
Created June 9, 2012 17:44
Show Gist options
  • Select an option

  • Save tiye/2901924 to your computer and use it in GitHub Desktop.

Select an option

Save tiye/2901924 to your computer and use it in GitHub Desktop.
跳出编程语言一些想法

几天光景, 还是没有钻研编程的动力, 每天看看资源, 偶尔萌生新的想法.
当然没有数学或者编程的足够功底, 说什么都白搭, 新闻升发的观点不能当做理论.
但这些想法, 同时作为困惑, 我先记下来. 还做别人走在这, 也该这样想过.
晚上 Zed Shaw 演讲对我影响不小, 人们太懈怠于迎接未来了, 缓缓推进着技术.

关于符号语法这一点, 我默认是可以在未来跳过的, 直接操作 AST, 跳过解析.
那么归结下来, 语言可以只是存在嵌套的字符串数组, 然后直接转到 AST.
格式的限制换来了很大的自由度, 想表达什么, 就定义什么, 不受语法的羁绊.
每一个表达式都由头部的字符串来决定语义, 甚至用上多个位置的字符串.
就是说用 set! 一类表示 := 符号的赋值, 完全用词汇标记表达式的意义.
Lisp 的确做了, 但那不彻底, 没扩展开对自由语义的共享和速成约定.

表达式执行需要设定相应的作用域, lispy 的例子是树状的继承的作用域.
当定义函数或者绑定一些局部变量, 对应就是在作用域上添加一些索引和内容.
进一步, 当语言能够获取和操作作用域, 那作用域就很现实地是一种工具.
严格继承就未必, 有时函数作用域根本不需要向上级索引, 如 (x,y) -> x+y .
OOP 这个模型或许是因为缺少构造相应行为的数据结构的手法和便利,
如果操纵数据限定在一定区域非常自由, 未必就有 class 严格的语法了.

自然语言重在灵活性, 比如我先说"对 A 做了什么什么", 然后说"同样对 B 做",
我们很容易讲任意的步骤当成模版, 然后在后边的表述中直接引用这套模版,
出于网络的方便, 我们还可以公用表达式首字符串的语义, 以作为共通的语言.
我不是说用自然语言操作计算机, 其精确性导致嵌套不可或缺, 而这口语不会有.
我要语言是一种能流畅部署一个设计一个想法的工具, 能描述而不受阻于语言.

就我目前接触到的, 基本都是如何设计界面到数据的交互, 然后数据的结构,
我没有找到顺手的模型去处理全部这些, 因此想着如何跳出工具寻找方案.
上边说的观点更应该是困惑, 究竟用什么样的工具去解决向计算机描述构想的问题?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment