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

"是先有了 Unicode 支持再有了中文、日文编程的需求"?

  •  
  •   xuanwu · 2018-12-22 16:07:36 +08:00 · 5488 次点击
    这是一个创建于 1923 天前的主题,其中的信息可能已经有所发展或是发生改变。

    出自这条回复: https://www.v2ex.com/t/518915#r_6628068

    现在觉得也许这种看法的不在少数. 为此, 节选十一年前Python3 选择支持非 ASCII 码标识符的缘由:

    Rationale(依据)一节开篇明义, 指出用母语命名标识符对代码清晰度和可维护性的提高.

    Python code is written by many people in the world who are not familiar with the English language, or even well-acquainted with the Latin writing system. Such developers often desire to define classes and functions with names in their native languages, rather than having to come up with an (often incorrect) English translation of the concept they want to name. By using identifiers in their native language, code clarity and maintainability of the code among speakers of that language improves.

    下面列出了一些质疑和回应. 其中:

    People claim that they will not be able to use a library if to do so they have to use characters they cannot type on their keyboards. However, it is the choice of the designer of the library to decide on various constraints for using the library: people may not be able to use the library because they cannot get physical access to the source code (because it is not published), or because licensing prohibits usage, or because the documentation is in a language they cannot understand. A developer wishing to make a library widely available needs to make a number of explicit choices (such as publication, licensing, language of documentation, and language of identifiers). It should always be the choice of the author to make these decisions - not the choice of the language designers.

    不用翻译吧

    57 条回复    2018-12-23 17:09:55 +08:00
    UIXX
        1
    UIXX  
       2018-12-22 16:26:38 +08:00   ❤️ 18
    其实,你不妨先做出“成熟”的可用方案,在工业界验证一段时间之后再布道你的思想。

    首先大家虽然带有一定的眼镜看待你的成果,可都不是傻子,确实有意义的、能提高效率的东西总会有用武之地。
    整天打嘴炮试图说服别人,专门发帖怼别人,惹人生厌对你或你的论点产生偏见怪得了别人吗?

    拿出真东西,大家都服。
    qwertyzzz
        2
    qwertyzzz  
       2018-12-22 16:32:33 +08:00   ❤️ 3
    tiantian fa fanbufan
    xuanwu
        3
    xuanwu  
    OP
       2018-12-22 16:33:18 +08:00 via Android
    @UIXX python3 就是一种成熟方案 其他支持 unicode 命名的语言也是
    Cbdy
        4
    Cbdy  
       2018-12-22 16:37:46 +08:00 via Android
    我赞同一楼,Talk is cheap,如果你用非常规的语言,做了一个很厉害的库
    UIXX
        5
    UIXX  
       2018-12-22 16:40:45 +08:00
    @xuanwu
    哥们,首先你是偷换概念。
    我们说它成熟,并不是说它对于中文 /其他语言文字命名成熟。

    我们把 python3 支持 Unicode 这种特性叫做对中文 /其他语言文字命名的“可行”。是可行性,而不是充分性,也不是必要性。
    GDC
        6
    GDC  
       2018-12-22 16:42:02 +08:00   ❤️ 2
    MMP 的天天刷个没完了
    diggerdu
        7
    diggerdu  
       2018-12-22 16:43:47 +08:00 via iPhone   ❤️ 1
    支持一下
    harwck
        8
    harwck  
       2018-12-22 16:50:33 +08:00 via iPhone
    你的所有回复都不离中文
    让人觉得你只是在为你拙劣的英文水平找借口
    AntiGameZ
        9
    AntiGameZ  
       2018-12-22 17:13:40 +08:00
    @harwck 貌似 LZ 人在美帝
    Remember
        10
    Remember  
       2018-12-22 17:26:24 +08:00 via iPhone   ❤️ 2
    @AntiGameZ 那就其心可诛了。任何形式的鼓吹中文编程,要么蠢,要么坏,人在美国的话,只能理解为后一种了。
    SeaRecluse
        11
    SeaRecluse  
       2018-12-22 17:31:54 +08:00
    LZ 这段时间可以稍稍消停下布道,毕竟过犹不及,时间和市场最有说服力不是吗?毕竟多数 v2exer 也是普通人,难以跳出自己的圈子去理性的思考。
    SeaRecluse
        12
    SeaRecluse  
       2018-12-22 17:41:19 +08:00
    @UIXX 让一个先驱者(姑且这样认为吧)去做出成熟的产品,一蹴而就的事情不好办啊~
    至少目前我看到的是,大多数人并没有去思考过这个问题,虽然就目前而言,这可能是一个“近未来”的主题。
    个人是希冀 AI 的进步使得翻译的进步从而各取所长,混合命名也无所谓,毕竟效率是第一位的。编程语言是就像是 net 地址转换一样,对机器而言无所谓什么自然语言,对人而言,最快最容易理解的最好。
    在接触大型开源库的时候,看着那些超长的带有缩写的变量名真的醉仙欲死:|
    tumbzzc
        13
    tumbzzc  
       2018-12-22 17:43:11 +08:00 via Android
    你有中文编程的兴趣爱好,没问题,但是不要总是在公共场合宣扬你的这个特殊爱好,看着烦
    beimenjun
        14
    beimenjun  
       2018-12-22 18:00:43 +08:00   ❤️ 2
    其实你不知道是否意识到:最大问题不是中文编程是否正确,而是你本人是否令人生厌。

    我们对于你在美帝空虚寂寞冷想练中文的心情可以在一定程度上理解,对你也可以向对一般人的友善程度对待,但是和垃圾邮件一样一直污染时间线,真的就特别生厌了。你来 V2EX 的表现,让人觉得真的是回复你都浪费自己生命。做人处事呢,有些时候不考虑别人感受真的很难获得其他人尊重,你可能比我年长,我话也就说到这个程度了,好自为之吧。
    mondeo
        15
    mondeo  
       2018-12-22 18:01:43 +08:00 via iPhone   ❤️ 1
    说好的言论自由呢,楼主只是按自己的兴趣做事,也没有对别人骚扰和人身攻击。计算机刚出现的时候只有 ascii,要是没有这种人的推动,哪来什么 i18n,unicode
    CruelMoon
        16
    CruelMoon  
       2018-12-22 18:03:37 +08:00
    楼主有点水
    d3vil
        17
    d3vil  
       2018-12-22 18:06:50 +08:00 via iPhone   ❤️ 1
    楼主,不要气馁,我是很支持编程中文化行动的,我觉得你可以多发一些实战的帖子,比如说你说 python3 支持,那么你倒是做出一个实例程序让大家伙看看,让大家伙觉得,诶,不错诶!这样更有利于布道,这是我衷心的建议,我知道你之前的帖子做过实例,发过三张照片,但是还不够,知道吗,还远远不够,但是方向得往那里走,而不是发纯讨论的帖子,因为 v 站的人已经大部分人没耐心看你的这种讨论了,其实我是无所谓的,我觉得没关系,一个社区,就是得有包容心,我是这个社区的一份子,我觉得中文编程还不错,那么你的帖子在这个社区就是有意义的,只不过很多反对的声音说的很难听,这个你得忍着,所以我说,不用气馁,do more
    wun
        18
    wun  
       2018-12-22 18:07:19 +08:00 via Android
    又开始了,又开始了
    ooh
        19
    ooh  
       2018-12-22 18:10:18 +08:00 via Android
    我打字慢可以了吧
    saluton
        20
    saluton  
       2018-12-22 18:32:19 +08:00
    就问你们为啥不用 emoji ???
    jimchen9999
        21
    jimchen9999  
       2018-12-22 19:31:39 +08:00
    MMP 的天天刷个没完了
    inframe
        22
    inframe  
       2018-12-22 21:58:18 +08:00 via iPhone
    祥林嫂似的了
    mchong
        23
    mchong  
       2018-12-22 22:19:34 +08:00
    talk is cheap, show me the code.
    xuanwu
        24
    xuanwu  
    OP
       2018-12-22 23:22:52 +08:00 via Android
    @d3vil
    @UIXX
    @mchong "中文编程"知乎专栏有各种语言中文命名的实例 java python js ts kotlin erlang scheme scala 等等
    niubee1
        25
    niubee1  
       2018-12-23 00:18:57 +08:00
    @saluton emoji 编程, 赞

    一般来说, 老折腾这个话题的, 要么就是没搞清楚编程的本质问题, 要么就是别有用心
    pexcn
        26
    pexcn  
       2018-12-23 00:26:30 +08:00   ❤️ 9
    想起了这张图 XD
    xuanwu
        27
    xuanwu  
    OP
       2018-12-23 01:01:56 +08:00
    @Remember
    @niubee1 此贴仅为指出, python 社区的非英语母语开发者在十一年前就已经发现了"用母语命名标识符对代码清晰度和可维护性的提高". 各位乐意用什么语言命名当然是各自自由.
    JCZ2MkKb5S8ZX9pq
        28
    JCZ2MkKb5S8ZX9pq  
       2018-12-23 01:17:55 +08:00
    @UIXX 之前看过他的 github,唉,一言难尽。要不是自称背景挺牛逼的,纯看代码真的满脸民科。
    KasuganoSoras
        29
    KasuganoSoras  
       2018-12-23 01:23:35 +08:00
    咱先不扯这么多,你试试用中文来重构我这个项目: https://github.com/ZeroDream-CN/PHPMC7
    重构完对比一下,看看哪个更容易理解,更清晰,看的更舒服
    Talk is cheap, show me the code.
    sola97
        30
    sola97  
       2018-12-23 01:28:25 +08:00 via Android
    输入法切换就够烦的了,还有 Linux 下没装输入法的时候
    imn1
        31
    imn1  
       2018-12-23 01:39:18 +08:00
    @AntiGameZ
    难道是敌 /对势力在挑起我们人\民内部矛盾?
    xxgirl2
        32
    xxgirl2  
       2018-12-23 02:01:07 +08:00
    负面营销。骂的人多了,也就出名了,目的也就达到了。
    xuanwu
        33
    xuanwu  
    OP
       2018-12-23 03:40:24 +08:00
    @KasuganoSoras 如果只想切磋可读性(不打算实用中文命名), 不妨新开帖子, 挑一段有代表性的, 我尽量试试(肯定需要对代码本身学习一下, PHP 用的很少. 如有问题还请指点). 之前类似的一帖在: https://www.v2ex.com/t/519903

    如果打算实用, 不妨移步 github 深入探讨(清静一些), 个人倾向于先添加中文版的 API(方法 /参数名), 这样至少对用户也可能有用(原英文 API 不变).
    xuanwu
        34
    xuanwu  
    OP
       2018-12-23 05:01:12 +08:00
    @KasuganoSoras 之前刚开始对 vue 的命名中文化: https://www.v2ex.com/t/510996#
    xlui
        35
    xlui  
       2018-12-23 08:32:43 +08:00 via iPhone
    你在原文列了那么多语言,结果给出的引用就只有 Python 而且是在我问了之后才去查的吧。如果是在我问了之后去查的那原文那句话还真的是臆测,如果不是当我没说。

    我承认我对 Unicode 标识符的理解不够,Python 支持 Unicode 原来是为了支持母语标识符。但是其他呢,我还是会认为 Unicode 标识符只是语言支持 Unicode 顺带的,除非你甩给我参考链接。

    “多数现代编程语言都支持 Unicode 命名的事实,说明了这一需求的切实存在。”

    这句话前半部分是事实,但是前后之间却没有必然的因果关系,也就是说前者是后者的充分不必要条件,除非有更多的参考链接来佐证。当然我也不是故意刁难,要你去找参考链接。但是只用一篇链接就否定我的观点,自我胜利,太狡猾了吧。

    所以我还和之前的想法一样,如果你只是凭空捏造些论点来和别人争论那跟你讨论真的是浪费时间。作为一个布道者却满嘴可能、极大、是可以预见的,说实话有点烦。
    xuanwu
        36
    xuanwu  
    OP
       2018-12-23 08:49:04 +08:00
    @xlui 上文是去年写的. 你觉得还要哪些语言支持 Unicode 标识符的缘由? 站里也许有能人会比我更早挖到相应 issue/thread
    xlui
        37
    xlui  
       2018-12-23 08:51:24 +08:00 via iPhone
    @xuanwu #36 讨论的不是同一个问题,就此打住,勿回。
    www5070504
        38
    www5070504  
       2018-12-23 08:59:43 +08:00
    怎么一直在吵吵这个 能不能先写点项目
    viator42
        39
    viator42  
       2018-12-23 10:39:50 +08:00 via iPad
    有的小众的编辑器连中文都输不进去,还妄想拿中文编程。对了我说的是 Arduino ide
    开发用的这些工具都是英语国家的人开发的,他们可不一定有闲心测试中文兼容
    你这玩意儿除了让代码好看一点再加了一些兼容性隐患以外没解决任何问题
    cyspy
        40
    cyspy  
       2018-12-23 10:48:11 +08:00
    请翻译以下段落:

    final class LazyList[+A] private(private[this] var lazyState: () => LazyList.State[A]) extends AbstractSeq[A] with LinearSeq[A] with LinearSeqOps[A, LazyList, LazyList[A]]
    xuanwu
        41
    xuanwu  
    OP
       2018-12-23 11:08:12 +08:00
    @cyspy 是这里? https://github.com/pkukielka/scala-umad/blob/ef34e23ae64a53284cd36b6f38dbb4e4d9ad4ce0/corpus/scala-library/src/scala/collection/immutable/LazyList.scala#L187
    这样截取两行出来, 本身就很难理解吧? 如果要中文化, 需要细究这个类的功能.
    cyspy
        42
    cyspy  
       2018-12-23 13:07:22 +08:00 via Android
    @xuanwu scala 标准库里最常用的类的定义而已,一个类,有类型参数,有参数,继承类,混入特质,再好理解不过了。
    xuanwu
        43
    xuanwu  
    OP
       2018-12-23 14:01:37 +08:00
    @cyspy 大概看了一下, 也许你的重点是 lazy 的对应中文?
    不少术语的确没有很一致或通用的翻译. 之前组里也试图进行总结 API 中常用的术语: https://github.com/program-in-chinese/overview/issues/85
    相对来说, 数量上说毕竟这些术语相对其他行业的术语还是少数(比如其他帖子提到的游戏 /法律 /会计等等领域的实践). 通过更多中文命名实践, 这些常用的 API 术语应该会有一个普遍接受的释义.
    KasuganoSoras
        44
    KasuganoSoras  
       2018-12-23 14:52:17 +08:00
    @xuanwu PHP 你想改中文,除非自己把 PHP 内置的各种函数自己重新实现一遍,要么就改解释器源码
    前者的工作量可以累死你,后者虽然简单,但是如果别人不用你的解释器,那么他们就无法使用中文编写出来的代码。
    所以是不现实的,因为你不可能要所有人把代码都改为中文。除非你真有那闲心把几百上千个 PHP 内置函数全部自己实现一遍。
    还有个问题,写成中文以后,编辑器的高亮就没了,白花花的一片看着不头皮发麻?
    KasuganoSoras
        45
    KasuganoSoras  
       2018-12-23 14:56:40 +08:00
    PHP 中文我也不是没试过,甚至连 Emoji 都支持,但是仅限于自己的变量、类和方法,你想改内置函数几乎不可能,PHP 也没有原生支持覆盖函数的功能,有也需要手动开启 Zend Debug,并不是所有人都会开启这个功能。
    https://www.v2ex.com/t/516858
    xuanwu
        46
    xuanwu  
    OP
       2018-12-23 15:11:32 +08:00
    @KasuganoSoras 个人觉得自定义的标识符是业务语义最富集的部分, 也是代码可读性提高效果最明显的部分.
    组内现在有位在尝试汉化 TypeScript 3 关键词+核心库(通过改编译器源码). 工作量确实很大, 但他之前已经在 TS 2 下实现了.
    KeepCoding
        47
    KeepCoding  
       2018-12-23 15:12:20 +08:00 via iPhone
    典型的以为自己能搞出什么大事,妄想着做奠基人
    xuanwu
        48
    xuanwu  
    OP
       2018-12-23 15:31:52 +08:00
    @KeepCoding 我不可能成为奠基人, 因为早在十几年前就有在 Java 进行中文命名的开发者实践, 还有那个广为传播的 6 年前用中文命名进行 C#开发的公司. 更不用说, 易语言早已成为中文编程的标杆, 短期内也没有看到能够超越它的中文编程语言项目.
    KasuganoSoras
        49
    KasuganoSoras  
       2018-12-23 15:34:59 +08:00
    @xuanwu 你见过多少用易语言写出来的大项目
    反正我是没见过,顶多就一些外挂辅助什么的用易语言写的比较多
    shyangs
        50
    shyangs  
       2018-12-23 15:50:34 +08:00
    易语言门槛这么低, Rust 门槛这么高, 但 LZ 有生之年就会看到: 门槛高的 Rust 会成功, 易语言会继续边缘凉凉
    cyspy
        51
    cyspy  
       2018-12-23 15:51:13 +08:00
    @xuanwu 用词是小事,歧义也先不谈,这玩意换成汉字的话,你真的不考虑一下程序员的视力卫生?
    ljpCN
        52
    ljpCN  
       2018-12-23 15:58:43 +08:00 via Android
    求楼主出一套完整的,中文编程最佳实践,比如就用 Python
    krixaar
        53
    krixaar  
       2018-12-23 16:13:45 +08:00
    @ljpCN 问过了,大致意思是,“我知道有 zhpy/zhpy3 这个东西,但是我没时间,如果你有时间做,欢迎和我讨论”
    leeg810312
        54
    leeg810312  
       2018-12-23 16:26:13 +08:00 via Android
    有开拓精神是好事,不过打破行业格局的行动,不可能靠这样传销般的宣传来推动。易语言是中文编程的典型,不过哪个公司用了易语言做了产品销量很好,还是做了什么热门的互联网服务,那么多年发展都没有达到工业级水准。打破格局的事必须为行业带来实际的好处,中文编程不仅是保留字、变量名、API 用中文这么简单,想要布道请做点有成效的行动
    JCZ2MkKb5S8ZX9pq
        55
    JCZ2MkKb5S8ZX9pq  
       2018-12-23 16:47:21 +08:00
    @krixaar 就是民科,概念屌得一逼,你叫他出东西他跟你谈理念。
    [为什么民科很少拿计算机科学开涮? - 知乎]( https://www.zhihu.com/question/66951195)
    xuanwu
        56
    xuanwu  
    OP
       2018-12-23 16:57:05 +08:00
    @ljpCN 中文命名的实践在中文编程知乎专栏有不少. 最近有几位其他作者编写的实用工具教程, 用的 Python.

    @JCZ2MkKb5S8ZX9pq 呵呵, 这个帖子根本不是我的"概念". 你如果看过顶楼的内容, 应该知道这是 Python 社区(十一年前)的经验总结.

    @shyangs 易语言的未来我不清楚, 但它的历史地位就在那里.
    krixaar
        57
    krixaar  
       2018-12-23 17:09:55 +08:00
    @JCZ2MkKb5S8ZX9pq 民科好歹还有“科”,这种级别是宗教……我们就是一群“让你们的神出来跟我说句话我就信”的那种异教徒而已。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1835 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 16:28 · PVG 00:28 · LAX 09:28 · JFK 12:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.