SSブログ

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

新たなプログラミング言語への取り組み

ソフトウェア業界は停滞することなく、常に発展してきました。さまざな問題を解決するために、さまざまなプログラミング言語が登場してきましたし、これからも登場してくると思います。登場するすべてのプログラミング言語に取り組み、スラスラとその言語でコードを書けるようになるのは難しいと思います。したがって、私を含めて、多くのソフトウェアエンジニアは、書いたことがあるとしても、スラスラと書ける言語とそうではない言語に分かれると思います。

スラスラと書ける言語は、日々のソフトウェア開発で使ってきた結果として、指が自然と動くということです。そして、日々のソフトウェア開発で使うプログラミング言語は、バイブル本(「プログラミング言語のバイブル本と言語仕様」)を通してきちんと学ぶべきです(あるいは自己学習すべきです)。その理由としては、以下のことが挙げられます。
  1. 毎日使っているプログラミング言語なので基礎知識があり、読むためのハードルが低い
  2. 毎日使っているといっても、実際のソフトウェア開発では、そのプログラミング言語の機能をすべて使うことはない(「業務を通した学習の落とし穴」)。バイブル本の学習を通して、自分が使っていない機能を学習できる。
  3. 毎日使っているプログラミング言語をバイブル本を通してきちんと学ぶことにより、他のプログラミング言語を学ぶ際に、きちんと学んだプログラミング言語との対比ができるようになる。
1. に関しては、説明する必要はないかと思いますが、基礎知識の量によっては、バイブル本の内容が難しかったり、あるいは知っていることだったりします。

2. に関しては、自分が知らない機能があることが多いです。たとえば、今日の多くのプログラミング言語にあるリフレクションですが、業務でリフレクションを使ったプログラミングをしたことがない人は、「リフレクション」という言葉やその機能を知らなかもしれません。『プログラミング言語Java第4版』や『プログラミング言語Go』などのバイブル本では、リフレクションにそれなりのページ数を割いて説明しています。逆に初心者本では扱われない機能です。

3. に関しては、一つのプログラミング言語をきちんと学ぶことで、他の言語の機能を理解する際に、すでに学んだ言語との対比ができることで、理解が容易になることがあります。

言語によって学習時間が異なる

バイブル本を学ぶといっても、言語によってはその学習に要する時間が変わってきます。Javaであれば、学習の最終目標が『Effective Java 第3版』の内容を全部理解することとすると、以下の書籍を全部読まないと理解できません。
これらの書籍の学習には練習問題にも真剣に取り組んで一年は要します(「Java研修」)。その意味で、初心者が『Effective Java 第3版』をいきなり読んで理解することはできません。

一方、『プログラミング言語Go』であれば、練習問題にも真剣に取り組んでも半年で終わります(「Go言語研修」)。ただし、130問以上ある練習問題の多くは、今日のウェブ技術(HTTP、JSON、Restful API、etc)をある程度知っていることが前提となっており、プログラミングの初心者には難しい内容となっています。

一度読んでも意外と覚えていない

新たなプログラミング言語を学ぶためにバイブル本を読んだとしても、一度読んだだけだと、その内容を意外と覚えていなかったり、あるいは忘れたりしています(ひょっとしたら私自身が歳をとったためなのかもしれませんが)。

たとえば、技術書を翻訳する場合、原著を読みながら日本語に訳していきます。そして、日本語訳を見直すために何度か読み直します。これだけでも、最低でも3、4回は読んでいることになります。さらに書籍によっては、翻訳前に原著の英語の草稿をレビューするために読んでいます。たとえば、『プログラミング言語Go』は、原著の英語の草稿をレビューするために2回読んで、気づいた点や誤りなどを著者達にフィードバックしています。これだけ読んでいても、社内で毎週月曜日に行っている読書会では、忘れていた内容を思い出すことがあります。

一度読んだ技術書をもう一度一人で読み直すのは難しいと思いますので、その場合には、社内(あるいは社外)で読書会を開催して読むとよいかと思います。

新たなプログラミング言語を学ぶときはバイブル本を読む

仕事で使うのではなく、趣味で使うのであれば、手っ取り早く初心者本やウェブの記事で新たなプログラミング言語を学んで試してみてもよいかと思います。しかし、仕事で使うプログラミング言語は、時間がかかっても、きちんとバイブル本を読むようにしてください。仕事で使う技術に関しては、きちんとした技術書で学ぶ習慣を身に付けないと、ソフトウェア開発を何年経験していても、中途半端なソフトウェアエンジニアになってしまいます。

コメント(0)