Computer

この記事は約6分で読めます。

Pythonでプログラミングしたいって、カネがほしいだけなんだろう。

そうじゃないなら証明してみな。一体きみはコンピュータの何が好きなのだ。

僕は同情しないが日本語でこうして情報発信をするだけの寛容さはある。

Hackerになりたいのならば、Pythonを教科書通りに使えるようになる前に、いろんな疑問を解決していく必要があるだろう。世の中はコンピュータにあふれている。それらが一体どうやって動いているのか直観的に理解してその概念や機構をどこまで自分の中でモノにしているか。

冷蔵庫に内蔵されたICは一体どのようなロジックが組み込まれているのか。テレビはどうか。テレビの録画機能や時計やチャンネル選択や液晶画素の制御やリモコンはどう動作しているのか。自動車のECUは一体何をどのように処理しているのか。ETCはどうか。Suicaはどうか。列車の時刻表やATCはどうか。

携帯電話とスマホの違いは? コンピュータはどのように動作しているのか? 電源を入れてからOSが利用可能になるまでどのような流れがあるのか? カーネルは何をしている? アプリケーションの各プロセスは何をしている? メモリ管理は?

How do you connect to the internet? What is the Wi-Fi standard? Did you read the RFC? How do routers and switches work? What is happening at each layer of the OSI reference model? Do you understand the packets flowing on the network after understanding the outline of L1 to L3 at least? What is the backup mechanism? What is the mechanism of redundancy? Do you understand firewalls and other network security technologies? How do you send and receive emails? Do you understand the details of SMTP and IMAP? Can you write a program to send an email to any SMTP server? How do you control the log? How are you monitoring? Are you aware of SPOF? Can you troubleshoot? Can you specifically isolate the vulnerability? Can you design the system? Can you define the requirements? What is the process to concretely incorporate the concept of catching clouds into the system? How does 3DCG work? Why does the USB device work without installing the driver? What kind of sensor is installed in the terminal you are using? What kind of trail will remain where and how if you access somewhere?

特定の言語をマスターするということは、はじめの一歩としては悪くない。でもそれは長い長い道のりのスタートにすぎない。学位にしてもそう。理論と実践が噛み合ってはじめて意味をなす。

ましてや現代のコンピュータシステムやネットワークは仮想化されており、さらにそれが多重化されて複雑になってきている。それを感覚的に把握できるか? NFVやSDNにはじまったネットワークの仮想化。XaaSという言葉を知っていてもそれを成す具体的な技術やソフトウェアの挙動をどこまで概念的に理解しているか。具体的にはどうか。どのような設定が可能で、どのような設定が不可能か。

そしてわからないことを調べるとき、どこまで情報の補完が必要な状態か。

僕がコンピュータと出会ったのは8歳のとき。最初に触ったのはN-BASIC。その後N88-BASICに触れ、マシン語に手を出した。当時はC言語に触れる環境がなかなか手に入らなかった。PC-8001でCP/Mを学ぶ本に触れたのは小学校4年生。具体的なOSの概念や発想が頭の中にでき始めたのもその頃。そして世の中には僕の知らないところでUNIXが生まれ、知っているところでMS-DOSやMacintoshが生まれた。その前提にはAltoやSmalltalkなど、パロアルトやベル研究所で生まれた様々な技術もある。CERNもある。ARPANETもある。Nifty-Serveもある。草の根BBSもある。

やがてC言語に触れ、メインフレームでFORTRANやCOBOLやVSAMデータセットに触れ、時代はフロッピーディスクやCTやCMTからDASDやハードディスク、MOやCD-ROMといった光学ディスクの時代になる。Sun MicrosystemsのSun OS、DECのVAX VMSやIRIX。これらは仕事でしか触れられない高価なものだった。1995年以降、高度なものがたくさん手元でコントロールできる時代になる。DOSやWindows 3.1はWindows 95やWindows NT(3.1, 3.51, 4.0)になり、当時使ってたAutoCADもDOS版からWindows版に切り替わった。UNIXはPC-UNIXとして個人で扱える時代になった。BSDもSystem V系もたくさん。FreeBSD、NetBSD、OpenBSD、そしてLinuxの登場。Red Hat、Yggdrasil、Slackware、Laser 5、Turbo、さまざまなディストリビューションが出ては消えていった。BeOSが現れて消えてHaikuになり、Motifを模したウインドウマネージャがXFree86で動作するようになり、やがてKDEやGNOMEが現れる。CISCとRISCのCPUの戦いが終わり、Sun SPARKやDEC AlphaやMIPSやRシリーズが消えていき、Intelが生き残り、AMDが追従し、世界は変わった。

僕はいまM1 MacBook Airでこの文章を書きながら、様々な思いを馳せる。

はじめてコンピュータに触れたとき、NECのグリーンディスプレイ上に表示されたグリーンのカーソルが点滅する様子をみて、僕はその先に拡がる世界に心を持っていかれた。

NEC PC-8001 BASIC Ver 1.1
Copyright 1979 (C) by Microsoft
OK

いまでもこのワクワクは忘れられない。グリーンディスプレイは今また手に入れたい。

コメント