前書き
アセンブリを学ぼうと思い、手を付けだしたばかりの初心者です。
なのでアセンブリでの開発経験もありません。
なんでアセンブリ?って思うかもしれませんがほとんど興味です。
普段使ってるけど、仕組みはよく知らないものって
その仕組みがわかると面白くなってくる、みたいな感じです。
結論
先に結論から述べますと、アセンブリを学ぶ意味は大いにある!と思います。
昨今、Google先生がなんでも教えてくれるので
何か作ろうと思った場合は調べればだいたいの事はすぐにできます。
便利なライブラリが沢山あるのでその機能を使えば大抵の事はできます。
コピペ最強時代です。
はっきり言ってアセンブリを学んでも、アセンブリで開発する事は一生無いと思っています。
ではアセンブリを学ぶ意味ってなんでしょう?
重要なのは言語そのものの習得ではなくて
大事なのはプログラミング言語を学ぶ事で得られるその他の知識
PHPなら
PHPは主にサーバーサイドで動的なWEBサイトを作るために使われます。
PHPを習得する上では一般的なWEBの仕組みも学ぶ事になるでしょう。
サーバーの役割、DBとの連携、HTML、CSS、JSといったフロントの知識です。
むしろそれを知らなければPHPでWEBアプリを作ることはできないはずです。
C/C++なら
C/C++を扱う上ではメモリやパソコンの基本的な動作原理を知る必要があります。
それを知らなければC/C++ではろくに何もできないからです。
逆にメモリやパソコンの仕組みという低レイヤーの知識を得る事で
作れるものの幅などもぐんと広がる事でしょう。
そんな感じで
プログラミング言語を学ぶ時は、往々にして
その言語と密接にかかわるプログラム以外の知識が必要になります。
じゃぁアセンブリでは何を学べるのか
まだ駆け出しの自分がわかりきったような事を言うのも心苦しいですが
アセンブリはハードウェアと密接につながっています。
C/C++をやっていればメモリやCPUの役割などをなんとなく把握していると思いますが
アセンブリをやると特に、CPUの中身が見えてくる気がします。
アセンブリを学ぶことでハードウェアに対する知識が得られると感じています。
突き詰めていけば電子回路や電流に接近していくことになるのかと
アセンブリを学ぶことで、作れるものの幅や発想などが
さらに強化されることと思っています。
今まで原因不明だったエラーの内容を調べられるようになったり
新しいハードウェアを作って、そのハードウェアを使った何かを開発したり
アセンブリを学ぶ事でソフトウェアだけじゃなくハードウェアを含めた
クリエイティブ力を鍛える事ができるんじゃないでしょうか
なんでアセンブリを学ぼうと思ったのか
単純に興味がわいた
前書きにもちょっと書きましたが。
PHPばかりしていた頃はメモリだなんだとか気にしたことなかったのですが
C/C++をやったことでメモリの使い方やパソコンの仕組みなんかが見えてきました。
アセンブリをすることでもっと深い部分を知りたいなという興味がわきました。
基礎を知ると実力が上がる
メモリだなんだ、パソコンの仕組みだなんだを知る事で
今まで自分では作れると思っていなかったものが作れるようになったり
謎のトラブルに見舞われた時にも対処できるようになったりと
単純にプログラマーとしての実力が上がりました。
もっといろんなものを作れるようになりたいという思いでアセンブリをやりたくなりました。
これから先のコンピューターの形
パソコンといえばモニタがあってマウスとかキーボードとかあってという一般的な形がありますが
これから先はコンピューターの形も様変わりしていくのではないかという思いがあります。
プログラム言語が何かを作るために特化されていったように
ハードウェアも何かに特化していくような気がしています。
そんな未来を想像すると、アセンブリでハードウェアについて学んでおくことは
とても有意義なのではないかと思いました。
とはいえ現在の状況では
基礎を理解していく事で応用できる範囲が広くなるのは間違いないと思いますが。
それだけでは何かをクリエイトするのも難しいというのが現実です。
便利なライブラリを組み合わせて、Google先生に聞いた知識を巧みに組み合わせる
実際に何かを作るのであればこういう能力の方が重要とは思います。
まとめ
というわけで、アセンブリを学ぶ意味は大いにある!
にはあるのですが
プログラマー全員が必ず学ぶ必要があるのかといえば
そうとは思っていません。
あくまでも学ぶ意味はあるし、それなりに有益だと思う!という事です。