Click to See Complete Forum and Search --> : Is learning assembly language worth it?
gonzalioz
Dec 9th, 2009, 06:39 AM
Hi all,
Programming is my job/study and also hobby at the same time. I am really interested in how everything works and I am thinking about spending some time learning assembly language.
You learn how a computer really works with assembly language and I think that knowledge will be very useful to solve problems and write more effective code in higher programming languages.
I like to know if you think learning assembly is a waste of time or not. Because it's really old and even Windows itself is written in C. A higher language then assembly...
Shaggy Hiker
Dec 9th, 2009, 08:10 AM
It may be old, but it is also fundamental. However, as you have posted many things in the VB.NET forum, I would have to say that ASM is less useful for you, as some of the efficiencies in ASM simply do not translate well into VB, where they might in unmanaged C/C++.
Having said that, I still encourage you to look into ASM. You might never write a single line in the language, but your second sentence summed up the reason to learn fairly well. There is also the advantage that if you learn ASM, you will find the generated IL easier to understand, as IL is similar to ASM in several ways. Of course, reading IL is not necessary for programming, but it can be interesting for seeing how certain problems are solved.
tr333
Dec 9th, 2009, 05:23 PM
Learning AVR-ASM at uni was quite beneficial. One one part, it showed us how to take care of memory optimisation, writing efficient code, etc. On the other part, it was so much of a challenge that I forgot almost everything after I finished using it. Haven't had to think about it much either since most of my coding is Perl.
namrekka
Dec 10th, 2009, 07:32 AM
There is no general assembly language. Its depents on the processor.
RhinoBull
Dec 10th, 2009, 07:37 AM
Yes, ASM is fundamental and it certainly does teach how to do say memory optimisation BUT imho learning assembly these days is a waste of time unless you want to become system(s) programmer or you have nothing better to do.
Btw, Windows was written in more than just one language - they primarily used C, C++ and C# but some parts were done in assembly.
Shaggy Hiker
Dec 10th, 2009, 09:28 AM
Let me amend my answer to state that I don't think learning ASM to any great depth is currently valuable unless you are doing some low level systems or driver programming. learning it sufficiently to be able to read it roughly, is sufficient, as that will give you information on how ASM programs are laid out, how memory management works, and so forth. Actually learning it to the point that you can write anything significant in it is probably not so useful.
gonzalioz
Dec 10th, 2009, 09:42 AM
Ok thank you all for your replies.
I am thinking of writing a tiny OS (on a floppy disk) in which you can type something, save it and load it next boot. That will be a good exercise and a challenge. I have absolutely no idea how to do this, but that's when I perform best :). I need something challenging to keep me going and not giving up half way.
I have been studying a lot of theory today and yesterday about data- ,control- ,memory bus etc... It makes you appreciate what a wonderful piece of technology a computer really is.
Shaggy Hiker
Dec 10th, 2009, 11:19 AM
Yes, it certainly does that.
Max Peck
Dec 10th, 2009, 11:36 AM
You've heard the phrase "A rising tide raises all ships". Well ... for the most part the tide isn't at assembly language any more.
I spent years writing assembly myself, back in the early PC days - had to. Memory management was still being developed (I wrote memory management and many device drivers) and it rocked. At that point in time (back in the early to mid 80's) you really needed to know assembly to get the most out of the PC environment.
Today? I wouldn't say that you should spend any time you can't afford to waste with it. If (as you have said) it's strictly for fun so you can learn the fundamentals of computer architecture, then cool. However as has also been said, if you are planning to use the knowledge to get a job or a contract you will need to be interested in very low-level device control type work. You won't write a "killer app" in assembly today. There are simply too many optimized compiler offerings that allow you to get high-performance code at a high level today.
-Max :D
Jenner
Dec 11th, 2009, 08:29 AM
Unless you're trying to learn how to program esoteric devices like microcontrollers, there really isn't a need anymore . I also learned assembly years ago. I'll be damned if I can remember even a tenth of it today. Every now and then, I come up with a situation where it was nice to have, but I wouldn't recommend anyone learning it unless they had a need to.
There still are needs for assembly; don't get me wrong. Drivers still need to be written for new hardware and assembly is required. Companies that have lost source code to legacy applications need programmers who can reverse engineer (remember Y2K? :P ); and assembly is a great reverse engineering tool.
Pradeep1210
Dec 11th, 2009, 08:59 AM
I think that spending time on MSIL rather than ASM these days would be more fruitful.
dilettante
Dec 11th, 2009, 05:50 PM
I'd think much of the benefit of learning to write close to the machine level can be obtained by working with one of the emulators of 8-bit processors or pseudo-machines.
It is an entirely different matter if you are going to be doing microcontroller development, and in general for anyone going into systems programming. Even there an emulator for a simple machine can be a good place to start though.
Unless you're really going to be working at that level "real" machine experience isn't so important. The background concepts are the same using a pseudo machine.
Here (http://www.crbond.com/soft6502.htm) is a simple example of the sort of thing I had in mind.
DeanMc
Dec 13th, 2009, 03:08 PM
Learning anything is a good thing. If writing an OS interests you there is a book called Code that you should pick up. It starts of slow but eventually paper prototypes a complete basic OS, it wont give you any specifics but it will explain some of the basics like how to write code that loads code to allow you to write code to build the OS.
gonzalioz
Dec 14th, 2009, 05:07 AM
Learning anything is a good thing. If writing an OS interests you there is a book called Code that you should pick up. It starts of slow but eventually paper prototypes a complete basic OS, it wont give you any specifics but it will explain some of the basics like how to write code that loads code to allow you to write code to build the OS.
Can you give me a link to where I can buy that book? Can't find it with google.
DeanMc
Dec 14th, 2009, 06:22 AM
http://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319/ref=sr_1_1?ie=UTF8&s=books&qid=1260793332&sr=1-1
vbforums.com
Copyright Internet.com Inc., All Rights Reserved.