SSブログ

FORTRANから始まって41年(3) [プログラマー現役続行]

コンピュータ・サイエンスの基礎

九州工業大学 情報工学科でコンピュータ・サイエンスを学んだと言っても40年も前のことです。ハードウェアの基礎的な事柄、CPUの仕組み、コンパイラ、データ構造とアルゴリズムといったものを学びましたが、オペレーティングシステムについては何を学んだのかあまり記憶にありません。

※ 今日の九州工業大学には「工学部」(戸畑)や「情報工学部」(飯塚)などがありますが、当時は戸畑にしかキャンパスはなく、学部もありませんでした。当時の情報工学科に相当する学科は、現在の工学部にはありません。

日本では、大学でコンピュータ・サイエンスを学ぶことなく、プログラミング言語やウェブシステムの作り方を学んで、ソフトウェア業界に入ってくる人達が多いように感じます。その上で、何らかのシステムを開発する経験を積んだり、そのために必要な知識を学んだりするのでしょうが、コンピュータがどのように動作しているのかを全く知らない人達が多いのではないでしょうか。

たとえば、前職のソラミツ社では、面接(面談)で「macOSやWindows上ではさまざまアプリケーションが同時に多数動作しますが、マルチコアとは言え、CPUコアは数個しかないですよね。どうやって同時に多数のアプリケーションが動作しているのか説明してください」、「ハッシュテーブルを説明してください」、「スレッドとプロセスの違いを説明してください」、「O表記(O-notation)を説明してください」など聞いたりしていました。

このような質問に答えられなくても、ソフトウェア開発はできます。その結果、コンピュータ・サイエンスの基礎的な事柄を学ぶことなく、ソフトウェアの開発経験年数を積み上げることになります(「許される無知の範囲は開発経験年数に反比例する」)。

私自身は、すべての知識を大学で学んだ訳ではありません。社会人となってから学習したものも多いです。学習と言っても、独学というよりは勉強会という形式で行ってきたものが多いです。自分自身が学習するというよりも若い人達に学習してもらうという意味で過去に行った勉強会で使った書籍を紹介します。

ハードウェアに関する知識

Introduction to Computing Systems: From Bits & Gates to C & Beyond (Computer Engineering)

Introduction to Computing Systems: From Bits & Gates to C & Beyond (Computer Engineering)

  • 作者: Yale N. Patt
  • 出版社/メーカー: McGraw-Hill Education
  • 発売日: 2003/08/05
  • メディア: ハードカバー
この本は、トランジスターから始まって、前半はCPUの仕組みを学ぶ内容となっており、後半はC言語がどのようにコンパイルされて実行されるのかを解説しています。富士ゼロックス情報システムに勤務していたときに、新卒新人に強制的に勉強会を行った本で、読み終えるのに2年を要しました。日本語には翻訳されていません。今年、第3版が出版される予定です。

この本の勉強会は2年も要したので1回しか開催していないのですが、当時私が属する事業部(富士ゼロックス情報システム)に配属された新卒新人全員に、英語の本ですが必須で学習させました。

コンピュータの構成と設計 第4版 上 (Computer Organization and Design: The Hardware/Software Interface, Fourth Edition)

コンピュータの構成と設計 第4版 上 (Computer Organization and Design: The Hardware/Software Interface, Fourth Edition)

  • 作者: デイビッド・A・パターソン
  • 出版社/メーカー: 日経BP社
  • 発売日: 2011/11/17
  • メディア: 単行本

コンピュータの構成と設計 第4版 下 (Computer Organization and Design: The Hardware/Software Interface, Fourth Edition)

コンピュータの構成と設計 第4版 下 (Computer Organization and Design: The Hardware/Software Interface, Fourth Edition)

  • 作者: デイビッド・A・パターソン
  • 出版社/メーカー: 日経BP社
  • 発売日: 2011/11/17
  • メディア: 単行本

この2冊は、リコーに勤務していたときに、読書会として読んだ本です(「『コンピュータの構成と設計』勉強会終了しました」

オペレーティングシステム

Understanding the Linux Kernel: From I/O Ports to Process Management

Understanding the Linux Kernel: From I/O Ports to Process Management

  • 作者: Daniel P. Bovet
  • 出版社/メーカー: O'Reilly Media
  • 発売日: 2005/11/27
  • メディア: ペーパーバック

富士ゼロックス情報システムに勤務していたときに、月に1回土曜日に読書会を開催して読みました。読み終えるのに3年を要しました。

Linux Kernel Development (Developer's Library)

Linux Kernel Development (Developer's Library)

  • 作者: Robert Love
  • 出版社/メーカー: Addison-Wesley Professional
  • 発売日: 2010/06/22
  • メディア: ペーパーバック

この本は、私自身は初版、第2版、第3版と読んだ本です。第2版は富士ゼロックス情報システムのとき、第3版はリコーのときに社内の読書会で読んでいます。日本語には翻訳されていません。

データ構造とアルゴリズム

プログラミング作法

プログラミング作法

  • 作者: Brian W. Kernighan
  • 出版社/メーカー: KADOKAWA
  • 発売日: 2017/01/30
  • メディア: 単行本

この本は、第2章の「アルゴリズムとデータ構造」をきちんと学んでもらうために、強制的に新卒新人に学ばせた本です。基本的に私が作成した「勉強会ノート」に沿って、そこに書かれている説明ポイントに解答してもらい、その解答をレビューして、解答が不十分であれば差し戻ししたりして学習してもらいました(「書籍『プログラミング作法』」)。

富士ゼロックス情報システムに勤務していたときは、私の部門に配属された新卒新人は(派遣の新人も含めて)、必ず学習させていました。また、リコーに勤務していたときは、2年間でしたが、私が属している開発本部に配属された新卒新人は、学習が必須とされていました。

いつ学ぶべきか

コンピュータ・サイエンスの基礎的な事柄は陳腐化しないので、今日では、できるだけ若い時学んでおくべきだと思います。そうすれば、その後のソフトウェアエンジニアとしてキャリアを積んでいくための基盤になります。

コメント(0) 

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

Facebook コメント