Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am currently taking an Assembly programming class, and I honestly find it extremely boring and tedious. While I've programmed some assembly before as part of a C++ program, I find what we are doing to be completely different than actual assembly code I've worked with (we are using a program called MARS MIPS, found here).

Since we are using the MIPS architecture, which from what I gathered is hardly used any more, I find what we are learning hardly applicable to anything outside of the class. Likewise, I find myself not retaining the material we cover in class due to detachment from real world applications as well as the classroom setting itself. I've been trying to write my some code outside of the classroom to get familiar with it, but without any obvious real world applications, I find myself unmotivated to do so.

Is there any advice for trying to learn a programming language (such as assembly) for a class when I don't seen any real world application of it?

Or perhaps a more specific question to this problem would be: Is there any real world application to the MIPS architecture which I am unaware of?

EDIT: I found the following information on StackOverflow concerning MIPS: http://stackoverflow.com/questions/2635086/mips-processors-are-they-still-in-use-which-other-architecture-should-i-learn

share|improve this question

1 Answer 1

up vote 7 down vote accepted

I think you're approaching the class with the wrong attitude. You're looking at MIPS and thinking:

Why are we learning this? It's not the most popular processor platform. Most of the world runs on Intel chips -- why aren't we learning that? When will I use MIPS in the real world?

I doubt that the point of the class, however, is to learn the MIPS platform specifically. The point is to learn how a processor works, and how to write code at the assembly level. Once you've learned that, you'll have the knowledge you need to learn to write assembly code for other platforms, and you'll probably be able to read assembly code for most platforms without necessarily learning all the ins and outs of the platform first.

Different processors have different instruction sets, of course, but they all have certain classes of features and instructions in common. There's always a set of address and data registers (sometimes they're the same, sometimes separate), some version of a stack pointer, and some set of condition registers. You'll always find load and store instructions, arithmetic instructions, and branching instructions. If you learn to use those instructions on any platform, you'll find that you can transfer most of that knowledge to other platforms.

This is the kind of stuff you should be learning in college -- ideas that will remain useful even as the flavor of the month changes. Your career will probably last much longer than any one platform, and you'll always have to learn the details of whatever system you happen to be working on. Also, the chance that you'll ever have to write much assembly for any platform is pretty small. The real value in learning it, for most of us, is to be able to debug, and so that you understand how it all works.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.