前書き
日本語プログラミング言語の経験はほぼないです。
後、この記事に出てくる言語は私が適当に想像した架空言語なんで、あしからず。
また、予防線多めになっております。
それから、私が考えた架空言語でアルファベットを使うと端末が爆発する。という仕様があるとします。(英語使えよ。という意見を封じるため。)
結論だけ知りたい人用
英語では大文字小文字でクラス名とインスタンス名を区別できるが、日本語では区別しにくい。
また変数名も省略しづらい。
という個人の妄想です。。
クラス名とインスタンス名どっちだよ問題
四角形クラスがあるとする。
クラス 四角形 {
// コンストラクタ
作成(縦,横) {
自.縦 = 縦
自.横 = 横
}
面積() {
結果 自.縦 * 自.横
}
}
インスタンスを作るとする。
仮に以下のように…【分岐します】
四角形 = 四角形.作成(3, 4)
コンソール.表示(四角形.面積())
…作れたとする。(インスタンス名とクラス名が同じでもOK)
この場合、インスタンス名とクラス名が同じで
個人的にはかなり違和感があるが、まあ慣れの問題なので
まあ、いいか…という感じ。はい。
…作れなかったとする。(インスタンス名とクラス名が同じはNG)
この場合、どちらかの命名を変えなければならない。
仮に英語だったら小文字、大文字で楽に区別できるが、日本語ではそうはいかない。
そうなると次の選択肢か考えられる。
四角形 = 四角形クラス.作成(3, 4)
四角形1 = 四角形.作成(3, 4)
_四角形 = 四角形.作成(3, 4)
形 = 四角形.作成(3, 4)
まず案1はよさそうに見える。
デメリットとしてはクラスという文字列がついてなんか嫌。ということだろう。
逆に考えてほしい。皆が普段使っているオブジェクト指向の言語でクラス名の末尾に「Class」とつけること!というコーディング規約があったら、どう思うか。
つまり、そういうことである。
案2は1ってなんだよ!という感じである。
案3はなんかダサい。(超主観)
案4は、、、、、分からん。自分はいいが、几帳面な人は嫌いそう。
とのことから、どの案でもプログラマ全員を納得させるのは難しそうだ。
変数名省略しにくい問題
まだ問題はある。
それは省略しにくい。ということだ。
仮にこのようなコードがあるとする。(クラス名は案1を適用)
ファイルリーダー = ファイルリーダークラス.作成(ファイル)
バッファリーダー = バッファリーダークラス.作成(ファイルリーダー)
長ったらしいので省略する。
フリ = ファイルリーダークラス.作成(ファイル)
バリ = バッファリーダークラス.作成(フリ)
うむ。短くなった。
まあ、別にいい。
自分は。
だが、考えてほしい。
原点に戻って考えてほしい。
何故?日本語プログラミング言語を使うのか?
何故?わざわざ他の主流な言語ではなく、日本語プログラミング言語を選んだのか??
原点に戻って考えてほしい。
理由は人によるだろうが、主な理由は…
母国語である日本語で、文章を読むようにコードを理解できるのがいいから!
と思ったから。ではないだろうか。
(理由が違った方は以下を読まなくていいです。)
その観点から変数名を省略したコードを読むと
「フリ」「バリ」ってなんだよ!!!!!
という感じになってしまうのだ。
この観点に従うと、日本語プログラミング言語ではこう書くしかない!!!!
ファイルリーダー = ファイルリーダークラス.作成(ファイル)
バッファリーダー = バッファリーダークラス.作成(ファイルリーダー)
// この後に長々と処理が書かれる。
この変数名なら日本語として、何の苦も無く、文章として、コードを理解することができるだろう。
しかし、やはり変数名が長い!というデメリットがある。
fileReader
ファイルリーダー
このデメリットを解決するのは、「フリ」「バリ」を許容する心を持つことしかないだろう。
(そして、こういう命名は宗教問題である。)