美文网首页
一切皆list-对计算本质的思考(提纲)

一切皆list-对计算本质的思考(提纲)

作者: 码农田伟 | 来源:发表于2019-02-24 17:54 被阅读21次

    比对象更抽象的是函数 比函数更抽象的是list

    在数据结构课程中我们学习了 list等价于树 或者 广义表 而图可以转化为树处理 所以list可以表示任何数据机构 简单的说就是一切皆为list

    因此有一门语言叫Lisp, clojure是其在jvm上的方言版本.

    我们无法把clojure简单归为面向对象或函数式语言.在clojure中,

    map是匿名对象 lambda是匿名函数

    而我们在面向对象编程中所说的类其实是函数, 如果看javascript 这一点很明显, es6增加了class, 但仍然只是函数的语法糖. 而对象是有名称的map 

    鉴于传统面向对象模式导致的过度复杂性 现代语言都在反思简化这一设计 如go就是使用了改良的struct 避免了复杂的类层级系统

    用lisp的写法

    (类名/函数名 域/局部变量)

    对象最好只包含值 方法都在接口中 js是在原型中

    而数据总可以表示为递归的list

    (head tail)

    从计算机的基础结构来看,任何计算都可以表示为list

    (cpu memory)

    汇编(机器)语言版本是

    (指令 操作数)

    (地址 值)

    (根节点 子节点/森林)

    (monad 函数list)

    (进程 内存地址空间)

    (硬件 软件)

    (函数 数据)

    而这背后的思想可以追溯到历史更为久远的lambda演算

    (lambda 参数) 

    也可以叫做调用 或 规约

    每个list都是lambda 可以规约到最简形式

    规约 调用 之后 产生新的list

    就像一个小计算机

    数据放入内存 cpu处理后产生新的计算机 

    尽管从技术实现的角度看 很多操作是在原地更新 但是时间改变了 旧的状态成为了回不去的历史 实际是产生了新的状态

    所谓大道至简 世界的本质就是 同一 与 和谐

    相关文章

      网友评论

          本文标题:一切皆list-对计算本质的思考(提纲)

          本文链接:https://www.haomeiwen.com/subject/xnujkftx.html