84
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「『プログラミング=英語』という状況は正しくない。多言語でコードを書ける世界が求められている」という言語学者さんの記事に感銘をうけた話

Last updated at Posted at 2023-07-29

はじめに

本記事は「『プログラミング=英語』という状況は正しくない。多言語でコードを書ける世界が求められている」という言語学者さんの記事に感銘をうけたお話から、同じテーマについて考察し、「日本語トランスコンパイラ言語 Re:Mind(リマインド)」という自作トランスコンパイラ言語の企画意図を改めてまとめておきます。

参考リンク

「プログラミング=英語」という状況は正しくない。多言語でコードを書ける世界が求められている wired.jp GRETCHEN MCCULLOCH OPINION 2019.08.04

↑こちらが直接感銘を受けた記事です。記事の発信者は「インターネットは言葉をどう変えたか デジタル時代の〈言語〉地図」の著者 グレッチェン・マカロックという女性の言語学者さん。

BingのCoパイロットに記事を要約していただきました。

プログラミング言語は英語に依存すべきではない

プログラミング言語は、英語を話せない何十億という人々のために、母国語でコーディングできるようにするべきだ。
英語以外の言語で提供されているプログラミング言語は数十個あるが、広く普及しているものは4つしかない。
プログラミング言語の変換は容易にできるが、コミュニティの育成やリソースの提供が不十分だ。
書くテクノロジーがラテン語に束縛されなかったのと同じように、コードを書くテクノロジーも本来、英語に束縛されるものではない。

どこに感銘を受けたか

「プログラミング言語は語彙が限定的でしっかり定義されており、自然言語の自動機械翻訳が苦しむような多義性や文化的なニュアンスもない。100ほどのコマンドについて、何が何と対応しているのかわかれば、コードのどんな一節も自動的に翻訳することができる。」というお言葉。

ソフトウェア技術者や情報処理が専門の学者ではなく、あくまで言語学者なので多少の誤解はあるかもしれないが、形式言語としてのプログラミング言語の特徴はうまくとらえていると思う。ライブラリの語彙となるとまた数は違うとは思ったりもするけど。

納得したところ

「プログラミング言語には、理論上はどんな記号も使える。コンピューター上では人間が入力する『IF』も、1と0の組み合わせに変換されるのだ。IFを表すのにジャガイモの絵文字『?』が使われようと、15世紀のキリル文字のO(ꙮ)が使われようと、まったく同じように機能する。」というお言葉。まあ、これはいまのプログラミング言語が最終的にはマシン語に翻訳されることからの帰結ではありますが。ちなみにRe:Mindは「◇」です(笑)。

記事の結論

「書き言葉におけるラテン語の優位が終わったのと同様に、(ソフトウェア)コードを書くテクノロジーの英語の優位も終焉する可能性がある。」これは。あくまで私の意訳で、著者はそこまでは言っていないかもしれません。記事のタイトルにあるように、「多言語で書けるようにすべきだ。」という論調が妥当のよう。

この記事の結論の妥当性はいかに

英字は文字数も少なく文字コード化が容易という点では、コンピュータの文字処理とは相性がよかったのは否めず、今後も英語英字の優位性の終焉はなかなか起きない可能性が高い。と私は考えます。

マシン語に若干の英記号を付与したアセンブリ言語が事実上存続しているのと同様に、その直上くらいに位置する相対的低水準言語のC言語が残るのと同様、C++やJava、C#、Javascriptなど半角英字を基調とした言語は標準的な言語として残り続けると思われます。(ただし、下記の母国語言語の台頭により、これらの「水準」の位置づけが相対的に変動して、かつての「高水準」言語は「中水準」言語に格付けされる可能性はあると考えます。)

わたしの方向性

Qiitaさん上でも、新しい日本語プログラミング言語のありようとして日本語トランスコンパイラ言語の企画をご提示しようものなならば、どちらかというと否定的なコメントが多い印象です。

また、既存の英文字系プログラミング言語の文字コードのマルチバイト対応に伴い、変数名や関数名に日本字を使ってみてはという記事などに対しても、まずついてまわるのは否定的なコメントのようです。1

私の感覚では、英文字系プログラミング言語を覚えられてそのまま使いたいならば、そのまま使い続けるのは技術者技能者ご本人の自由かと考えます。2

21世紀に入って20年あまり、ソフトウエアやシステム開発の現場はハードウェアの開発現場(自体を支援しているのはソフトウェアではありますが)に比べると前近代的な状態は残っているようにも思えますので、生産性をあげる手段としてはあんがい母国語対応の多国語対応実装言語だったりするのかもしれません。

おわりに

生成AIが、非エンジニアでも使えるある程度形式化されたアルゴリズム記述手順がルール化されている母国語トークンからなる言語ができれば、それらのアルゴリズム記述言語よりははるかにマシン寄りの今日の実装言語に自動変換するという未来がもうすぐのような気がします。

このような時代感の中で、ローカル言語のトランスレータってどうなの?という疑義があるのは百も承知ですが、あくまで日本語を文化ととらえる趣味ということで、温かい目で見てやってください。(いちおう多言語化も狙ってる(笑))

参考リンク(原文)

  1. 読み返してみますと、前記事にコメントいただいた方が「じゃあ、いいよ。コメント自体しないから。」と思われてしまうような書き味にも取れますが、そういう意味ではなく、肯定的なコメントと否定的なコメントでどちらかというと後者が多かったと事実を述べているだけで、ものごとに批判的な観点の否定的なコメントは大歓迎です。お気軽にコメントお願いいたします。

  2. 基本的に対価を伴う実装業務の場合、多くは業務上実装言語が指定されているかと思います。既存の実装言語を否定するものではまったくないです。私も仕事で使ってますし。その上で別の言語企画もどうかな的な話です。

84
39
37

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
84
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?