Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

试探性建了一个小组:化学派 #68

Closed
4b5ent1 opened this issue Jul 21, 2018 · 10 comments
Closed

试探性建了一个小组:化学派 #68

4b5ent1 opened this issue Jul 21, 2018 · 10 comments
Labels
active 不一定活跃,但没有弃坑 APL +组合逻辑/tacit族 +erlang +BEAM +forth stack based desgin 自然语言NLP nV-非冯 非冯诺依曼架构/体系 #prolog 逻辑编程 Windows系统 浏览器 browser;及其扩展 设计 design 输入法 keyboard input method engine
Milestone

Comments

@4b5ent1
Copy link
Member

4b5ent1 commented Jul 21, 2018

https://github.com/orgs/program-in-chinese/teams/chp

只是想方便交流,没有搞分裂的意思。

  • 以APL/组合子逻辑为宗旨,致力于解开冯诺依曼约束
  • 不提倡lisp之流括号风格,不讲究纯函数式
  • 认为Actor模型优于CSP,π-calculus强于λ
  • 实事求是,奉行实用主义原则

组名向当年造化学汉字的前辈致敬

ps: 对外昵称,中文编程社区/化学系/有机化学小组/和高能物理研究所

@4b5ent1 4b5ent1 added this to the 2018戊戌 milestone Jul 21, 2018
@ghost
Copy link

ghost commented Jul 21, 2018

不好意思,请问一下,APL是什么意思 ?
CSP 是 command sequence programm 的简写吗?

@4b5ent1
Copy link
Member Author

4b5ent1 commented Jul 22, 2018

@bldght

APL是什么意思 ?

APL 是一门比较古老的上世纪六七十年代的编程语言,最初全称为A programming language;因擅长处理矩阵,又被称作Array Processing Language。APL最早不是一门PL,而是K. Iverson发明的一套数学notation。具体思想可参见其图灵奖论文:Notation as a Tool of Thought/NTT/TOT

一般说APL都是特指原始论文版的APL,如果说APL一族的话,则包括:APL2、A+、J、K、Kdb+/q 等衍生PL。其中J和Kdb+/q属于衍生里面比较有代表性,且较为实用的分支。另外APL也有许多方言,其中Dyalog APL是一家英国公司的商用解决方案,也是方言里面实用性和覆盖面最大的一家(以前是IBM的APL2最广,早期IBM5100上自带APL和BASIC两种环境)。

J属于K. Iverson钦定的一个分支方案,用来弥补APL对特殊字符集的强依赖,使用ASCII码表的基本字符做元素组合,有点类似把字符当偏旁部首来用;功能相比APL是更多了,但是可读性也变差了。

K属于另一个分支,即核心思想是把APL跟λ语法做lambda语法做结合。其目前的商用解决方案是Kdb+/q。Q是K针对数据操作的扩充DSL,能兼容部分SQL语法。

CSP 是 command sequence programm 的简写吗?

这里的CSP是一种并发模型 Communicating Sequential Processes 的缩写。一般Lisp/FP系的PL都用这种模型,比如Haskell、 Clojure、Go等等。与之对应的还有个思路完全不同的模型叫Actor model,使用Actor模型的PL有:erlang/elixir,Rust等。

另外,关于command sequence programming,应该说大部分PL都是这种顺序型的,只是APL和Forth这两种的sequential方式与主流的OOP/FP有很大差别。真正比较非顺序型的PL目前也只有erlang/elixir和datalog/miniKanren这类逻辑编程的比较实用。

ref / 部分网址可能需要挂代理

  1. https://en.wikipedia.org/wiki/APL_(programming_language)
  2. https://en.wikipedia.org/wiki/Kenneth_E._Iverson
  3. 简明APL教程 https://tutorial.dyalog.com
  4. 论文TOT https://www.jsoftware.com/papers/tot.htm / ACM备用地址 / github存档
  5. https://www.jsoftware.com/papers/APL.htm
  6. KPARC - K programming language http://www.kparc.com
  7. J:PL - http://jsoftware.com
  8. Kdb+/q https://kx.com/discover/
  9. Q for Mortals - Kx Systems > http://code.kx.com/q4m3/

a. https://en.wikipedia.org/wiki/Communicating_sequential_processes
b. https://en.wikipedia.org/wiki/Actor_model
c. https://en.wikipedia.org/wiki/Lambda_calculus
d. https://en.wikipedia.org/wiki/Π-calculus

ref:else

@zaoqi
Copy link
Member

zaoqi commented Jul 22, 2018

Actor模型优于π-calculus,π-calculus强于λ?

@4b5ent1
Copy link
Member Author

4b5ent1 commented Jul 22, 2018

@zaoqi Actor模型优于π-calculus,π-calculus强于λ?

个人观点,Actor model优于CSP,π-calculus强于λ-caculus。当然大部分玩过erlang的应该都认同这两个观点,比如 @bhuztez

@zaoqi
Copy link
Member

zaoqi commented Jul 22, 2018

CSP,π-calculus好像没什么区别。我认为Actor model一般优于CSP,λ-caculus、π-calculus需要同时存在。

@4b5ent1
Copy link
Member Author

4b5ent1 commented Jul 22, 2018

CSP,π-calculus好像没什么区别。

@zaoqi π-calculus属于CSP的完善版,还是有区别的。

λ-caculus、π-calculus需要同时存在。

嗯,这个不冲突,λ还是很常用的,K就是结合了APL和λ。对比的用意,主要在于让知道λ但不知道 π-calculus的人,意识到它的存在。

@zaoqi
Copy link
Member

zaoqi commented Jul 22, 2018

π-calculus和APL有什么联系?

@4b5ent1
Copy link
Member Author

4b5ent1 commented Jul 22, 2018

@zaoqi π-calculus和APL有什么联系?

π-calculus 和 erlang有关系,和APL貌似没关系。APL/Forth/Prolog/Erlang/Rust是我觉得比较有代表性的五门PL,所以时常拿来对照参考;其他常见PL,诸如C/C++/Python/Java等,最后都可以汇总到TypeScript这个集合里面。

@4b5ent1 4b5ent1 added the 周边 label Jul 22, 2018
@4b5ent1
Copy link
Member Author

4b5ent1 commented Jul 23, 2018

在豆瓣找到一个APL小组
image

@nobodxbodon
Copy link
Member

参与者本已有限。
望具体问题/项目具体分析, 而非早早分组。
有兴趣的自然会跟进。

@4b5ent1 4b5ent1 added Windows系统 输入法 keyboard input method engine 设计 design APL +组合逻辑/tacit族 浏览器 browser;及其扩展 active 不一定活跃,但没有弃坑 自然语言NLP nV-非冯 非冯诺依曼架构/体系 +erlang +BEAM +forth stack based desgin #prolog 逻辑编程 labels Dec 8, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
active 不一定活跃,但没有弃坑 APL +组合逻辑/tacit族 +erlang +BEAM +forth stack based desgin 自然语言NLP nV-非冯 非冯诺依曼架构/体系 #prolog 逻辑编程 Windows系统 浏览器 browser;及其扩展 设计 design 输入法 keyboard input method engine
Projects
None yet
Development

No branches or pull requests

3 participants