关于JSON的一些无聊的联想(具体而言:有没有LPON)

今天查阅了关于 JSON 的网页,发现原来 JSON 的全称是 JavaScript Object Notation,大概可以理解为:用 JavaScript 的语法来传递信息(尤其是关于对象的)一种标记语法(大概是吧,口糊)。

那么问题来了,我们知道 Lisp (在讲到其结构时)常常用来与 XML 进行对比,而后者也是一种常用的、用于传递信息的语法(基于HTML);而这边的 JSON 又明显是用一门已知的语言的语法来进行 Notation,那么问题来了:

是否可以存在一种 LisP Object Notation (简称 LPON),来进行信息的记录与传递呢?

期待大家自由地各抒己见! :smiley:

Lisp不需要啊,因为它具备同像性,Lisp数据对象和代码是等价的。

3 个赞

lisp 就是sexp

2 个赞

你写过 .dir-locals.el 没?

2 个赞

KiCAD的电路板原理图文件(.kicad_sh)就是sexp,而且用sexp格式记录原理图在EDA里面算常规操作了

1 个赞

用其它语言生成lisp字符串传递到emacs后解析执行, 这个是不是就是LPON了, 那LPON我每天都在用

1 个赞

你是否在找 Clojure 的 Extensible Data Notation:GitHub - edn-format/edn: Extensible Data Notation

问题的顺序有点不太对。

并不是特地基于 js 语法设计了 JSON。而是 js 在 web 前端被广泛使用,直接使用 js 的结构能简化 web 的解析。而这一结构被其它场景使用,才形成了 json。

像是 java 的 rpc 什么,也是直接传它自己的内部结构。网络协议传输的流,一般也就是 C 结构定义对应的内存结构(只是这个场景更多的是人为设计以及结构优化)。 上面也提到了 lisp 的 sexp 在 eda 领域用。包括 emacs 内一些持久化其实也是存 sexp。

json 一直被提是用得人多,生态完善。东西都有,只是用的人少,大家不怎么谈罢了。像 sexp 的解析库其实也很多,主流语言基本都有。

3 个赞

json确实是个挺不错的东西, 比xml简单, 比二进制通信直观, 完美的中间派

lisp 是 list processor 的缩写,你说的lpon其实就是个list。相比于json根本毫无优势。

至于直接传输代码远程执行, 老年人应该还记得java的applet, 就是被js干掉的。

其实emacs跟浏览器没啥大区别, lisp machine vs js machine

我理解js在浏览器里执行就是直接传输代码远程执行的,只是做了代码审计,限制权限(容器,黑箱什么的)这些。 js可以, 其它语言自然也可以。