はてなキーワード: バイナリコードとは
情報科の増田さんが何かと話題になっていますが、専門を同じとする学徒のひとりとして、僭越ながら2冊ほど本を紹介したいと思います。
本で勉強をするのが辛いという方に本を紹介するのも変な話であります。しかしながら、いずれの本も手を動かしながら学ぶというスタイルをとっており、情報科の増田さんにとって有益なのではないだろうかと思います。
つまるところ、読んでわからないなら創ってみればいいじゃないという提案をしたいと思います。もちろん全く読まずにいると手を動かしようもないのですが、ある程度読んでわからなくなったら取り敢えず創ってみるという選択肢があると勉強が捗るのではないでしょうか。
とにかく何か創れというのも抽象的でありますから、そんな精神を全面に出している本をご紹介させて頂くことにしました。
どちらの本もOSより下の階層の内容に関することが含まれています。ある意味で定番な本でありますから既にご存知かもしれません。
CPUの創り方
黒いゲジゲジさんや抵抗、コンデンサーなどを使って、CPUを作成します。本書ではハンダ付けで組み立ていますが、ブレットボードでもCPUを組み立てることができます。
「CPUを創る」こんなパワーワードが他にあるでしょうか。合コンで「おれはCPUを創ったんだぜ」なんて言えば、伝説になれるかもしれません。私は常日頃からこのパワーワードを発射する機会を探っているのですが、未だそのような機会に恵まれておりませんし、これからもあるとも思えません。情報科の増田さんに限らずはてなーの皆様に於かれましては合コンにおける効果の是非を試していただきたく存じます。
CPUはコンピュータの中核を担う大切な要素であり、その役割は与えられたプログラムを実行するというものです。プログラムだかなんだか難しそうですが、この本におけるプログラムはそんなに大層なものではありません。単なるスイッチの組み合わせです。
要するにこの本ではたくさんのスイッチの切り替えにより、色々な挙動を示す何かを作ります。
そんな機械のどこがCPUなのだと思うかもしれません。しかし、そのスイッチのパターンこそ当に我々がプログラムと読んでいるものであり、そのスイッチに従って所定の動作をするというのはCPUの役割そのものなのです。
ディップスイッチで表現した0と1のプログラムが特定の意味を持ち、それにより特定の動作が実際に実行されるというのを見ると心を大きく揺さぶられるはずです。
たぶん…。
ただ、忘れていけないのがお金の話。
私はブレットボードやその配線キッドといった商品も合わせて購入したので、本の内容を試すためには2万円ほどのお金を費やしました。(ちなみに部品リストは本書に書かれていません。しかし、Googleで本のタイトルや「TD4」などの言葉を検索すると沢山の情報が出てきます。)
テスターも良いのを揃えたいなんて欲望を持つと合計で数万ほど飛びます。
もし部品を揃えようと思ったならば、ネットを使って集めるというのが確実な方法です。ですが、秋葉原まで出向いて揃えるのもいいかもしれません。秋葉原を歩きまわり9種類のゲジゲジや各種部品を集めていると、玄人っぽい雰囲気を醸しだすことが出来るので個人的にはオススメです。
この本において作成するCPUは、知らない人からみるとなんかLEDがピカピカ光っている機械でしかありません。電卓のように大層な機能があるわけでもなく、せいぜいがラーメンタイマーであります。正直なところ、数万円かけて電卓にも負けるようなCPUを創ってどうするのかと言われると返答に窮します。ですが、知識を得るための勉強代と思うと安いのではないかなと思います。
この本では文字で書かれたプログラムが、現実世界に影響をおよぼすという一連の流れを手を動かしながら学ぶことが出来ます。前の本と異なり、ソフトウェア(*1)上でコンピューターを作るという形になります。制作場所が画面の外側ではなく内側であるという違いこそありますが、基本素子からコンピュータを組み立てていくことには変わりないので参考になるかと思います。
本書は大きく2部に別れています。1部目でバイナリコード(0と1のプログラム)を実行できるコンピューターを作ります。2部目で本書で提供されるJack言語(いわゆる我々の考えるプログラム言語)をバイナリコードに変換するためのコンパイラを作り、さらにJack言語でOSを作ります。
最後に、OSをコンパイラに通してコンピューターに読み込ませて簡単なゲームを動かしてみようというものです。
この壮大な内容が1冊の本にまとまっています。シンプルにまとまっている反面、ややもすると説明不足だと思うかもしれません。
そんなとき、オンライン上でビデオ講義を無料にて受講することができます。(ただし、現時点で公開されているのは1部目の内容だけです。)
https://www.coursera.org/learn/build-a-computer/
ただ、注意点があるとすれば言語が英語しかないということです。私は英語苦手マンなのでスライドの図に全神経を集中させています。それだけでも、意外なほど言っている内容を推測することが出来ます。
さらにこのビデオ講座を図書館で受講することで、周囲に威圧感を与えることができます。
この2冊の本はどちらも10年以上前に書かれた本です。古臭いとか思うかもしれません。けれども、書かれているコンピューターの基本的な考えや構成は今もなお現役です。言い換えると、その長い時を超えても不変である根本の知識が記されています。
それでは、情報科の増田さんにとって今後の方針の参考になれば幸いです。
ここまでダラダラと書いて今更なのですが、はてなという戦場においてこのような上から目線のアドバイスを書くことに、若干の恐怖を抱いております。情報科の増田さん、CPU警察さんおよび、コンピューター警察さんの皆様に於かれましては、何か誤った記述などがございましたら火炎放射器を持ち出す前に、ご指摘をくださるようにお願いたします。
(*1):http://www.nand2tetris.org/software.phpから無料でインストールできます。
http://d.hatena.ne.jp/iad_otomamay/20120529/1338304867
を読んで。
こんなの20年前からある話なので私は驚かないし、そういう一派でもあった。地方都市でSIerとか名乗っているIT企業はかなりの確率でこの商法で儲けているはずだ。事務所が小さいのに従業員数が異常に多い会社は、つまり外に出ているということだし、「大手の○○と共同プロジェクト」などの売り文句が見えたら、それたぶんひ孫受けかそれ以下。
単価の話をすると、さすがに新人でも0円というのは発注側もまずいので、抱き合わせ商法で内部的に大特価という方法を使う。たとえば業界5年目が時給1,000円×160H=160,000円で、新人が時給800円×160H=128,000円などの組み合わせだ。もちろんこの場合も、ふたりが同じプロジェクトで働くわけではなく、5年目はそれなりにちゃんとした仕事が与えられ、新人は納品用の資料のページ数を数えるとか、FDをひたすらコピーするとか、5分おきにエンターキーを押す人間cronとか、印刷されたバイナリコードを目視で比較する人間コンペアとか、ダンボール箱に詰められた書類を夜行バスで運ぶだけのメール便まがいの仕事とか、そういう肉体労働をさせられる。
プロジェクトが終われば表面上は職歴が付くが、実態としては未経験のままだ。プログラムを1行も書くことなく、仕様書をチラ見することもないし見せてもらえない。普通の会社でこういう下働き仕事をしていれば、そのうちマシな仕事が回ってくるのだが、社外に派遣されている期限がきたらさよならする使い捨ての人なのでずっと待遇は変わらず。職務経歴書だけは凄いのに全然仕事できない自称エンジニアが量産されていき、行き場を失って転職する人が後を絶たない。勉強しようと思って自宅でプログラムを組んでも、それはアマチュアの域を出ない。ある意味プログラマ35歳定年説に繋がっている。
ひ孫受けなのに大手と対等みたいな話と同じようなものに、社員スキルの偽装がある。「今回のミッションの君の設定はこれだ」と嘘の年齢・学歴・職務経歴を渡されてその通りに演じきることが求められる。やったことない仕事を「いやぁあれは大変でしたよ!」と実感を込めて言えるようになれば一人前だ。特に上に書いたような単純作業に学歴や職歴は必要ないのだが、それでは大手のプライドが許さない。だから条件を満たすように偽装してプロジェクトに潜り込ませる。