現在のパソコンは、 文書作成や表計算のような仕事に使ったり インターネットの利用のために使ったりするのがほとんどであり、 ホビーとしてプログラムを作る人はごく少数になってしまったようです。 FlashやJavaは多くのWebページやサーバで使われていますが、 普通のパソコンにはこれらのプログラミング環境は標準装備されていませんから 興味があったとしてもすぐに実験することはできず、 大規模な開発環境を購入する資金やインストールの手間が必要になります。 また、これらのシステムでは、 新しくウィンドウを作成して文字を表示するといった 簡単なプログラムを作りたい場合でも、 そのためには 言語の仕様/開発環境の使い方/ライブラリの構成など 沢山の知識が必要になるので、 プログラミングを始めるためにはかなりの気合いが必要です。
このような状況のため、 現在は 「全くプログラミングを行なわない一般ユーザ」と 「真剣にプログラミングを行なうプログラマ」 の2種類の人間しか存在せず、 「気が向いたときに簡単なプログラムを書くホビープログラマ」のような人間は ほぼ絶滅してしまったように思われます。
往年のパソコンでは、電源を入れるとすぐBASICインタプリタが動作し、
CLSと入力して画面を消去したり、
LINE (10,10)-(100,100),1と入力して画面上に線を描いたりしたものですが、このように
フィボナッチ数を計算するVBScriptプログラムをHTMLページに埋め込んだもの:
<html><body> <h1>フィボナッチ数計算</h1> <script language="VBScript"> <!-- Dim v1,v2,sum,i v1 = 1 v2 = 1 n = 40 For i = 1 to n Document.Write v1 & " " sum = v1 + v2 v1 = v2 v2 = sum Next MsgBox "フィボナッチ数を" & n & "個計算しました。" --> </script> </body></html>このHTMLファイルをブラウザで表示しようとすると、 VBScriptのプログラムが実行され、 並んだ数を足す操作を40回繰り返した結果がHTMLに埋め込まれ、 以下のような表示が得られます。 計算の最後でMsgBox関数を呼ぶことにより 小さな確認ウィンドウが表示されています。
Internet Explorerでの表示結果:
VBScriptはWindows/Internet Explorerでは標準で使用することができますから、 何も用意しなくても簡単にプログラミングを楽しむことができます。 VBScriptは以下のような特長を持っています。
Set WSHShell = WScript.CreateObject("WScript.Shell") WSHShell.Run "C:\Windows\notepad.exe" WScript.Sleep 1000 WSHShell.SendKeys "abc"
クロスプラットフォームで計算やグラフィクスが利用できる システムとしてはJavaが有力です。 Javaは本格的なオブジェクト指向言語であり、 あらゆるライブラリが揃っていますし フリーの開発環境が沢山あるので 本格的なプログラミングをするには向いているのですが、 言語仕様/開発環境/ライブラリのすべてについて かなりの知識が必要になりますから 残念ながらお手軽さは充分とはいえません。
一方、いろいろなプラットフォームで使えるスクリプト言語として Perl, Python, Rubyなどが最近広く使われています。 RubyやPythonは本格的なオブジェクト指向言語ですが、 深い知識がなくても使うことができるようになっています。 例えばRubyでは
puts "abc"と記述するだけで"abc"を印刷することができますが、 このように「簡単なことは簡単に/複雑なことはそれなりに」 プログラムすることができるため、 非常に気軽にプログラミングを楽しむことができます。
Windows, Macintosh, Linuxなどで同じようにグラフィクスやサウンドを扱うことができる 「SDL」というマルチメディアライブラリが公開されています[*1]。 また、SDLをRubyから利用することができる 「Ruby/SDL」システムが公開されている[*2]ので、 Rubyから簡単に画面描画や音の処理を行なうことができます。 また、産業技術総合研究所の江渡浩一郎氏は、 SDL/Rubyをさらにお手軽に使えるようにした「sgl」というシステムを 作成しています[*3]。 sglではRuby/SDLの難しい部分を隠蔽しており、 BASIC並の手軽さでプログラミングを行なうことができます。
例えばsglでは以下のようにして黄色い背景に青い矩形を描くことができます。
require 'sgl' window 100,100 # 100x100のウィンドウ生成 background 100,100,0 # 背景に黄色を指定 color 0,0,100 # 描画色に青を指定 rect 20,20,80,80 # 四角を描く wait
Rubyの制御構造を使うと、複雑な絵を書くことも簡単です。
require 'sgl' window -200,-200,200,200 color 100 x = 190.0 y = 180.0 10000.times do x = x + y / 2.0 x -= 400 if x > 200 x += 400 if x < -200 y = y - x / 2.1 y -= 400 if y > 200 y += 400 if y < -200 rect x,y,x+1,y+1 end wait
このように、 sglを使うとBASICと同じぐらいの手軽さでグラフィクスプログラミングを 楽しむことができますし、 Rubyの高度な言語機能やライブラリを使うこともできますから、 本格的なアプリケーションも作ることができます。
このように、簡単なプログラムをユーザが作ることによって カスタマイズや自動化を行なうことを 「エンドユーザプログラミング」といいます。 エンドユーザプログラミングでは本格的なプログラミング能力は必要はなく、 お手軽プログラミングができれば充分です。 現在のほとんどのアプリケーションでは エンドユーザプログラミングはサポートされていませんが、 ユーザがプログラムを書いてシステムを制御することが簡単にできれば 計算機の使い方は変わってくるかもしれません。