首次发现在例程中使用日语命名的编程书籍
初めてのJavaScript 第3版 -- ES2015以降の最新ウェブ開発. 示例代码:
class Person { constructor(name) { this.name = name; this.id = Person.nextId++; } } Person.nextId = 0; const 一郎 = new Person("一郎"), /* id 0 */ 次郎 = new Person("次郎"), /* id 1 */ 三郎 = new Person("三郎"), /* id 2 */ 四郎 = new Person("四郎"); /* id 3 */ const arr = [一郎, 次郎, 三郎, 四郎]; /* 1. IDを使って直接比較 */ console.log(arr.find(p => p.id === 三郎.id)); // Person { name: '三郎', id: 2 } /* 2. thisを利用。thisを定数「三郎」に指定 */ console.log(arr.find(function(p) {return p.id === this.id}, 三郎)); // Person { name: '三郎', id: 2 } /* アロー関数ではthisは「語彙的に(lexically)」に束縛される(6章参照) */ console.log(arr.find(p => p.id === this.id, 三郎)); // undefined
译者对采用日语命名的缘由在此阐述初めてのJavaScript 第3版 -- ES2015以降の最新ウェブ開発(2016年12月):
翻訳の過程で、一部の例を日本語の識別子(変数名や関数名など)を使って書いてみましたが、「日本語で関数名や変数名を考えるのはとても楽だなあ」と感じました。英語を仕事で毎日使っている私でもそうなのですから、普通の方ならなおさらでしょう。コメントと識別子の区別がつきにくいなど、慣れないと少し読みにくい印象はありますが、特に書く際の負担はだいぶ減るように感じます。また、たとえば単数形のbookで、値をひとつ記憶する変数、複数形のbooksで配列を表すといった手法が日本語では使えないなど、日本語独特の工夫が必要になる場面があるかもしれません(一部の例では「本」と「本_配列」のようにしてみましたが)。これからは、日本国内をターゲットにした開発では徐々に日本語識別子が使われることになるのでしょう。英語の本を読むよりも、日本語にていねいに翻訳された本を読むほうが理解がずっと早いのと同じです。
倚靠在线翻译, 大致意思如下, 如有出入请指教:
- 日语命名函数/变量对常人更易理解, 即使译者在日常工作中使用英语仍是如此
- 虽然使用日语命名导致注释和实际代码行有些难以区分(日文注释+英文代码会比较显眼), 但译者编写时更容易 <--这里不大确定含义
- 有时单复数难以在日语中表达, 此时还是沿用英文命名 -- 中文命名也有类似情况, 之前的探讨: 中文命名的特定问题, 相关风格及规范 · Issue #45 · program-in-chinese/overview, 在代码中进行中文命名(类/变量/方法等)的优势
- 最后提到(粗体部分): 对面向日本国内的软件开发, 将会逐渐普及使用日语命名. 阅读使用日语命名的编程书籍会比英文原版更容易理解. -- 听起来似乎是有某些日本的业内推动力量, 值得深入发掘一下.
补译者 武舎 広幸 Hiroyuki Takeba 简历(机翻):
出生于长野县上田市。他在东京工业大学,科学技术研究生院,国际基督教大学,山梨大学研究生院,俄亥俄州立大学研究生院,卡内基梅隆大学机器翻译中心等完成博士课程。
作为Merlin Arms Co.,Ltd。(http://www.marlin-arms.co.jp)的代表董事,他从事与计算机和自然科学,软件开发(翻译软件等),软件项目管理,在线翻译课程(http://www.dhc-online.com)相关的翻译和写作。和字典网站(http://www.dictjuggler.net)
另外, 看来日语命名在日本开发者中也是有阻力的, 日本語識別子(変数名や関数名)を好まれない方がいらっしゃるようですので
- "似乎有些人不喜欢日语标识符(变量名和函数名)"(在初めてのJavaScript 第3版 -- ES2015以降の最新ウェブ開発). 确实在Amazon上有一星抱怨日语命名的, 但感觉并没什么说服力.
无论如何, 日本编程书籍出版商在推广母语命名上先行一步了.
期待中文示例代码的编程书籍早日面世.
源讨论帖在: 索引: 用中文代码作示例的编程教程 · Issue #5 · program-in-chinese/overview
2018-11补:
译者发消息, 重印(第四次印刷)已经确定.
另外, 经告知之前有一本"我的第一本编程书"日文编程书的中译本中使用了中文命名的示例代码, 但因为偏算法, 个人感觉母语命名的优势不是特别明显.
2019-2-16补:
发现2003年的日文论坛提到, 2003年出版的"MYSQL徹底活用(翔泳社-初版)"一书中(貌似MySQL徹底活用―SQL言語+サーバアプリケーション+管理者編 データベースの本), 使用了日文命名的示例代码:
CREATE TABLE 社員 ( 社員番号 INT NOT NULL, 氏名 CHAR(20) NOT NULL, 性別 ENUM(`男`,`女`) NOT NULL, 部署コード INT NOT NULL, 入社年度 year NOT NULL, MAIL CHAR(40) NOT NULL, INDEX (社員番号), INDEX (氏名) );
2018-10-18
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
它山之石-日本推广编程中使用日语命名的渊源
续前文首次发现在例程中使用日语命名的编程书籍, 调研了一下日本对日语命名的以往研究和相关政策, 罗列如下, 望多多补充. 希望国内的编程教育(尤其是少儿教育)加以借鉴, 使用中文命名将编程与核心学科紧密结合起来. 2018年3月的小学校プログラミング教育の手引 (第一版) 小学编程教育指导中所有示例都是日语命名, 与其他学科进行了结合: 2018年11月7日更新的: 小学校プログラミング教育の手引 (第二版) 小学编程教育指导 2017年论文小学校におけるプログラミング 教育実践上 の 課題中列举了编程与其他学科的结合, 没有看到英文一项: 2017年的论文ローマ字入力時の日本語識別子入力補完プラグインの 開発开发了辅助插件以改进IDE对输入日语命名的支持. 摘要中提到(有道翻译): 近年来,软件开发项目的复杂性增加了维护软件所需的时间成本,重要的是为降低成本提高源代码的可读性。作为提高源代码的可读性的方法之一,有几个报告表明,用日语写源代码中的变量和函数的标识符名是有用的。 2017年的个人博客: 識別子に日本語を使うことについての考察 - Qiita, 看起来日本业界暂没有一个广泛...
- 下一篇
Chrome插件实现GitHub代码离线翻译v0.0.4
续前文Chrome插件实现GitHub代码翻译v0.0.3. 添加了对驼峰命名的支持. 由于调用浏览器插件-离线英汉词典进行词汇翻译, 因此也不依赖于任何在线翻译服务. Chrome插件: 官网链接 支持所有编程语言 因为并不需要对源代码进行语法分析(之前Java源码英翻中进展-内测上线中使用了语法分析, 工作量大很多), 因此原则上已经支持所有编程语言的源代码. 但对一些编程语言效果更好, 见下面效果. Java: 源码来源 Python: 源码来源 C: 源码来源 接下去添加C的关键词翻译后, include/char就不会那么坑了. 阶段小结 翻译方面做下去会遇到和自然语言机器翻译类似的问题. 当然会比自然语言好一些, 因为命名往往使用的是最正式(非口语化)的词汇, 连接词的使用也较少, 而且基本没有完整语句. 即便如此, 也会存在词汇的歧义, 比如词性问题, 比如顶图例子中BasicCalculator, Basic在內建词典中有名词/形容词几种词义: n. 基本原理, 要素, 基本规律 a. 基本的, 碱性的 (计算机)BASIC语言 现在的算法是直接用首个词义, 就是名词的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8编译安装MySQL8.0.19