V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xuanwu
V2EX  ›  程序员

中文编程知乎专栏一岁了-我为什么投身于普及用中文编程

  •  
  •   xuanwu · 2018-11-02 07:49:20 +08:00 · 15972 次点击
    这是一个创建于 2212 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  2018-11-02 11:03:16 +08:00

    知乎专栏于2017年11月9日开通, 之前只想写些中规中矩的年度小结, 但感觉有些东西不吐不快, 权当人生阶段报告吧.

    最早对编程的接触在初中, 同学帮他家里玻璃厂写了个优化切割率的程序, 我看了点源码. 高中时想自学C未果. 00年大学志愿选了听起来和计算机很接近的信息工程专业, 当时属于软硬兼修但偏电子方面. 大一开始学C, 选修了单片机/汇编等等, 之后课程中计算机基础知识(尤其体系/系统方面)比较欠缺. 毕业后在上海工作四年, 跟着不少前辈学习, 对软件工程实践有了点亲身体会. 2008年抱着对AI的憧憬来美国读硕. 英语从小学之前家里开始教, 之前这一路上英语算是相对强项.

    硕士期间, 补一些计算机基础课之外, 修了一些AI/自然语言处理/编译器入门相关课程, 在学校的机器人实验室做了点工作. 毕业后留美做了网络开发软件工程师, 业余开始做一些开源项目(浏览器插件). 2014年才在岗位中第一次参与可读性审核, 在国外公司参与不同国家程序员的可读性互评, 才发现母语的优势(如一群华人和东欧人讨论英语选词的时候). 2015年开始一系列中文编程相关尝试, 见前文小结此不赘述.

    2015年中有了大女儿, 2016年在出国八年后第一次回国探亲. 2017年中, 二女儿尚未出生, 在国外听闻奶奶去世, 同月在Github创建中文编程讨论组. 之后的绝大多数业余时间都用在相关开发讨论中. 想来算是有生以来最投入的一个业余爱好了. 对于中文编程的广泛社会效益在其他专栏文章已有阐述, 这里说说对我个人的益处.

    1. 保持自己的语文水平. 虽然在家里说中文, 但写作量非常有限. 亏得讨论组和专栏, 这一年多的中文写作量大概比在国外的前九年加起来还多(也许还可以加上工作和大学的八年). 更不用说各个相关项目开发中使用中文命名更考验用词能力.
    2. 锻炼在线社交能力. 在探讨和论战过程中, 对现今的网络环境有了更直接的认识, 作了不少自我修炼.
    3. 希望借此与国内同行多交流, 避免与国内的迅速发展脱节. 一路上结识了不少同道, 期待更多合作者.
    4. 国家越强大, 在国外越安全. 两个女儿, 更不希望看到乱世 (用中文编程可帮助缓解国内人力短缺问题, 降低初创公司的开发成本, 促进自主基础软件开发和传统行业信息化, 加速提高全行业的国际竞争力)
    5. 两边父母尚在, 国家越早富强才更有动力早日全家回国开创事业
    6. 希望用中文编程帮助下一代在英文环境中(如果#5不能短时间成行)学习中文相关知识, 避免只会听不说不写

    总之, 虽然困难重重, 但有足够理由坚持下去.

    145 条回复    2018-11-05 11:32:13 +08:00
    1  2  
    absente
        101
    absente  
       2018-11-02 13:42:49 +08:00
    @Archeb 中文的概念先于汉字,所以没有什么不得当的。相反汉字是外对内更为常见一点的说法
    absente
        102
    absente  
       2018-11-02 13:43:49 +08:00
    @crs0910 他这个不实用,只是另一种 poc 罢了
    absente
        103
    absente  
       2018-11-02 13:44:30 +08:00
    @crs0910 尤的这个不实用,只是另一种 POC 罢了
    brickxu
        104
    brickxu  
       2018-11-02 13:45:30 +08:00
    @LemonCoo1 啊,啊啊,阿斯顿,八十多,嘎啊玩儿,阿什利看得见噶,烫烫烫烫。。。。。这些都可以用,只要拍下键盘就出来变量名了。。
    absente
        105
    absente  
       2018-11-02 13:46:00 +08:00
    @waruqi 拼音不实用啊,既增加了多义性,又不如中文直观
    xuanwu
        106
    xuanwu  
    OP
       2018-11-02 13:50:51 +08:00
    @tamlok 多谢. 之前错以为没有这样的中文编程入门书籍. 好像比之前发现的那本日语命名的日文编程译著更早: https://www.v2ex.com/t/498973#;
    刚略看了一下, 感觉太侧重算法导致代码中命名优势体现的不大明显. 个人更倾向于入门书中的示例以更接近日常生活的题材为好, 之前试写的 Java 上手: https://github.com/program-in-chinese/java_in_hours_chn
    Greenm
        107
    Greenm  
       2018-11-02 13:51:57 +08:00
    @absente 如你所愿,blocked

    另外,我觉得易语言才是你们的前辈,你们还是要学习一个,有技术就别折腾这些没有意义的东西。
    zilan
        108
    zilan  
       2018-11-02 13:53:39 +08:00   ❤️ 1
    看了专栏中的代码,2 个字,智障
    kernel
        109
    kernel  
       2018-11-02 14:01:52 +08:00   ❤️ 2
    天啊,中文编程!比中医粉还智障,搞技术就别强行爱国了
    absente
        110
    absente  
       2018-11-02 14:03:59 +08:00
    @Greenm 什么时候轮到你来定义中文编程的意义了?麻烦你好好搬砖把
    absente
        111
    absente  
       2018-11-02 14:04:58 +08:00
    @kernel 我就没强行爱国,楼主的情况比较特殊,我也不做评价。我是觉得中文好用才用的中文的,反正是真香
    xuanwu
        112
    xuanwu  
    OP
       2018-11-02 14:05:51 +08:00
    @fox0001
    @echo1937
    @unique
    @ala2008
    @yishengD
    @star7th
    @xuboying
    @Greenm
    短期内在主流编程语言 /框架中使用中文命名是投入最少, 获得代码可读性改进和维护量下降的途径.
    之前的源码翻译插件在现阶段本质上与自动查英汉词典没有区别, 打算在此基础上做批量代码汉化工具(加入一些手动辅助), 也许可以促进中文命名的普及.
    随着中文命名的普及, 中文语法的编程语言将会应运而生. 个人对编译原理并无很深研究, 也不打算在短期内开发维护一套自创的中文语法编程语言.
    Registering
        113
    Registering  
       2018-11-02 14:21:49 +08:00
    MDZZ
    lingll
        114
    lingll  
       2018-11-02 14:24:29 +08:00
    中文编程就像数学公式的变量非要用中文表示, 数字非要用中文字来表示一样, 我觉得
    derrickT
        115
    derrickT  
       2018-11-02 14:24:51 +08:00
    先 ban 为敬,感觉作者就是来这里抬扛的,核心论点就是中文编程就是爱国,你们不用中文编程或者不喜欢不支持中文编程就是不爱国,和菊花厂一个套路,建议再学习下周小平的姿势
    xuanwu
        116
    xuanwu  
    OP
       2018-11-02 14:29:59 +08:00
    @yulitian888 见 #112 个人短期内主要关注中文命名相关部分.
    alfredsun
        117
    alfredsun  
       2018-11-02 14:34:13 +08:00
    楼主弱爆了 我用的甲骨文和金文
    watzds
        118
    watzds  
       2018-11-02 14:49:56 +08:00 via Android
    这个习惯问题很多人肯定不适应。也没见什么好处,以后英语肯定会更流行,中文编程也不利于国际交流
    likai
        119
    likai  
       2018-11-02 14:50:45 +08:00 via Android
    @absente
    你是从哪里得出中文编程可以减少无用代码这个结论的?

    易语言代表不了所有中文编程,就目前而言,
    说他是中文编程的代表应该没什么人反对。

    中文编程中除了易和 aauto,其他流派能举点例子出来么,哦,还有按键精灵这种说也能算,还有其他成气候的?

    争论了这么久,你能拿出来中文编程的东西出来不?有自己设计理念,设计思想的东西,而不是汉化关键字,api 或者中文命名这种。
    likai
        120
    likai  
       2018-11-02 14:54:24 +08:00 via Android   ❤️ 1
    @xuanwu 中文命名就叫中文编程了?那就不要再推广你的中文编程了,现在流行的语言几乎都支持中文命名,再怎么中文命名,该叫 python 的还是叫 python,该叫 java 的还是叫 java,
    absente
        121
    absente  
       2018-11-02 14:55:53 +08:00   ❤️ 2
    @likai APL 一族的 J 了解一下,类似的有 POC -> zhuanlan.zhihu.com/p/33248556 基于 APL 风格的中文编程肯定能省去很多无用代码,我也是看过 APL 的论文才得出这个结论的,因为 1979 年的 notation as a tool of thought 这篇论文里面的 APL,基本上就是文言文的一种逻辑转述
    tatelucky
        122
    tatelucky  
       2018-11-02 15:35:32 +08:00
    想必阁下的输入法真好用,切换起来毫不费力
    zhouwei520
        123
    zhouwei520  
       2018-11-02 15:36:41 +08:00
    辛苦了,我也希望中文可以发扬光大,别学英文了
    xuanwu
        124
    xuanwu  
    OP
       2018-11-02 15:43:05 +08:00   ❤️ 1
    @likai 即使是推广中文命名也有很多工作要做.
    首先是改变"编程只能用英文命名"的普遍想法.
    再有是对中文命名的 IDE 支持(包括一直被诟病的输入法集成问题等等), 可参考日本 2017 年的论文"ローマ字入力時の日本語識別子入力補完プラグインの 開発"开发了辅助插件以改进 IDE 对输入日语命名的支持."
    wangsyi13
        125
    wangsyi13  
       2018-11-02 15:46:39 +08:00
    @absente 顾左右而言他,这不叫总结,这叫硬怼,自己的道理都没整清楚
    wangsyi13
        126
    wangsyi13  
       2018-11-02 15:48:31 +08:00   ❤️ 1
    @absente 本来我在理性讨论,结果你这回答一点理性都没有,看你的回复,我只能说,中文编程可能有一天会有好的发展,但跟你们或者跟你没关系,你只是在阻碍中文编程的发展
    trait
        127
    trait  
       2018-11-02 15:50:20 +08:00 via iPhone   ❤️ 1
    @wangsyi13 连基本的编程语言发展史都不知道 好意思在这儿说他硬怼。
    type
        128
    type  
       2018-11-02 16:07:54 +08:00
    有人愿意做这件事,也有人愿意用,那就行了;
    工具而已,各人喜好哪种就用那种,何必在这争论。
    wangsyi13
        129
    wangsyi13  
       2018-11-02 16:08:31 +08:00
    @trait 你说里面有多少都是没有思考就回答的?坚持自己的思想,只会 APL APL,你让一个初中以上学历的人用 APL 写一个软件容易还是用 python、java 甚至 c go 写一个软件容易?别人说适合做入门普及有错吗?到现在 APL 也只是跟 VBA 之类的一样在做特殊用途吧。你说中文编程不是只适合入门,那给反驳理由啊,一句“那你怎么不说英语,我觉得文言文天生适合编程”,这不是抬杠是什么?
    trait
        130
    trait  
       2018-11-02 16:11:30 +08:00 via iPhone
    @wangsyi13 麻烦先去读读基本 PL 入门书再,扯什么 python java 写软件,连自己说的东西跟 PL 毛关系都没有都不知道,尬出天际。
    cwx391497
        131
    cwx391497  
       2018-11-02 16:16:45 +08:00
    可否详细讲讲可读性互评的中文优势,你是怎么发现的,具体发现了什么??
    absente
        132
    absente  
       2018-11-02 16:59:05 +08:00
    @wangsyi13 你说的基本上没毛病,但我要说的是,我那是汇总,不是 conclusion。至于你说的[那你怎么不说英语,我觉得文言文天生适合编程],我认为这个反问不属于抬杠,而是希望对方真心想一想这个问题。我是想过的,所以才这么说的

    @trait 不好意思,因为这个而牵扯打扰到你
    zzzzzzZ
        133
    zzzzzzZ  
       2018-11-02 16:59:14 +08:00
    https://zhuanlan.zhihu.com/p/44644112

    hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
    zzzzzzZ
        134
    zzzzzzZ  
       2018-11-02 16:59:47 +08:00
    谢谢你们承包了我今天的笑点,block @Livid
    0x000007
        135
    0x000007  
       2018-11-02 17:14:43 +08:00
    反而对楼主家庭感兴趣,出国八年才回国一次,奶奶去世的消息还是听闻到的,不知道楼主在一个什么样的家庭环境
    lardud
        136
    lardud  
       2018-11-02 17:29:51 +08:00 via Android
    中文滚出
    pixstone
        137
    pixstone  
       2018-11-02 18:43:21 +08:00   ❤️ 1
    中文编程的重点不是编程语言本身。 编程语言本身就几个英文单词。
    初学者看不懂代码不是英文导致的,而且编程语言之上的东西,比如算法,编程语言语法。
    我用中文写 Java 快排。 写一堆, 公共类,输出,加减。 你如果不知道快排你即便看懂中文字面意思你还是看不懂这一坨代码在干嘛。

    再举个例子,英文原版的编译原理你看不懂,换成中文就能看懂了。不见得, 如果你能看懂中文版的,一个个单词的直接翻译英文版的也能大致看懂。

    语言本身只是符号,皮像而已,你把泰勒展开式换成中文甲乙丙丁你就能看懂了么?真正要懂得的是语言承载的知识点。要降低编程门槛,易语言就足够可以了。真要普及编程,用通俗易懂的语言和文字来分享知识,就像 《 Head First 》系列图书那样。

    与其“制作”新的语言,新的工具。不如写几篇通俗易懂的 Java/ Python/易语言 的入门教程。
    Jzer0n
        138
    Jzer0n  
       2018-11-02 19:40:19 +08:00
    2015 年中有了大女儿, 2016 年在出国八年后第一次回国探亲. 2017 年中, 二女儿尚未出生, 在国外听闻奶奶去世

    先不说你说的"中文编程"什么意义, "在国外听闻奶奶去世"

    其实我觉得你还是继续呆国外进行你的"中文编程"的大事业吧, 不要再回来了--真的. 加油.
    em70
        139
    em70  
       2018-11-03 00:39:36 +08:00 via Android
    @absente 为什么我们数学不用汉字,而用阿拉伯数字,因为阿拉伯数字确实方便,为什么我们编程不用汉字,而用英文,因为英文编程确实方便。你不能用汉字替代外来的阿拉伯数字,同样也无法用中文替代英文编程,这是客观事实
    xuanwu
        140
    xuanwu  
    OP
       2018-11-03 01:09:31 +08:00
    @pixstone 见 #96 #106 已经在尝试用中文命名编写入门教程. 知乎专栏中也有很多较偏实用如 spring boot 相关短文. 母语命名对代码可读性的改进这一点没有看到什么有力的反例, 区别只是业务部分可读性改进更大(相对算法相关代码). 日本的小学编程教育指南中所有例程的关键词和 API 命名都用日语也间接说明这一点.

    @0x000007
    @Jzer0n
    此文仅为表述个人和中文编程小组产生背景, 私人问题不会再回应.
    xuanwu
        141
    xuanwu  
    OP
       2018-11-03 02:44:36 +08:00
    @cwx391497 工作环境内交流使用英文, 可读性互评在来自各国的程序员之间进行. 华人(包括台湾地区), 日本, 乌克兰, 美国, 俄罗斯, 白俄等等. 不时会碰到推敲使用哪个英文单词 /词组的情况. 母语为英文的程序员在此类讨论中更有优势.
    ioschen
        142
    ioschen  
       2018-11-03 15:46:13 +08:00   ❤️ 1
    @ccc008 不是,你没用过 笔画打字吗,就好比五笔键盘,没有字母的情况,王码输入法等很多的。也是 26 个键左右
    ioschen
        143
    ioschen  
       2018-11-03 15:57:02 +08:00   ❤️ 1
    @ioschen 原回复 是针对 [kslr 1 天前 via Android 发表内容的回复]
    [我一直在想,为什么我会觉得中文是异端 明明对于英语来说也是普通词汇]

    中文不是异端,你用习惯了 26 字母键盘,如果你用习惯偏旁键盘类的中文键盘你就不这么想呢
    buhi
        144
    buhi  
       2018-11-05 11:08:30 +08:00   ❤️ 1
    楼主, 你中文翻译至少也应该是基于 AST 的吧, 你现在这个基于字符串替换的是不是太 low 了一点啊, 不只是 low 的问题, 你翻译的时候不知道上下文, 会造成不准确的吧. 如果换成是有一个正经的中文解释器那样, 才算是真正的中文编程啊, 你现在这个只是中文字符串编程.
    xuanwu
        145
    xuanwu  
    OP
       2018-11-05 11:32:13 +08:00
    @buhi
    > 你中文翻译至少也应该是基于 AST 的吧

    这个插件中实现基于 AST 的比较难. 之前做过 Java 源码的部分 AST 翻译: https://zhuanlan.zhihu.com/p/44536065

    > 你翻译的时候不知道上下文, 会造成不准确的吧

    现在是最简单的直译, 机翻方面的改进潜力肯定有

    > 你现在这个只是中文字符串编程

    这个项目的主要目的是使更多人看到中文命名对代码可读性的改进.
    对于中文语法的编程语言, 之前有些尝试, 比如
    https://www.v2ex.com/t/482519
    https://www.v2ex.com/t/482717#reply8
    但不是短期内的目标
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1126 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 18:36 · PVG 02:36 · LAX 10:36 · JFK 13:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.