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

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 条回复
jzq526
2018 年 11 月 3 日
@absente 你理解错了,当然也可能是我没说清楚,中文编程不是重复投资,我举重复投资的例子是为了说明前面的那个观点:既然现有的还能用,就没有必要更新。中文编程的推广也是如此,即使中文编程有明显的优势,想要别人接受,也存在对别人来说是“重复投资”的问题:现在的技术能用,没必要学习和使用新的技术。即使中文编程能够显示出很强的优势,也需要时间来让别人接受,就像 IPv6 一样,你能找出无数比 v4 强的地方,但大多数人就是不用,因为现有的技术缝缝补补也凑合能用了,没必要重新部署,更没有必要重新购买设备。只能等到老设备慢慢淘汰,换新设备,换新管理员,换新技术,尤其是有了新需求,才能逐步普及。
我谈的是个新事物被接受的问题,和是不是中文编程关系不大。
最后,既然是 just for fun,祝开心
atcdef
2018 年 11 月 3 日
1 中文编程多麻烦,还要切换输入法

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

连自黑都黑不到点子上,谁和你说要切换输入法了?易语言明明支持首拼和全拼录入的,根本不用切换输入法,仅仅是在定义中文变量时,需要先用中文输入法来输入中文。对于已定义的中文变量、函数之类的都是直接首拼或者全拼上屏的。

我可是真正实打实体验过易语言的,哈哈。
另外,我认为中文编程很有必要。
atcdef
2018 年 11 月 3 日
实际上对中文编程语言,很多人都有一个极端观点,认为既然是“中文”编程了,就不应该写 abcde123 了。我觉得大可不必。中文编程语言在我看来,优势有两点:
1,不需要进行中文转换,直接考虑业务逻辑即可。
2,中文代码可读性更强,更加精练。

但易语言,并不是中文编程的方向,他的缺点在于:闭源,代码是二进制格式,脱离了 ide,那代码根本没法看。当然呢,不可否认易语言确实是中文编程里目前最好的,没有之一。

我想象中的中文编程,应该和 python 之类的一样,进行关键字的中文化( 当然不是一对一中文化,那样翻出来估计很别扭)。

至于必要性,无需讨论,那么多的易语言用户用事实说明了其存在的必要性。
absente
2018 年 11 月 3 日
@atcdef 感谢建议。我先按顺序回复:1 其实没有自黑,只是举了另一个帖子里面无脑黑的理由 2 我也体验过易语言

这里有我的一些关于翻译的观点
https://github.com/program-in-chinese/overview/issues/44#issuecomment-435580057
ferock
2018 年 11 月 3 日
古汉语编程目前来说才是伪命题

为啥你说是伪命题才是伪命题,别人说汉语变成是伪命题,就不是呢?。。。这也看来,这帖子是完全毫无价值
absente
2018 年 11 月 3 日
@ferock 应为古汉语没有一个特定标准,是实现不了的。汉语指的是语言,是说的,不是写的,而且古汉语已经死了,中文还活着。希望你能明白这点,如果说价值,我没指望自己说的每句话都有价值
absente
2018 年 11 月 3 日
@ferock 别人说汉语是伪命题的前置条件,是他们认为语言和编程本身完全无关,而我不这么认为。我认为是有部分相关的。比如英文的 for in 你就没办法在中文语境里面找到一个完全等价且同样简洁的表达。
ferock
2018 年 11 月 4 日
@absente 自己狂欢去吧…开心就好
JerryCha
2018 年 11 月 4 日
可以搞关键字允许中英文混用,最起码可以解决忘记切输入法带来的符号错误问题
dwcz
2018 年 11 月 4 日
中文编程的问题是现有搞的人,没有找到正确方向。不是汉化就是文言文化。
其实,中文编程现阶段最缺的是文本解析工具。正则是解析拼英文字的,而汉语正好有很多句法是正则不擅长的地方。在技术上表现为有大量前后配对,标志符在左中右的情况都有,而且还有混用的。汉语更看重句法,比西方文字高一个维度,字词是对应的是单、多元音和习语。而西方还没到解析习语的场景,等到了,中西文都必须面对这个问题。
再就是,汉语或其他自然语言是现有编程语言上更进一步的抽象,这就要求中文编程的模式必须提供更抽象的概念定义和更多的转换机制。
现在,西方编程语言其实在走回头路,由于 c++等语言在进一步抽象上的失败,新语言只是有了更多的限制,而不是代码灵活转换。
中文编程只要有了文本解析工具,再添加运行逻辑语句,就是一个编程语言了。现阶段,中文编程的使用场景是小工具自动化上。就像评论中有人说的,现有的以串行计算为主的体系不能发挥中文优势,中文或其他自然语言需要并行检索为主的体系。
编程语言的功能结构上其实就是文本解析、模式转化和通信约定。没有文本解析,后两步也不好展开。
至于输入法,是不干正事。人们聊天从来没有说用输入法别扭的,说编程别扭是因为表达方式不一致。有符合中文表达方式,这就不是个问题了。说到输入法不干正事,其实输入法对中文编程是优势。输入法平台可以提供像自动补全、截图、按键精灵、剪贴板管理、快速启动管理、翻译转换等功能。
能解析类似如下中文代码,估计也没多少反对声音了。

姓名是字符串
年龄是 8 位正整数
工资是 32 位浮点数
增减是自然数

表的项目为姓名、年龄、工资、增减 //结构体
其动作:登记,参数为姓名、年龄、工资 //方法
{
姓名给项目的姓名
年龄给项目的年龄
工资给项目的工资
}


统计表的值类型是表,其长是 3 //数组
动作:汇总,参数为表,结果为自然数 //函数
{
循环计数
}
解析: 循环计数
{
表的迭代器,值(工资)给连加器
连加器的值给输出
}


入口:
{
名为大学的统计表,长为 4
大学登记(“张三”,25,5000.00 ,-1000 )
汇总大学,值给总数`
显示,格式:"总数"+总数+“/n ”
显示,格式:"变化:"+工资+增减(左对齐)+“/n ”

}
absente
2018 年 11 月 4 日
@dwcz 是的。我也是觉得 DSL 比较可行。这里有相关的历史讨论
github.com/program-in-chinese/overview/issues/89
github.com/program-in-chinese/flo
dwcz
2018 年 11 月 4 日
@absente DSL 作为实验可行,但要工具化,还是太单板了。中文是一种重义轻形的语言,不同事物的相同形况会用不同表达方式,或不同事物的不相同形况用相同表达方式,这就必须提供自定语法功能。我的想法是模仿 C 抽象汇编,主要的是中文,细节还是部分原来的。数据的抽象,西方基本完成。但语句的抽象,由于拼音文字的影响,西方基本不可能进步了,所以他们转向函数式编程。现有编程语言是由底层开始抽象,这是由事物发展造成的。而中文编程是后来的,而且中文思维本身也是由顶向下扩展的。所以中文编程应该是像写框架一样,先描叙整体,然后逐级扩展到描叙细节。而这也需要在语法上提供自定编译器行为。再就是串行编程模式已经到头了,以后是并行编程模式了,所以语言上肯定是并行设计开始。
absente
2018 年 11 月 4 日
@dwcz 你所说的由上至下,其实可以分两方面来看。一方面是先写接口,然后往下写实现。另外还有一种方式,就是类似 prolog 和 miniKanren,用回溯和 unification 来求解问题的答案。关于多义词的问题,用 APL 的思路是足够解决这类情况的。具体实现还带摸索
dwcz
2018 年 11 月 4 日
@absente 我感觉其中的难点在于自定编译器行为的描叙,语言是要能满足人和机器的要求。现有的工具都很呆板,函数式编程中一点亮点。但都不能覆盖全部要求,有时直接替换还好用些,毕竟人知道目的,机器不知道。是考虑用接口模式,但有点贪心想让机器更聪明点,多完成点事。还在打草稿阶段。
947211232
2018 年 11 月 5 日
很奇怪哟~


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

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


编程难道不是为了解决麻烦的吗,中文编程不应该是为使得更高效更便捷地开发吗,难道就不觉得......
947211232
2018 年 11 月 5 日
@947211232 不清楚大神们的中文编程别乱说话噢。
absente
2018 年 11 月 5 日
@947211232 所以麻烦的是输入法。只要解决了输入法,中文写代码就没这方面问题
dwcz
2018 年 11 月 5 日
我想到一个办法,应该可以结束关于中文编程的争论。现在,中文编程基本是空想阶段,实现工业级的编译器基本不可能。那还不如先用设计中的中文编程语言直接写编译器的源代码,这样既可以完善语言,也可以完成源代码。最开始的高级语言本来也是从伪代码中诞生的。
absente
2018 年 11 月 6 日
@dwcz 直接自举好像也不是不可以。目前我的思路是,一边做 vscode 插件来改进符号 /中文输入,另一边用 elixir 写中文解析 /直接生成对应的 PL 代码 /先生成 py 和 rust 就够用了
dwcz
2018 年 11 月 7 日
@absente 做 vscode 插件意义不大,毕竟中文编程没成体系前用的人少。要是当技术沉淀,也可以。解析转换成其他代码,倒是关键技术之一。rust 中有很多技术同中文编程相一致,要不是死活不愿意全面支持 U 编码,本可以成为中文编程暂时的替代品。 说到 vscode 插件时,突然想到可以想宏一样,提供短代码转换,不过这不是中文编程了,是宏了。

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

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

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

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

© 2021 V2EX