3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

はじめに

ある過去の日、私はプログラム入門の本を読んでいました。
そこで目に留まったのが、**「日本語のプログラミング言語もあります」**という記述でした...。
今回は、日本語プログラミング言語の一つである、Mindについて、HelloWorldを魔改造しつつ紹介したいと思います。

注意点

  • マルチバイト文字がコードに含まれるだけでぶっ壊したくなる人には、お勧めしません。
  • 難しさはCとJavaの間くらいです。(本当か?)
  • ソースコードには、ShiftJIS,またはEuc-JPしか使えません!
  • 本記事ではバージョン8を使用します。

Mindとは(読み飛ばし可)

  • 日本語プログラミング言語の中でも、MS-DOS時代から存在していた、古い言語です。
  • Forthという逆ポーランド記法(動作を後に記述する)のプログラミング言語の影響を受けていて、日本語に近い書き方ができます。
  • 自然言語処理は取り入れられていませんが、一見すると普通の日本語に見える様に工夫がされているので、理解が楽にできます。
  • こちらよりコンパイラがダウンロードできます。

本題

Hello World! - 基本形 1/6

お馴染みのプログラムはこう書きます。せっかく日本語言語なので「こんにちは 世界!」を表示しましょう。

HelloWorld.src
メインとは
 「こんにちは 世界!」を 表示すること。

今言ったことをそのまま書いただけで実現できたのが分かるでしょうか?しっかり書けば可読性は高いと思います。
「メインとは」から「。」までがメイン関数定義として扱われ、実行する際これが実行されます。

Hello World! - 送り仮名 2/6

日本語として送り仮名や助詞は一大テーマです。きっとその辺りも上手くやってくれるでしょう!

HelloWorldSister.src
メインとは
 「こんにちは 世界!」をねっ 表示することだよっ。

なんと助詞や送り仮名は基本的には無視されます。(考慮に入る場合もあります)
つまりこのコードは、内部的に

メインとは
 「こんにちは 世界!」 表示。

として扱われます。一見雑に見えますが、実際コードを書く時にはとても楽になっていることが実感できます。

Hello World! - 複数 3/6

せっかくなのでウルトラな挨拶をしましょう。

HelloWorldUltra.src
メインとは
 「こんにちは 世界!」を 「ウルトラな 」を 表示してから 表示すること。

実行結果としてはウルトラな こんにちは 世界!と表示されます。これは助詞を見てこのような動作をしているわけではありません。
Mindでは、内部的に「スタック」という情報の置き場所が用意され、それに情報を載せたり取り去りながら実行しています。
スタックは、後に乗せたものが、先に取り出されます。
その様子を見てみましょう。

  1. 「こんにちは 世界!」をスタックに積みます。
  2. 「ウルトラな 」をスタックに積みます。現在スタックにあるのは「こんにちは 世界!」,「ウルトラな 」です。(順番も重要です)
  3. 「表示する」はスタックから一つ取り出してそれを表示します。取り出したものは**「ウルトラな 」**です。それを表示します。
  4. 二つ目の「表示する」が取り出したものは「こんにちは 世界!」です。それが表示されます。

このスタックの概念はMindの日本語らしさを支えているといえるでしょう。

Hello World! - 関数分離 4/6

HelloWorldはよく使う(?)ので関数に分離しましょう。

HelloWorldFunction.src
挨拶とは
 「こんにちは 世界!」を 表示すること。

メインとは
 挨拶すること。

「~は」から「。」までが関数定義です。呼び出しをするときは、単にその名前を書くだけで実行されます!

Hello World! - 変数 5/6

お馴染み変数です。

HelloWorldV.src
メインとは
 挨拶文は 文字列
 挨拶文に 「こんにちは 世界!」を 入れ 挨拶文を 表示すること。

「~は 文字列」が文字列変数の宣言です。
「~は 変数」は整数変数の宣言です。
代入は「入れ」で行えます。だいぶ直感的ですね。ちなみに

メインとは
 挨拶文は 文字列
 「こんにちは 世界!」を 挨拶文に 入れ 挨拶文を 表示すること。

でも同様です。(どちらも日本語として正しい!)

Hello World! - 分岐 6/6

ヒトの身分によって挨拶の態度を替えるヒトがいるとしましょう。そんなときにこれを使いましょう!

HelloWorldIf.src
メインとは
 ヒトの階級は 変数
 ヒトの階級に 1を 入れ
 ヒトの階級が 0に 等しい ならば
  「こんにちは 世界!」を 表示し
 さもなければ
  「こんにちは 宇宙!」を 表示し
 つぎに。

「ならば ~ つぎに」が分岐です。「ならば」はスタックからデータを1つ取り出します。(Basic等に見られる「if - endif」に近いですね。)
勘のいいヒトなら次のように書けることに気づいたかもしれません。

メインとは
 ヒトの階級は 変数
 ヒトの階級に 1を 入れ
 ヒトの階級が 0に 等しい ならば
  「こんにちは 世界!」を
 さもなければ
  「こんにちは 宇宙!」を
 つぎに
 表示すること。

これも問題なく実行されます。他の言語から見れば違和感を感じる表記ではあります。(しかし日本語として正しい!)
これこそスタックのお陰ですね。

終わりに

Mindは論理的にソースが構築されつつも、かなり日本語として直感的な書き方ができる言語です!ぜひ体験してみてください!

3
0
0

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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?