アカウント名:
パスワード:
ことば(文字)ベースの言語が圧倒的に強いのは、 (普通の)計算機に「文字を」打ち込む機械つまりキーボード(だけ)がついてるせいなんですよね。
それだけじゃなく, 人間の使う語彙の量が圧倒的に豊富だからでしょう. 基本的な単語だけで数100から1000以上. 複合語を合わせればゆうに万を超えます. 実際にU*ix系のmanページあたりを見ても数1000以上の項目が並んでいます. 日ごろよく使うシンボル名だけでも100を下回ることはないんじゃないでしょうか.
こうなると, ビジュアル型プログラミングで主流のメニューによる選択という方式は, 脳内ハッシュによるダイレクトな文字入力(+エディタ・IDE等による補完)という方式に比べて, どうしても操作が煩雑になるのだと思います. あるいは, 自分のプログラミング対象に合わせてメニュー構成などをカリカリにチューニングすればビジュアル型プログラミングも有効になるのかもしれませんが, これはこれで柔軟性や一般性に欠けそうな気もしますし.
さらに大規模な実用プログラムでは, 修正や調査に際して特定のパターンの検索や置き換えといった要求が必ず出てきます. ところがこうした要求に対してビジュアル型プログラミングは弱いんですよね. 一旦, 文字によるソースコードに落として修正し, 再度ビジュアル環境に取り込むってパターンが多いんですが, 出来たソースが読みにくくてパターンの指定がしづらいとか, ソースを下手に修正すると取り込めないとかの制限がやたらに多くて.
結局, 現状ではビジュアル型プログラミングって
あたりの条件が揃っていないと使えないように思われます.
こうなると, ビジュアル型プログラミングで主流のメニューによる選択という方式は, 脳内ハッシュによるダイレクトな文字入力(+エディタ・IDE等による補完)という方式に比べて, どうしても操作が煩雑になるのだと思います.
さらに大規模な実用プログラムでは, 修正や調査に際して特定のパターンの検索や置き換えといった要求が必ず出てきます. ところがこうした要求に対してビジュアル型プログラミングは弱いんですよね.
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs
OpenDoc (スコア:1)
それとは全然違う思想のモノなのかしら?
Re:OpenDoc (スコア:0)
わたしはIntelligent Padを思い出しました。
これもLEGOブロックに刺激されたとか言う話だったはず。
果たして子供向けなのか? (スコア:0)
こういうのにインスピレーションされて、RubyのIDEとか誰か作ってくれないかなぁ。
ブロックとかあるんだし。
Re:果たして子供向けなのか? (スコア:2, 興味深い)
結局のところ実際的なプログラミング環境としては面倒くさい感じがしてきました。
意味論的にも統語論的にも直感的にプログラムを構成できる点はいいのですが、
じゃあ学習以外の側面で文字列を打ち込むのと決定的に違うのは何かと言えば
統語エラーが絶対に起きない点くらいかと思います(まぁ意味論的なエラーも減りますが)。
これならタイプした方がよっぽど早いかなぁ、とも考えてしまいます。
逆に言えばそのくらいしか違いがないのだから、
工夫の仕方次第では実用的なIDEを作ることは可能かも知れません。
しかし労力に見合うかはやや疑問があります。
なお、Rubyにこれを適用するためには、いくつか表示上の工夫が必要であろうと思われます。
例えばブロックを選択しようとする時、Scratchは関数が少ないから簡単に選べます。
でもRubyだとそれなりの数が必要で、それをどうやって効率的に選択させるのかが問題です。
また値の型を形で表しているのでそこをどう対応付けるのかも結構悩みそうです。
Scratchは数値、文字列、真偽値、あとはブロック列くらいしか値の型はなさそうですから困らないと思いますが、
Rubyだとクラス毎に形を変えるのは数が多過ぎてちょっとつらそう。
基本的なクラスだけ対応しても、それでも多過ぎな感じかも。
あとRubyではメソッドの引数に型の指定が出来ないのでそれもどうしたらいいかが悩ましいところです。
型推論?とか考えるとかなり辛い感じがしてきます。
そんなわけでいきなりRubyはアレなので、
MLなどの型がしっかりしている言語の方が無難だろうと思います。
私はIDEよりもRubyなどのソースをこの形式で表示してくれるビューアが欲しいと思いました。
プログラミングを知らない人にソースを見せる時には、役に立ちそうかなぁ、と。
Re:果たして子供向けなのか? (スコア:3, 参考になる)
(普通の)計算機に「文字を」打ち込む機械つまりキーボード(だけ)がついてるせいなんですよね。
マウスもあるけど、あれはデータ入力効率でキーボードと比べれば「おまけ」的なデバイスでしかないでしょう。
日本語の文字を直接入力できるキーボードが無いもんだからIMをかます羽目になり、「それが」面倒だから日本語プログラム言語も流行らない、なんてな構図がありましたね。同じことかと。Scratch用のキーボードというかボタンが並んだモノがあれば良いんじゃないかな。
>MLなどの型がしっかりしている言語
しっかりというだけじゃなく、純粋関数型言語にありがちな「型を組み合わせる」感じは、Scratchのようなアプローチに合いそうですね。OOPも型の組み合わせですが、OOPの場合は組み合わせを済ませた新しい型は元の材料の型を意識させない方向に行くので、この場合はそれが却って都合悪そう。
ところでLisp用で正にセルをビジュアルに並べてコーディングできるツールが有りますね。
Re:果たして子供向けなのか? (スコア:3, 興味深い)
それだけじゃなく, 人間の使う語彙の量が圧倒的に豊富だからでしょう. 基本的な単語だけで数100から1000以上. 複合語を合わせればゆうに万を超えます. 実際にU*ix系のmanページあたりを見ても数1000以上の項目が並んでいます. 日ごろよく使うシンボル名だけでも100を下回ることはないんじゃないでしょうか.
こうなると, ビジュアル型プログラミングで主流のメニューによる選択という方式は, 脳内ハッシュによるダイレクトな文字入力(+エディタ・IDE等による補完)という方式に比べて, どうしても操作が煩雑になるのだと思います. あるいは, 自分のプログラミング対象に合わせてメニュー構成などをカリカリにチューニングすればビジュアル型プログラミングも有効になるのかもしれませんが, これはこれで柔軟性や一般性に欠けそうな気もしますし.
さらに大規模な実用プログラムでは, 修正や調査に際して特定のパターンの検索や置き換えといった要求が必ず出てきます. ところがこうした要求に対してビジュアル型プログラミングは弱いんですよね. 一旦, 文字によるソースコードに落として修正し, 再度ビジュアル環境に取り込むってパターンが多いんですが, 出来たソースが読みにくくてパターンの指定がしづらいとか, ソースを下手に修正すると取り込めないとかの制限がやたらに多くて.
結局, 現状ではビジュアル型プログラミングって
あたりの条件が揃っていないと使えないように思われます.
Re:果たして子供向けなのか? (スコア:3, 参考になる)
現在Scratchでは
Motion, Looks, Sound, Pen, Control, Sensing, Numbers, Variables
の八つのメニューがあって、それぞれの中に2-15個くらいのブロックが並んでいます。
正確には数えていませんので8x10で80種のブロックがあると仮定しておくとして。
例えばRuby-1.8.5では Kernel.methods.size が133なので、
組込み関数はうまくすれば現状のScratch同様にコンパクトに収められそうです。
加えてオブジェクトに対する操作の場合、コンテキスト依存でメニューとその内容を変えてやれば
意外とコンパクトに収めることが出来そうな気がします。
オブジェクト指向なら案外この問題は解決できたりしないでしょうか。
10個くらいのメニューから選択 → 中のブロックを選ぶ → ブロックをドラッグ&ドロップ
なら、やや面倒ですが一応3ステップですので、複雑さに関しては許容範囲内だと思います。
でもやっぱり多少工夫した程度では文字で入力した方がよっぽど早いわけですが。
Scratchは検索・置換どころか、現状では変数名の変更すら出来ません。
プログラミングに際しては極めて慎重に設計を行なう必要があるようです。
いくら子供向けとは言え、さすがにこれはつらいなぁと思いました。
検索とか置換がビジュアル型言語では絶対に出来ないというわけではないだろうと思いますので
(検索条件もブロックで組み立てられそうだし)、
最優先で対応してくれないかなぁと感じました。
# それにしてもScratchは変数の扱いが雑
# 変数は宣言的なんですが、変数宣言を消してもコードには変数が残されたまま
# 一緒に消してくれればいいのに
Re:果たして子供向けなのか? (スコア:2, 参考になる)
とのことなので、興味があるので調べてみました。
それらしいものでみつけることが出来たのは
ペンインタフェースを用いた視覚的な Lisp 教育環境 [interaction-ipsj.org](PDF)
ですが、こんな感じのものでしょうか。
この文章でも入力効率の問題でマウスが劣るって言ってますね。
やはり入力デバイスの工夫から始めないといけないのでしょうか、うーん。
映画「マイノリティ・リポート」に出ていた空間に浮いてるディスプレイを手で操作するようなヤツ、
あれがあれば実用的になるんですかね。
でもそうだとすると未来のプログラマはすっごい派手に動き回ってコーディングすることになりそう。
体力勝負?
Re:果たして子供向けなのか? (スコア:1)