Irohabook
プログラミング プログラミング哲学

プログラミング言語の最短勉強法:目的を持つ・英語で調べる・オライリーの本を読む

広告

プログラミング言語を最短でマスターする方法は三つあります。

  1. 目的を持つ
  2. 英語で調べる
  3. オライリーの本を読む

逆に悪い勉強法は次の三つ。

  1. 目的を持たない
  2. いつも日本語で調べる
  3. ウェブ検索だけに頼る

このページはある人に口頭で伝えたことをまとめた業務的なメモで、ちょっと過激な表現が入っています。

目的のあるプログラミング

成果を残さない学習に意味はない。仕事や業務の問題を解決するためにプログラミング言語を勉強しよう。「趣味で Python を勉強しています」という人は Python をなかなかマスターしない。目的を意識しようも参考にしてください。

練習やテストのプロジェクトを作って、自分や会社の問題と関係ないものを作っている人は、その無駄なプロジェクトを削除して現実的なプロジェクトを新規作成しよう。

目的のない勉強はとても効率が悪い。目的があるとわからないことがはっきりしますが、そこで「ああでもない」と調べてわかったことは、後にさまざまな場面で再利用されるでしょう。

私も学生のときに「クラスとオブジェクト」を勉強しました。目的がないので「クラス」の使いどころがわかりませんでした。その後、仕事でプログラミングをやって、たくさんの関数をどうにかまとめて整理したいと考えました。そこでようやくクラスの意義がわかりました。結局、「クラスというのがあるよ」「日付はこうやって UNIX timestamp に変換するよ」と教えられても、それを使う場面にならないと有用性を理解できないのです。

広告

英語で調べよう

プログラミングでわからないことは英語圏の Stack Overflow や GitHub で調べて、たまに公式サイトのマニュアルを読もう。英語で調べる習慣がとても大切です。

例えば Google 検索で

php extract variables from included files

と調べます。

php 変数 インクルード ファイル 読み込み

と日本語で調べてもかまいませんが、プログラミングに詳しくなるほど日本語の文献は急に減ります。例えば Python の機械学習は 2019 年になった今もほとんどありません。初心者用の記事は英語も日本語もほとんど差はありませんが、上級者用の記事は数が圧倒的に違います。

また、世界で標準化されるプログラミング言語、フレームワーク、ライブラリはいつもチェックしないといけない。標準化の運動はたいていアメリカで起きる。プログラミング言語やライブラリの人気やトレンドは GitHub のスター数だけでなく、掲示板の reddit や Medium などを通して理解します。それらはすべて英語で書かれているので、やはり英語はできるようにしないといけない。

英語の力を磨くために私もずっと英会話の練習をしています。英会話を続けるコツも参考にどうぞ。

オライリーの本を読む

プログラミングがある程度わかったらオライリーの本を定期的に読もう。オライリーは標準的で正確な使い方を掲載しています。プロフェッショナルになるには、プロフェッショナルの解説を吸収するのがてっとり早い。

ウェブにある情報はふるいにかけられた集合知で、根本的に即時的で具体的です。標準的とはいえないのに「こうするのが今のスタンダードです」ともっともらしく書かれた記事がたくさんあります。正確性に欠けて、バグの温床になるリスクの高いコードに 100 以上のスターがついている可能性も。

オライリーの本はプロフェッショナルにチェックされた一般的で正しいサンプル・コードを掲載しています。ウェブで調べるよりも、オライリーの本を読むほうが安上がりになるケースはよくある。データベースを使う人は実践ハイパフォーマンスMySQLを読むべきです。

「自分は他人より優れた技術者だから、本など読まなくても検索だけでだいたいコツはわかる」というプログラマーは報われないだけでなく、開発に携わる人に迷惑をかける。

広告

さらなるポイント

プログラミングを勉強する人は下の条件にあてはまらないように努めないといけない。

「ベクトルはわからないが Java はよく知っている」人はたぶんほとんどいない。プログラミングのスキルは数学や哲学の教養とつながっています。アリストテレスは分類の重要性を説いていますが、分類と整理はプログラミングの基本です。プログラミング哲学の記事も読んでくださいね。

前置きの長い人はプログラミングで苦戦するでしょう。結論をなかなか言わないのは、目的を意識する習慣に欠けているからです。プログラミングの開発は目的に向かって走ること、逆にいえば目的以外のものを排除することです。

新しい技術は古い技術の課題、つまり多くのプログラマーが抱えた共通の問題を解決するために生まれます。最新の技術を導入したら生産性は二倍になるかもしれない。新しい勉強はそれなりの時間と労力を要しますが、一方でプロジェクトの効率を激的に高める可能性もあります。例えば Go は C といったコンパイル言語の代替になるかも。C は複雑でコンパイルの時間もそれなりにかかりますが、Go は素朴ながらもスピード感のある開発が可能です。

結局、プログラマーは時代遅れになってはいけないのです。

人がすでに発見した知識や作った道具に納得できず、自分で一から作ることを車輪の再発明という。車輪の再発明は言うまでもなく時間のムダです。車輪の再発明はまれにブレイクスルーになって最先端のトレンドになりますが、積極的に再発明する者はたいてい報われない。私たちは人が作ったものをまずは尊重しないといけない。

広告

コンピューター コンピューター
プログラミング プログラミング
数学 数学
英語 英語
国語 国語
理科 理科
社会 社会