Why should I learn assembly language in 2020? (complete waste of time?)

preview_player
Показать описание
---

Why should I learn assembly language in 2020? (complete waste of time?) // Assembly language is one of the most hated things about computer science education. It's also the foundation for nearly everything that happens on your computer. In this video, I describe a few reasons why you still might want to learn assembly in 2020.



***

Welcome! I post videos that help you learn to program and become a more confident software developer. I cover beginner-to-advanced systems topics ranging from network programming, threads, processes, operating systems, embedded systems and others. My goal is to help you get under-the-hood and better understand how computers work and how you can use them to become stronger students and more capable professional developers.

About me: I'm a computer scientist, electrical engineer, researcher, and teacher. I specialize in embedded systems, mobile computing, sensor networks, and the Internet of Things. I teach systems and networking courses at Clemson University, where I also lead the PERSIST research lab.

More about me and what I do:

To Support the Channel:
+ like, subscribe, spread the word

Рекомендации по теме
Комментарии
Автор

Writing in assembly makes you realize how comfy job you have with all these high level languages

tomashorych
Автор

Learning assembly will make you:
1. Understand that 1kb is a lot
2. Can command the computer yourself.
3. Understand the computer from the lowest level.
4. Writing an operating system *YOURSELF* .
5. Understand what did the compiler produced.

clementpoon
Автор

If you enjoy something it is never a waste of time 😊

hansisbrucker
Автор

Learning assember early on, and understanding how C compiles into it, has been a significant influence on my coding technique and benefit to my career.

diceandbricks
Автор

I once wrote a simple binary tree program in both C and assembly, and the C one ran faster :(

marusdod
Автор

I am studying ARM Assembly at uni. It's really useful when it comes to raw performance, but the code is much harder to organize. Respect for developers back in the 80/90's

MsThekiller
Автор

People think I’m crazy for enjoying ASM, but the Raspberry Pi and ARM architecture has been a great incentive to get back into playing with it again!

JoeBurnett
Автор

I definitely agree. The value of a CS education is that you understand the underlying bits and pieces. If you want an applied approach to what you'll most likely be doing at your employer go to a bootcamp. Of course it's like they say: "easy come, easy go". If your skills can be learned in 3-4 months then you're easily replaceable and therefore less valuable in the marketplace. By the way I recently came across your channel and gotta say it's chock full of extremely useful information. Thank you for the high quality content!

tmy
Автор

Well, as an embedded engineer on the low and deep level, as I am, there is hardly any way to avoid assembly. My profession includes writing parts (or even the entirety) of device drivers in assembly, startup code in assembly, parts of operating systems in assembly, optimize specialized functions in assembly and so on. I actually write hex code on the fly too (with the help of the OP code TRM for the particular architecture of course). Sometimes I am too lazy to flash code changes (or write them in the first place), so I patch that stuff on-the-fly in RAM via debugger (given the code runs not from ROM). Also, high level software (wrappers) can make use of assembly too. I once wrote an ANSI C over ASM to C++ private method invoker for example. We had to call several C++ classes' private methods from the ANSI C context, but rewriting the classes would have broken the code base at that point. So writing a custom invoker in assembly mixed with C/C++ was the perfect intermediate solution. The compiler could not complain about "wrong access scopes", we could easily make our release and schedule a refactoring of said classes for the next time.
But true, I have one of those highly specialized jobs, but I still would recommend anyone seriously thinking working with embedded architectures (and I mean the real baremetal stuff, not this wanna be Arduino type of things) to dip their nose into it. See if you are fit for low or deep level (and ready to take the challenges) or if you rather should stay in the mid or high level embedded engineering where there is practically no assembly in your daily work (except seeing it in the debugger).

leviathanx
Автор

At my University I am at now, I am lucky to be able to go even further than assembly (we learned MIPS). Our course had us learn concurrently with assembly to build a custom made CPu. We used the assembly code, convert it to its binary representation and then… pass it through our own custom made 5-stage MIPS based 32 bit processor. It was by far the most difficult class I’ve ever taken but i learned truly what was happening at such a low level. My professor at the time was a retired engineer who had worked at Intel for 20 years making CPUs among other companies . I am studying computer engineering at the university of Arizona and the class was ECE369 if anyone wants to look it up.

billh
Автор

With assembly language, you control the implementation.
That's something that no HLL will give you. Coming from the embedded hardware side, there are times when you really do need that control. Usually it is when bringing up a machine (you might not have memory yet, and no stack either), or code that must execute with exact defined timing and access order (too fast and you violate timing, too slow and the hardware watchdog will fire), or maybe you are writing a thread switcher.

kkpdk
Автор

I can vouch for what you said. I'm an embedded engineer and knowing assembly, I can read a core dump. Over time you can even recognize what compiler generated the code, you'll recognize for-loops vs do-while loops in assembly making it easy to line up patterns in the higher level c/c++ code. And of course, you get major bragging rights when you're the person called upon to debug an issue mere mortals struggle with ;)

revealingfactsall
Автор

"assembly is human readable machine language"
Next screen: unreadable gibberish.

zdrux
Автор

solving 'crack-mes' or binary-explolitation exercises in CTF (capture the flag competitions) is a great way to make learning assembly fun, and as an added bonus learn about security.

gcm
Автор

A lot of game companies hire engineers that know assembly to reverse engineer cheating software

brunovaz
Автор

The reason I learned x86, x86-64, 32-bit ARM, and 64-bit ARM assembly programming was more likely due to a mid life crisis. I recall looking cross eyed at some Assembly Instructions in a book about the Magnavox Odyssey or some other old game console that my father picked up from the flea market; which also included a TRS-80 computer along with a cassette tape storage. I didn't understand any of up. So many years later I decided to actually study this ancient art. I'm glad I did. It helped me better appreciate the old school programmers, the modern programmers and computer technology overall. That said, it's good to know for the sake for application debugging and its very therapeutic; especially if you are a control freak. :)

InfinitelyManic
Автор

I love programming in assembly as a hobby: I 1st learnt about microprocessors at college by programming a 6800 using nothing but switches and discrete LEDs, i.e. programming in the machine code, This is the best way to learn!

TOMB
Автор

Personally, I want to learn assembly because I _really_ want to understand how software actually controls hardware. Even learning C++ and C, we've already gone so many layers of abstraction above what's happening on the hardware level that I feel like there's so much information I'm missing. I've curious about the relationship between hardware and software for a long time and then I took logic design course, which gave me a taste of how it all works, which just made me want to understand more.

Lucky
Автор

Interesting video please keep on creating content like this, not many content creators don't or can't create this type of content, thank you.

DevlogBill
Автор

Learning Assembly is mandatory. It is fundamental. You don’t need to use it every day but you must use it at least once to write some bare metal code like a simple boot loader.

DevDungeon