トップ » バックナンバー » Vol.18 » 学生さんとKCGのコンピュータ

Accumu Vol.18

学生さんとKCGのコンピュータ

京都コンピュータ学院講師 木村 聡

実習環境の変化

私がKCGを卒業後,非常勤講師として教壇に立つことになりましたのは,1984年のこと。あれから25年が過ぎ,一人前なのは教壇に立った年数だけという,今となっては,己が浅慮の程に呆れ返るばかりの体たらくです。とは言え,たくさんの学生諸君を見てきたことは確かです。この間,学生諸君の気質も変わってきたように思えるのは,むしろ自然なことなのかもしれません。

無論,変化ということでしたら,学生諸君の気質よりも学生諸君を取り巻く環境の方に,より大きなものがあります。むしろ,そうした環境の変化に合わせて,学生諸君の気質も変わってきていると言えましょう。コンピュータとそれを学ぶ者の環境の変化には激変という言葉を当てるのも大袈裟ではなく,その激しい変化が他に与える影響も甚大なものがあります。僅か20年前を思い起こせば,これからの20年の困難さを想うこともできましょう。オヤジの思い出話などつまらぬものと相場は決まっていますが,私に判る範囲でのKCGとその学生諸君の変化というものについてお話ししてみたいと思います。尤も,この20年ばかり,プログラミング関連の講座を中心に担当してきたこともあり,話題がプログラミング関連ばかりとなってしまうことについては,どうぞ,ご容赦ください。

今は昔……

私がKCGの学生であった頃,コンピュータは,「計算機室」という特別な部屋に鎮座しているものでありました。私のいた浄土寺校舎では,リモートバッチと呼ばれる方法で,百万遍校舎に設置されていた汎用機を利用していました。プログラムの入力に紙のパンチカードを使う方式でしたので,実習室には紙カードパンチャという,キーボードと穿孔機が一体になった,かなり物々しい印象を与える機械が並んでいました。学生がカードパンチャを長時間占有せずに済むよう,1回生前期にタイプ実習が必修科目でした。私も,ご多分に漏れず,このタイプ実習のおかげで,タッチタイピングを,所詮,初心者レベルではありますが,習得できたわけです。この辺りからして既に今の学生諸君とは全く事情が違っており,私たちの世代では,新入生を除けば,一文字一文字探しながら一所懸命にキーを叩く姿は,実はサボりの証になってしまうものだったのです。また,紙カードは,1枚がプログラム1行に相当し,しかもその1枚が2円もしましたから,景気よくミスタッチするわけにもいきません。

そんな風に集中力と注意力を削りつつ作成した紙カードの束を実習室の受付に提出しておくと,日に数回,決まった時間にバッチ処理を行い,コンパイルと実行の結果をプリントアウトしたもの(「リスト」と呼んでいました)を受け取れるようになっていました。つまり,一日にコンパイルできる回数が決まっていたわけです。通常,一日に3回のコンパイルが可能でした。尤も,実習室に入り浸っていると,オペレータ(KCGの学生アルバイト)が気を利かせてくれて,早めに処理結果を渡してくれたりするのですが,それでも,一日に5回程度まで。自然,リストを睨んでのプログラム修正には気合が入ります。でなければ,レポート課題の提出に間に合いませんし,紙カードを浪費しては懐もお寒くなってしまいます。コンパイルの機会が限られているため,コンピュータがどうプログラムをコンパイルし実行するのかをリストを見ながら想像する,所謂机上デバッグ,つまり,コンピュータを使わない(!)デバッグの時間が長くなります。私たちの世代は,こういう訓練を経ていると言えましょう。

また,当時,浄土寺校舎計算機室の学生アルバイトは,プログラムの受け付けとリモートバッチ用マシンの操作以外に,他の学生諸君のデバッグ相談をも受け付けていました。他人の書いたコードを読み,コンピュータ無しでデバッグし,しかも,それをほとんど数分でこなすということは,たとえ対象のコードが簡単なものであっても容易なことではありません。こうしたことは計算機室アルバイトで典型的だったと思いますが,何もそれに限ったものではありませんでしたから,当時の学生諸君には,こんな訓練まで積んでいた向きも少なくないわけです。

パーソナル化する環境

浄土寺校舎に東芝のPASOPIAという,8ビットCPUを搭載したマイコン(当時は,「パーソナルコンピュータ」や「パソコン」という言葉は無く,「マイクロコンピュータ」,あるいは,それに「マイコンピュータ」をかけた言葉とされる「マイコン」しかありませんでした)が入ってきたのは,私が2回生の時。その後,浄土寺校舎では,カードパンチャを,PASOPIA上で作成したプログラムリストのパンチングを行えるように改造しました。これで,紙カードの無駄は減り,プログラム作成の効率も向上したのですが,コンパイル回数は相変わらずです。しかし,PASOPIAが入ったことにより,利用できる計算機が百万遍校舎の汎用機だけではなくなったのは大きな変化でした。プログラムを入力したその場で,実行結果を確認できるようになったのです。計算機としての能力は,PASOPIAと百万遍の汎用機とでは比べものになりませんが,逆に,学生にとっての身近さも比べ物になりません。PASOPIA用のプリンタが設置されると,PASOPIAを用いての課題も出題されるようになり,巨大な汎用機の利用機会は着実に減っていくことになります。

その後,MS-DOSやWindowsを搭載したNECのPC-9800シリーズや富士通のFMシリーズの導入,また,学生全員が東芝のDynabookを持つなど,実習環境のパーソナル化は止まることがありませんでした。これに伴い,タイプ実習は無くなり,リモートバッチによる汎用機の利用機会も無くなっていきます。その一方,ワードプロセッサや表計算といった,一般的なアプリケーションソフトウェアの利用を眼目とした諸講座も開講されるようになります。プログラミング言語の講座では,Cに中心が移り,Visual Basicも注目を集めるようになり,FORTRANやPL/Iなどのかつての主力言語は,COBOLを除き,消えていきます。現在の主力言語は,JavaとC++でしょうか。個人的に残念に思うのは,アセンブリ言語の講座が,ほとんど消滅してしまったことです。私見では,プロセッサや特にメモリを,全く意識せずにプログラムを書けるほどには,プログラミングの世界は進歩していません。フォン・ノイマン型計算機を使うプログラマを養成するという意味で,アセンブリ言語の講座はあって然るべきと思っています(尤も,原理を理解すれば充分とも思いますので,ターゲットマシンは,COMET IIでも構わないでしょう)。

プログラミング言語一覧
FORTRAN
 FORmula TRANslation。最初の高水準言語。科学技術計算に向く。
COBOL
 COmmon Business Oriented Language。事務処理計算に向く。今なお,広く使われている。
PL/I
 Programming Language 1 (One)。Iはローマ数字。先行するFORTRANやCOBOLなどの長所を取り入れた。大きくなりすぎた言語仕様が,普及を阻んだとされる。聞くところによると,IBMの社内モジュールは,一時期,PL/Iで書くものだったとか。
C
 OS記述言語として誕生。低水準処理が可能。おそらく,最も広く普及した言語。私見では,「実用一点張り」で「何でもあり」な性格を持つ。
C++
 Cにオブジェクト指向プログラミング用の機能を付加したものとして誕生。元はCのスーパーセッションであったためか,C/C++と併称されることも少なくない。
Java
 C++の後継言語の一つ。"Write once, run anywhere"が謳い文句。実行環境は,Java仮想マシン。
Visual Basic
 Microsoft Windows用アプリケーションを素早く作成できることで人気を集めた。RAD(Rapid Application Development)ツールの草分け的存在でもある

便利になったはずなのに

現在,インターネットの普及とパーソナルコンピュータの著しい性能向上もあり,一般社会におけるコンピュータのイメージは,「使えて当然」の,色々と便利なことが「簡単にできる」機械というものになっているかと思います。また,所望の処理結果が迅速に得られるものでもありましょう。そんな中,コンピュータプログラマの仕事の一般的なイメージが,空調の利いた部屋で最新鋭の綺麗な機械に囲まれ,コンピュータを前にひたすらキーボードを叩き続けたりマウスを操作するなどという,ちょっと古い言葉かもしれませんが「ハイテク」を駆使するもののようになってはいないでしょうか。ここ10年ほどの学生諸君を見ていると,どうもそんな気がしてなりません。

近頃の学生諸君の中には,コンピュータプログラムを作成するときでも,例えばMicrosoft Visual Studio のエディタ画面と,ずっと睨めっこしている人がいたりします。しかし,コンピュータは「さあ,何をしましょうか?」と待っているだけで,問題の解決法を提示してはくれません。第一,プログラマが何に悩んでいるかを理解してくれたりはしないのです。

プログラミング上で行き詰まることがあった場合,私なら,図やら表やらを紙にかく(描く,または,書く)でしょう。取り敢えず,手を動かせというわけです(その目的は,勿論,問題の整理や視野狭窄の回避などにあります。決して,根性論を振り回しているのではありません)。ところが,少なからぬ学生諸君が,まるで手を動かそうとはしません。真っ白なテキストエディタの画面を前に,腕を組み,眉間に皺を寄せて……。プログラムを作成するのに,紙や鉛筆は有害とでも思っているのでしょうか。Wikipedia によれば,かのダイクストラ大先生(Edsger Wybe Dijkstra, 1930~2002)は,自分用のコンピュータを持ったことが無く,更に,コンピュータ自体,滅多に使わなかったというではありませんか。限界というものは当然にありますが,昔の学生がやっていたように,コンピュータが無くてもプログラムは作れますし,デバッグだってできるのです。勿論,紙にこだわる必要は微塵も無く,今はコンピュータで手軽に絵でも字でもかけるのですから,代わりにコンピュータを使えばよろしい。いや,コンピュータでなくても,使えるものは何でも使えばいいのです。ところが,それもしない。

コンピュータに頼り過ぎると……

一つには,コンピュータに頼り過ぎているということでしょう。極言すれば,KCGに入学するまでの学生諸君の多くは,コンピュータを使うとき,ここをクリックするとこんなことができますよ,ここに何か入力することでそれに関連する情報を得られますよというような,言わばコンピュータからの指示に従って使ってきたことでしょう。こうしたエンドユーザとコンピュータとのごく初歩的な関係は,プログラマとコンピュータとの関係とは逆です。プログラマがコンピュータに対して指示を出すのです。コンピュータプログラムを作ろうというほどの者が,コンピュータに頼り切ってどうします?

昔の学生諸君の方がよく勉強したものだとは言いません。そんなことは,断じてありません。ただ,便利になった分,忘れていることがあると思うのです。例えば,KCGでは,授業資料の多くをネットワーク上から参照できるようになっています。教科書の無い講座も少なからずありますから,学生諸君にとっては,非常に便利になったはずなのですが,一方で,授業時間内にノートをとる学生諸君を,ほとんど見なくなりました。授業資料をプロジェクタで映写できるので,板書の機会が大幅に減ったせいかもしれません。あるいは,ひょっとして,学生諸君からすれば,講座担当者がノートも作ってくれているという感覚なのでしょうか。

また,いつでも参照できるとなると,結局,何時まで経っても参照しないという現実もあります。ある講座で,学期末も間近という時期になって,授業資料は学内ネットワークにアップロード済みか?と訊いてきた学生さんがありました。学内ネットワークなので,そんなことは訊くほどのことではありません。不思議に思いましたが,毎回,講義開始前にアップロードしてきた旨伝えますと,「そうだったんですか,見に行ったことありません」。さすがに,これは少々極端な例でしょうけれども,便利さに溺れると,ろくなことはありません。最悪なパターンを考えてみましょう。ノートはとらない,教科書はあっても読まない,プログラムも読まないし,勿論,書きもしない。課題が出たら,ネットで検索すればいいんだ。どこかに答えが載ってるさ。先生には訊かないのかって?だめだめ,先生は,答えを教えてくれないからね……。既に,あちこちに転がっていそうな「最悪」ではありませんか?

学生のうちに,たくさん「失敗」しておこう

学生諸君を取り巻く環境の変化によって,学生諸君の勉強方法も随分と変わり,恐らくそれにつれて,学生諸君の意識も変わってきました。少なくとも,学生諸君の興味の対象は,かつてのそれに比べ,遥かに多様なものになりました。変わらないことは無いのでは?と思えるほどですが,変わらないものも,やはりあると思えます。

教員という立場から学生諸君を見ると,概ね,学生諸君は勉強しないものと相場は決まっています。それは,私の先生方から,先生方ご自身がそうであったと述懐されるのを一度ならず聞いていますし,私自身の学生としての経験からもそう思います。勿論,私の場合は,先生方とはまったく次元が異なり,枕に「恥ずかしながら」という言葉が付くわけですが。ただ,一口に「勉強しない」と言っても,そこはそれ,色々とあるわけなのです。

私の見るところでも,どんな学生も,概ね,勉強はしないものです。しかし,そんな学生諸君も,実は,教員の知らないところで何かしら勉強しているものです。つまり,必ずしも,教員が望むようには勉強しないが,何かをやってはいるのです。これは非常に大切なことで,誰しもが言う「学生時分はやりたいことをやるのが良い」の真髄なのかもしれません。学校や教員は,これを邪魔することのないよう,むしろ積極的にサポートしたいものです(尤も,言うは易く行うは難き事柄でもありましょうが)。

一方で,そういう勉強すらしない学生諸君も,遺憾ながら,少なくはないように感じています。そうした諸君は,本当に何もしないようです。確かに,KCGで扱う事柄は,当然とはいえ難しいものが多く,おまけにコンピュータの頑固さときたら人間の比ではありませんから,やる気の一つや二つ削がれるよと言われると,それもそうかと思ってしまわないでもありません。しかし,難しいからこそ給料にもなるのですから,そんなことでは駄目だと叱咤することになります。せめて,学校で扱う程度のことはやっておきなさいという,決まり文句の繰り返しになるわけです。実のところ,この辺りは,昔も今も,さして変わりの無いところでしょう。

なお,誤解の無いように申し添えておきます。与えられたカリキュラムを高精度でこなす「だけ」の,「優等生タイプ」とでも言うのでしょうか,そんな学生さんもいるのかもしれません。しかし,幸い,私が担当した学生諸君には,このような例として思い当たる人はいません。私の知る限りで,特別に「優秀な」と冠を付けられるほどの学生諸君は,様々に悩みながらも,やりたいことをやりつつ,かつ,成績優秀でありました。これは,学生諸君のKCGにおける目標を考えれば,頷けるものがありましょう。

練習と技術

KCGにおいて私が関わっているのは,主にプログラミングの技術教育です。技術というものは,練習して身に付けるものと,私は考えます。猛烈に勉強して,いくら知識を蓄えたところで,技術が身に付くかと言えば,そうではありません。そういう意味では,スポーツと同じです。やり方を教わって,練習して,初めてできるようになる。高いパフォーマンスを要求されるほど,たくさんの練習を積まねばなりません。また,スポーツでも,何もかもが解っているわけではありません。常に,より高いパフォーマンスを実現するため,様々な研究が続けられています。

プログラミングも,少し勉強してみれば,実際上は勿論のこと,理論上も多くの未解決問題があることに気付きます。プログラミングパラダイム,システムの開発とテストの手法などなど。通信理論やアルゴリズムの世界でもそうです。現在解っている理屈だけでは手が届かない様々な難問が,我々技術者の前に立ち塞がっています。そうした難問に,技術は,必ずしも最適解ではないにせよ,何らかの解を与えようとするのです。これが,容易なはずはありません。勿論,技術と理論は,互いに独立してあるものではなく,表裏一体を成すものです。しかし,現実に,技術が先行し理論が後追いとなることすらあり,理論を学ぶことは技術の基礎でもあるのですが,それだけでは,技術を身に付けることはできません。プログラミングの技術とスポーツの技術と,いずれも,上達するには相応の練習を積まねばならないことは確かです。

気になるのは,この「練習」を厭う傾向が,意外に強いことです。いや,練習した割には上手くいかないこと,つまりは,「失敗」を厭う傾向が強いように思います。学生諸君の,昔と今を比べるなら,結局のところ,この失敗への恐怖感の大小という点で違いがあるのではないかと,私は感じています。環境がより便利になったためか,失敗するということを,非常に恥ずかしいことのように,学生諸君は感じているのではないでしょうか。どうせ失敗するからやらない。どうすれば上手く行くかわからないからやらない。これでは,本末転倒です。できると判っていることができたところで,何が楽しいでしょう。実際,少しでも上手くいかないと,すぐに,これは自分に向いていないなどと言い出します。また,自分のやろうとしていることが,実は少し難しいと聞くと,さっさと諦めてしまいます。

そもそも,初めから上手くいくことなど,ほとんどありはしません。私が学生諸君のために書くサンプルプログラムですら,いきなりすらすら動いてくれたりはしません。あからさまなバグの原因を突き止められず,睡眠時間を削ってしまうことだってあります。教員ですら,そんな失敗を積み重ねて授業資料等を作り上げているのです。ですから,学生諸君にとって,失敗することなど当たり前であって,何ら恥じることはありません。むしろ,失敗を糧としないことを恥じるべきなのです。

学生のうちなら,学習上の失敗をいくらやらかしたところで,それは,当然であり,かつ,良い学習の機会でもあります。コンピュータを「使い過ぎて」壊したなら,むしろ,立派と言えるでしょう。極端な例かもしれませんが,卒業生の中には,実習用の大型汎用機を,リモートでデッドロックに陥れ,始末書を書いた人だっています。就職してから同じことをすれば,始末書一枚で済むような話ではありません。無論,失敗したのですから,そこに認識不足なり何なりがあったことになりますが,一方で,それだけの失敗をやらかせるほどの研究と練習を積んでいたことにもなります。彼は,就職後,会社が何としてでも手放さないほどの,優れた技術者になりました。

未形に覩る ― 行き着くところは,想像力

「智者は未形に覩(み)る」。宮城谷昌光氏の『楽毅』を読んでいて,こんな言葉にぶつかりました。少し調べてみたところ,『史記』の「趙世家」に件の記事はありました。時は,中国の戦国時代末期。孟嘗君が活躍し,「魁より始めよ」の言葉が生まれた頃のこと。「胡服騎射」と呼ばれる軍制改革を断行しようとする趙の武霊王を,肥義という重臣が励ました言葉です。

智者は,未だ形を成していないものをありありと見ることができる。この「智者」は,様々な「者」に置き換えられるでしょう。勿論,「技術者」にも。技術者に求められるのは,正にこうした想像力なのです。ただの思いつきに止まらない,完成に至るまでの旺盛な想像力。そんな想像力は,一朝一夕に身に付くものではありません。自由な発想とそれを支える広範な知識や教養,そしてそれを実現させるほどの技術力を要求するものであり,そのいずれもが,非常に高いハードルです。「一生,勉強」は,さして大げさな表現ではないと言えましょう。

昔も今も,学生諸君は,想像力を働かせるための練習を積まねばなりません。このことは,変わりようも無いでしょう。想像力の貧困は,即ち,技術力の貧困なのです。

この著者の他の記事を読む
木村 聡
Satoshi Kimura
  • 1984年,KCG情報処理科卒業
  • 同年9月からKCGの非常勤講師になり現在に至る
  • 担当講義はプログラミングが中心
  • 1993年には京都府立大学文学部史学科を卒業

上記の肩書・経歴等はアキューム18号発刊当時のものです。