見出し画像

(第16回)「プログラミングやりたくない!」〜下から目線のコーディング武者修行〜

〜結局、プログラミング言語は”相性”なのか?の巻〜

プログラミングの学習を進める過程でわかってきたこと。それは、

コンピュータ(キカイ)で動かす以上、プログラミング言語もキカイの都合にあわせてできている

ということ。

例えば、

Q: なんでarrayは一直線にデータを並べるの?

A: プログラムを実行するMain Memoryが一直線に並んでるから、使うデータも一直線に並べるしかない

だったり、

Q: なんでfunctionにはreturnという命令があるの?

A: functionはMain Memoryのぜんぜん別なところにあるので、実行したら元の場所に戻る(returnする)ため

だったり。

なので、

プログラミングでシャクゼンとしないことがある時は、キカイHardwareを調べると理由がわかる

ことが多々あるんだなぁと実感しました。

で、キカイの都合に合わせてプログラミング言語が作られている以上、

どのプログラミング言語も、基本の仕組みは大差ない

ということに気づきました。

C言語(C Language)とか、よりキカイに近いところで設定するものは、それだけゲンミツに書いてあげる必要があるけれども、ブラウザ(Browser)で動かすJavaScriptならザックリザックリでも動いてしまったり。

この辺、論文に似てるなと思うことも。学術雑誌に載るような論文は細かい記述が必要になるけど、入門書であればまずその分野のキモを伝えるのが大事、みたいな。読み手も両者でぜんぜん違うし。

プログラミング言語はゲンミツさに違いはあっても、基本構造はある程度共通してるというなら、「どれをやっても同じ」なのでしょうか?

これがどうもそうではないらしい。

自分でやってみた範囲だけでいっても「学習が続いた」言語もあれば、「学習を途中でやめてしまった」言語もあるのが実情。

続いた方面で言えば、

・Node.js (サーバーサイドJavaScript)
・Python

が代表的。

続かなかった方面で言うと、

・Ruby
・Java

がその2大言語という感じ。

「どのプログラミング言語も、基本の仕組みは大差ない」と言ったはずなのに、実際にやってみると「違いがある」。

これどうも、結局は

「その言語との相性Affinity」

が影響している様子。

フロントエンドとバックエンドの「どっちも同じくらいできる」人がまず滅多にいないように、言語についても「相性」があるようなのです。

これも学習を進める過程で気づいたのですが、

プログラミング言語は人間のためにある

そうな。

コンピュータさんは究極的には「0と1」しか理解できないので、どんな言語で書いてあっても、実行する段にはぜんぶ裏側で「001101011101...」の形になっていると。

ところが0と1の集まりでは人間的には扱いにくくて仕方ない。そこでだんだんと「人間向きのプログラミング言語」が整備されてった由。

これを突き詰めていくと、「自分という人間に向いてるかどうか」を考えることに。

いくらベンリ!とかムズカシイ!と言われていても、「自分に合う」ものなら続くし、「自分に合わない」ものなら続かない。

ただこれも、やってみた結果からしか言えないので(´∀`)、とりあえず手当たり次第に触ってみて、「続いたものだけ残す」方が実情に沿っている気が。

自分の場合、「どれをやろうか」悩んでいたのは最初の頃で、「自分はバックエンド向きなんだ!」と気づいてからは、あんま迷わなくなりました。

バックエンド、つまりサーバーServerを動かすなら、Ruby. Java, PHP, Node.jsあたりから選ぶことになるので、この時点で選択肢は4つに。

で、自分は「一番しっくりきた」Node.jsが続いた、という感じ。

それでいうと、「どの言語を選ぶか」の前に、「自分はフロントエンド向きなのか、バックエンド向きなのか」が分かった方が効率良いかも。

その点、edXのようなオンラインの動画学習サービスであれば、気になったものを手当たり次第に受講できるので、その意味でも好都合かもしれません。

むしろ、自分としては「どのプログラミング言語をやるか」の前に、大きな壁が立ちはだかっていたので、それを乗り越えるのが一番たいへんだったかも。

じゃあその「大きな壁」ってなによ、というのは、また次回に( ´ ▽ ` )ノ

#プログラミング
#学習法

この記事が気に入ったらサポートをしてみませんか?