2008-08-26 13 views
3

私の目標は、ソフトウェアアプリケーションの開発、そしてたぶんWebアプリケーションの開発ですが、デスクトップアプリケーションの開発に集中しています。私はC/C++にもっと慣れ親しむ道を踏み出していますが、それよりもはるかに低くする必要がありますか?あるいは私は長期的な目標のために利益をもたらさないでしょうか?組み立ての方言を学ぶ価値はありますか?

答えて

1

ダイレクトアプリケーションがない限り、おそらくそれほど多くの利点はありません。あなたが一般的な知識のために行くなら、C/C++は良い出発点です。

しかし、アセンブリのポーズは非常に面白く、作業を完了するためにはかなり異なる考え方が必要です。

TI-86電卓をプログラミングすることで、Z80アセンブリの学習に少し時間を費やしました。 Z80命令セットはかなり小さく、アセンブリーで電卓をプログラミングすることの新規性は非常に面白いです。

ticalc.orgは、TI assembly programmingに多くの優れたリソースを持っています。

+0

あなたはZ80アセンブリの(サブセット)で自作のゲームボーイゲームを作ることもできます。 – James

1

私はASMの学習を開始しません。 C/C++を学びたいなら、それから始めましょう。コードの品質が成熟するにつれて、ASMの必要性があるかもしれません。あなたがしない時間の99%が、すべての今、あなたがそれを必要とするかもしれません。

また、C/C++が背後で何をしているのかを理解する上で、ASMを理解するのに役立ちます。しかし、やはり、あなたがより高度になるまで、あなたはおそらくそれを必要としません。

1

私はその時に私を助けたと思います。それはもう毎日私を助けませんが、私はそれがあなたの仕事に依存すると思います。

私はアセンブラをコモドールで学び、もう一度IBMメインフレームで大学で学びました。私はそれが私の現在の仕事に役立つとは言えません。

1

私はマークに同意します。私はそれがC#、VB.NET、または別の.NET言語で書くときにMSILを学ぶことに似ていると思います。これは、フードの中で何が起こっているのかを知るのに役立ちますが、あなたは働いているアプリケーションとそれを必要としないアプリケーションを作成することができます。

1

いいえ、楽しみにしたいのでなければ、実際にアセンブリを学ぶ必要はありません。

ドライバの作成、OSの開発、開発の開発などのように、アセンブリを知る必要があることがいくつかありますが、それ以外にも私は個人的にはそれを知らずに永遠に永遠にコードできると個人的に信じています。

あなたはそれを知っているよ、アセンブリを習得する必要がある場合 - 私はそれを学習のためにそれを学ぶないでしょう。..

1

アンマネージCの++を書いている場合、で知ることが時折非常に貴重です私は主にC/C++開発を行い、時には、コンパイラによって生成された機械コード表現に特有のエラーのためにプロダクションコードをデバッグする必要があります。その唯一の方法は、コンパイルされていないアセンブリを読み込み、コンパイラがそれを生成した理由を確認することです。

アセンブリの詳細については、質問:What is the best way to learn Assembly? Specifically, for someone who has experience in dynamic languagesを参照してください。

3

G'day、

私は私の選出を行ったときにPDPアセンブラを学びました。 Eng。 70年代後半の度合い。私が実際に使ったアセンブラの最後の方言には、4種類のメモリアドレッシングモードがありました。私が尋ねた最後の方言には17のモードがありました!

実際に学習者が実際にあなたに与えていることはわかりません。当時、私の選挙区ではCS流の本質的な部分でした。 eng。度。 C++私はただ座って、他のビットとC 『"それ自体ではなくてC++に近づくAccelerated C++"』を介して動作したい学習に関しては

Cに関しては、私はちょうどを通して働くだろう"C Programming Lanuage"の最新バージョン(別名)K'n'R

これが役に立てば幸い今

歓声、 ロブ

あなたは、ナノprogrmmingについて尋ねたい場合...( - :

0

「近代的なアセンブラ言語」を学ぶことはお勧めしません。しかし解体C64カーネルを通じて少し程度MOS 6510アセンブラやブラウジングを知っ

は、別名、それはOSとBASICインタプリタですが、私のコンピュータ内部で何が起こっているかを理解するためにたくさん助けた - 割り込みとメモリ・ページのようなもの。

これは、他の言語で最適化されたコードを書く方法のヒントを与えるのに役立ちます。しかし、その多くは現代のコンパイラですでに行われているので、そのブラックボックスの内部で何が起こっているのか興味があるならば、私はそれを提案します。

2

"組み立ての方言を学ぶ価値はありますか?"

私は専門的にアセンブリをプログラムしました。ファクシミリとスキャナを実行しているM68k。また、WindowsのVxD(仮想デバイスドライバ)は、実際のカーネルを取得する3/3.1日前にWindowsに戻ってきます。

通常のソフトウェア-y種類のタスク(メモリのコピー、文字列の連結、割り込みハンドラの呼び出しなど)を行うためにアセンブリをコーディングすると面白いです。場合によっては、特定のプロセッサ上でできるだけ早く特殊なタスクを実行するために、Cコードによって呼び出されるアセンブリをコード化することがあります。それはプロセッサがあなたに与えるすべてのサイクルを活用する方法を探しているので、もっと面白いことがあります。あなたは、プロセッサのL1キャッシュの内容を気にします。キャッシュラインのヒットを避けるために、データをメモリに整列させることに気をつけます(私がこの用語を覚えていれば)。あなたはデュアルパイプラインプロセッサアーキテクチャを気にし、適切な順序で適切な2または3または4命令を使用して、1つのクロックティック(プロセッサのXgHzのHZの1つ)で2つまたは3つまたは4つのことが起こるようにします。

カスタムハードウェアを駆動するようにアセンブリをコード化すると、今度は16バイトのメモリバッファを満たし、DMA操作をセットアップし、そのデータをレーザープリンタドラムを駆動するようなコントローラ。ドラムは回転しており、停止することはできず、次の5秒以内に次の16バイトを望みます。もちろん、これはCまたはC++で行うことができます。しかし、例は無限です。

私は質問の最後の半分を切り捨ててしまうかもしれません。「組み立ての方言を学ぶ価値がありますか?」それを "それを学ぶ価値があるの?"

プログラミングを愛している場合、「価値」をどのように定義するかはプログラミングの魅力の一部です。その意味では、私はプログラミングで何かを学んだことはありませんし、それが価値があるとは考えていませんでした。たとえそれがあまり使われなくても。

同じ意味で、私はたぶん難しいことは学ぶべきであると言うよりも、それは価値があるということです。

しかし、ふわふわとした言い訳は、私はそれが少なくともある程度のアセンブリのバックグラウンドを得るには価値があると信じています。進んで、strcpy、memmoveなどの単純なstdlibルーチンを置き換えるアセンブリを書く方法を考えてください。そして、それらを最適化しようとします。

1

アセンブリはあまり難しくありません。 Cに精通したら、基本的なアセンブリを学ぶのに1日か2日かかります。デバッグの面での有用性は非常に高く、Cの速度に匹敵する速度で10,15、またはそれ以上の速度でコードを書くことが楽しいということです。

9

私は本当にこの質問に対する答えが非常に多いことに驚いています。私はあなたがする必要がありますアセンブリを学ぶ必要があります。

あなたの仕事の一環としてアセンブリを直接使用するとは思いません。しかし、あなたがそれを学ぶべきではないということから、それは続くものではありません。

学習アセンブリは、コンピュータ内部で何が起こっているかを教えてくれます。ソフトウェアが実際に何をしているのかを理解するのに役立ちます。

これは本当にプロフェッショナリズムです。あなたはプロのソフトウェアエンジニアになるつもりですか?または、コピーアンドペーストのハックになる予定ですか?確かに、後者は法案を支払うかもしれませんが、プロフェッショナルであることははるかに満足です。

"ナー、組立の勉強をしないでください"と私の耳に聞こえるのは、 "ここにブリッジを作るための料理書があります。ブリッジを作るために物理学や工学について学ぶ必要はありません。これらのレシピに従ってください。いいえ、結構です。

関連する問題