俺は、電脳世界が好きなだけの一般人です
第四話 勉強会2
「特徴?」
「はい。機械学習。いわゆる、AIなら、Pythonが適していますし、Windows で動かすだけのプログラムなら、C#やVisual BASIC などの.NET Framework が適しています。Webアプリの制作を考えるのなら、Apache + MySQL+PHPが一般的でしょう。Ruby も使われています」
「おっおぉぉ」
「言語に寄っては、出来ないこともあります。例えば、PHPで、Windows プログラムを作ろうとしても”無理”です」
「そうなのか?」
「はい、ユーザインターフェースの実装が出来ないからです」
「へぇ」
「同じように、スクリプト言語は、独立したプログラムには向きませんが、Webプログラムに最適な言語だと言われています。メンテナンス性も高いですし、親和性も優れています」
「それだと、やりたいことで、プログラム言語を変えなければならないのか?」
「理想としてらそうですね。それをやりたくないから、Java をやっておけば大丈夫という風潮が出たのです」
「あぁ俺も、調べた時に、どんな環境でも動くから、Java を覚えておけば大丈夫という記述を見た」
「はい。間違いではありませんが、正しくも有りません。動きますが、使えるかどうかは別です」
「どういうことだ?」
「十倉さん。C++で作った物が、1秒で終わる物が、10秒かかっても我慢出来ますか?」
「あぁ・・・。一回ならいいが、毎回、待たされる可能性があるわけだな」
「そうです。だから、適材適所なのです。ユーザの待ち時間を少なくする方法は、各言語で備わっていますが、それは別の話です」
「そうか、やっと意味がわかった。篠崎が、言語にこだわらないでも大丈夫と言ったのだな」
「はい。なので、まずは各言語で”ほぼ”共通で使える制御命令を覚えます。それから、プログラムの考え方を勉強します」
皆が嬉しそうな顔する。
パソコンに座ってもらって、テキストエディタを起動してもらう。個人的には、素性がいいC#を覚えてもらおうと思っている。
Visual Studioは、セットアップしない。テキストエディタで、コマンドラインでコンパイルをしてもらう。学習には、インテリセンスは邪魔だ。
まずは、俺が作ったソースコードをプロジェクターに表示する。皆が見える状態になっているのを確認した。
「テキストエディタで、表示されているソースコードを写して、コンパイルを実行して、プログラムを動かして下さい」
皆が、テキストエディタに入力し始める。
コメントも書いてあるので、コメントもそのまま入力している。さて、何人が一回でコンパイルが通るか楽しみだな。
半分も通ればいいほうだろうな。今日中に全員がコンパイルまで通れば御の字かな?
コンパイルの為のスクリプトは配布してある。
学校パソコンは、全部同じ設定になっているから、問題は無いだろう。一応、コンパイルが実行されなかったら呼んで欲しいと伝えてある。構成がいじられていたり、必要ない物が入っていたり、入っているべき物が入っていない可能性だってある。
苦戦はしていないようだ。
見ながら入力すれば間違いはないと・・・。考えているだろう。そろそろ入力が終わった者がコンパイルを始めている。
パソコンからエラー音がなる。コンパイルが失敗したのだ。スクリプトには少しだけ意地悪が組み込まれている。エラーメッセージが英語で表示される。慣れてしまえば、英語を怖がる必要はないのだが、自分が書いたソースコードがうまくコンパイルが出来ていないというのは、恐怖を覚えるには十分だ。それも、プロジェクターで表示されているソースコードを写しただけだ。エラーが出るはずがないと思っている。
ちらほら、コンパイルが通った者たちが出てくる。
しかし、まだわからない。コンパイルが通れば、必ず動くわけではない。
残り時間が40分くらいになった。撤収の為に10分くらい使うから、残り30分。
コンパイルが通っていない人を中心に見て回る。
罠にハマっている。コンパイルエラーで悩んでいた人たちを見て回って、問題を洗い出す。
「コンパイルエラーになっている人は、皆が同じ問題です。日本語の入力を”オン”にしたままで、ソースコードを入力しています。あと、空白が全角のスペースになっています。空白部分は、タブキーで入力をして下さい」
最初にハマる問題だ。
コンパイルエラーになっていた人たちがソースを見始める。数分後には、コンパイルが通った者たちが出始める。
10分もすれば、全員のコンパイルが無事に終了した。
「篠崎。頼みがある」
「え?なんでしょう?」
十倉さんが頼みとは珍しい。それに、津川先生も居る。
「今日、この後の予定は?」
「何も無いですよ。あっ!」
「何かあるのか?」
「いえ、マックスバリュで牛乳を買って帰るのを思い出しただけです。146円(税別)の”大地の牛乳”は、すぐに無くなってしまうのですよ」
「おっぉ。おぉ」
「大丈夫ですよ。なかったら、明日の朝に買いに行きますから、それで、どうしました?」
「篠崎が大丈夫なら、今日の授業を延長して欲しいと思って、津川先生にお願いしたら、お前の返事次第だと言われた」
「あぁそうですか、いいですけど、無制限には延長はしないで、1時間だけの延長にしませんか?」
「わかった。今日、作った物が動くまで頼みたい」
「わかりました」
十倉さんが、ここまでのめり込むとは思っていなかった。
他のメンバーも前のめりだ。用事がある者は帰ってよいと津川先生は伝えたが、帰る者はいなかった。
やはり、半分以上がどこかに記述ミスが存在していて、結果が同じにならない。
今度は、成功した人が、失敗した人とソースコードの検証を行っている。
今度は、記述ミスを探すので、それほど難しくはない。15分もすると、全員のソースが綺麗に結果を吐き出すようになる。
「さて、まだ時間があるので、一つ提案です。今のソースは、俺が作ったものです。わかりやすいように、作成した。速度は最低の物です。多分、実際にはこの半分位の時間で結果を出せる。スレッドを使えば1/10程度にもなる」
「・・・」
「信じられないのだろうけど、ソースの書き方でそのくらいの差が産まれる。だから、結果を出すまでの時間を、20%の削減を目指して欲しい。次の課題です」
皆がお互いの顔を見る。
そうだろう。難しい課題ではあるけど、実はもうヒントは渡してある。それに気がつくかどうかだけだ。
「篠崎」
やはり、十倉さんが代表して質問してくるようだ。
「なんでしょう?」
「簡単に言うが、今からじゃ無理じゃないのか?」
「そうですね。次の特別授業の時間を使いましょう。それに、一人でやる必要はないです。それから、コンパイルのスクリプトは持って帰って下さい。パソコンにWindows10が入っていれば動くと思います」
「それは、何人かで集まってもいいのか?」
「はい。効率がいいと判断したら、チームで挑んでも構わない」
「わかった」
十倉さんが、皆を見る。
どうやら、皆が最初は単独で頑張るようだ。
あっ!そうだ。マナベさんから貰って使いみちがなかった物を提供してもいいな
「そうだ!全員が、チームで挑まないのなら、一番、早く出来た人に、1世代前のUMPCだけどプレゼントしよう。景品です」
「え?」
皆の目つきが変わる。
そして、なぜか電脳倶楽部の面々まで参加すると言い出した。ちょうど、スペックを考えると使えない。通電さえもしていない端末が4台ある。1台を、電脳倶楽部で一番早かった者への景品にして、残りの3台を勉強会に参加している人たちへの景品にする。スペックの違いがあるので、早く出来た者から選ぶことにした。
思いつきで始めた速度を競うプログラミングは、思った以上に盛り上がった。
再来週の特別授業で発表を行うことになった。