はじめに
本記事は「日本語プログラミング言語は必要か」という情報処理がご専門の大学教授さんの記事に感銘をうけたお話から、同じテーマについて考察し、「日本語トランスコンパイラ言語 Re:Mind(リマインド)」という自作トランスコンパイラ言語の企画意図をまとめています。
参考リンク
日本語プログラミング言語は必要か fukuchi.org FUKUCHI 2011.11.23
↑こちらが直接感銘を受けた記事です。記事の発信者は数理学部の大学教授さんで、情報可視化・リアルタイム動画像処理といったマルチメディア情報処理がご専門の方のよう。
BingのCoパイロットに記事を要約していただき、さらに私の方で要約しました。
・日本語プログラミング言語の必要性に疑問を呈する
プログラミング言語は英語の語彙を基調として設計されるが、それはプログラム習得の壁にはならない。
日本語プログラミング言語は自然言語に近づけることで学習しやすさを高めるという思い込みに基づいているが、それは効果がないどころか逆効果になる。
日本語プログラミング言語の関係者には、外圧によって日本のコンピューティング環境が阻害されているという妄想に取り憑かれている人がいる。
・Processing をプログラミング学習の好例として紹介する
Processing はJava のラッパーとして構築されており、構文はJava のものを踏襲して自然言語的ではなく、従来の記述方式と変わらない。筆者も大学でこれを使ってプログラミングを教えているが、ちょっとしたプログラムを初心者の学生が書けるようになるまで、1時間とかからない。
どこに感銘を受けたか
「僕自身は、プログラミング言語の語彙が英語ベースであることは障害にならず、 BASIC を入口に、あっという間にこの世界に慣れ親しんでしまったので、 壁を感じた覚えがまったくない。」というお言葉。くしくも、私もFORTRANを入口にまったく同じ感覚を持っています。
高校2年生まで英語はかなりさぼっていましたが、こんなんじゃどこにも入れないよと受験指導の先生に言われて大学受験までけっこうしゃかりきに勉強しました。
それに日本人って小学3年生からローマ字を習うので、母音5文字に子音9文字を組み合わせておおよそ50文字からなるひらがな・カタカナを表現するという美しい体系が叩き込まれますので、英字系プログラミング言語の識字はこれでほぼ問題なしかと。(自然英文でもないし。)
納得したところ
「僕個人にとっては日本語プログラミング言語の必要性はまったくないので、 日本語プログラミング言語を使うことは永劫ないだろうが、 自分が必要としていないだけで世間では困っている人が多いのかもしれないし、 もしそれがプログラミング学習のハードルを下げる効果が本当にあるのであれば、 どんどん研究されて然るべきだとは思っている。ただ、その効果は自明なものではないと思っているので、 ちゃんと調査した結果がない限りは信用する気はない。」というお言葉。
なんとなく、これに続く文が日本語プログラミング言語に対して憎々し気な雰囲気を醸し出していらっしゃるので、まさに「(ここで『俺の好きな××をけなすとは許せない!』と思われるかもしれないけど、)」的な、確かにそんな感じが私的に無きにしにもあらずではあるのですが、この文自体は、冷静に読み取ればおっしゃっていることは、まっとうなことかと存じます。(次節に該当する本文中Mind1についても思わぬところで触れられてます。Mindをけなしているわけではなく引用文中に出現。)
えっそうなんですか!?的なお話
それは、本記事の要約で「日本語プログラミング言語の関係者は、外圧によって日本のコンピューティング環境が阻害されているという妄想に取り憑かれている人がいる。」となっているあたりのくだりで、「日本語プログラミング言語界においてさらになんだかなぁと思うのが、 ちょっと過剰な義憤にかられている人が結構いること」らしいです。
アクセス権がないので論者の方の引用元のエビのPDF2 はダウンロードできませんが、恐らく当時の日本語プログラミング言語の関係者の中に、そのように思われた方がいたのでしょう。本文の論調のかなりを占めていることから、きっとこの方々の言動がこちらの大学教授さんにとって「日本語プログラミング言語」の印象を悪くしているような印象ですかね。
その「妄想」とは…。いまやリアルタイムOSの世界標準となったμトロンですが、トロンプロジェクトにはビジネス向け汎用OSもあって、たしか当時Bトロンと言われていて、当時の半導体をめぐる日米間の問題と似たような話があって(このあたりはいまは事実認定されているお話ですが3、問題の構図は実は同じではなくこっちは日本側のある会社さんの要請だったという流れで)、日本の当時のPCメーカからBトロン搭載PCの出荷の話がなくなったということなのですが、それと日本語プログラミング言語の普及がなにか影響したと考えた方がいらっしゃったのでしょう。
いまとなっては外圧ではなかったという話ですが、当時は一般的にそのように認識されていて、そのように考えた人もいたという歴史的事実の記録として興味深いです。Mindがこの引用の中で出現し、それに関連して本文にもちょこっと出てますが、Mindの原理的な特徴はご認識されている模様。
記事の結論
「プログラミング学習の壁は、プログラムを書くための記法の習得にあるのではなく、プログラムとは何なのか、アルゴリズムとはどういうものなのかを素早く体得できるかどうかにあるように思う。記法が英語風であるか日本語風であるかはおそらく小さなことであろう。」これは、現在の現役のデベロッパさんの感覚を代弁されているに等しい内容かと推察されます。
わたしもこれらの点を否定するつもりはまったくないです。プログラミング学習のツールとしては、論者の教え子さんがさくっと覚えられたというProcessingでもよいでしょうし、GUIがかぶさったScratchもよさそうな感じですね。
わたしの方向性
プログラミングの学習容易性というメリットで日本語プログラミング言語の存在価値を訴求することはないです。
そのあたりは、いろいろなツール、実績のある実装言語にお任せして、開発現場でよく使われている実装言語を習得している方と、昔なんらかの実装言語を習得したけれどいまは職務としては使っていないといった方など、ソフトウェア系エンジニアに対して、日本語を主に使用したプログラミング言語が導入されるにはどうしたらよいかということを考えています。
つまり、あとからでもかまわないので、日本語の実装言語も使うバイリンガルになってほしい。(日本人でなくて可。)美しい日本語でプログラムのソースコードが書けることの文化面での意義をできれば認知してほしい感じです。(このあたりも誤解されやすいかもしれませんが、自然言語としての日本文の美しさという意味ではなく、漢字ひらがなカタカナローマ字が混在する日本字の美しさみたいな。あくまで形式言語の話で、論者さんが誤解されているような自然言語っぽさは目指さないです。実用の範囲でそうであればなおよいでしょう。)
おわりに
「『〇〇〇〇』という〇〇さんの記事に感銘を受けた話」も今回で4回目となります。この記事のシリーズ化は最初の記事投稿時から想定しておりました。2回目の言語学者さんの記事を除いて、ほとんどは昨年2022年の年末にMindへの関心が復活した際に読んでいたもので、当時感じた感想をいま記事にしているといった感じです。
今後も似たテーマ
母語でのプログラミング言語って必要なの?
で記事をあげていくと思いますが、お付き合いいただけると幸いです。
2023/9/15 追記
論者さんの引用のエビデンスのPDFがhappylibus.comに公開されていましたので、リンクを追記しました。2
2023/9/19 追記
前記PDF内容精読させていただきましたが、積極的にリンク設けるものでもなさそうと判断いたしました。リンク情報は削除します。どうしてもご覧になりたいと思われた方は自己責任で注釈の情報をたよりに探してみてください。
2023/12/29 追記
Re:Mind(リマインド)は2023年にQiita上で仕様を公開した下記のような階層構造を持つ日本語プログラミング言語ファミリーです。
カテゴリ | 用途 | 現状 | 備考 |
---|---|---|---|
日本語構造化仕様記述言語 | 要求仕様記述 | 企画中 | |
日本語ロジック仕様記述言語 | 内部設計記述 | 設計中 | オープン |
日本語トランスコンパイラ言語 | 実装・開発 | 試作中 | オープン |
Qiitaのユーザーさんはソフトウェア実装をメインにされている方が圧倒的に多く、ソフトウェア設計に関する記事はまだ少ないと認識しております。
また実装だけしている方にとっては、日本語プログラミング言語または日本語トランスコンパイラ言語と聞いただけで不要感を抱く方がいらっしゃるかと思いますので、あくまでこれはソフトウェアを企画設計する方向けにモデリング言語の一部として提案していることを強調させてください。ただし、実装する方が使うことを退けるものでもないです。
この企画の考察はRe:Mind(リマインド)のアドベントカレンダー2023に詳しく記事投稿しておりますので、興味のある方はぜひ遊びに来てください。前半は数学的形式言語と通常の実装言語との構文比較記事となっておりますが、後半からRe:Mindの適用例の解説としております。