Answer the question
In order to leave comments, you need to log in
Should a programmer know assembler?
There are quite a lot of different opinions on this issue on the Internet, some say that it is useful for development, others that it will help write better code, some generally consider assembly language knowledge to be harmful. I would like to know your opinion, preferably flavored with personal experience :)
Answer the question
In order to leave comments, you need to log in
1) You don’t need to know the assembler itself
2) you need to know that there is an assembler at all and it’s useful to at least minimally imagine how it works inside everything and that there is a semantic gap. Well, that is, not the assembler itself is even important, but the principles of how it is done there, what is pipelining, etc. Processor cache, why is it needed, etc.
3) it's not a must have, it's rather optional stuff
4) it's necessary for those who develop systems for which performance is critical (one way or another, when optimizing, you have to poke around in opcodes / bytecode / figure out what optimizing compilers do there).
5) it is necessary for those who develop tools for debugging and profiling.
For the first couple of years, you may not know all this. And then they will determine the tasks themselves, then it’s worth acquiring at least superficial knowledge simply in order to be a more competent developer.
It is desirable for a programmer to understand what is happening "under the hood" of what he writes.
But it is not necessary to study it "from below", from machine codes.
It would be more useful for a web programmer to know, for example, how PHP implements its objects and arrays, or what happens in memory when you use a closure in JS ...
If the depth of knowledge reaches the processor registers, this is, of course, wonderful. But reading outdated information about the operation of the branch predictor without a thorough understanding of how the daily functions of the language you write in works is simply ridiculous.
I’ll probably answer in the style of “there were our times” ...
Nostalgic for the concepts of “mom. I’m not there, there are two programmers at home, don’t worry, they will feed the cat” - they have sunk into oblivion. The young shoots have grown and strive to "cut the loot", less often, but "cut the loot in large quantities." It was for them (you) that we wrote all sorts of features, climbed with a soldering iron and made the future.
Should you learn assembly language? If from under sticks, it is better to throw this idea there. where you would not be able to pull it out.
If you have remained in you (well, you never know, the information field of the earth prompted) and you want to say with iron "what are you, dude, I have to sew a new gut for you? - go to ..." and you will perform tasks that are impossible from the point of view of sevoynish labourers by an order of magnitude ahead of scrawny spectacles - then feel free to go!
But on your way there will be such oddities and stupidities (if you code optimally) that I envy you as a pioneer)))
let's say you have a simple task, for example, display Hello world. It will take time on asma, it will be very difficult for a beginner to understand the principle of programming from scratch in general, you need some basis from a simpler something to understand the basics of assembler, it will not help you write high-quality code, although let's say if you write in a similar language syntax to the assembler that can be. What will help: to understand how the stack works, what is memory, what is buffer overflow, to better understand the number systems, in particular in hexadecimal. It may be useful for self-development, but now it is unlikely to be useful to someone. Only hardcore fans, perhaps, or dudes who write device drivers or other extremely specific low-level features.
Well assembler gives a good idea of how intermediate and high level programming languages work. Yes, and programming directly to iron gives the programmer a good result in terms of performance and compactness of the code in memory. But it can be done by a good programmer.
At least at the level of reading the code and understanding what is written here, it is useful to know other languages, except for the main one, especially low-level ones, at least for general development, and at the most for understanding how things written in them are made.
In practice, the demand will be very low because business requires that tasks be solved quickly.
From personal experience: I can write in C, asm.js, llvm-asm, I understand what is written in C ++, java, c #, but I write most of the time in javascript and sometimes in go, since they solve similar tasks much faster
If you need to redo something in some program, then you can’t redo it in any way without knowing the assembler. For example, you are sitting in Windows, then once it started connecting somewhere and downloading something. You are looking for where it is turned off, and you find that nowhere, that it is so conceived. That's when you climb into the place where she turns on this download, and switch bytes there to the place where she thinks she has already downloaded everything.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question