overview icon indicating copy to clipboard operation
overview copied to clipboard

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

Open nobodxbodon opened this issue 7 years ago • 83 comments

一个用户对象是中文为母语的开发者的编程语言以及配套开发环境, 应该有哪些特殊的功能, 才有存在的价值和维持开源的社区动力? 暂且不讨论如何实现的问题, 先搜集需求和探讨设计. 这个目标虽然是远期的, 但总要一步步实现, 希望这里能迈出第一步.

基于早先的讨论, 个人整理的一些如下. 视野有限, 仅作抛砖引玉:

开发环境
    集成语言源码(编译器,标准库等),方便用户修改/改进语言本身或丰富库,并方便验证修改对已有项目的影响. 理想情况是开发环境本身也能在自身中导入进行开发
    集成代码版本控制功能, 语言开发团队对语言/标准库与用户库/项目提供版本控制服务, 以提高团队开发效率, 促进共享, 提升整体代码水平
    提示/帮助文档贯穿整个开发过程
    集成语言解释器
    内置适合编程的中文输入法
    可以导入其他编程语言的项目
语言本身
    内置语法最简化, 可扩展性高. 想到的类似例子是Scheme/Lisp
    保证代码可读性的前提下优化性能/效率
    支持与其他编程语言的集成
    源码版本间易于比较
    易于理解的中文反馈信息, 包括编译错误/警告, 运行时错误等等

下面是参考易语言相关平台的官方文档,挑选出的一些. 本人没有易语言实践经验:

火山:
    支持中英文代码切换
易语言:
    代码即文档源程序风格统一
易语言飞扬:
    类自然语言编程 - 支持宏定义(和可扩展性高一致)

nobodxbodon avatar Aug 01 '17 21:08 nobodxbodon

2000年的论文: 自然语言和计算机编程语言的比较. 自然语言是以中文为主要分析对象的.

nobodxbodon avatar Aug 02 '17 04:08 nobodxbodon

I think there should be some IntelliJ IDEA Chinese language patch.

I've seen that once.

ice1000 avatar Aug 02 '17 08:08 ice1000

这个补丁是汉化IDEA界面还是有支持中文代码开发的功能?

nobodxbodon avatar Aug 02 '17 15:08 nobodxbodon

汉化界面啊。。

ice1000 avatar Aug 02 '17 16:08 ice1000

恩 开发环境有中文界面是一个必需特性.

nobodxbodon avatar Aug 02 '17 17:08 nobodxbodon

我觉得TypeScript+VSCode的组合也挺适合的,TypeScript的解释器支持UTF8编码,然后编译出来的JavaScript也支持,同时VSCode可以提供很好的代码提示功能。只要实现了根据拼音首字母或者拼音的部分来匹配中文标识符,就可以极大地提高编码时输入的效率。像下面这样: demo

lightrabbit avatar Aug 05 '17 09:08 lightrabbit

@lightrabbit 有兴趣的话方便在首页添加个TypeScript的中文代码例程吗?

只要实现了根据拼音首字母或者拼音的部分来匹配中文标识符

这个好像和"内置适合编程的中文输入法"的想法有点交集. 话说看你的示例里好像没有用额外的输入法? 是visual studio已经能够识别拼音了吗?

nobodxbodon avatar Aug 05 '17 14:08 nobodxbodon

感觉题目有些误导, 修正了一下. 之后会随着讨论进行而更新特性列表.

nobodxbodon avatar Aug 05 '17 15:08 nobodxbodon

@nobodxbodon 这个就是上面的插件提供的功能,只是因为VSCode修改了代码中的匹配算法,和菜单面板里的不同了,所以那个插件对于新版的VSCode,暂时不能提供代码中用拼音匹配中文标识符的功能。

lightrabbit avatar Aug 07 '17 01:08 lightrabbit

Emacs 或者 Vi 呢?我想一个中文合适也不需要用老鼠的IDE。石涛

2017-08-07 9:43 GMT+08:00 lightrabbit [email protected]:

@nobodxbodon https://github.com/nobodxbodon 这个就是上面的插件提供的功能, 只是因为VSCode修改了代码中的匹配算法,和菜单面板里的不同了,所以那个插件对于新版的VSCode,暂时不能提供代码中用拼音匹配中文标识符的功能。

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/program-in-chinese/overview/issues/11#issuecomment-320548810, or mute the thread https://github.com/notifications/unsubscribe-auth/AJoUCSMEaqJ94jzKPxEmGJqjNkfZGMlDks5sVmvLgaJpZM4OqSsO .

taostein avatar Aug 07 '17 01:08 taostein

@lightrabbit 哦! 真难得, @cleverdango 是这个插件的作者吧, 有幸ta也在组里. 像这种专门针对中文用户的项目感觉最适合用中文编程了. 确实, 插件就是受制于IDE. 像Firefox插件在火狐决定放弃xul支持之后社区一片怨声载道.

@taostein 惭愧, 在下对这两个编辑器仅限于在linux里看看log文件的使用程度. 请问这些非图形界面的IDE在支持中文编程方面有什么特殊需要吗? 比如输入法和自动补全, 和图形界面的IDE相比有什么不同吗?

nobodxbodon avatar Aug 07 '17 02:08 nobodxbodon

@nobodxbodon 这个坑就是 @lightrabbit 挖的,部分代码也是他写的当时因为有些别的原因所以没有分开commit

cleverdango avatar Aug 07 '17 02:08 cleverdango

你们可以把 @lightrabbit 拉到组里讨论,他比我更懂些技术细节

cleverdango avatar Aug 07 '17 03:08 cleverdango

请帖已经发给 @lightrabbit . 不知是否收到. 自动补全和输入法确实是IDE易用性的很重要一部分. 个人感觉拼音输入匹配中文标识符的功能是个好切入点, 因为用拼音输入的用户比例最大, 而且和现有的自动补全无缝集成. 好像在基于现有IDE的前提下没想到更用户友好的方式. 不知你们有兴趣/动力继续维护它吗? 比如跟进新版vscode的问题?

nobodxbodon avatar Aug 07 '17 03:08 nobodxbodon

@nobodxbodon 插件受制于IDE这个,也是我选择VSCode的原因。因为VSCode是开源的,你可以直接看它的源码并且修改它的源码。而那个vscode-pinyin的本质其实也是对vscode的源码进行修改,让它支持拼音匹配。然后插件所做的事情其实是把原版的vscode中负责匹配的部分替换成修改后的vscode。 继续维护的话,主要是近期事情很多很忙,所以没有多余的精力来做这方面的事情……

lightrabbit avatar Aug 07 '17 16:08 lightrabbit

关于这个问题,我认为用code block 加载汉语编程语言的编译器就行了,有很多现成的IDE可以用。

qwas982 avatar Sep 02 '17 12:09 qwas982

@qwas982 个人觉得, 现有IDE加上中文语言编译器是一个基础. 有些功能是有中文特色而且现有IDE默认不自带的. 比如上面 @lightrabbit 和 @cleverdango 开发的在自动补全中支持拼音输入. 还有一些在顶楼的列表中. 其中个人比较看重的是第二条:

集成代码版本控制功能, 语言开发团队对语言/标准库与用户库/项目提供版本控制服务, 以提高团队开发效率, 促进共享, 提升整体代码水平

可以想象成, 开发环境和类似github的代码版本管理系统再加上类似Maven/NPM的库管理平台(解决依赖问题, 标准化代码和文档等)无缝集成. 所有使用这个开发环境的用户都可以选择把自己的库/代码直接分享, 其他用户可以在开发环境中搜索和利用其他人分享的库/代码并直接在自己的项目中使用, 这样可以最大限度地互相学习, 减少重复开发, 以此来抵消部分后发劣势, 使得第三方库和代码的积累尽快赶上老牌主流编程语言.

nobodxbodon avatar Sep 02 '17 22:09 nobodxbodon

在Z语言讨论群里版大介绍了一个在线中文编程环境: http://quzsc.huangyipeng.cn/web/ 目测像是汉化了JQuery的接口, 因为JQuery就用#号按照ID取HTML元素:

界面.容器.添加标题("第一个中文程序");
界面.容器.添加按钮("我的按钮",{编号:"按钮001"});
界面("#按钮001").点击(函数(){
     界面.消息框("我的按钮");    
});

思成.展示源代码(); 

https://github.com/program-in-chinese/overview/issues/20 和它的不同在于, 目标用户是设计师和初学者, 而不是通用前端开发者.

nobodxbodon avatar Sep 03 '17 02:09 nobodxbodon

@nobodxbodon 你说的不错,我很赞同,我还完善了一下我的思路。

我想到一个新思路

利用现有基础,站在巨人的肩膀上,借鉴前人的经验。

手动汉化不如自动汉化。 我们可以用自己现阶段会的某种语言,比如 javascript java python等语言写一个【源代码翻译器】,翻译C/C++的编译器gcc、llvm的源代码,调用Google 的|谷歌翻译|(谷歌已经在去年将它升级到了具有机器学习的人工智能翻译水平)去自动翻译其中的代码,然后保存为汉语源代码,然后再把这个源代码通过现成的编译器编译为支持汉语的新gcc或llvm编译器可执行程序,然后在我们用vs或者code::block(或其它语言的IDE)的时候通过加载编译器,就可以在强大现有的IDE中使用汉语编程了。这是汉化C/C++这种语言的一个思路,也可以将其用于汉化其他语言,比如javascript java python。 因为这个【源代码翻译器】本质上是个文本翻译器。 对翻译的策略,我们可以给他设置一个规则,比如语言保留的关键字和已占用的命名空间用我们协商好的汉语词汇列表,非保留和占用的,如;库、模板、STL等,如果是英文单词就直接翻译,如果是缩写就手动翻译一处,其它相同的缩写就自动替换。

qwas982 avatar Sep 05 '17 03:09 qwas982

这样做的好处是可以兼容现有语言的资源。反正是机器自动智能的翻译,即便是海量的源代码文件或者各种库、模板等也是可以轻易翻译完的。只不过校验需要一定的人手和时间,不过这应该已经很容易了。我觉得此举就像我们买了苏联的su-30 、su-35后将它国产化并自己生产出歼-11,、歼-15一样。完全消化并掌握这项技能。现在还有全新的歼-20,也就是说以后我们有创造全新语言的可能性,什么图形化编程,人工智能编程,自动化编程都不在话下。

qwas982 avatar Sep 05 '17 03:09 qwas982

请正确拼写我国战斗机的名字,那个字是,歼灭的意思,你那个字是狡猾险恶的意思

ice1000 avatar Sep 05 '17 04:09 ice1000

另:是code::block,不是

code::black

ice1000 avatar Sep 05 '17 04:09 ice1000

@qwas982 机器翻译(个人觉得"智能"一词最近有被用滥的倾向)远没有达到理想境界, 而且它针对的是自然语言, 而非源码中使用的命名. 自然语言的上下文往往能为机器翻译利用, 而源代码离自然语言本身很远. 虽然没有尝试过, 但我估计机器翻译只能按照单词"直译"(还不考虑Camel命名的分词问题, 还有英文代码随处可见的缩写问题). 你可以试试取一段实际项目的代码, 试试用google translate出来的样子.

另外, 请麻烦你修正一下 @ice1000 指出的用词问题, 谢谢.

nobodxbodon avatar Sep 05 '17 04:09 nobodxbodon

@ice1000 感谢指出,已修正。

qwas982 avatar Sep 05 '17 05:09 qwas982

@qwas982 还有一处请修正. 另外请把https://github.com/program-in-chinese/overview/issues/28#issuecomment-327061853 也一并修正. 另外, 如果是相同内容, 建议用引用链接而不是拷贝粘贴.

nobodxbodon avatar Sep 05 '17 06:09 nobodxbodon

@nobodxbodon 好的

qwas982 avatar Sep 05 '17 06:09 qwas982

很多解释型语言整这种编码的问题比较困难,因为他们支持的编码都很贫瘠,比如py。好像rb也有类似的问题。C# Java Haskell等都没有问题。

ice1000 avatar Sep 05 '17 07:09 ice1000

@ice1000 不知你说的编码问题是...? Python3Ruby都支持utf8命名吧.

nobodxbodon avatar Sep 05 '17 16:09 nobodxbodon

@program-in-chinese/all 被反问: 你们设想的中文化的C#(语言本身)应该是怎样的. 除了汉化关键词和核心库(类似https://github.com/program-in-chinese/HuanXiang )以外, 还有什么可行的吗?

nobodxbodon avatar Oct 13 '17 02:10 nobodxbodon

@Glavo 有幸看到你关于语言设计等等的发言, 如这里, 非常希望一同探讨!

nobodxbodon avatar Oct 16 '17 02:10 nobodxbodon