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

分享一下个人关于 中文编程/中文信息化 的思路 #62

Closed
4b5ent1 opened this issue Jul 18, 2018 · 15 comments
Closed

分享一下个人关于 中文编程/中文信息化 的思路 #62

4b5ent1 opened this issue Jul 18, 2018 · 15 comments
Labels
active 不一定活跃,但没有弃坑 APL +组合逻辑/tacit族 +erlang +BEAM +forth stack based desgin FP/λ +函数式 自然语言NLP nV-非冯 非冯诺依曼架构/体系 #prolog 逻辑编程 todo Windows系统 实用 想法 +思路/观点 浏览器 browser;及其扩展 调研 输入法 keyboard input method engine
Milestone

Comments

@4b5ent1
Copy link
Member

4b5ent1 commented Jul 18, 2018

https://www.zhihu.com/question/20184664/answer/445574696

中文编程我觉得可行,但是还是存有局限性。优势很明显,字符集大,相当于stdlib足够大,这样写起来话就少,代码更精炼(参考APL)。
劣势暂时没有。只是现阶段的中文编程没把优势发挥出来而已。
参考:中国和美国战略对抗的根本原因是什么?我的回答
参同:NTFS:如何评价6hu2t32和他的中文编程?

关于大方向的主观判断,中文必然在近未来的信息技术发展中起重要作用。具体到编程领域,也认同使用中文编程的意义和必要性。

问题主要在于编程的形式。从根本上引入中文编程,对汉语使用者来说确实能提高某些情况下的开发效率,但就维护层面来看,未必能有明显改观,反而会形成割裂。因为编程的形式没有变,软件的开发还是依托 代码/线性文本 为载体。如果这个问题不解决,中文编程更多可能只会停留在小范围应用和理论教学等方面。

作为同样接触过OTP和APL的路人,私以为coding不是现代化编程的终点,现有的开发流程仍有很多可以开环转闭环的空间。构建一个完善统一的开发/运维软件运行时,以图表代文本,以可视空间结构代替线性树形结构,中文式解析多于函数式抽象,数位计算同符号表达分离,书同文,语各表,进制二三并用,新旧转换隔离。只有足够跨度的改变,才能促成真正的变革,真正的变革始终要符合社会实际。再往后说就扯远了,为避免过度跑题,最后向b大在中文编程方面的探索致敬。

18.718 /reservd4 wx.mp:section6buu, eç∫īГσא, also>linkedin:company/信息六科

@4b5ent1 4b5ent1 added 长期 原则上仅对索引帖适用 思路 labels Jul 18, 2018
@4b5ent1
Copy link
Member Author

4b5ent1 commented Jul 18, 2018

概要:先做输入法,再做crx扩展,再改浏览器/做IDE/合并成Runtime;不直接做编程语言。

@nobodxbodon
Copy link
Member

多谢知乎专栏投稿. 希望以后的文章更技术流一些.
请问打算做哪方面DSL的中文输入法?

@4b5ent1
Copy link
Member Author

4b5ent1 commented Jul 18, 2018

@nobodxbodon #62 (comment)
这个还没有特别明确。我的想法是先把开发过程中切换输入法这个步骤去除掉。但这个实现起来也不容易。按计划这些时期要扔到明年才有空做了。

输入法这块我的思路是分阶段走,第一个阶段是在浏览器里面跑demo,取消掉键盘和拉丁字母的直接映射;第二个阶段是实用化,在vscode里面做DSL输入法插件,只要日常针对typescript/python和erlang/apl做优化就可以了;第三阶段就是通用化,把vscode的输入法搬到支持crx扩展的浏览器上;第四个阶段是平台化,把输入法通过类似 rime/小狼毫 的形式移植到win32里面来。

@4b5ent1
Copy link
Member Author

4b5ent1 commented Jul 18, 2018

关于DSL输入法的设计思路:#2 (comment)

我是这么想的,要让中文编程变得通用,只能先让中文变成类似SQL一样的DSL。而要想普及这种DSL,一个特定DSL输入法就很有必要。先做输入法,再想怎么规范这个DSL,我觉得可行性会大一些。

可以理解为农村包围城市

@4b5ent1
Copy link
Member Author

4b5ent1 commented Jul 18, 2018

必要的时候甚至可以自己造字,这个我是比较乐意做的

@nobodxbodon
Copy link
Member

在浏览器里面跑demo,取消掉键盘和拉丁字母的直接映射

听起来是种新的中文输入法? 设计本身会是个大挑战吧

在vscode里面做DSL输入法插件

组里 @htwx 做了vscode的支持中文版Typescript的输入法插件

只能先让中文编程类似SQL一样的DSL

听起来像是设计一种中文语法的编程语言? 它的主要应用是哪个领域呢?

@4b5ent1
Copy link
Member Author

4b5ent1 commented Jul 18, 2018

@nobodxbodon

听起来是种新的中文输入法? 设计本身会是个大挑战吧

稍微有点难度,但也不是特别难。我是把它当作写js页游的心态来搞的。主要是走形码的路线,音码为辅。

组里 @htwx 做了vscode的支持中文版Typescript的输入法插件

这个听起来不错,我觉得后期可以加以利用

听起来像是设计一种中文语法的编程语言? 它的主要应用是哪个领域呢?

理想状态呢,这种DSL是用来做元编程的,比如在python里写一句“233>写入文件”,就会调用python的处理方式,而在erlang里就用原生的io模块。但前期不指望直接上元编程,能用来处理数据和简单的业务逻辑,我觉得就满足了。数据这方面主要参考kdb+/q

@4b5ent1
Copy link
Member Author

4b5ent1 commented Jul 18, 2018

前面说起造字其实是有原因的: #62 (comment)

输入法只是我所构想的s6rt的应用层的人机接口,底层我希望能够实现一套造字系统。

@zaoqi
Copy link
Member

zaoqi commented Jul 18, 2018

@Absente 这不是DSL,不是领域特定

@4b5ent1
Copy link
Member Author

4b5ent1 commented Jul 18, 2018

@zaoqi 这不是DSL,不是领域特定

广义DSL,参考对象是通用输入法。我设想的DSL主要应用在开发领域,所以还是相对特定的

@nobodxbodon
Copy link
Member

输入法只是我所构想的s6rt的应用层的人机接口

嗯, 从高层开始也许能更早投入实用.

比如在python里写一句“233>写入文件”

#33 (comment) 里的例程是之前一个想法, 语法看起来有点类似, 期待你的更多例程.

@4b5ent1
Copy link
Member Author

4b5ent1 commented Jul 18, 2018

@nobodxbodon #33 (comment) 里的例程是之前一个想法, 语法看起来有点类似, 期待你的更多例程.

这个确实对我来说有不少参考价值,感谢分享。

另外分享一些个人关于编程语言设计方面的思考:

  1. 如果用中文编程,那么符号尽量不要或者不允许做深度嵌套;组合子逻辑优于括号嵌套
  2. 语法设计应该更多考虑书写和阅读的便利性,比如可以在纸上一行写到尾,像APL/SQL那样
  3. 语法设计尽量不影响排版的自由度;支持竖排

@nobodxbodon
Copy link
Member

那么符号尽量不要或者不允许做深度嵌套

"符号尽量不要"--同意. "不允许做深度嵌套"--恐怕会限制语言功能, 具体再分析吧.

比如可以在纸上一行写到尾,像APL/SQL那样

据个人了解, SQL的一些书写规范出于可读性考虑, 建议把where之类的语句分行写吧. 另外, 代码diff是否方便也是个考虑因素.

支持竖排

之前没考虑过这个问题. 在语法设计上会有什么特别之处吗? 可否举例?

@4b5ent1
Copy link
Member Author

4b5ent1 commented Jul 18, 2018

#62 (comment)

"符号尽量不要"--同意. "不允许做深度嵌套"--恐怕会限制语言功能, 具体再分析吧.

这个限制其实不大,就像python的lambda跟erlang相比就有很多限制,但是也不影响具体逻辑的表达。一个函数声明没必要搞得太复杂,这其中究其原因,跟语法允许的自由度本身有很大关系。如果人为加以限制,就像python一样必须强制缩进,那么可读性就会大大提升。

据个人了解, SQL的一些书写规范出于可读性考虑, 建议把where之类的语句分行写吧. 另外, 代码diff是否方便也是个考虑因素.

分行是可以的,但是最好前提是可以合并成一行;分行个人认为属于显示输出层的事情,格式化代码完全可以虚拟格式化,只是个显示形式问题。代码本身分不分行,写文章本身分不分段,就跟white space一样只取决于diff的需要。

然而,diff本身也是可以改进的,我觉得如果开发环境满足理想条件,那么diff应该深入到语法单元,而不是物理行上。这个做起来就像搜索引擎的关键字提取/识别/匹配,比常规的diff是要复杂一点,但也不是完全不可行。

之前没考虑过这个问题. 在语法设计上会有什么特别之处吗? 可否举例?

这个目前来说我也没有特别好的例子说明为什么竖排会比较好,只是个人偏好。这个偏好的着陆点在于,如果不能竖排,那么编程语言就脱离不了一维的线性结构。

熟悉APL的玩家应该都知道APL的长处在于处理矩阵,而矩阵行列式这些是可以维度大于1的存在。如果能在这方面做文章,我觉可能会出现一种情况(假设),比如矩阵可以变换压缩,那么如果代码扩展到平面结构,它压缩方式相比当前就有了更多种玩法。

信息的解压缩在传输的过程中是很重要的一环,这点在web开发里面输出前端页面的过程中也有体现,在人类的DNA转录翻译表达的过程中也有体现。

当然,把DSL从一维扩展到二维是很复杂的,具体没有太完善的想法,先就说到这吧。

今天讲的有点多,言多必失,觉得有必要先打住。等过段时间再回复相关疑点。

@nobodxbodon nobodxbodon added 想法 +思路/观点 and removed c化 labels Aug 13, 2018
@nobodxbodon nobodxbodon removed 长期 原则上仅对索引帖适用 历史 labels Aug 30, 2018
@nobodxbodon
Copy link
Member

如有#62 (comment) 相关的具体项目规划, 请新开帖并引用此帖相关楼作为背景介绍.

@4b5ent1 4b5ent1 added Windows系统 实用 调研 FP/λ +函数式 todo 浏览器 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 FP/λ +函数式 自然语言NLP nV-非冯 非冯诺依曼架构/体系 #prolog 逻辑编程 todo Windows系统 实用 想法 +思路/观点 浏览器 browser;及其扩展 调研 输入法 keyboard input method engine
Projects
None yet
Development

No branches or pull requests

3 participants