- ベストアンサー
アセンブリ言語を学ぶことは意味がありますでしょうか。
アセンブリ言語を学ぶことは意味がありますでしょうか。 プログラミングの上達や理解を深めるためにアセンブリ言語を学ぶ意味はありますでしょうか。 C++を学ぶとプログラミングの上達や理解は確かに深まりましたが、アセンブリ言語はどうでしょうか。 アセンブリ言語でポインタの意味が分かったと言う人もいますし・・・。 また、アセンブリ言語で役立つことがあれば何でも教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
意味はあると思いますよ。 アセンブリ言語ではポインタ(アドレス)を扱うことは必須ですから、確実にポインタへの理解は深まります。 また、1つ1つの命令を突き詰めていくと、コンピュータ(CPU)がどのようにして動いているかわかるようになります。 最終的にはメモリダンプ(16進数の羅列)でプログラムが追えるようになれます。 C++を知っているのでしたら、1度、プログラムを混合モードで表示してみてください。 C言語の1行1行の命令が、アセンブリ言語でどのように展開されているかを見ることができます。 ただ… 質問者さんがどれくらいのレベルの方かわかりませんが、僕はプログラミングの上達は単にたくさんの言語を知っていることとは決してイコールではないと思っています。 人がコンピュータで行いたいこと(自然言語で表現したソフトウェアの仕様)を、論理的思考を経て、プログラミング言語に置き換えていく「翻訳作業」がプログラミングだと思ってます。 論理的思考さえできれば、未経験の言語でも(最初のうちはマニュアルとにらめっこになりますが)プログラムは作れます。 逆に論理的思考ができなければ、できあがったプログラムは、読みづらい・異様に処理時間がかかる・ちょっとした例外ですぐにエラー停止する…など「できの悪いプログラム」になります。 もし、C++を学んであまり時間が経ってないのでしたら、もっと深くC++を勉強して、まずは論理的思考ができるようになってください。 別の言語に手を出すのはそれからで遅くありません。
その他の回答 (2)
- korapisi
- ベストアンサー率45% (16/35)
20年ぐらい前には最終的にどんなコードが出力されるのかを想像してコーディングするとかしてましたが、今は全然考えません。 パソコン黎明期には、速度をかせぐためにアセンブラプログラムをしたこともあります。 アセンブラを学んだことで得たもの ・おー、CPUってこんなことしてるのかー。と思った。 ・おー、CPUって機種によって差があるんだなー。と思った。 ・コンパイラに任せておくより、何をしてるかがわかりやすい。と思った。 ・コンパクトなプログラムを作りやすい。当時はメモリの1バイトが貴重だった。 ・ブロックで論理的パズルをしているみたいで楽しかった。 まあ、コンピュータに対する理解が深まるかもしれませんが、きょうび役に立つかどうかは、わかりません。
お礼
ご回答ありがとうございました。 参考にします。 >まあ、コンピュータに対する理解が深まるかもしれませんが、きょうび役に立つかどうかは、わかりません。 色々なサイトでアセンブラの必要性について調べてみたら、 今はあまり必要ないようですね。 コンピュータの理解は確かに深まるが、プログラミングの上達には繋がらないかもしれませんし・・・。
- joqr
- ベストアンサー率18% (742/4026)
>アセンブリ言語で役立つことがあれば アセンブラでプログラミングできる >プログラミングの上達や理解を深めるためにアセンブリ言語を学ぶ意味はありますでしょうか。 あるけど? 無いでしょうね! わたしは、もう30年以上プログラミングを仕事としていますが・・・ 今でもアセンブラは使います どうして必要なケースはあります でも、C++でやることだってできます でも・・・アセンブラで書く方が簡単だし・・・ 昔なら、アセンブラだけでシステムを全て書きあげることだって 全然普通にありましたよ 目的の無い学習は続かないよ 世の中が必要とする知識が何か? もう少し考えてみたら? アセンブラが必須の世界は確実にあります そこを目指すかどうかがカギかな? 時間は有意義に使うべきだと思う
お礼
ご回答ありがとうございました。 なかなか説得力のある回答です。 とても参考になりました。 >あるけど? 無いでしょうね! よく考えてみれば、確かにないですね。
お礼
ご回答ありがとうございました。 >質問者さんがどれくらいのレベルの方かわかりませんが、僕はプログラミングの上達は単にたくさんの言語を知っていることとは決してイコールではないと思っています。 『ロベールのC++入門講座』を全て読んで全て実践して全て理解したところです。 プログラミングの上達に関してたくさんの言語を知っていることは上達に繋がらないことは私も全く同じことを考えていました。しかも、そのことは最近感じて知ったばかりです。 >もし、C++を学んであまり時間が経ってないのでしたら、もっと深くC++を勉強して、まずは論理的思考ができるようになってください。 今後は『Effective C++』に挑戦するつもりですが、これを学んだからといってプログラミングが上達するかはどうか分かりませんが・・・。とりあえず挑戦します。