SSブログ

コンピュータの基礎はいつ学ぶのか? [プログラマー現役続行]

かなり前になりますが、「ソフトウェア開発組織が持つべきカルチャー」と題した一連の記事で、「コンピュータの基礎を教える」という記事を書いています。

その中で、コンピュータの基礎として以下の3項目を挙げています。
  • コンピュータの基本原理 CPUの基本構造、メモリー回路、割り込み動作、etc
  • オペレーティング・システム Linuxなどのオペレーティング・システムの基本的な仕組み
  • データ構造とアルゴリズム リスト、木構造、ハッシュテーブル、探索、O標記、etc
今日、これらの知識がなくても、ソフトウェア開発ができてしまいます。米国の大学のようにきちんとコンピュータサイエンスを学んだ多くの学生がソフトウェア開発に従事するのと異なり、日本では、文系の学生を採用して、社内で数ヶ月教育して、後は現場に任せる企業もまだ多いのではないかと思います。

長年、JavaやGoの技術教育を行っていますが、ソフトウェアを実行する環境における「スタックとは何か」、「スタックには何が積まれるのか」、「スタックのアドレスはどこに保持されているのか」といった「CPUの基礎」をきちんと分かっていない人がほとんどと言っても過言ではありません。

過去のブログの記事にも色々と書いていますが、さまざまな技術書の読書会や強制的な学習を通して、対象は限定されていますしたが、1998年から2017年ぐらいまでは、コンピュータの基礎を若手のエンジニアに学んでもらいました。

2018年6月からはメルペイ社でソフトウェアエンジニアとしソフトウェア開発を行っています。昔と違って、昨今はさまざな技術に関する勉強会、イベント、Meet Upなど盛んに行われており、メルカリ/メルペイでも多くを主催しています。それらのほとんどは、最新のソフトウェア技術に関する内容が多いです。
※ 平日の19時以降とかに開催されることが多いため、私は一切参加していません。

そのような勉強会やイベントに参加している若手の人達は、最新のツールやフレームワークを学び、ソフトウェアを開発し、さまざまなツールやフレームワークを使いこなしていると思います。しかし、一方で、どれだけきちんとコンピュータの基礎を学んでいるのでしょうか。

今日のウェブ系のサービス開発では、フロント側もサーバー側も、コンピュータの基礎を知らなくても開発できてしまいますし、マルチコアの時代になっても使っているプログラミング言語の「メモリモデル」を知らないまま開発している人も多いと思います。そうなると、いつ「コンピュータの基礎」を学ぶのでしょうか。あるいは、一生学ぶことなく、ソフトウェアエンジニアのキャリアを終えるのでしょうか。

私自身がすべてを知っているとか学んだとかは思っていませんが、60歳を目の前にして、日々自分自身でプログラミングしながらソフトウェア開発をしていると、今の若い人達が60歳になる頃には同じようにソフトウェア開発している人がどの程度残っているのだろうか、ソフトウェアエンジニアとしてのキャリアを終える前に「コンピュータの基礎」を学ぶのだろうかと思うことが多くなっています。

コメント(0) 

第26期Java研修を開講しました [プログラミング言語Java教育]

9月22日(金)に、私にとって通算26期目になるJava研修を開講しました。リコーITソリューションズ主催で、リコーも含めて15名の受講生でスタートです。鳥取事業所と秋田事業所からも参加されるので、インタラクティブ ホワイトボードを使って3拠点を接続しての研修です。

今回、二年ぶりにインタラクティブ ホワイトボードを使ったのですが、技術教育にはやはり便利です。テキストを表示しながら、その上に直接書き込んだり、遠隔地から書き込んでもらうこともできます。

従来のJava研修と同じで、『プログラミング言語Java第4版』から始まって、以下のテキストを使って一年半の長期コースとして、最初の一つの言語としてのJavaをきちんと学んでもらいます。現在翻訳している新たな技術書を使ってJava 13ぐらいまではカバーしたいのですが、一年半ではちょっと無理かと思いっています。

プログラミング言語 Java 第4版

プログラミング言語 Java 第4版

  • 作者: ケン アーノルド
  • 出版社/メーカー: 東京電機大学出版局
  • 発売日: 2014/05/10
  • メディア: 単行本

Java 2 Standard Edition 5.0 Tiger―拡張された言語仕様について

Java 2 Standard Edition 5.0 Tiger―拡張された言語仕様について

  • 作者: 柴田 芳樹
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2005/04
  • メディア: 単行本

Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング

Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング

  • 出版社/メーカー: インプレス
  • 発売日: 2014/09/22
  • メディア: Kindle版

Effective Java 第3版

Effective Java 第3版

  • 出版社/メーカー: 丸善出版
  • 発売日: 2018/10/30
  • メディア: Kindle版


コメント(0) 

Kindle版:Introduction to Computing Systems: From Bits & Gates to C & Beyond 3rd Edition [読書会]

Introduction to Computing Systems: From Bits & Gates to C & Beyond (English Edition)

Introduction to Computing Systems: From Bits & Gates to C & Beyond (English Edition)

  • 出版社/メーカー: McGraw-Hill Higher Education
  • 発売日: 2019/09/03
  • メディア: Kindle版

紙の本はかなり高額ですが、Kindle版も発売になっており、5000円弱となっています。第2版が2003年ですから、16年振りの改訂となります。

この本の第2版に関しては、何度かブログで紹介していますが、その一つを再度引用しておきます。
この書籍は、前半は、コンピュータの仕組みを学ぶ内容となっています。それも、トランジスタから始まって、基本的なANDやOR回路、フリップフロップ、メモリ回路、ALUなどを順次説明していき、最後は、16ビットのコンピュータの回路まで説明していくというものです。練習問題も多く、勉強会では、基本的にすべての練習問題に取り組んでもらいました。

この勉強会は、私が属する事業部に配属されたその年の新卒新人は全員必須でした。さらに、週に3回も開催していたので、予習が追いつかないという状況だったようです。それで、途中から、週1回に変更しました。

書籍の前半が終わった時点で、後半への参加は、必須ではなくしました。後半は、C言語が解説してあります。しかし、C言語の単なる説明ではなく、コンパイルするとどのような命令が生成されるかや、関数呼び出しでスタックはどのように使用されるのかとかが解説されています。後半も、練習問題をすべて行いながら勉強会を続けました。

結局、この書籍の勉強会は、約3年を要しました。しかし、参加者は、コンピュータの基礎を学んだだけでなく、英語の専門書を一冊読むことを経験してもらったことになります。この本の改訂版が出版されたら、もう一度勉強会をやってもよいかなとは思っています。
ここで述べている勉強会の対象者は2005年度の新卒新人でしたので、読み終えたのが2008年となります。

この本は、米国の大学のComputer Scienceの一年生用に書かれており、実際に教えられています。日本の大学ではここまできちんと教えている大学はとても少ないのではと思います。

上記の引用している記事の最後に書いているように、第3版が出たので社内で勉強会を開催したいと思います。いつから始めるかは未定ですが、以下のスケジュールを考えています。

【開催日時】毎週木曜日 午前8時〜9時30分(90分)

基本的には事前割り当てなどせずに、勉強会の中で英語を日本語に訳しながら読んでいき、練習問題もその場で問いていきたいと思います。おそらく3年は要するとは思いますが、私が定年退職する前には終わると思います。希望者は社内のSlack(@yoshiki.shibata)で私まで直接知らせてください。

追記(2019年10月15日)
  • 申込みはないので、一人で読んでいます。
  • この本のサポートページは、Appendix Fに書いてあるURLではなく、こちらです。

コメント(0)