![見出し画像](https://assets.st-note.com/production/uploads/images/15410767/rectangle_large_type_2_15f79d9ffa3b2c98fcfda190414ac06a.jpg?width=1200)
(第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のようなオンラインの動画学習サービスであれば、気になったものを手当たり次第に受講できるので、その意味でも好都合かもしれません。
むしろ、自分としては「どのプログラミング言語をやるか」の前に、大きな壁が立ちはだかっていたので、それを乗り越えるのが一番たいへんだったかも。
じゃあその「大きな壁」ってなによ、というのは、また次回に( ´ ▽ ` )ノ
この記事が気に入ったらサポートをしてみませんか?