はじめに
ナイトレイに入社する前はほとんど英語でしかプログラミングの情報収集をしてきませんでした。今は日本語でプログラミングの勉強を続けており、プログラミング言語ではなく自然言語において予期しなかったトラブルに遭いました。
糖衣構文について
この間、会社の人とランチに行った時に、プログラミングすることにおいて英語と日本語の違いについてお話ししました。ある言葉は直訳として使われていて、ある言葉は英語のカタカナとして使われているのはなぜか、という話をしている時に「糖衣構文」という言葉が出てきました。
糖衣構文は、複雑な構文を読み書きやすくするためにプログラミング言語に導入されるものです。簡単な例を挙げますと、Python言語では「Method Chaining」(メソッドチェーン)という機能があります。
# メソッドチェーン無し
person.set_name("Alex")
person.set_age("29")
person.set_interest("Programming")
# メソッドチェーン有り
person.set_name("Alex").set_age("29").set_interest("Programming")
「Variable」が「変数」と、「Function」が「関数」と訳されるため、「Syntactic Sugar」が「糖衣構文」に直訳されることはおかしくないですね。
しかし、会社の人とこの話をしたところ、「糖衣構文」が前述の「変数」と「関数」と同じようにピンとこないらしくて、私はそれを少し不思議に思いました。私からしたら、「変数」と「糖衣構文」は同じぐらい複雑な言葉で、どっちかというと「糖衣構文」の方がピンと来ます。
でも、会社の人の理由を聞いたら、『「糖衣」という言葉だと聞いたことが無いため、「甘い」のイメージよりも先に「糖の衣とは?」みたいになってしまい「甘い」イメージとは結びつきづらくて、「簡単」「楽」な印象をあまり受けません。』とのことでした。
それを聞いて納得しました!糖衣構文の表す意味は砂糖のように甘くて「楽」なのに、「糖衣構文」という言葉自体は全く「楽」じゃありません!
問題例1:パス事件
パスという言葉を初めて耳にした時は直感的に「Pass」という意味で捉えました。それで5分間ぐらい混乱していたら、最終的にパスの表している意味が「Path」だと分かった瞬間、自分の頭が大丈夫かなと思いました。
開発用語では「Path」がウェブサイトのURLや、ファイルの場所を表します。その反面、「Pass」は「Pass an argument」という文脈で使われることが多いです。要するに、「関数に引数を渡す」の「渡す」に当たります。英語だと「Pass an argument to a function (method)」になります。
こういうふうに、英語の言葉がカタカナになると使い分けが難しくなることもあると個人的に感じます。慣れるしかないですね!
問題例2:どっちを使う?
日本語でプログラミングについて話す時は、日本語の直訳を使うか、元々英語のカタカナ化された言葉を使うかとなると、困ることになります。
「Return」という単語は日本語でそのまま「リターン」として使われていることもあれば、「Return」により返ってくる値を「返り値」と「戻り値」と言うこともあるよう。カタカナを使う時と日本語を使う時、しかも日本語の時は二つの言葉もあり、たまにconfusedになりがちです!ある意味、日本語でプログラミングについて話す時は英語と比較したら、よりカラフルに表現できるのではないかと思います(もし日本語と英語の使い分けが出来るようになりましたら…)。
逆に、英語の略語は覚えにくい?
上記は全て私の個人的の経験と考えを元にした話です。しかし、プログラミング言語のシンタックスは英語がベースとなっているので、日本語が母国語のエンジニアの同僚の視点を考えてみると、尊敬しかありません。
「char(character)」とか「env(environment)」など、プログラミング言語で英語の単語が略語として使われていることは少なくはないです。このGitHubページをご覧いただくとプログラミングの略語が非常に多く、英語話者からしても難しいです。
最後に
なるほど、一人で苦労しているわけではないようですね。私は日本語を覚えながらプログラミングも勉強していますが、同僚もプログラミング言語の英単語の学習や英語のドキュメントに取り組んでいるので、もっと頑張ろうと思いました!