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. 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.

  2. 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
  3. 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).

  4. 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.

  5. Ask your vendor! by Paranoid · · Score: 2, Insightful

    Developers obviously have a benefit to knowing assembly, if no reason other than debugging skill. Those who don't know it are reduced to blaming Bill, other components of the system, or the hardware, all of which are counterproductive excuses at best.

    I believe sysadmins have a benefit to knowing it as well, simply because you know whats going on under the hood, so to speak. This kind of knowledge allows you to actually understand the worth of things like 3DNow!, SSE/SSE2/MMX, pipeline length, cache consistency, hyperthreading, and all the other things that vary from processor to processor and from software package to software package. I believe this is important because you aren't reduced to cointosses for whose hype to believe, when deciding what things to buy/download and deploy.

    In addition, if assembly wasn't relevant for administration of a system, why would you include register dumps in bluescreens/Oopses? Rebooting doesn't cut it, that only temporarily alleviates symptoms and doesn't solve the problem. I believe "keeping a system running smoothly" definately counts as a sysadmin's role, therefore a sysadmin should have good debugging skills. Even if you pass the debugging off to someone who would know, wouldn't it be nice to know WHICH hex numbers on that bluescreen would be helpful to him/her in finding the bug?

    If you're constantly answering questions like "I forgot my password", "is the network down?", and "I need a damned good kicking please?", then perhaps assembly wouldn't help you here (unless you're trying to achieve BOFH-style *DUMMY MODE*). However, this means you are either not a sysadmin or are wearing multiple hats - this stuff is commonly called "Tech Support".

    --
    Paranoid
    Bwaahahahahaa.
  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".