-
Notifications
You must be signed in to change notification settings - Fork 34
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
多语言编程的设想:将变量名与自然语言解耦 #179
Comments
你好。之前看到过一些类似建议,不过在讨论具体实施细节之前,不妨先对需求进行一下分析吧。 相信我们的共识是中文(母语)命名在开发时具有一定优势,因而开发者会选择在项目伊始就使用中文命名标识符。如果是这样,那么至少在该开发者可预见的时期内,该项目的设计者、合作者应该都会中文,更关键的是,各种文档和项目相关术语应该都是中文的。如果本来就是在以外语作为日常交流语言的开发组内,使用中文命名的动力应该相当低,因为文档和术语等等都会是外语。这两种项目应该都不需要代码国际化。 在国内闭源项目中,绝大部分应该属于前者(项目参与者的母语都是中文)。极少数头部公司会有属于后者的项目,但比例应该也不大。 再说开源项目,之前有过一些思考,简单来说,如果真的有面向国外用户的打算,那么首先用户手册就要有外文版的,并且界面文字国际化。如果是面向开发者的 API 相关项目,API 也至少会有中外两种版本。 假如项目真的到了国外开发者有意参与贡献、维护代码的阶段(在国内开源项目中应该是极少数),那么需求、设计等等文档尤其是术语表首先需要国际化,再接下去才轮到内部实现代码的国际化。 请不吝赐教。 |
之所以目前中文编程的人少,就是因为转移的过程太痛了,问题太大了,而不是说中文编程没有用,实际上有用的很。这个项目的目的在于让更多的人,能无痛的,安心的转向使用中文编程,解决转向过程中的痛点。 你说的共识是不存在的,我们考虑的场景是不一样的,大多数的公司不会在项目开始就用中文,这对转向造成了很大阻碍。 下面我扮演在网上看了关于中文编程的介绍,决定从今天开始只使用中文编程的程序员。以后我的代码都是中文的了。 但是由于中文编程目前不流行,所以会受到很多障碍,但有了这个项目之后,就可以在开源和闭源两种情况之下,都方便的使用中文,下面是具体案例:
这就是对你提出的两个问题的回复,如果我没有能理解好你的问题,请留言告诉我。 |
至于你说的之前的想法,我觉得确实有一些类似的地方,但那个想法的难度太大了。大概看了,貌似是涉及到编程语言和编译器的层面吧,如果我没理解错的话,用主席的话来说就是“蚂蚁缘槐夸大国,蚍蜉撼树谈何易”,就这么点人,还想到编程语言和编译器层面上去了,简直是痴人说梦,看不到任何希望。 这个思路是在现有的体系上增加内容,如果已决定使用中文编程,那么立即就可以用,当需要国际化的时候往里面增加文本文件就行,由于是高度解耦的,不对现有的工作造成任何的影响,也不用管编程语言和编译器层面的问题。 而且这个国际化还是可以随时随地分阶段进行的,什么时候想起来要做了就可以做。 这个项目的初衷是让人能够安心的转向中文编程,这就好像走钢丝的新手都要用带安全绳是一样的,有了安全绳,所有人都可以加入到这场冒险当中! 走钢丝的新手因为有安全绳的保护,不会出现真正的危险,所以,他们愿意尝试;同样的,转向中文编程的人,因为有了这个项目感到很安心,编程后,可以利用闲暇时间进行翻译,等到必须使用英文变量名的时候,可以直接转换为英文,完全的无缝衔接的。 安全感很重要,否则少有人会愿意冒险。 |
个人以为,想法上是不错的一个创新 |
赞同,你理解了这个项目在可行性方面的巨大优势。 |
多谢阐释。只要可能促进中文命名推广的方法,就值得好好研究。
这个需求的确听到过,也看到过将中英代码互转的工具。应该还可分为两种场景:
如果国外开发者只需使用 API,那么英文版的 API 和文档应该够用。如果针对乐意参与贡献代码(改进、维护项目)的国外开发者,那么这个需求也成立(场景3) 下面就基于这三种场景来探讨吧。 场景 1,由于英文并不需要直接让人看,那么对英文命名的可读性可以没有要求,只需保证代码转换后的正确性即可。这对翻译的要求最低。 场景 2,这种情况下,往往是一直有较大量英文代码需要中文化。或者从流程角度说,相对而言,更多时候是中文跟着英文走。 场景 3,应该是中文代码是基本,相对而言是英文从中文。但同时对英文可读性要求最高。 三种场景下都需考虑的(欢迎补充):
当然,说千道万不如动手一试。 在一个相对小型的项目中进行一次实践相信会有更直接的体会。个人认为 @tuchg 的中文代码补全插件正好是英文命名,就是个很好的场景 2 的实例。比方说 @Andy-AO 可作为一个新参与者,尝试用中文命名部分代码并与英文代码同步,共同完成一个新功能(也许就这个中英互转功能?)。 个人时间精力有限,但乐于协助测试、文档等等。 |
@the Sixth Epoch |
rand name 回复在“为什么都说易语言不好?易语言不好在哪里? - pansz的回答”说:
|
@liuxilu 多谢分享。看了一下这位的意思应该是易语言可以把关键词自动在多种语言之间互转,而不是标识符吧? |
呃,看错了 |
是个好想法, 通过工具应该可以实现 |
额,这不和代码”混淆“差不多吗,自己用喜欢的语言写完后,能把变量名“混淆”成各国的语言,别人更改后,也能输出不同变量名但意义相同的代码。 我倒有个想法,可以维护一个全局的变量表,代码中记录id,值为各种语言翻译后的变量名,代码文件保存id,在ide中显示id翻译后的值。不同的变量名,但如果指的都是同一个id那么就算为同一个变量。 将变量名与自然语言解耦 × |
前排提醒,怕来低级黑
重要问题
用更熟练的语言思考,对于提高思考的质量和速度都有很好的帮助[1]。
由于中文在编程界不是通用的语言,所以用它编程的重要问题是 —— 没有办法和其他国家的人进行交流,老外一看变量名都是方块字,估计直接劝退了。
软件界面多语言已经很常见了,代码也可以有这个思路。
让自然语言和编程语言在写变量名方面解耦,可以先用母语写变量名,并用来思考编程问题,发布的时候,然后再逐渐翻译,就像现在的软件那样。
变量名与自然语言解耦的好处
可能的实现途径
JetBrains 系的 IDE,都有重构的功能,调用重构功能换变量名,应该就能实现。
代码混淆器,好像会替换变量名而让软件功能保持不变,如果有开源的,应该可以利用。
注释 1
《找对英语学习方法的第一本书》
如果大多数英语不好的人都会用母语思维,然后再用翻译形成英语,那么根据工作记忆有限的事实,直接用母语思考,有可能会减轻负担,从而提高思考的质量。
还有就是,这里说的用母语思考效率可能更高,指的是英语比母语熟练度明显差的,大多数人可能都会这样,因为毕竟在国内的环境中,练习的机会少很多。
如果英语和母语已经差不多熟,那么不需要。
简单的查了一下,Multilingual variable name,和“多语言变量名”,好像没有发现类似的项目,所以将这个灵感发出来,如果有精通写 IDE 插件,这方面的人,也许会有点兴趣吧。
The text was updated successfully, but these errors were encountered: