首次发现在例程中使用日语命名的编程书籍: https://zhuanlan.zhihu.com/p/47127716
1 RqPS6rhmP3Nyn3Tm 2018-10-19 06:47:46 +08:00 via iPad 苹果的官方 swift 入门教程还有用 emoji 的 |
![]() | 3 loading 2018-10-19 06:57:32 +08:00 via Android go 语言,你好世界。 |
![]() | 4 loading 2018-10-19 06:59:26 +08:00 via Android ![]() 如果是变量用了中文,估计会被骂死,这就是大家的观点,所以一直没出现中文的。 别国出现了,就是,牛逼牛逼。 |
![]() | 5 maemolee 2018-10-19 07:45:09 +08:00 ![]() 很期待中文的出现,这样子对非专业程序员的人来说要舒服很多。 |
![]() | 7 1KN6sAqR0a57no6s 2018-10-19 07:56:01 +08:00 via Android go 的官方 guide 里面有中文 hello world |
![]() | 8 xxx749 2018-10-19 07:58:47 +08:00 via Android ![]() 那以后团队开发是不是还得懂八国语言 |
![]() | 9 xuanwu OP @YuxiangLuo fmt.Println("Hello, 世界") 只是文本常量吧. 这里重点是变量 /方法 /类命名. |
![]() | 10 xuanwu OP @maemolee 感觉同样重要的是在少儿教育中将编程和核心学科(英文以外的)结合起来. 这必须依靠母语命名, 而日本官方明显已经认识到了这点. |
11 xy90321 2018-10-19 08:03:27 +08:00 via iPhone ![]() 日本一贯就是这样的,所以与其用日本人自己都可能看不懂的罗马字来命名,还不如一步到位直接用日语假名或者汉字(如果语言支持的话)。 至于英语命名,日本人虽然也有英语好的,但是我接触下来大部分 IT 业相馆的人那个英语那叫一个可怕… 甚至线上跑的 prd 版系统,其中的英语 error message 都布满了我国小学生都写不出的英语语法错误或者拼写错误。 |
![]() | 12 murmur 2018-10-19 08:05:08 +08:00 ![]() 支持 utf-8 想怎么玩就怎么玩 成熟了中文变量名中文函数名反倒挺好 起名真的是个头疼的问题 |
13 rocksolid 2018-10-19 08:15:40 +08:00 &nbp; ![]() 不喜欢输入法切来切去,要么全母语,要么全英文 |
14 VDimos 2018-10-19 08:20:37 +08:00 via Android 这个看个人习惯吧 |
![]() | 15 liuxey 2018-10-19 08:21:43 +08:00 要是内建函数和关键字也能中文或者日文了才好,这样切输入法切真英雄也。 |
![]() | 16 7654 2018-10-19 08:31:23 +08:00 ![]() 会被很多人认为不够高大上,强力鄙视,会被喷死的 自己一直用的英文,并一直拥有优越感 突然有一天中文也可以码代码了,会很不平衡的 |
![]() | 17 AV1 2018-10-19 08:34:16 +08:00 就变量名母语而已,API、关键字还是英文字母;而国内某些人,是想着把整个编程语言都汉化,连一个字母都不容许出现的,还自夸中文编程省空间、歧义少,骗外行人。 |
19 annielong 2018-10-19 08:40:18 +08:00 切输入法确实麻烦,而且有些文字真心不好翻译,支持拼音加注释 |
20 BarZu 2018-10-19 08:41:31 +08:00 ![]() 我大中华易语言全程中文都没骄傲过,小日本这点技量还好意思拿出来晒 |
![]() | 21 ctro15547 2018-10-19 08:43:29 +08:00 易语言了解一下? |
![]() | 22 Jbadorange 2018-10-19 08:45:45 +08:00 via iPhone 编写书籍还可以,标识符使用中文可以方便读者理解其作用。但自己真要这么这代码,切换输入法就能把人烦死。 |
![]() | 24 passerbytiny 2018-10-19 08:53:23 +08:00 用母语命名不是不能,而是切换输入法太麻烦。另外,严格意义上说,以前也不是用英语命名的,而是基于英语、多数人任何的专用语言。比如,SomeObject,只会英语的人是不认识的。 |
![]() | 25 x86 2018-10-19 08:56:38 +08:00 ![]() |
26 noaccounthere 2018-10-19 08:57:34 +08:00 羡慕英语为母语的国家的人, 写代码都不用切输入法,舒服 ![]() |
27 o0 2018-10-19 08:57:40 +08:00 via iPhone 要是用拼音也不错,比各种奇葩翻译出来的英文变量更容易辨认。 |
28 xxgirl2 2018-10-19 09:03:05 +08:00 好懂能用就行。有一次引用某个 C#类全是中文名,改个接口名就行了,人家代码整洁功能一目了然一点也不耽误事。 |
![]() | 29 xuanwu OP |
31 lilydjwg 2018-10-19 09:41:34 +08:00 via Android 我以前尝试过中文名称,后来发现不方便交流就放弃了。 |
![]() | 32 jydeng 2018-10-19 10:04:18 +08:00 切换输入法太累,这个不考虑嘛 |
![]() | 33 xuanwu OP @ctro15547 @BarZu 日语语法的编程语言也有不少. 之前粗浅分析过的"抚子"语言: https://zhuanlan.zhihu.com/p/30800689 还有 Mind: https://www.scripts-lab.co.jp/mind/whatsmind.html |
![]() | 34 xuanwu OP @rocksolid @liuxey @annielong @Jbadorange @passerbytiny @noaccounthere @jydeng 日本同行解决输入法相关问题的姿势: ロマ字入力の日本子入力完プラグインの http://jssst.or.jp/files/user/taikai/2017/FOSE/fose3-1.pdf 开发了辅助插件以改进 IDE 对输入日语命名的支持. |
![]() | 35 misaka19000 2018-10-19 10:31:04 +08:00 ![]() 少见多怪,我 n 年前参与过一个日本的后端项目的开发,里面的 Java 变量都是用的假名来命名的 |
![]() | 36 oyhw92 2018-10-19 10:39:45 +08:00 let while function 这些关键字还是英文的。个人觉得切换输入法太麻烦 楼主可以开发一个 bable 插件 转换这些关键字和 中文符号 ;《( [ |
![]() | 37 no1xsyzy 2018-10-19 10:42:08 +08:00 @xuanwu #33 说起来,日语这语法本身谓语是后缀的,解释器处理起来应该方便得多,基本上核心只要一个堆栈。 话说自然语言有前缀语言吗?有自带语法树的语言吗? |
38 si 2018-10-19 10:55:04 +08:00 易语言用中文都被喷死了,谁还敢写中文 /doge |
![]() | 39 xuanwu OP @no1xsyzy 中文语法的编程语言的可行性可以另外探讨(各种带空格不带空格的实验性语言都见过). 关键是现在>90%的商用软件都是英文语法的编程语言实现的, 而且新手入门首选的也是成熟主流的编程语言. 那么在这些商用项目和入门教程中使用母语命名无疑有巨大的短期效益. 长期来说也会加速母语语法的编程语言的实用化. |
![]() | 40 blless 2018-10-19 11:08:16 +08:00 via Android 看情况吧主要是中文代码不知道用什么 ide 或者记事本打开可能就全乱码了,我们全 utf8 项目有次用 git 代码合并,注释全??? 了 |
41 3d3ec7a 2018-10-19 11:09:45 +08:00 告诉你们珍藏的技巧: 非英语名前面加个英语前缀(1~2 字符), 之后不用切换输入法, 敲前缀+代码补全就行. |
![]() | 42 xuanwu OP @oyhw92 最近在做的是针对阅读英文源代码的辅助工具 翻译源代码的在线翻译服务: t/484895#reply20 Chrome 插件实现 GitHub 代码翻译 v0.0.3: https://zhuanlan.zhihu.com/p/47071729 目的之一就是展示中文代码可读性. |
![]() | 43 xuanwu OP @misaka19000 请问有没有公开的日语命名的规范 /风格文档? 感觉他们会非常注意规范, 如果在公司范围实施的话. |
![]() | 45 Narwhal 2018-10-19 11:29:33 +08:00 霓虹金直接写罗马音就可以了吧 |
![]() | 47 datou 2018-10-19 11:46:21 +08:00 切换输入法太麻烦了 |
![]() | 48 xuanwu OP @datou 见楼上: t/498973#r_6321505 事在人为. |
![]() | 49 trait 2018-10-19 11:51:55 +08:00 支持 non-ascii 已经是现代语言的常规操作了,Rust 的相关 RFC 已经快要合并了 |
![]() | 51 JCZ2MkKb5S8ZX9pq 2018-10-19 12:31:36 +08:00 切换输入法和等宽对齐就能烦死。中文也就写写注释,偶尔拿来做字典的 key。 |
![]() | 52 zsdroid 2018-10-19 12:50:45 +08:00 然并卵 [ ![]() ![]() |
![]() | 53 passerbytiny 2018-10-19 12:59:41 +08:00 @xuanwu #34 大佬,你这全是日文,没翻译 |
![]() | 54 xuanwu OP @JCZ2MkKb5S8ZX9pq "等宽对齐"? 用的什么 IDE 会有这个问题? 个人在 VS code 下写 Python/Javascript, 在 Eclipse 下写 Java, 从没碰到因为中文命名导致的对齐问题. 再说一遍, IDE/输入法总是可以改进的, 参考日本同行的思路 #34 @passerbytiny 摘要是英文. 顶楼的日文网页我就是靠在线翻译啃下来的. 要是有兴趣开发 IDE 辅助插件的话欢迎到组里讨论(详见个人简介) |
![]() | 55 xuanwu OP @zsdroid 点在哪? "中文编程"gh 讨论组首页有链接, 出于验证 /演示目的, 在二十多种编程语言中用中文命名编写示例代码. 让人慨叹在商业编程语言支持 Unicode 命名十数年后, 中文命名至今仍处于边缘的现实. |
![]() | 56 likuku 2018-10-19 13:19:55 +08:00 ![]() 代码即文档吧,另外,听说前端用的 JS 里,不便写很多注释的。 |
![]() | 57 datou 2018-10-19 13:28:52 +08:00 @xuanwu 中文拼音输入法比日文罗马字输入法复杂的多,我不认为在日文的罗马字替换能够比较好的运行在中文的拼音替换上 毕竟汉语拼音是三十九个音(不算声调)匹配几万个汉字 日语是五十个音匹配五十个平假名,五十个片假名外加两千多个当用汉字 |
![]() | 58 niubee1 2018-10-19 13:28:57 +08:00 中国写这种书不赚钱, 按照 5%的版税收入算, 一本能挣个一万吧两万差不多了, 但是你出一本书写个几个月, 有这美国时间随便接个什么外快就挣得比这多了. 再说水平够不够又是另一回事, 差点火候写出来又要被人骂, 最可恨的是有人根本没买书, 看了网上下的不要钱的电子版也跑来骂. |
![]() | 59 xuanwu OP @datou 中国大陆:现代汉语常用字表常用字部分:2,500 字 通过那篇论文可以看到的是, IDE 和输入法都可以为了母语命名而改进. 这是无论日文中文都适用的. |
![]() | 60 passerbytiny 2018-10-19 13:47:53 +08:00 @xuanwu #54 Eclipse 下中文不但有对齐问题,还有显示问题。不过 Consolas 字体时,如果行开始处有英文字母( 4.9 版本之前有半角符号也行),则看不出来有问题。4.9 版本半角符号不管用了,导致我注释没法看了,切换成了微软雅黑字体,结果就是一个中文占两个英文的显示宽度。如果是代码中的中文,肯定是先写英文关键字后写中文变量名的,所以你可能看不出来问题。 英文靠谷歌翻译看下来了,日文就懒得看了。我对 IDE 辅助插件不看好,至少中文方面不看好,因为要想编码时英文关键字跟中文命名无缝结合,语法、IDE 这里都不是问题,中文输入法和命名规范才是大问题。另外就算解决了前面所有的问题,国际化又成了问题了。 |
![]() | 61 passerbytiny 2018-10-19 13:51:25 +08:00 以前小范围接触过对日开发,最大的感受就是,日本的开发环境,是真心封闭。中美欧的开发环境就算不同也是有一定相通性的,日本完全就是个独立开发环境。 |
![]() | 62 msg7086 2018-10-19 14:04:39 +08:00 以前易语言玩烂了的敲拼音首字母自动匹配汉字功能现在被日本人抄去了?(手动狗头 |
![]() | 63 xuanwu OP @passerbytiny 命名规范一直在探讨: https://github.com/program-in-chinese/overview/issues/45 国际化 -- 个人认为传统行业大多数项目都不存在这个问题, 即使要开放某些 API 给国外用户, 也只要在需要时封装已有中文接口即可. 无意强推所有情况都用中文命名, 只求具体项目具体分析. |
![]() | 65 xuanwu OP @niubee1 这本书也有很多反对声音. 刚看了 amazon jp 上有一些给一星的抱怨日语命名. 感觉这需要译者有足够信念才能实现. 而且关键出版社也要敢于吃螃蟹. 希望类似的中文书能在 3 年内出现吧. 译者背景蛮强的: 出生于长野县上田市。他在东京工业大学,科学技术研究生院,国际基督教大学,山梨大学研究生院,俄亥俄州立大学研究生院,卡内基梅隆大学机器翻译中心等完成博士课程。 作为 Merlin Arms Co.,Ltd。( http://www.marlin-arms.co.jp )的代表董事,他从事与计算机和自然科学,软件开发(翻译软件等),软件项目管理,在线翻译课程( http://www.dhc-online.com )相关的翻译和写作。和字典网站( http://www.dictjuggler.net ) |
![]() | 66 passerbytiny 2018-10-19 15:54:14 +08:00 @xuanwu #63 我看了一下,上面说的一些方法,思路基本都是这样的:通过“类 /接口 /方法”、“们”、“某”、英文特殊字符等前后缀来区分类型或单复数。非常不赞成这种思路,某、们这些前后缀本身就不是传统汉语的语法规则,而是从英语中借鉴过来的,英文特殊字符就更明显了,这全部是中英文混排的思想,相当令人反感。 我现在也想不到有什么好的方法来解决这些。我觉得从文言文的“之乎者也”来着手更有可能成功。现在的汉语语法真心不好用,我现在写注释,经常性感觉汉语不如英语说得明白。猜测这些语法是民国那一辈借鉴英语、日语生成的,所以简繁体估计都一样难用,是该考虑恢复文言文了。 国际化这个是必须要考虑的,要不然就算开源,也没法国际化的合作开发的。 |
![]() | 67 xuanwu OP "某、们这些前后缀本身就不是传统汉语的语法规则,而是从英语中借鉴过来的" -- 借鉴英语? "们"在英语里是啥? "经常性感觉汉语不如英语说得明白" -- 举个例子吧. 太难以想象了. "国际化这个是必须要考虑的,要不然就算开源,也没法国际化的合作开发的。" -- 有多少项目需要国外程序员共同开发的? 在可见的将来, 闭源项目还会远远多于开源项目. |
![]() | 68 xuanwu OP @passerbytiny #67 |
![]() | 69 Felldeadbird 2018-10-19 16:54:15 +08:00 切换输入法麻烦之外,主要是中文的符号 不是英式啊!有时候我输入法强制切换为 英式,某种情况他会自动回滚中式。好气 |
![]() | 70 wolfie 2018-10-19 16:56:24 +08:00 |
![]() | 71 chainchan 2018-10-19 16:59:00 +08:00 主要还是因为日本人的英文不行啊 |
![]() | 72 JCZ2MkKb5S8ZX9pq 2018-10-19 17:19:12 +08:00 支持 lz。lz 可以在自己公司实践几个月,摸索一套成熟的解决方案出来,造福大众。 |
![]() | 73 xuanwu OP @chainchan 第二语言水平很难达到母语. 无论日本还是中国. 更不用说总量来说, 英文是编程入门门槛的人数肯定是中国>日本. |
![]() | 74 passerbytiny 2018-10-19 17:28:58 +08:00 @xuanwu #67 我,我们 I,we (my, our) 你,你们 这个到都是 you 他 /她 /它,他们 he/she/it, they (his/her/its, their)。 你(的)、我(的)、他 /她 /它(的)这三个人称,以前肯定不是这样用的,举例:吾、在下、本人、鄙人、家父、君尔等、令尊令堂。第三人称好像少点,可能是因为不需要谦称,直接用名字而不用代词,但对“伊”这个字的印象还是比较深。 另外中文表示多个时,通常时放在前面(诸子、诸侯、诸夏、诸神、众人),而不是在后面放们。 上面只是个人观点,没有做过系统研究,可能说错了。 "经常性感觉汉语不如英语说得明白" 这个一时半会还举不出来例子,大多是发生在这样的场合:我先用中文写注释,翻译成英文的时候,发现注释写的不明确,要改一下,最后就发展成了直接写英文注释,再回翻成中文。 就算是闭源项目,也是要国际合作的。举个例子,腾讯哪天抽风,准备收购外国游戏开发公司,并且与国内游戏开发公司融合开发新游戏,这个时候要是发现编码语言一个中文、一个英文,就相当尴尬了。 |
![]() | 75 q397064399 2018-10-19 18:09:16 +08:00 编程 还是老老实实用英语,这种东西 国际惯例 |
![]() | 76 seki 2018-10-19 20:04:28 +08:00 我就好奇用中文当变量切换输入法不累吗,现在偶尔要在代码里输入一些中文字符串我都觉得好麻烦 |
![]() | 77 cpdyj0 2018-10-19 20:34:28 +08:00 切输入法是个麻烦事,另要是不需要考虑国际化的事,业务相关标识符用中文也未尝不可。 |
78 yst 2018-10-19 20:46:51 +08:00 我同意变量在特殊情况下可以使用中文,只要语言支持 Unicode 代码就没问题。但是编程语言本身变成中文的意义不大。因为程序语言和人类语言本身的语法是不相通的,最终的结果就是这行代码每个字都能看懂但是连起来就不知道什么意思了。所以在这方面做努力等于是在解决一个不存在的问题。我觉得还要等 NLP 发展成熟以后,才能真正能在中文编程上做出突破进展 |
![]() | 79 loading 2018-10-19 20:49:04 +08:00 via Android |
80 boris1993 2018-10-19 21:05:06 +08:00 via Android 中英文来回切不嫌烦? 我已经懒到回邮件,查 google 什么的能不切中文就不切,写代码要打两个字就切一下的话,我 TM 改行买烧饼去 |
![]() | 83 xuanwu OP @passerbytiny 如果要强调复数, 总有办法. 从实践中总结就是. "我先用中文写注释,翻译成英文的时候,发现注释写的不明确,要改一下" -- 这和写文章重读之后往往发现需要改进一个道理, 不觉得和中文英文有关. 如果觉得中文的表达性和准确性不如英文, 那是另一个话题. "举个例子,腾讯哪天抽风,准备收购外国游戏开发公司" -- 中国有 1 亿个公司, 有几个腾讯? 说到底, 大公司是相对更没有动力使用中文命名的. 本身招人就有优势, 更乐得看到初创公司被难以接手 /维护和大规模开发的不可读代码束缚住. |
![]() | 84 xuanwu OP @boris1993 程序员>卖烧饼的?? 说正题. 真正"写"代码的时间在整个软件开发过程中占的比例会越来越小, 这是确定的趋势, 否则这么多轮子就白造了. 中文命名普及之后, 程序员行业门槛更低是事实, 不过整体的对外竞争力会更高, 自研框架 /底层系统的能力会更强, 说的大一点就是造福下一代. |
85 boris1993 2018-10-20 01:56:54 +08:00 via Android @xuanwu #84 并没有将两个行业做对比,请不要想太多 我只是说,如果真的必须要我写两个字就得换一下输入法,那我干脆不干了 |
![]() | 86 xuanwu OP @boris1993 说笑而已 说起来在业余项目里写了这么些中文命名的代码, 已经不大觉得什么额外负担了. 输入法调成中文输入时使用英文标点, 然后 shift 切换(这个感觉和大写英文老要用的 Shift 没区别, 而且还不是组合键), 有时也直接回车输入英文. 之前在把 Python 官方入门教程里的例程进行命名中文化时录了一些演示: https://zhuanlan.zhihu.com/p/38324987 献丑了. |
87 xylophone21 2018-10-20 11:53:24 +08:00 为什么日文出现了就要出现中文的? |
![]() | 88 xuanwu OP @xylophone21 因为中文是母语的人数是日文是母语人数的十倍 |
![]() | 89 chuxiwen 2018-10-20 12:40:47 +08:00 via iPad 语言语法要是能兼容中文(全角)标点就完美了,这个可能是推广的最大阻力 |
![]() | 90 xuanwu OP @chuxiwen 请明示? 现在输入法多数支持中文输入时使用英文字符吧(个人用的搜狗), 虽然不是最理想的, 但好像也没有什么大问题? |
92 icris 2018-10-20 23:46:59 +08:00 ![]() @passerbytiny #74 诸国众神是古话,我等尔曹我辈(わがはい)不也是古话,凭什么放前面就正统,放后面的都忽略?就算之前放前面现在放后面,也没看出跟英语有什么关系,你举这些例子没一个往后面加东西变复数的。 |