名前
タイトル
コメント
参照先
アイコン [アイコン参照]
メール
暗証キー (英数字で8文字以内)
文字色
Re: 日本語プログラミング言語 投稿者:ぐらっふ 投稿日:2011/12/03(Sat) 02:42 No.14

inu1.gif はじめましてぐらっふです。

突然で申し訳ないですが、
ゆうとさんの日本語プログラミング言語に関する考えをお聞きしたいです。

質問掲示板に書き込むかどうか迷ったのですが、
プロデルに関することではないのでこちらに書き込ませていただきます。

考えというのは様々ありますが、私がまずお聞きしたいことは次の2つです。

・そもそもなぜ記述に日本語を用いるのか、
 CやJavaに用いられているキーワードを日本語に置き換るだけでは駄目なのか?

例えば、

 クラス スペルチェックツール {
  真偽値 検査(文字型 文章) {
   返却 真
  }
}

 というような感じです。

・プログラミング言語を日本語文法で記述する利点と欠点

またゆうとさんは、プロデルをどういう方向性で発展させたいとお考えですか?
(教育目的なのか、使い捨てのマクロ目的なのか)


Re: 日本語プログラミング言語 投稿者:ゆうと 投稿日:2011/12/04(Sun) 00:56 No.15

nezu.gif こんにちは ゆうとです。
ご質問ありがとうございます。

> そもそもなぜ記述に日本語を用いるのか、

「日本人ならプログラムも日本語で書きたいから」が素直な理由です。

プロデルも安定してきたので、私自身もちょっとしたツールは、プロデルで書いています。
(プロデルユーザさんの意見もあればよいのですが)
作ってみて日本語で書ける良さがあると思っています。

例えば、C言語やJavaで変数名や関数名を付けるのに迷ったことはないでしょうか?
辞書を引いてみたり、ニュアンスの異なる英単語を当ててしまったり
することがあるんじゃないかと思います。(英語が達者な方であれば別ですが)

日本語なら、思った単語をそのまま書けばよいので、変数や関数の名前を
考える手間もいらないですし、数ヶ月後に読み返しても「何だっけこれ?」と
いうことがあまりないように思います。
これが日本語プログラミングの魅力の一つだと思います。

> CやJavaに用いられているキーワードを日本語に置き換るだけでは駄目なのか?

ぐらっふさんの「例えば、」で挙げていただいたようなプログラムなら
キーワードを置換するプリプロセッサなどのツールを作れば、JavaやC#で実現できます。
これも一つの方法だと思います。
実際にVBAなどでは、(予約語を除けば)変数名やプロシージャ名を付けている方もいるようです。


ただ私自身は、「例えば」に挙げていただいたようなプログラムは、
日本語プログラミングではないと思っています。

プロデルの発想として、ただ単純に英単語を日本語で置き換えただけでは、
日本語で書くことの利点は、(プログラミング経験者であればあるほど)
少ないと思います。
(つまり、慣れてしまえば「class」も「クラス」も変わらず
日本語だと、ただ打ちにくくなっただけ、ということです)


今の日本語プログラミング言語の特徴は、プログラムを
助詞(てにをは)を使って日本語らしい文法で書けることです。

「例えば」のメソッド呼出しの例をJava風に日本語で書けば

  スペルチェックツール.検査(文章);

となると思います。つまり記号や、メソッド・引数の書き順に意味があります。
一方、プロデルでは助詞を使って

  スペルチェックツールで文章を検査する

と書けます。
このように助詞を使うことで動作や対象、データの方向が明確になり、
後からコードを読み返すときの、わかりやすさにつながると思っています。
これが日本語プログラミングのもう一つの特徴であり利点だと思います。

助詞を使って日本語らしくプログラムを書くには
プロデルのような日本語プログラミング言語が必要ですし、
ライブラリも助詞の良さを生かして作る必要があります。

欠点として指摘される点を挙げるならば
「日本語プログラミングは、タイピング量が多くて面倒だ」
ということです。

ただこれは、プロデルデザイナのようなエディタが貧弱なだけであって
エディタがもっとがんばれば、さほど問題にならないと思っています。
このあたりについては、今後の課題です。


> プロデルをどういう方向性で発展させたいとお考えですか?

C言語やJava、Rubyなどがそうであるように、
プロデルも特定の用途を目的としたプログラミング言語ではありません。

あえて言えば、プロデルはGUIを使ったツールやユーティリティを
手早く作れるというのが魅力だと考えています。
最近では、Webアプリが作れる環境も用意しています。

カメを使ったLogoの機能も用意されていますが、
これはおまけ的な位置づけであり、教育利用を目的しているわけでありません。
また、事務処理などの使い捨てのバッチ処理プログラムを書くといった用途も
(当然できますが)プロデルが目指しているものでもありません。

あくまでも、長く使うことができるソフトウェアを“作る”ことができる開発環境を
プロデルは、目指しています。

疑問にお答えできていれば幸いです。


Re: 日本語プログラミング言語 投稿者:ぐらっふ 投稿日:2011/12/07(Wed) 00:53 No.17

inu1.gif なるほど、分かりました。
おおむね同意できます。

オブジェクト指向を日本語で表現するとき、
確かにプログラムを読む際には、

> このように助詞を使うことで動作や対象、データの方向が明確になり、
> 後からコードを読み返すときの、わかりやすさにつながると思っています。

これは同意できます。
日本語で書くことで可読性が抜群に上がるわけですね。

しかし、プログラムを書く際は、
操作対象のインスタンス(レシーバー)につく助詞が一つに定まらないため、
レシーバに対して何の助詞をつければよいかということがすぐに分からないと思います。

Javaの場合だと、

str.saveFile("file.txt", "UTF-8");

というように「.」(ドット)の左側が必ず、レシーバーということがぱっと見ただけで分かります。
つまり、記述する際にはレシーバーを「.」の書く前に入れてやればいいわけです。

しかし、日本語プログラミング言語だと、
レシーバーに対してつける助詞は、レシーバーに対する操作を決定づける動詞(メソッド)で決まるわけです。
これは大きな欠点だと思います。

レシーバーと、レシーバーに対して行う操作であるメソッドは、頭の上に思い浮かびますが、
レシーバーに対して何の助詞をつけて、引数に対して何の助詞をつければよいかが
(レシーバーと引数は、プロデルではほぼ対等なものですが)
すぐに思い浮かばないと思います。

これは、実際にプロデルを使っているので分かるのですが、
レシーバーに対して何の助詞をつけて、引数に対して何の助詞をつければよいか
すぐに思い浮かばなかったり、
思い浮かんでも、実際の実装とは違ったりすることが多々あります。

このあたりは開発環境を強力にして対応させるのでしょうか?

あと、2chのプログラム板にスレッドを立てました。

スレッドの宣伝では全くもってありません。
ただ、日本語プログラミング言語「プロデル」を知ってもらおうというわけです。
それに本家の掲示板だけでは利用者が少なくどうしても閉塞的になったり、議論も広がらないので、
2chにスレッドを立てたわけです。

2chスレッドの目的としては、

・プロデルをより多くの人に知ってもらう、使ってもらう。
・プロデルに関する意見交換や議論
・本家お膝元では言いにくい意見など…

といったところです。
ユーザーの皆さんも使っていただければありがたいです。

http://hibari.2ch.net/test/read.cgi/tech/1322496819/" target="_blank">http://hibari.2ch.net/test/read.cgi/tech/1322496819/

ちなみに、この一連の質問はこのスレッドでの意見を元にしています。


Re: 日本語プログラミング言語 投稿者:ゆうと 投稿日:2011/12/20(Tue) 20:50 No.19

nezu.gif こんにちは、ゆうとです。
お返事遅くなりました。

> レシーバーと、レシーバーに対して行う操作であるメソッドは、頭の上に思い浮かびますが、
> レシーバーに対して何の助詞をつけて、引数に対して何の助詞をつければよいかが
> すぐに思い浮かばないと思います。

> レシーバーに対して何の助詞をつけて、引数に対して何の助詞をつければよいか
> すぐに思い浮かばなかったり、
> 思い浮かんでも、実際の実装とは違ったりすることが多々あります。

ご指摘の通り、(レシーバに限らず)助詞があることが混乱の元になるという
こともあるかもしれません。
この点に対する答えは、私自身も持っていません。

ただ、このあたりは言語仕様がどうこうというよりも、
Javaにあるようなコーディング規約(大文字小文字の書き分けなど)のように
「この動詞ではこの助詞が必ずレシーバ」といったようなルールを
確立していけばよいのではないのか、と考えています。

現状のプロデルのライブラリがその点で確立しているとは言い難いところもありますが、
ユーザの方の意見や経験を元に精査していく必要はあると思っています。

もちろん、開発環境がヒント表示や入力補完などで、補うことも必要だと思います。


> あと、2chのプログラム板にスレッドを立てました。

様々な場所で、プロデルや日本語プログラミングについての意見交換が
行われるのは歓迎いたします。

「日本語プログラミング」という言葉だけだと、
TTSneoやなでしこではなく、その前にあった
Mindだったり、ぴゅー太だったり、日本語COBOLだったり、
極端ですが人工知能と結びつける人もいらっしゃいます。

また、プログラミングというのは、記号を駆使して短く書けるのが良いんだ
という意見が多いのが実際のところなんではないでしょうか。

私としては、基本的にはプロデル利用者の意見を大切にしていきたいと
考えておりますし、また他の日本語プログラミング言語とは違う視点で
プロデルを作っていきたいと考えております。


- YY-BOARD -