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

提一个新概念”汉字编程“ #42

Closed
hummerstudio opened this issue Oct 23, 2017 · 11 comments
Closed

提一个新概念”汉字编程“ #42

hummerstudio opened this issue Oct 23, 2017 · 11 comments
Labels
APL +组合逻辑/tacit族 规范 RFC

Comments

@hummerstudio
Copy link

目前来看,意识到计算机编程领域,英文(单词)占据过多权重的同志还是很多的,并且有很多技术水平也很高,已经有自己的项目实践,有些是对编译器做处理,有些是对语言自带库做处理,有些是创造全新的DSL语言或通用语言。总的来说,中文编程,有想法,有实践,我认为大有可为。

其实,中文编程的概念也存在很久了,包括易语言和习语言,都有好几年的历史,并且成熟度很高,但是这两个语言不开源,并且后续更新乏力,注定很难作为普通用户的选择成为普及性语言。后来无意间看到了Z语言,是开源的,但成熟度我并不清楚。但可以看到大家都很有动力和技术实力。

针对目前的现状,我想给目前的项目做一下梳理,分成两种类型:

  • 汉字编程

  • 中文编程

所谓汉字编程,指的是依然遵循现有语言的语法的编程形式,但是标识符使用汉字,甚至关键字也汉化为汉字。 现有语言都是外国人开发的,因此编程语言的语法也有英文语法的痕迹。比如 for ... in ...do ... while ...select ... from ... where ... 依据此规则,易语言和习语言都只能算是”汉字编程“形式。

所谓中文编程,指的是遵循中文语法的编程形式,它比汉字编程更高一级。 中文语法的第一点要求,是汉字之间不需要空格分割。这是英文句子和汉语句子最明显的区别,英文单词是一维横排的,没有空格就无法分割区分,汉字则是方块字,每个字都是独立的。比如echo Hello World!,中文编程应该是输出世界,你好,这是一个思维模式的转变。

针对汉字编程,我们再做一划分:

  • 初级:自己创建的类、方法、包等(标识符)使用汉字的

  • 中级:不仅标识符使用汉字,编程用到的库也使用汉字的

  • 高级:不仅标识符和用到的库使用汉字,关键字也使用汉字的

另外,我们可以将“汉字编程”称之为广义的“中文编程”的初级形式,“中文编程”称之为广义的“中文编程”的终极形式。

根据这些概念,可以更方便梳理目前的工作:
初级: 在编程实践中,自建类使用汉字,这就算“中文编程”入门了,个人学习就可以进行。
中级: 需要自己汉化库,或者使用“中文编程”相关开发者开发的中文库,更进一步。
高级: 关键字也是汉字,这个已经不是一般使用语言的开发者做的事情了,需要进行语言切换,切换为汉化的语言。代码变为更纯粹的纯汉字(阿拉伯数字和拉丁字母可接受)。这个阶段主要是“中文编程”相关开发者来对编译器进行修改。或者增加一个转换层。但整体上看,相当于再创了一门新语言了。
终极: 从语法上进行革新,符合中文语法的一般形式,将代码编译为JVM、CLI等虚拟机的字节码,或者直接编译为硬件平台的二进制文件。这个阶段,理论和实践上都需要继续投入精力。

@nobodxbodon
Copy link
Member

对级别高低持保留意见, 个人更倾向于将它们看成不同方向, 而殊途同归. 已有的几个"长期"讨论主题基本对应:

初级: 在编程实践中,自建类使用汉字,这就算“中文编程”入门了,个人学习就可以进行。

索引: 用中文编写代码的实用开源项目
索引: 用中文代码作示例的编程教程

中级: 需要自己汉化库,或者使用“中文编程”相关开发者开发的中文库,更进一步。

把最常用的开源的英文API进行中文化

高级: 关键字也是汉字,这个已经不是一般使用语言的开发者做的事情了,需要进行语言切换,切换为汉化的语言。代码变为更纯粹的纯汉字(阿拉伯数字和拉丁字母可接受)。这个阶段主要是“中文编程”相关开发者来对编译器进行修改。或者增加一个转换层。但整体上看,相当于再创了一门新语言了。

索引: 对现有编程语言的英文关键词进行汉化或者再创造的实例

终极: 从语法上进行革新,符合中文语法的一般形式,将代码编译为JVM、CLI等虚拟机的字节码,或者直接编译为硬件平台的二进制文件。这个阶段,理论和实践上都需要继续投入精力。

讨论: 适合中文用户的编程语言和IDE, 侧重于现有语言/IDE不具备的特性

@hummerstudio
Copy link
Author

@nobodxbodon 对的,这个划分的方法就是为了方便概括目前正在进行的各项讨论和实践。可以很清晰的知道各个项目的特点和方向。随着讨论和项目的增多,也方便后来者集中精力,选择自己感兴趣的方向来贡献力量。

高低之分只是从最终代码量使用汉字的程度和是否符合中文语法习惯来划分的,比较客观,无贬义。比如有些人会认为汉化关键字意义不大,那可以不用去关注高级和终极相关的主题和讨论;有些人认为以现在的理论和技术水平设计不出终极的中文语言,那可以忽略终极相关的主题和讨论。

欢迎大家提意见。 @program-in-chinese/all

@nobodxbodon
Copy link
Member

nobodxbodon commented Oct 23, 2017

迎新贴顶楼已经有类似的"地图". 我比较在意的是"低级"->"高级"->"终极"的提法. 每个方向都有其难度, 意义和必要性, 而这样的高低比较容易被误解. 一些个人看法:

方向 意义/必要性 难度/风险 优点
以中文命名 提升现有代码可读性, 降低维护成本 第三方库对unicode支持不佳 可以即刻开始
汉化库 易于学习和使用, 进一步增加可读性 工作量, 统一术语用词 技术难度较低
汉化关键词 对新手更友好, 反思关键词意义, 对设计语言提供借鉴; 积累编译器实现经验 维护的工作量更大 历史上有类似项目
类中文自然语法的语言 不言自明 语法设计, 与现有代码/库集成 是未来方向

@hummerstudio
Copy link
Author

高一层的包含对低一层的要求,说高低也不成问题的。

@nobodxbodon
Copy link
Member

各个方向并不存在很强的依赖关系. 实际上, "自创中文语言"现在看到的所有项目都是用英文命名的.
个人觉得不用强求所有方向的项目都要中文命名, 虽然那样当然最好 :)
如果你更明确地定义"高"和"低", 这个分级方式会更有说服力, 不然恐怕太过主观.

@nobodxbodon
Copy link
Member

另外, 提出的"汉字编程"和"中文编程"的唯一区别, 好像是后者拥有无空格语法设计. 仅凭这点分高低恐怕不妥.

@htwx
Copy link

htwx commented Oct 23, 2017

这个中文编程厉害了这个应该是自然语言编程了, 现在英语也达不到自然语言编程.

@nobodxbodon
Copy link
Member

“中文编程”称之为广义的“中文编程”的终极形式。

尤其这个提法, 在"中文编程"还往往被狭义化的时候(见百度百科, 就只限于使用中文编程语言编程), 没有让这个概念更加清晰. 在筹备中的对外网站上, 将尽可能把中文编程相关的方面都囊括进去(至少是楼上提到的四个), 而且会尽量突出往往被忽视的方面(前两个).

@nobodxbodon
Copy link
Member

@hummerstudio 如有对不同方向的心得体会请在楼上列出的各个索引帖继续探讨. 如有没有包括的内容请新开帖讨论.

如果对哪个(些)方向有特别兴趣, 或者对哪个方向需要优先进行有看法/建议, 也请到该方向所在的索引帖继续.

@hummerstudio
Copy link
Author

@htwx

这只是非常初步的一点区别。在这里再多做一些说明。无空格并不表示要实现自然语言编程 。我们多做一些思考,目前的编程语言有空格是因为英文是有空格的,没有空格仅仅是因为无法区分单词,而使用中文时,空格完全是多余的。我不需要这样说话:我 不 需要 这样 说话。使用英文则自然是“I don't need to talk like this”,如果写成"Idon'tneedtotalklikethis",就很奇怪了。反过来也是一样。这一点可能是很多支持中文编程的同志们也没有意思到的。当然这其中不仅有空格的区别,还有定语、状语、补语位置的不同(比如“for ... in ...”的结构,我们只汉化关键字就不好汉化),也即是中英文思维模式的不同,我们看英文长句很费劲,主要原因之一就是它的定状补顺序不符合中文的表达。

@nobodxbodon
百度百科中也提到:

又有与中文相匹配的语言语法规则可称为汉语编程语言,使用这种语言编写的程序的过程就是中文编程。

所以我这个提法并没有问题。目前除了Z语言,其他的项目都没有涉及到改变语法,所以也就不能说是中文编程。我们用“汉字编程”这个概念更准确一些。

我们也可以看看知乎上这个问题大家对中文编程的看法,比较有代表性。我们现在根本没有符合中文编程定义的语言,大谈中文编程,根本就是对牛弹琴,没有说到点子上。他们没有意识到语言中的语法问题,没有意识到API问题,只在想着关键字。我们拿着只改了关键字的例子去大谈中文编程,只会被嘲讽而已。事实也的确如此。我们哪有中文编程呢?

名不正,则言不顺。 我们既然要推广中文编程,那就要做好宣传,做宣传就不能泛泛而谈,要有理论做基础。共产主义还远,我们先说社会主义。中文编程还远,我们先说汉字编程。 防止出现认知偏差。任重道远,一步一个脚印,实事求是,才能不被误解。

@program-in-chinese/all

@hummerstudio hummerstudio reopened this Oct 25, 2017
@nobodxbodon
Copy link
Member

"中文编程"就是用中文编程.
按照你的定义, 它比百度百科的范围还要狭窄.
楼上已经阐明了中文编程包括的方面.

如果只对你认为的"中文编程"有兴趣, 对其他方面没有兴趣, 请到相应讨论贴继续.
如果认为其他方面(你所说的"汉字编程")不属于中文编程的范畴, 请参考社区守则第一条.
请不要再开此贴, 除非"汉字编程"这个概念已经获得比"中文编程"更广泛的认同.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
APL +组合逻辑/tacit族 规范 RFC
Projects
None yet
Development

No branches or pull requests

4 participants