大学生の時に、先輩が使わないパソコンを譲り受けて、そのままずっと使い続けていました。
大学にもコンピュータはあったのですが、大型計算機(TSS)でしたので、自由に使えることもなく、もっぱら下宿のパソコンで、バイト先の塾の生徒の成績管理をしたり、実験レポートの考察に、(不要にも関わらず)シミュレーションの計算結果を付けたりしていました。
思えば、あの頃から、私は「いらんこと」を時間をかけてやる、という性格だったように思います。
-----
今になって思えば、私の母校はコンピュータリテラシに関して、「完全に遅れていた」と思うのです。
私の知る限り、大学の研究室にはUNIXを使えるワークステーションというものがなかったですし、コンピュータ同士を繋ぐLANという観念もなく、また、海外とメールで通信するという考え方自身がありませんでした。
会社に入社してから、OSの概念が分からず、プロセスやマルチタスクの意味が全然分からずに、酷く恥をかいたという記憶があります。
「大学のレベル」というものを思い知った、数少ない事例の一つです。
-----
しかし、私自身は、プログラミング言語の取得は早い方だったと思います。休日出社して、教本の例題プログラムを、全部手入力するという、プリミティブな方法で、覚えていきました。
終日、例題プログラムを、入力し続ければ、大体理解できたと思います。同じ言語でも「英語」とは雲泥の差です。
米国赴任中は、仕事のほぼ100%がプログラムを作る仕事(コーディング)をしており、さらに就業後に趣味のソフトウェアを作っており、さらに自宅で、別のプログラムを作っていた ―― という、まあ、「好き」だったのでしょう。
何百行ものプログラムリストの中に、一つでも間違いがあると、うんともすんとも言わない。
この明快なルールは、努力とか、能力とか、経験とか、感情とか、思い込みとか、そういうものを完全無欠なまでに無視してしまう、冷徹なまでの美しさがあると感じます。
それはさておき。
-----
先日、「コーディングが好きではない」という後輩の話を聞いて、どうアドバイスして良いか、悩んでいます。
私たちは、システムのエンジニアであり、また、研究員ですので、プログラミングの能力、そのものは、原則として問われません。
それは、木材の性質や、鉄鋼の経年劣化については、大工や施工担当者は理解する必要がありますが、建築士や設計者は必ずしも知っている必要がないことと同じです。
また、当然のことながら「プログラムレス」の方向に技術は進みつつあり、コーディングなどという、かったるいことからエンジニアを開放する方向そのものは、「正解」だとは思うのです。
また、今や、メモリが潤沢に使えて、メモリリークをガーベージコレクションが片付けてくれる、この時代にあって、C言語や勿論、マシン語やアセンブリ言語なんぞを、覚える必要が、どこにある? ―― と思うのが自然です。
私が入社した時代にあっても、上長から「マシン語でプログラムを組めない奴に、システムが理解できるか」と、言われて、鬱陶しかったこと、この上もありませんでした。
私は、あの時誓ったのです。
「後輩に対して、自分の時代の技術を強要するような、古いタイプの上長になるまい」 ―― と。
だから今、私は、自縄自縛の不安の中にいます。
-----
コンピュータのアーキテクチャから完全に分離されたプログラム言語や、あるいは、生涯コーディングをしないこと ―― って、本当に大丈夫なのか、と。
システムを破壊するもっとも簡単な方法は、コンピュータアーキテクチャを理解して、その弱点を攻撃することです。
私はOSの研究員ではありませんが、それでも、十分な時間を貰えれば、システムをOSレベルで壊滅するプログラムを作ることは、多分可能だろう、と考えています。
比して、システムを防衛する側のリテラシーが低下していけば、サイバー攻撃に対抗できないシステムが、山のようにできてしまうのではないか、と、とても心配です。
あるいは、そのようなサイバー戦争に関することは、国家の機関に任せて、「私たちは知らんよー」、と。
―― という訳には、やっぱり、いかんよなー。
私たちは、お客様にシステムを収めさせて頂き、お金を貰っている製造業者(メーカ)なのですから。
-----
この件については、やっぱり良く分かりません。
ただ、「英語に愛されないエンジニア」が、英語で苦労することは、仕方がないとしても、
「プログラムに愛されないエンジニア」が、プログラムで苦労することが、同様に「仕方ない」と言えるかどうか、今の私には判断できないのです。