V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Actrace
V2EX  ›  程序员

chnstyle, PHP 中文语义化计划。深坑。

  •  3
     
  •   Actrace · 2015-01-05 09:48:13 +08:00 · 4659 次点击
    这是一个创建于 3645 天前的主题,其中的信息可能已经有所发展或是发生改变。
    昨天脑洞大开。。。
    chnstyle是一个专注将PHP原生函数进行中文语义化重写的一个计划。
    对于大部分生活在中文环境的入门编程者来说,纯英文代码对于程序理解是一个很大的障碍
    我们认为编写程序是针对问题寻找机械化的解决方案,因此对于程序员来说,编程语言只是一种工具
    即使是PHP这种足够简单的编程语言,仍然需要进行优化,以适应初学者

    https://github.com/actrace/chnstyle
    第 1 条附言  ·  2015-01-05 13:33:09 +08:00
    楼下很多同学其实都误解了这个计划的目的。

    本计划旨在让使用PHP进行编程的初学者能够深入理解编程,而不是为了学习如何使用这门编程语言。
    大部分内容都中文语义化后,实际上能够很好的加速对代码的解读。
    也就是说,至少是站在对代码解读重要性的认识上,你才有继续下去的基础。
    至少把README看完吧?
    60 条回复    2016-12-24 15:44:23 +08:00
    holystrike
        1
    holystrike  
       2015-01-05 09:53:23 +08:00
    你这岂止是深坑,完全就是火坑

    烧死人不偿命啊
    drush
        2
    drush  
       2015-01-05 10:02:43 +08:00
    爲何不直接用 易語言?
    Actrace
        3
    Actrace  
    OP
       2015-01-05 10:03:48 +08:00
    @drush 是为了教PHP。。。
    haiyang416
        4
    haiyang416  
       2015-01-05 10:05:12 +08:00 via Android
    毁人不倦。
    miyuki
        5
    miyuki  
       2015-01-05 10:08:51 +08:00 via Android
    倒不如让初学者提高英文水平
    mahone3297
        6
    mahone3297  
       2015-01-05 10:11:42 +08:00
    什么意思?就是易语言的意思?
    xz
        7
    xz  
       2015-01-05 10:15:28 +08:00 via Android
    不如直接去学易语言得了
    abelyao
        8
    abelyao  
       2015-01-05 10:15:44 +08:00
    楼主别这样…
    翻译这件事,翻译得好,初学者容易理解,但如果翻译得稍微有歧义,影响可能就很大了。
    私以为、PHP 的英文单词也不复杂,如果想学的,那些 function 不会成为障碍,何况还有 IDE 强大的代码提示功能。
    Kilerd
        9
    Kilerd  
       2015-01-05 10:22:54 +08:00 via Android
    没意义,你这相当于写一个IDE,基于中文编程的php。

    没多大用处吧。
    Actrace
        10
    Actrace  
    OP
       2015-01-05 10:24:14 +08:00
    @abelyao 其实任何东西想学都不难。不过我只是想把学习天梯缩短。实际上大多数PHPer水平真的很烂,不是他们无法写代码,而是他们不知道其原理。“开源”的特性造成了大部分的PHPer习惯于复制粘贴而忽略实现的过程,对于进阶来说是一个很大的阻碍。
    我希望能够通过这样一个计划,在入门的时候就让初学者明确进阶方向,避免误入死胡同。
    BigUncle
        11
    BigUncle  
       2015-01-05 10:24:55 +08:00
    我看成中文划词了。。。
    anewg
        12
    anewg  
       2015-01-05 10:25:08 +08:00
    1k多函数,慢慢磨是能磨完的。注释就ok了,函数名和参数就不要中文了吧。。。
    Actrace
        13
    Actrace  
    OP
       2015-01-05 10:27:00 +08:00
    @Kilerd
    @mahone3297

    中文语义化,不等于中文编程。
    abelyao
        14
    abelyao  
       2015-01-05 10:35:11 +08:00
    @Actrace 我去看了一下你这个 GitHub,感觉还不如提供函数名中文词典。
    另外到现在学了这么多语言,从没觉得把函数名换成中文的就能缩短学习的天梯了,你再怎么扩展中文版的函数,你也避免不了 public, private, array, string, int, function, var 等等这些单词。
    最后补充一句,如果学一门语言,函数名都要靠背来记住的,那真的不适合学了。
    wwek
        15
    wwek  
       2015-01-05 10:35:19 +08:00
    佩服 楼主的勇气. 也佩服你的工作!
    加油
    nbndco
        16
    nbndco  
       2015-01-05 10:35:29 +08:00
    这个很简单的啊,写一个函数名的映射就好了,不就是翻译几个名字么。
    像你现在这个还有return,根本就不彻底,直接写个预处理用替换功能搜索替换一下就可以做到全中文了。
    haiyang416
        17
    haiyang416  
       2015-01-05 10:37:33 +08:00   ❤️ 1
    @Actrace 请不要做可能将初学者引入歧途的东西。中文函数并不能让他们明白其原理,既然你说任何东西想学都不难,你应该引导他们学习英语,学习比 PHP 更底层的 C 语言,学习信息技术理论。

    如果一个初学者一开始就“被人教育”写中文函数这类只能自己看懂,不可交流,不可复用打代码,实在是太可悲了。
    coolicer
        18
    coolicer  
       2015-01-05 10:37:55 +08:00
    还不如写一段中文的注释在旁边
    invite
        19
    invite  
       2015-01-05 10:40:41 +08:00
    这个跟中文域名一样,脱裤子放屁。



    要改就彻底一点:

    <?php ---> PHP文件

    /** **/ --> 注释开始 注释结束

    @return --> 返回值

    function --> 函数

    $字符串 -> ¥字符串
    icedx
        20
    icedx  
       2015-01-05 11:13:01 +08:00 via Android
    调试输出 '神奇的易语言'
    luoyou1014
        21
    luoyou1014  
       2015-01-05 11:15:43 +08:00
    支持楼主,话说我也想参与下。
    robertlyc
        22
    robertlyc  
       2015-01-05 11:16:22 +08:00
    意义不明
    atan
        23
    atan  
       2015-01-05 11:18:26 +08:00
    函数 字符串长度 小括弧开 变量字符串 小括弧关...
    robertlyc
        24
    robertlyc  
       2015-01-05 11:21:47 +08:00
    中文二义性更多 if 是翻译成"如果" 还是"假设" 还是"若"
    x86
        25
    x86  
       2015-01-05 11:22:19 +08:00
    话说我在贴吧里看过有用中文写PHP的...
    feiyuanqiu
        26
    feiyuanqiu  
       2015-01-05 11:30:46 +08:00
    没看出有什么意义
    lvfujun
        28
    lvfujun  
       2015-01-05 11:53:43 +08:00
    楼你把所有函数实现思想写个文档我感觉就挺好.
    hfcorriez
        29
    hfcorriez  
       2015-01-05 11:54:34 +08:00
    从项目本身存在的价值来说,基本没有意义。因为编程本身已经处于一个时代的环境中,被环境所认知了,如果你让非常新的新手去学习一个中文编程。首先他还是要学习这些函数,这个门槛还是在;其次他没法通过大环境了解到他怎么去学习(因为搜不到,StackOverflow 和 SF 都没有);最后如果你无法维护的很好,那就真带人进沟了。

    但是如果做为个人项目去尝试做语法的解析和模式替换之类,对自己的学习是很有帮助的,建议自己做但不要到处拉人来用。别害了人家!
    RemRain
        30
    RemRain  
       2015-01-05 12:13:05 +08:00   ❤️ 1
    作为一个中文项目,项目名和 LICENSE 居然不是中文,差评
    RemRain
        31
    RemRain  
       2015-01-05 12:15:46 +08:00
    文件名也是英文的,再差评,强烈建议汉化以下文件名:
    index.php -> 索引。拍黄片
    README.md -> 读我。妈蛋
    BGLL
        32
    BGLL  
       2015-01-05 12:20:11 +08:00   ❤️ 1
    在这里发这个绝对会被喷,楼主应该去中文编程的论坛去发,易语言、快手什么的
    我觉得还是有意义的,如果像易语言一样有个适用于中文的IDE的话。

    楼上那些说中文编程没意义的肯定没用过或者只是试玩过一下的,我用过快手和易语言,并用易语言开发过几个完整的软件,输入速度不慢于英文甚至快于输入英文(以C++、Python、C#为参照),因为只要输入首字母后面的能自动补全,相比英文的中文单词很难超过5个字,而输入一般只要输入2、3个字后面就能补全了,比如getText()要补全至少得输入gett 而 取文本()只用qw。这对初学者易用太多了,要记忆的东西少多了。

    对初学者中文上手都肯定是好于英文的,这还用怀疑?虽然关键字很好记,但是各种函数名初学者一眼看的懂?
    不过我觉得如果只是把单词映射翻译一下,不能减少很多学习php的难度,倒不如把各个函数的使用方法翻译了,然后做一个快速查询工具,比如光标移动到函数名上显示函数的用法之类的......
    yegle
        33
    yegle  
       2015-01-05 12:23:51 +08:00
    初学编程遇到的第一个难点不是用英文写代码,而是理解概念。这种项目明显就是假设使用者已经理解部分编程基础。

    比如说我摘抄一下:

    /**
    * (PHP 4, PHP 5)
    * 获取字符串长度
    * @param string $字符串
    * @return int 返回目标字符串长度
    */

    请问什么叫字符串?int是什么?string是什么?

    /**
    * (PHP 4, PHP 5)
    * 使用一个字符串分隔符分割另一个字符串,得到一个数组.
    * @param string $分隔符 用于在 $字符串 中进行切割数组的字符串.
    * @param string $字符串 此变量将会被分隔符切割成数组
    * @param int $最大数组单元 此项为可选项,当传入了此变量时,所返回的最大数组单元数将不超过设置值.如果值是0,则会当做1.如果值是负数,则返回除了倒数设置值个元素外的所有元素。
    * @return array 返回一个数组
    */

    请问什么是数组?

    function 字符串长度($字符串){
    return strlen($字符串);
    }

    什么是function?什么是return?
    sujin190
        34
    sujin190  
       2015-01-05 12:37:51 +08:00
    @yegle +1
    BGLL
        35
    BGLL  
       2015-01-05 12:39:18 +08:00
    @yegle
    初学者看
    数组 -- array
    和你看
    array -- tableau(法语数组)
    的难度一样
    用英文不仅要学 array 的含义还要记 array 的拼法,和你不久要学 tableau 的含义还要记 tableau 的拼法一样,莫菲直接用自己母语不更易学? 用母语望文生意的能力不更强?输
    初学者母语上手都肯定是好于英文的,这还用怀疑?
    m939594960
        36
    m939594960  
       2015-01-05 12:50:13 +08:00
    与其弄这个 都不如去弄个中文phpide 可以参考 e4p 本人也很想开发一个 。。 不过心有余而力不足!
    kisshere
        37
    kisshere  
       2015-01-05 12:57:25 +08:00 via Android
    PHP的die函数和exit函数就成这样了:
    if($用户名=="")
    {去屎吧("用户名不能为空");}

    if($用户名=="")
    {滚粗("用户名不能为空");}
    kookxiang
        38
    kookxiang  
       2015-01-05 13:13:21 +08:00
    本身PHP函数命名就够乱的了,楼主还要乱上加乱……
    你项目中的例子:
    字符串切割为数组 OR 字符串切割成数组 OR 字符串切割到数组
    你要玩死开发者么 = =
    Actrace
        39
    Actrace  
    OP
       2015-01-05 13:29:32 +08:00
    @luoyou1014 欢迎参与提交文件~
    kaneg
        40
    kaneg  
       2015-01-05 13:54:53 +08:00
    楼主,不是泼你冷水,这样做真的没必要,你要做的就如上面几位说的,最多做一些函数注释的中文翻译。这么多年了,编程语言以英文作为书写语言,就像数学用阿拉伯数字0-9,而不用中文的一,二,三是一样的道理。
    yegle
        41
    yegle  
       2015-01-05 15:04:15 +08:00 via Android
    @BGLL

    是,你可以告诉初学者数组是数组,但你告诉初学者return是返回,他就可以不在代码里打return这几个字符吗?最终还是要死记硬背R-E-T-U-R-N。
    BGLL
        42
    BGLL  
       2015-01-05 15:18:58 +08:00
    @yegle 为什么要打R-E-T-U-R-N,换成返回不就得了。全部换成中文不行吗?
    另外大部分非英语编程语言都是 相应语言关键字+英文关键字 可以混用的,只是楼主这个还没完善,不代表非英语编程没用
    yegle
        43
    yegle  
       2015-01-05 15:50:30 +08:00 via Android
    @BGLL
    你的意思是用了
    yegle
        44
    yegle  
       2015-01-05 15:52:18 +08:00 via Android
    @BGLL 你的意思是学完楼主的项目就自己开发一个中文语言自己用,不用看别人代码也不准备写了代码别人用?当然可以啊,欢迎中文编程爱好者自己组个小团体。
    bingu
        45
    bingu  
       2015-01-05 16:24:35 +08:00
    “ " "
    Actrace
        46
    Actrace  
    OP
       2015-01-05 16:37:30 +08:00
    @bingu 输入法可以设置的。。。符号这块不用单心。。
    BGLL
        47
    BGLL  
       2015-01-05 18:28:39 +08:00
    @yegle 楼主说了教编程用。
    这跟不用看别人代码也不准备写了代码别人用有任何关系?你的逻辑是什么?不是英文就不能用了?
    非英文的编程语言\开发工具多的去了:
    http://en.wikipedia.org/wiki/Non-English-based_programming_languages
    在教育、行业软件、非职业软件开发上母语编程有其易学的优势,国内看到中文编程就是讥讽真是Bigger than bigger。像是学了个C语言就鄙视学LOGO的了....
    Yien
        48
    Yien  
       2015-01-05 18:35:50 +08:00
    辛苦了,支持!
    tinyhill
        49
    tinyhill  
       2015-01-05 18:41:04 +08:00
    楼主有这心情,还不如回家多煎俩荷包蛋吃…
    finian
        50
    finian  
       2015-01-05 18:52:09 +08:00
    无意泼冷水,不过这种做法显然是治标不治本,吃力不讨好。
    shiny
        51
    shiny  
       2015-01-05 18:54:05 +08:00
    楼主还不如来帮忙翻译 PHP 手册
    picasso250
        52
    picasso250  
       2015-01-05 21:56:19 +08:00
    我喜欢这个项目,加入了。
    Actrace
        53
    Actrace  
    OP
       2015-01-05 22:19:12 +08:00
    @picasso250 欢迎入坑.
    msg7086
        54
    msg7086  
       2015-01-06 10:30:16 +08:00
    为什么要重新发明易语言呢?
    非英语编程势必要引入输入法。
    全程靠输入法势必会产生各种错别字之类的问题。
    所以势必需要一个IDE。
    这个IDE,易语言在15年前已经做过了,而且很成功,在VS2003出来之前根本找不到什么对手。
    楼主你真的想好完整地重新发明一遍这个轮子了吗?
    hxtheone
        55
    hxtheone  
       2015-01-06 11:21:32 +08:00
    看完README,仍然觉得没有特别大的意义,这样做还不如给PHP所有原生函数写一个中文的注释手册,说不定更有用
    zonyitoo
        56
    zonyitoo  
       2015-01-06 17:18:08 +08:00
    看了一下index.php,看来意思是想把函数名和参数名翻译一下?
    那不如楼主做个更好一点的中文手册。
    楼主面向的那些水平低到连手册都看不懂的PHP开发者,你怎么就能保证你用中文写了函数名之后,他们的水平就会提高了呢?
    2unc
        57
    2unc  
       2015-01-07 00:29:23 +08:00
    各行各业都是有门坎的,而要从事这个行业英语是绕不过去的,硬着头皮学才是真正的捷径,越往后拖越是绕远路。
    yegle
        58
    yegle  
       2015-01-07 08:29:27 +08:00
    忘了跟楼主说了,有个PHP函数叫rename_function
    http://php.net/manual/en/function.rename-function.php
    Actrace
        59
    Actrace  
    OP
       2015-01-07 14:08:29 +08:00
    @yegle 谢谢~
    一眼看上去似乎挺符合需求~不过有两个问题没法解决。
    1,APD扩展需要额外安装,而且似乎没有对应的DLL,这意味着无法在windows上使用。
    2,函数注释还是需要中文化的。
    mingyun
        60
    mingyun  
       2016-12-24 15:44:23 +08:00
    2 年过去了,楼主的项目果然烂尾了,只写了 116 行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2568 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 11:12 · PVG 19:12 · LAX 03:12 · JFK 06:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.