t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

プログラミング言語はひとつマスターすれば他もできる?

プログラミングでは、ひとつの言語をマスターすれば、どんな言語でも使えると言われている。
この言説には賛否あるけど、ある意味正しくて、ある意味間違いだと思う。

より正確に言えば、新しく学ぶ言語と既にマスターしている言語に共通する概念についてはスムーズに移行できるということだ。

f:id:t-hom:20190915134705p:plain

たとえば変数・分岐・繰り返し・比較演算なんかは、大半の言語が備えている共通概念である。言語によって作法やスタイルが異なるだけで考え方は同じなので、新しく学習する言語でこれらを使いこなすのは難しくない。

仮にVBAを100%マスターしているなら、Pythonの学習範囲はPython特有の部分だけで済む。
f:id:t-hom:20190915140305p:plain

まあそうは言ってもなかなか一つの言語をマスターするのは難しい。
VBAの学習割合が少なければ、Pythonをマスターするための学習範囲はより広くなる。
f:id:t-hom:20190915141208p:plain

じゃあまずはVBAを極めよう!と考えるかもしれないがそれも早計である。
というのも、学習する概念は言語ごとに情報の充実度に差があるためだ。

たとえばVBAはクラスモジュールを使ったオブジェクト指向を一部サポートしているが、VBAでオブジェクト指向を学ぶのは難しい。最近ようやくクラスモジュールを扱う書籍が登場してきたが、まだまだごく一部の上級者向けの書籍にしか解説が無い。

Javaなら、どの入門書にもクラスからオブジェクトを作成する方法が書かれており、その概念も詳しく説明されている。
f:id:t-hom:20190915141856p:plain

ひとつの言語をマスターしようと思ったら、結局、複数の言語をつまみ食いするのが手っ取り早い。


さて、この三連休でPythonの学習を始めてみた。
実はこれまでもPythonを触る機会は何度かあったけど、本格的に入門するのはこれが初めて。

学習に使ってる書籍はこちら。

やさしいPython (「やさしい」シリーズ)

やさしいPython (「やさしい」シリーズ)

学習の際によく混乱するのは次の2点。
・VBAにあるのにPythonに無い概念→「あれ、あの機能は?」と探して時間を浪費する。
・VBAに無くてPythonにある概念→「ナニコレ?」となり理解に時間がかかる。

f:id:t-hom:20190915140824p:plain


ただまぁ、VBAにあるのにPythonに無い概念ってそうそう無くて、これまで同じサイズの円で説明してきたけど実際にはこんなイメージ。
f:id:t-hom:20190915143641p:plain

1998年から基本的な言語機能が進化してないVBAと、現在も新機能を取り込みながら進化を続ける言語を比べたら、当然後者の方が覚えることは多い。

とはいえ、VBAで獲得済みの共通概念だけでPythonコードを書くことはできるので、一応、ひとつプログラミング言語をマスターしたら他の言語でも書けるとは言える。

一方で、人のコードを読むとなると一気にハードルは上がる。ふつう、人は便利な言語機能があればそれを使うので、VBAに無い概念も遠慮なく使用されているハズで、ネットのコードをパクってきて弄ろうと思ってもまぁよく分からないと思う。

よって、その言語を使ってチームで仕事をするっていうレベルに到達するには、未獲得の概念をしっかり学習する必要がある。

つまり表題の件、趣味のレベルで良いならTrue、仕事にするならFalseというのが私の結論。

以上。

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。