プログラミング教育

日本語でプログラムを書こう

~大学生からでは遅すぎるプログラミング教育

大岩元先生 元慶應義塾大学 環境情報学部

第2回 Computer Science 教育の中核はプログラミング   ~線画を書いてみよう

プログラムを書くということは、コンピュータにやってもらいたい仕事の手順を書くことです。それは、コンピュータが理解して実行してくれる形式の命令文を書くことで実現されます。こうした命令文のことをプログラムと呼びます。

 

プログラムを書く言語のことをプログラミング言語と呼びます。パソコンが広く使われるようになった1980年代には、プログラムをBASICと呼ばれる言語で書くことが普通でした。しかし、パソコンが役に立つことがわかると、役に立つ仕事のためのプログラムが商品として売られるようになり、パソコン・ユーザーが自分でプログラムを書く必要がなくなりました。そして、そうした商品の使い方を修得することが情報教育だと考えられるようになりました。

 

大学では1970年にComputer Science 教育が始まった

 

しかし、21世紀に入ってから、コンピュータの利用が進み、社会全体がコンピュータの存在なしには成立しない状況が出現しました。例えば、電車の切符はSUICAなどのカードを改札口でかざすだけになりましたが、これはカードの読み取りをコンピュータが行っているのであり、改札をする人がいらなくなったのです。こうなってくると、社会を支えているコンピュータという機械がどんな原理で動作しているかを市民全員が理解する方がよいと考えられるようになってきました。

 

コンピュータに関する学問は、Computer Science と呼ばれ、1968年に米国の Association for Computing Machinary(ACM)という学会で大学生のためのカリキュラムが発表され、それに基づいて世界中の大学で専門家の教育が始まりました。日本でも1970年に、5つの国立大学(京大、阪大、東工大、山梨大、電気通信大)と1つの私立大学(金沢工業大)でComputer Science の大学教育が始まりました。

 

タートルグラフィックス~亀に命令し、亀を動かす

 

コンピュータという装置の中核はプログラムです。プログラムを書くことによって初めて、コンピュータに実行させたい仕事の実行が可能になります。逆に、プログラムが書けなければ、コンピュータに仕事をさせることができません。従って、Computer Science を学ぶには、まずプログラムが書けるようになることが必要不可欠です。

 

プログラムを書く学習の1つの定番が、タートルグラフィックスと呼ばれる世界を体験することです。これは、子供に亀のおもちゃを与えて、その亀に命令することで、亀を動かし、その動きが線として書かれることで、書きたい線画を書くという世界です。今は使われなくなりましたが、プロッターという線画を書く装置で、描画のためのペンの移動を指示することと同じことです。

 

壁に貼られた紙の上で、ペンは上向きに動くように設定されているとします。このペンに対する命令として、ペンをnドット分進める FD n という命令とペンの向きをt度右に回すというRT t という命令があれば、図形を描くことができます。

 

例えば、四角形を描く場合を考えてみましょう。1辺の長さを100ドットとしましょう。命令の区切りとして ; を使うことにします。

 

FD 100; RT 90; FD 100; RT 90; FD 100; RT 90; FD 100;

 

という命令を書くと、四角形が描けます。

 

しかし、このように命令の羅列を見ても、何が描かれるのかは、実際にプログラムを実行してみないとわかりません。そこで、この1行が何を行なうプログラムであるかを日本語で書いて、前に // をつけておきます。こうした文をコメント文と呼びます。

 

//四角形を描く

FD 100; RT 90; FD 100; RT 90; FD 100; RT 90; FD 100; 

 

コンピュータは、//で始まるコメント文を実行するのではありません。

 

次に、三角形を描くプログラムを書いてみましょう。

 

//三角形を描く

FD 100; RT 60; FD 100; RT 60; FD 100;

 

このプログラムが正しく三角形を描くか、指令された亀になったつもりで、図形を描いてみてください。

 

プログラミングを学ぶのに役立つ本

『世界が変わるプログラム入門』

山本貴光(ちくまプリマー新書)

この本は、ゲーム作家で「哲学の劇場」も主催する山本貴光氏の著作であり、過去には馬場保二氏の共著で『ゲームの教科書』(ちくまプリマー新書)を出版しています。著者は本書の「はじめに」の中で既存の「プログラム言語の文法や使い方は教えません」と明言しており、「プログラムが作れるようになるためには、プログラム言語の文法を知っているだけでは足りません。むしろ、見通しの立て方や進め方、ものの見方が重要です」と書いています。これこそが、プログラミングをマスターする上で最も重要なことです。

 

第1章「プログラムを身につけるコツを少々」では「目標を設定しよう」がテーマで、第2章は「設計しよう-プログラムをプログラムする」が表題です。プログラムを作るための設計を、プログラムと呼んでいますが、このようなプログラムを専門的にはメタ・プログラムと呼びます。このような「メタ」な考え方は、2020年から日本で始まる次世代の教育の重要な概念です。

 

第4章「プログラムしよう」では、「まず日本語でOK」との表題が現われ、具体的にプログラムを作る作業が説明されています。そして付録にはプログラム言語ガイドとともに、この先に進むための本の紹介があり、山本氏による『デバッグではじめるCプログラミング』も含まれています。「入門」を終ったら、この本で具体的に一番標準的なプログラミング言語であるC言語でプログラムを書くことを学ぶのもよいでしょう。

 

日本語でまずプログラムを書くという開発方法は、大手の金融機関でも行なわれています。実際にコンピュータ上で動くプログラムの言語はCOBOLと呼ばれる言語ですが、その命令をまず銀行員が日本語で書き、それを「プログラマー」がCOBOLに翻訳する、という開発方式が、半世紀にわたって続けられてきているのです。

[出版社のサイトへ]

『ライト、ついてますか -問題発見の人間学』

ドナルド・C・ゴース、ジェラルド・M・ワインバーグ 木村泉:訳(共立出版)

プログラムの作成が「目標設定」から始まるが、これは言い換えれば、問題発見の過程とも言ってよいでしょう。本書の内容は、第1部「何が問題か?」、第2部「問題は何なのか?」、第3部「問題は本当のところ何か?」、第4部「それは誰の問題か?」、第5部「それはどこからきたか?」、第6部「われわれはそれをほんとうに解きたいのか?」と進みます。目標設定だけで、十分1冊の本を書く必要があるのが、プログラミングなのです。

[出版社のサイトへ]

『すべての人のためのJavaプログラミング 第2版』

立木秀樹、有賀妙子(共立出版)

現在最も広く使われているプログラミング言語のJavaを使いながら、プログラミングを深く学べる本です。私が本文で紹介したタートルグラフィックスを使って「オブジェクト指向」と呼ばれる現在の標準的なプログラミング方法を学ぶことができます。

[出版社のサイトへ]

『ソフトウェア社会のゆくえ』

玉井哲雄(岩波書店)

プログラミングの本ではありませんが、ソフトウェアと現代社会の関わりを、プログラムを産業として成り立たせる方法を研究するソフトウェア工学の立場から解説し、ソフトウェアに依存する現代社会の問題点を論じています。

[出版社のサイトへ]