ソフトウェア・エンジニアへの道(その 4)- アッセンブラ編

さてSIを始めたセメスター、自分の履修したクラスはというと、、ガッツリとコンピューターのクラスばかり取りました。C++の中級クラス、VB.NETのクラス、そしてコンピューターアーキテクチャーのクラス。留学生は最低12ユニットをキープしなければならず、それ以下ですと不法滞在扱いになってしまいます。その時の自分には、12ユニット以上取れる時間の余裕もお金の余裕もありませんでした。特にSIの仕事を始めるという事で、仕事と学業のバランスに不安もあり、なるべく12ギリギリ、しかもなるべく楽なクラスのみ、つまりはコンピューターのクラス、という感じで沢山取る事になりました。

C++中級クラスの先生はMr. ジェフ・ケント。実はケント氏、初級クラスの講師だったMrs. シュナイダーの旦那様です。奥様の淡々とした授業からは想像もつかないような、ジョークに溢れた授業で、CSの中ではとても人気がある先生でした。講義に集中のセフィアニ氏とも対照的で、ケント氏は生徒一人一人の名前を全部覚え、人情のある先生。最初のラボの時間、Mrs.シュナイダーが帰りがてら、夫のクラスに立ち寄りました。私にも当然気が付いてくれて「そうそう、Kaoriはここにいるのよね!」と嬉しそうに話してくれました。Kent氏も、「ふむ、、君が良い生徒という話は聞いているよ。」とつぶやいた。夫婦で生徒の情報交換もちゃんとしているようで、良い評価で良かった(笑)。

ちなみにこの中級コース、確か殆ど配列の事しかやらなかった気がします。。初級では本当に基礎、変数やら条件分岐やらループやら。上級?でポインタとかオブジェクト指向について。なので中級で配列以外になにを学んだのか、あまり覚えがない。。w とにかく進みが異常に遅い。普通のプログラミング教室なら、こんな事全て遅くても3か月でカバーしてしまう事でしょう。。でも自分はやはり言葉の壁がある事と、他のクラスの難易度との兼ね合いで、CSが超余裕で付いて行けるものである事に救われていました。

VB.NETのクラスもMr. Kentのクラスでした。「私と複数のクラスで対面したいなんて君も物好きだ」と軽くいじられましたw もうVBのクラスは本当に、スイマセン、ステータスキープの為に取ったみたいなものです。もともとVBAをやっていたので、構文にも、イベント・ドリブンな世界にも、慣れっこでした。多少これで.NETの世界に足を踏み入れたのかな?それだけが新しい事でした。

そして特別だったのはコンピューター・アーキテクチャーのクラス、、詰まるところのアッセンブラのクラス。これが本当に、目からウロコでした。。講師のゲーリー・ミロア、、この方はまた本当に頭の良い先生で。非常勤講師で、週に一、二回教壇に立ち、普段はボーイングで働いている人です。なので、リアルな現場の厳しさ的なものもちょこちょこ教えてくれる先生でした。

しかし、、最初、さっっぱりわからなかったし付いて行けなかった。。初回の授業、これから期末試験までウン週間、週に一回の授業で、半分は講義、半分は課題をやる。テストと課題の提出で成績は決まると。で最初の講義をして、最初の課題のプリントが配られたのですが。。意味がわからない。。何をしたらいいのかわからない。。xxしてアウトプットされた結果を記録しなさい、みたいな事が書いてあるんだけど、何をどうすればその値が出るのかよくわからない。周りを見ると、さっさと帰宅し始めてる人もいる。しかし実は自分はその時、これが成績に関わる課題だという事を理解しておらず、単なる参考問題なのだと思っていた、だって皆帰るから(笑)。なので自分も訳も分からず、課題をせずに帰った気がする。ちなみ課題は、レジスタの値を書くような感じだったと思う。

そして二回目の授業、確か2進数、16進数の演算や変換をやったと思う。でも2進数、16進数自体は何となくわかっていたのだが、足し算引き算の方法(ひっ算みたいなの)を見せられて、それを2進数や10進数にするのを見せられて、全く経験のなかった自分は、正直何をしているのか、なぜそういう結果になるのか、何のためにやっているのか、わからなかった。。 因みにミロア氏の計算んもめちゃくちゃ速い、というか、彼自身頭の良いせいか、「これだからこうなって~」の、「だから」の関係性が凡人には分からなかったりするw 「質問は」と一応要所要所で聞いてはくれるんだけど、わからなさ過ぎて何を聞いてよいのかわからないw そして2回目のラボの時間。。この日は皆帰らずに出された問題をやっていた。全員静か~にプリントの問題に集中している。先生は「質問があったら前に来て聞いてね」と、前で黙って本を読んでる。私は本当に焦りました。もう授業も二週目だというのに、この理解していない感じが半端ない、恐ろしい。。周りの皆は着々と問題を解いている。。やばい、どうしよう、こんな経験は学校入って以来初めて。

とりあえず完全に間違っているという事だけはわかっている自分の回答を書いて、しーんと静まる教室の中、意を決して先生の所に向かいました。質問しに来てるのは本当に自分だけです。「すいません、、全く分かりません。。」と言うとミロア氏は非常に楽しそうに「何だって!全く分からないって?そりゃ大変だねぇ~!」と私のプリントを奪ってニヤニヤ眺めました。すると「何々?なるほど、いや殆ど出来てるじゃないか、この最初の0二つが要らないだけだよ」みたいな事を言われ、その瞬間私の頭の中で、まるでヘレン・ケラーのウォーターの如く(笑)、全てのピースが繋がったのでした!「なるほど!そういう事ですね!!」と私も大喜び。そして席に戻ろうと振り返ると、なんと私の後ろに長蛇の列が(笑)。何よ何よ、皆もわかってなかったんじゃーーん!!と、非常にホッとしました(笑)。

それからのアッセンブラの授業は、簡単ではなかったとは言え、全部理解していきました。段々、こういうプログラムを書きなさい、みたいな課題がでるようになり、難易度は上がって行ったものの、そのアッセンブラの限られたリソースの中でどのように解決していくか、というギリギリのチャレンジみたいなものが、面白かった。

ある時また課題の時間に先生に質問したかったのだけど、沢山生徒が並んでいたので順番待ちをしていました。私が授業中質問している様子などから、多分この人は分かっていると思われたのか、同じく順番待ちをしている他の生徒から私に質問されました。なのでホワイトボードの上に、実際にどうやったらできるのか、アッセンブラのコードを何行か書きながら一緒に考えてみました。「こうしてこうなって~、、」みたいに書いてたら、後ろから視線を感じる。。ㇵッとして振り返ると、またミロア氏がいつものニヤニヤ顔でうちらの作業をじっと眺めていたのでした。そこで私が手を止めたので「いいじゃない、続けてよ~」って言われまして、なのでちょっと緊張しながら続け、「ここでカーソルが一個進んでしまうからバックスペースを入れて戻して、、」って言ったとこでミロア氏の顔を見て「ですよね??こうしないとダメですよね??」って確認したら、またニヤニヤ顔で「君がそうだと言うんだから、そうでしょう?」などと返された。つまり合っているという事です(笑)。でもなんかちょっとこの信頼されている感じの物言い、悪い気はしませんでしたw

期末テストの日、学んだことの集大成のような課題が出されました。実際に実行するのではなく、紙に書いて提出せねばなりませんでした。急いだわけでは全く無いのですが、一応何度も見返した後も、まだ他に誰も終わっていないようで、結果自分が一番に提出しに行くこととなりました。「おー、終わったのか、どれどれ~」と言いながら、最初の提出だったので、私のアッセンブラ・コードをじっくり読み始めました。この方、手書きのアッセンブラをこうやって頭の中で実行できちゃうのが本当に凄い。私も横に立って、先生の目線と同じ感じで自分のコードを追っていました。そしてこれはほぼ同時でした、私が、あ、、やば、これ、ここ動かんやん!と気が付いたのと、ミロア氏が「ん~~!?」とニヤリと声を上げたのが(笑)。自分、「あ~~!」と先生からプリントを奪い返そうとしましたが「へへへ~、もう遅いよ~」とまるでいじめっ子が物を返してくれないかの如く、完全にガードされました(注:当然の事ですw)。がっくり。。最後にやらかしてしまった。悔しい限りでした。。

しかし、成績はめでたくAを頂きましたw このクラスのAは本当に嬉しいAでございました。なるほど、CPUというのはこうやって作業しているのかと、本当に表面をかすっただけとは思いますが、非常に納得できて為になったクラスでした。何よりミロア氏と出会えたのが衝撃でした。なるほどエンジニアとはこういうものか、というのがチラっと見えた気がしました。あ、一番最初のすっぽかした課題、4週目くらいに気が付いて、そしてようやく意味がわかり、無事提出いたしましたw



































Javaとは言っても、最初は

この記事が気に入ったらサポートをしてみませんか?