Slashdot Mirror


Is Assembler Still Relevant?

quarnap asks: "I'm a system administrator running mostly NT boxes. I got into a discussion with a unix admin over whether a knowledge of assembler was of any use in either of our jobs. He insists it is since it provides a fundamental level of understanding of how computers work. I disagree; I say it isn't needed for ANY system administration work since that level of understanding is way below the level at which system administration operates. What do you think?" We've discussed this issue in a general sense in a previous Ask Slashdot, yet when it comes to System Administration it's a toss up. I can see situations where Assembler experience might be a boon to a sysadmin, but not a requirement for the job. What about you?

7 of 58 comments (clear)

  1. Depends on how you look at it I think. by ScroP · · Score: 3, Interesting
    Assembler, I think, is very relevant for programming because it really enhances your knowledge about whats really going on. In turn, knowledge of what a program is trying to do while administring a system is also extremely useful. For instance, alot of software might not report errors that mean anything - but if you've had some expirence programming you can makea good guess as to what might be wrong.

    So, does assembler directly impact the degree to which a person might be capable of administring a system?

    Yes and no.

    It may not directly be of use when installing & configuring things, but I think it indirectly is of great value to an administrator who is troubleshooting things; and actually has some knowledge about computers and software that didn't come from a course or book purely on administration.

    Are programmer admins that common though? I've done admin work, but I moved on to whatI wanted to do, programming, quickly.

  2. Ironically by ScroP · · Score: 3, Insightful
    Ironically, alot of places don't think teahcing assembler is of use to thier CS students anymore. But I disagree with that. Assembler was one of the first things I learned, and I don't think I've have a fraction of the skill I do now if I just learned a high level language and prayed to whatever magic happened when I called some libary function to do whatever needed to be done.

    On the other hand, thats exactly all some people want. I guess it depends on what your goal is - true understanding, or simply getting by.

  3. depends on the system by DrSkwid · · Score: 3, Insightful

    If you are the sort of admin who get's asked "hi AdminMonkey, my email doesn't work, can you sort it please" or "i need nfs access to foo, sort it"

    then assembler probably isn't much use.

    But if you are the type who get's asked "bar program keeps core dumping on me, could you fix it please" then it most probably is.

    You can close this discussion now.

    --
    There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
  4. Paradigm Shift by Catiline · · Score: 5, Insightful

    I'm a system administrator running mostly NT boxes. I got into a discussion with a unix admin [added emphasis mine]
    Look, don't try to talk this over the OS advacacy gulf. In Windows, not knowing how to program at all, even to the extent of never writing .BAT files, is alright. The system will let you cope. (Yes, yes, you will be crippled, but that's aside the point.) This is not true in *NIX land- as any native, immigrant, itenerant or visitor will be able to tell you (if only by their total lack of understanding). *NIX demands that you know why the system works- just to configure it properly- and that requires a knowledge of programming (though I've never encountered needing to know real assembler, knowing the concepts sure helps every once in a while).

    So if you want the answer in simple terms- sure, you're both right, but only in Windows can you get away with no knowledge of programming and still administer a box (yes, yes, poorly, but a MCSE will help. That doesn't teach programming, IIRC).

  5. things to know by spacefem · · Score: 4, Insightful

    Learn stuff, kids, it won't kill you. It's like differential equations - there are some things that just about everyone should take a class in, it proves they're smart enough to have a university degree and gives them a good general understanding of how something else in the world works.

    Many system administrators work with people who not only know assembly, but think in it. Freaky, I know, but I'm in EE and it's basically how we are, and it's who we want to work with. Deal.

  6. Assembly in principle is important by foobar104 · · Score: 4, Insightful

    The majority of the opinions here so far seem to say that learning assembly isn't important for non-hardcore-programmer types.

    I agree, if we're talking about any particular assembly. PowerPC assembly, for instance, or MIPS assembly.

    But everybody who programs-- even people who just want to understand programming-- should slog their way through Knuth's TAOCP. The abstract stuff in that book is implemented in concrete terms through a really simple fictional assembly language called MIX. When you're reading the first chapter of Volume 1, you'll be so frustrated with it that you'll wanna strangle the first person you see. But by the time you get through it, you won't be an assembly programmer, but you will find yourself saying things like, "I should arrange the loops this way, because then the inner loop will fit entirely in registers and the data fetches will be less than one cache line."

    Saying stuff like that makes you sound really smart, which leads directly to better paying jobs.

  7. The "fundamentals" fallacy by fm6 · · Score: 3, Insightful
    He insists it is since it provides a fundamental level of understanding of how computers work.
    True, except for some careless wording. Assembler code is a more fundamental representation of the computer system than what most users or programmers deal with. But it's not the fundamental description of a a computer system. A architectural description is certainly more fundamental!

    Any computer system consists of layers upon layers of abstractions: machine programming models, procedural programming models, OOP models, message passing models, networking protocols, application frameworks.... Nobody can master all of them. You can't even hope to master all the ones that you (directly or indirectly) use! The best you can hope for is to master the abstractions that are directly relevent to your work, and have a schematic knowledge of those that indirectly affect you.

    That being said, studying low-level programming actually does help you understand how computers work -- provided you study it in context. You need to study it not as a "fundamental" programming model, but as one piece in a very big puzzle. And you need to avoid focusing on one particular processor -- that will only tell you about specific, possibly obsolete, design decisions, not fundamentals of "how computers work".