我就知道很多人会黑中文编程

2018 年 11 月 2 日
 absente

然而目前来看仍旧没有看到能说服我的观点。

有人说我在上一个帖子里是为了杠而杠,那说明 1 他本身已经成见太深 2 没有仔细看我的回应

先不吹自己的编程水平了,目前是在没什么能拿的出手的,也不倚老卖老,就先总结几个常见误区:

1 中文编程多麻烦,还要切换输入法

对曰:这是输入法的问题,不是中文编程的问题

2 只不过是翻译汉化,没必要

对:不是所有的中文编程都叫易语言

3 中文编程能创造什么价值,有什么意义?

这个见仁见智,个人是 just for fun

4 有本事连阿拉伯数字都别用啊

对:为什么要这么极端呢?这才是为了杠而杠吧

另,麻烦想理性探讨的人:

  1. 先去看一下 1979 年的图灵奖论文:notation as a tool of thought, 顺带了解下 APL
  2. 多看看 bhuztez 的历史言论,如:

2.1 中文编程的迷思 2.0 优秀的程序语言是不用括号和空格的

3。区分 programming coding 和 engineering。不要再把中文编程当作 coding in chinese 了 BBUH

PS:顺带也可以说说为什么我要掺和进中文编程这个领域:

  1. 目前没有看到能黑中文编程黑到让我李菊福的人
  2. 我想自己做个 vscode 输入法插件,这个想法刚好互补
  3. 中了 APL 的毒
16931 次点击
所在节点    程序员
191 条回复
absente
2018 年 11 月 8 日
@dwcz 顺着前面的思路,我想到了一个结合 repl 的比较可行的方案。关于宏的问题,我觉得只要解决了的问题,算不算中文编程其实就不那么重要了。
dwcz
2018 年 11 月 8 日
@absente 做为一个方案可行。但我个人认为不能突出中文编程的优势。中文编程毕竟是用中文思维和中文表达方式来实现代码即文档,为编程提供另一种书写模式(从上至下的),从而让机器尽量自动化干枯燥的事,让人更清晰表现概念。相对拼音文字,汉字汉语的编码方案描叙概念和逻辑更精确。相对数学等式,灵活度要好些。放弃这些,用半格式化实现,有点可惜。当然,中文编程中肯定有一部分是格式化表现。
absente
2018 年 11 月 9 日
@dwcz 结构化或者格式化感觉在演进的过程中没法彻底避免,当然最后肯定是要往更纯粹的方向走。数学化在提升通用性的同时,自然会在其他方面有所损失,这个也是避免不了的
absente
2018 年 11 月 9 日
@dwcz 自上而下确实是问题的关键
dwcz
2018 年 11 月 10 日
@absente 我认为自上而下,可以利用中文语法、更抽象的类型系统和自定义语句解析来实现。结构化可用于代码整体布局,格式化可用于文字表达不利的情况。而中文用于描叙代码逻辑和抽象概念。现在主要问题是解析文本比较复杂,有点数据库的味道了。再就是为了更方便地完成上下对应,可以把数据和函数进一步抽象成统一的概念。中文对同一物描叙的方式可以多样化,必须得有自定义语句解析功能,也为上下对应提供机制。
我粗划分一下词法与代码结构的对应:名称是类型,动作是函数,状态词是维度(比较级),形容词是改动维度,数量词是数,其他是设定逻辑和状态。
中文编程就可以设定一些顶层格式定义:
名+动 表使用方法
动+名 表使用带参数的函数
名+动+名 表使用带参数的方法
动+"成"+名 表设定
的地得字句 表所属
是字句 表定义,定义名称、动作
为在中 表定义,定义类型
为在首 表条件的对象默认为前者
被字句 表最后为重点
给字句 表传递赋值
不字句 表逻辑非
和字句 表逻辑和
或字句 表逻辑或
有字句 表下属

了为尾 表完成状态
很为首 表比较级的首尾

在。。为。。时 表条件
是否 表检测
absente
2018 年 11 月 10 日
@dwcz 我认为要真正做到自上而下,最好的办法是脱离[文本--代码]这种低级的表达结构。
absente
2018 年 11 月 10 日
@dwcz 这里有做过类似的尝试: https://zhuanlan.zhihu.com/p/46030123
dwcz
2018 年 11 月 10 日
@absente 这是一种表示方法,有其它的也行。文本的好处是写起来方便,有笔有纸有概念就可以开始了。这只是表象,反正编程多样化也是趋势。那个尝试感觉只是解决解析部分,而自动化方面更趋向于函数式编程。不太喜欢函数式编程,函数式编程的理念好是好,就是遇到复杂时,代码的灵活性就太差了。中文编程的优势中就应该有灵活性。
absente
2018 年 11 月 10 日
@dwcz 文本的形式,差别在于,手写的其实是图,而键入的实际上是线性字符串。只要脱离了单行文本限制,其实就能方便很多,再往后其他形式也是类似。

关于那个 poc,是有一点 FP 的影子。我都是对 FP 没啥意见,当然纯 FP/为了 FP 而 FP,不实用也是显而易见的。关于灵活性的问题,Forth 和 APL 的思路更具可参考价值。
dwcz
2018 年 11 月 12 日
@absente 我还是倾向 C 体系,函数式编程的思维是从小到大,这与中文编程的宗旨相反,并没减少学习成本。函数式编程并没考虑让机器干更多的事,只是划分的更细致。这一点加强类型系统和进一步抽象就可以把函数式编程的优点学过来。同时也可以让机器多做事人少做事。比如,不论哪种编程模式,最终干的就是以下三件事:解析、转换、通信。以此为基础类型,进行扩展再加上拷贝和引用两种数据模式。串法的工作方式就都包括了。并发的也只是把通信提级后的串发拷贝。而函数式编程弱化了这些概念,反而造成串中有并,并中有串,整体上的混乱。有系统的类型系统,让机器自动完成代码也更容易。这也是现有语言的通病。
absente
2018 年 11 月 17 日
@dwcz 并发方面打算先借用 erlang 的虚拟机,可以省很多事情。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/503773

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX