before you code, learn how computers work

Поделиться
HTML-код
  • Опубликовано: 27 сен 2024

Комментарии • 632

  • @LowLevel-TV
    @LowLevel-TV  7 месяцев назад +20

    Want to learn how computers work? Check out my courses at lowlevel.academy !

  • @sleepib
    @sleepib 7 месяцев назад +2546

    I think to learn the lowest level, the first thing you learn is how to identify copper ore. More practically, maybe nandgame.

    • @LowLevel-TV
      @LowLevel-TV  7 месяцев назад +852

      acquire rock. shoot lightning into rock. make rock think. observe

    • @jayshartzer844
      @jayshartzer844 7 месяцев назад +327

      If you are not assembling the copper atoms by hand from subatomic particles is it even low level?

    • @pabloalfaro2595
      @pabloalfaro2595 7 месяцев назад +26

      @@LowLevel-TV i did not expect to see you here

    • @fus3n
      @fus3n 7 месяцев назад +16

      he is too deep

    • @yoavmor9002
      @yoavmor9002 7 месяцев назад +36

      Copper? Copper is nothing except being constructed above silicone. Master silicone, master computers.

  • @النفس_المطمئنة
    @النفس_المطمئنة 7 месяцев назад +853

    1- code in low level
    2- Learn an Assembly variant
    3 Learn Reverse Engineering
    4- Pick up a board to learn write C on it

    • @fhudufin
      @fhudufin 7 месяцев назад +41

      5- code in python

    • @suaopniao5878
      @suaopniao5878 7 месяцев назад +60

      6 - go for web career

    • @baranjan6969
      @baranjan6969 7 месяцев назад +59

      7 - You may now code in scratch

    • @surajmandal_567
      @surajmandal_567 7 месяцев назад +52

      8- Change the field and learn Biology. You have wasted much of your life on a screen. 😂

    • @sylvereleipertz955
      @sylvereleipertz955 7 месяцев назад +12

      You mean 0,1,2,3. That's a top 3 remember

  • @adityaray203
    @adityaray203 7 месяцев назад +1097

    C program teaches you that with great powers comes great responsibilities

    • @melficexd
      @melficexd 7 месяцев назад +30

      C is the super programming language, or as i read in my college, C is God's programming language

    • @Henvag
      @Henvag 7 месяцев назад +33

      @@melficexd Holy C the goat/TempleOS😂

    • @FLMKane
      @FLMKane 7 месяцев назад +31

      ​​@@melficexdclearly your college needs more LISP
      God only had 6 days, he didn't have time to debug seg faults.

    • @sardineghali
      @sardineghali 7 месяцев назад

      very nicely said

    • @ohdude6643
      @ohdude6643 7 месяцев назад +4

      and big fuck ups -- which is how we learn

  • @mourneris
    @mourneris 7 месяцев назад +311

    "We tricked rocks into thinking." I love this.

    • @EdWestfieldJr
      @EdWestfieldJr 7 месяцев назад +6

      🤯

    • @smallSphere69
      @smallSphere69 4 месяца назад

      ​@@EdWestfieldJr 🤯

    • @bensonboys6609
      @bensonboys6609 3 месяца назад +7

      You’re not the only one cursed with knowledge - Thanos

    • @bluewater5588
      @bluewater5588 15 дней назад

      @@mourneris wait i dont get it? Hahahahaha

    • @monzerfaisal3673
      @monzerfaisal3673 День назад

      @@bluewater5588 CPUs are made of sand

  • @rentristandelacruz
    @rentristandelacruz 7 месяцев назад +903

    Highest Level Programmer/Hacker: "I only do my programming and hacking on the highest level, social engineering. I don't even touch the keyboard anymore. I just manipulate people and have them do that task for me."

    • @JayDee-b5u
      @JayDee-b5u 7 месяцев назад +93

      You work in the 'news'?

    • @golfchanl
      @golfchanl 7 месяцев назад +4

      Haha😂 So true, love this comment

    • @thezouave7636
      @thezouave7636 7 месяцев назад +49

      This is what is known as a "Software manager", or possibly, "Senior Developer" who spend 70% of their time reviewing other people's code and 30% of their time in meetings.

    • @FLMKane
      @FLMKane 7 месяцев назад +7

      Ah yes. Thats what Linus Torvalds taught me back in 2007

    • @goldensunrayspone
      @goldensunrayspone 7 месяцев назад +15

      no need to use a fancy tool if you just call them up, pretend you're their district manager, and ask for their password

  • @thewaterbear
    @thewaterbear 14 дней назад +36

    Ed, "Before you learn how to code, all you have to do is ALREADY know how to code. It just makes learning how to code so much better "

  • @lisbyte_
    @lisbyte_ 6 месяцев назад +556

    If C is not low level, Python is raw English

    • @litjellyfish
      @litjellyfish 4 месяца назад +70

      It all depends on what you compare with haha. Back in early 80s C was for sure considered pretty high level

    • @losing_interest_in_everything
      @losing_interest_in_everything 3 месяца назад +98

      Compared to electrical signals, asm is a high-level language!

    • @litjellyfish
      @litjellyfish 3 месяца назад +34

      @@losing_interest_in_everything yes let’s go back to the basics. Love those old punch cards as well. Back when women did a lot of the coding

    • @losing_interest_in_everything
      @losing_interest_in_everything 3 месяца назад +12

      ​@@litjellyfish That's how I learned what legacy code is ^^'

    • @lorenzopiombini3406
      @lorenzopiombini3406 3 месяца назад +12

      If you see the amount of assembly generated for a simple printf(“hello world”); you’d see why it’s an high level language, maybe the first of this type, but there is still lots of abstraction in C, I think generally you refer to C as a low level because it gives you memory control like no others probably, which is also a bad thing 😅

  • @schism15
    @schism15 7 месяцев назад +56

    This video came at the right time for me. I'm a backend engineer working primarily in Python, but I've been feeling an urge to start tinkering with something lower level. I want to start datamining games but I have no idea how to do it given the files are encrypted. I found your channel because I was looking for stuff on reverse engineering.

    • @-_Admin
      @-_Admin 7 месяцев назад +4

      Learning Cryptography may help
      INP: "a"
      Base 8: 141 | Octal
      Base 10: 97
      Base 16: 61 | Hexadecimal
      B Stack | 001000 => 512

  • @antoniodeodilonbrito7643
    @antoniodeodilonbrito7643 7 месяцев назад +269

    “Or… God forbid… Javascript…” Yup, very accurate! 😂😂😂

    • @TheVirtualArena24
      @TheVirtualArena24 7 месяцев назад +4

      Is js bad?

    • @multivitamin7
      @multivitamin7 7 месяцев назад +45

      @@TheVirtualArena24 not necessarily. It just shouldn't be used for everything. It's just a bit of a meme due to its weird behavior and funky ecosystem.

    • @TheVirtualArena24
      @TheVirtualArena24 7 месяцев назад +1

      @@multivitamin7 ohh ok

    • @moistnar
      @moistnar 7 месяцев назад +17

      I remember trying to learn JS after first learning C and Python, some of the behavior in that language blows my mind that it's as widespread as it is

    • @multivitamin7
      @multivitamin7 7 месяцев назад +5

      @@moistnar true but the same can kinda be said for python as well. Python is also super quirky.

  • @regiondeltas
    @regiondeltas 7 месяцев назад +117

    Wheeew - simply couldn't agree more. I've been coding casually, but also to a degree professionally (Think DevOps as opposed to developer) for nigh on 20 years. A few years ago I started to pick up, essentially, what this video says - I dipped my toe into Reverse Engineering, I started playing with C, and I started writing embedded software for STM32 devices (and now Raspberry Pico) in C & now Rust. Without a doubt, I've learnt more in 2 years of those projects than in the preceeding 18 despite having a vast list of succesful projects under my belt. Modern software just abstracts SO much - honestly, I would say I didn't even really, truly, understand arrays and lists until I learnt C. And then you start writing embedded and realise there is no memory allocater, and THEN it gets interesting all over again. I just wish I'd picked this stuff up 20 years ago.

    • @GL0697
      @GL0697 7 месяцев назад +2

      As someone in the automotive industry for 30 years I am looking into embedded c & misra c variants. Every night I'm learning the c language and the concepts arrays, pointers, recursion, etc etc. What path, data structure, and/or syntax would you say is the best to concentrate more on?

    • @YandiBanyu
      @YandiBanyu 7 месяцев назад +2

      @@GL0697 If you are following MISRA, then you really should just read the document. It instructs you on the do and don't with the reason why.

    • @GL0697
      @GL0697 7 месяцев назад +2

      @@YandiBanyu I guess I'm looking for practice problems/projects that I can do to learn. So far it's just scouring the internet.

  • @gamermaniac8506
    @gamermaniac8506 7 месяцев назад +25

    I tried to write a blinker led example in assembly before for an Arduino nano before and it was challenging and teaches a lot of stuff, so seeing you releasing a video about that topic exactly made feel more confident that i'm in right way

  • @Danny-hj2qg
    @Danny-hj2qg 7 месяцев назад +16

    0:47 "God forbid Javascript." LOL!

    • @hma201
      @hma201 8 дней назад

      @@Danny-hj2qg why all the hate for js ?

  • @scootergirl3662
    @scootergirl3662 7 месяцев назад +29

    Lowest level programming is one of my favorite RUclips channels ever. When I first got into tech I was pushed more towards front and engineering which is all fine and dandy but I found that I wanted to learn how the hardware interacts with the software. A lot of people seem to think that that is not needed anymore but I came to find out that a lot of people who have those skills are retiring or literally dying off.
    So I predict that there is going to be a high need for people that understand very low level code - even if there are not as many job openings as say JavaScript Developers, companies will have a hard time finding people for low level jobs.

  • @Αλέξανδρος56
    @Αλέξανδρος56 5 месяцев назад +8

    Turing complete on steam teaches you how a computer work from the very beginning in a very pedagogical way, it's very nice.

    • @bensonboys6609
      @bensonboys6609 3 месяца назад +2

      Now I want to look into it! Thank you! I did not know this existed!

    • @Αλέξανδρος56
      @Αλέξανδρος56 3 месяца назад

      @@bensonboys6609 Glad to be of help. It won't replace a real class on the subject and I highly recommend you to check on Boolean algebra (and a few basic theorems such as DeMorgan's) to avoid being stuck at some puzzles as I deed ✌️

  • @ukaszgrabowski3647
    @ukaszgrabowski3647 7 месяцев назад +77

    I like your mindset, teaching people low level as we move into more abstract and advanced tech. You're doing gods work.

  • @chipswoon4554
    @chipswoon4554 5 месяцев назад +4

    Spot on with technological advancement abstracting us away from the metal.

  • @Diablokiller999
    @Diablokiller999 7 месяцев назад +11

    Get a uC like any Atmel ATMega.
    Code with C, later use ASM and toggle some outputs, control a motor, led, pumps etc. and create a small project like an automatic water pump that pours water on a plant when it's getting too dry (measure impedance between two nails).

  • @long-live-linux
    @long-live-linux 6 месяцев назад +2

    Writing OS from scratch was the best learning experience for me. It didn't have userspace or scheduler, but it gave me the basic idea of how computers work.

  • @deforesttthompson9299
    @deforesttthompson9299 7 месяцев назад +24

    In my opinion, the best way to learn low-level stuff is to write a compiler back end from scratch.

    • @PushyPixels
      @PushyPixels 7 месяцев назад +5

      Interpreters and emulators are quite good for this too, and are good stepping stones before compiler.

    • @trots4940
      @trots4940 7 месяцев назад

      @@PushyPixels Is it easier to make an emulator than to make a compiler? I thought it was the opposite

    • @МихаилТихомиров-м8ч
      @МихаилТихомиров-м8ч 7 месяцев назад +1

      @@trots4940 it's not that hard to make emulator that just works but way more harder to make it run fast and not consume too much memory

    • @trots4940
      @trots4940 7 месяцев назад

      @@МихаилТихомиров-м8ч It makes sense. I really want to make some simple games in assembly too, I think it's a good way to learn it

    • @PushyPixels
      @PushyPixels 7 месяцев назад

      @@trots4940 I mean, it depends on what you are emulating. If it's an old virtual machine like Chip-8, it's pretty damn easy, if you are already a programmer it can be done over a weekend, and I'd expect a student to be able to do it in a couple weeks. Real hardware stuff is definitely trickier, and sometimes you have to deal with things you might not realize on otherwise simple systems. Like when I started making an Atari 2600 emulator, the CPU and memory emulation portions were quite simple, but so much of that system is dependent on NTSC emulation as all the timings come from the TV for that system, and so I didn't get graphics up and running nearly as easily as I thought I would. NES is actually not tooooo bad if you are focused on just the simplest mapper (emulating Donkey Kong) though I haven't actually done that one myself yet (it's next on my list). I haven't explored Intellivision but it might actually be a really good candidate for emulation practice as well, as it's a bit more advanced than Atari but still not super complicated hardware-wise.

  • @MartinLindsay
    @MartinLindsay 7 месяцев назад +9

    There's a lot of focus on how your cpu does things, and honestly there's a lot I personally could learn there but I think the one topic you might be overlooking is how memory access and caching works. I spent a few months reading and learning about efficient use of cpu caching (and as a result efficient multicore programming) and it blew my mind what a difference it made. I recommend the paper What Every Programmer Should Know About Memory by Ulrich Drepper.

  • @tony-does-stuff
    @tony-does-stuff 3 дня назад +5

    Step 0: learn what all of these words mean

  • @azemazaotaru9788
    @azemazaotaru9788 6 месяцев назад +4

    I personally felt attacked when he said God forbid JavaScript 😂😂😂😂

  • @lashlarue7924
    @lashlarue7924 3 месяца назад +5

    The issue in my domain is that the juice will never be worth the squeeze. I will NEVER have a business case that would justify using a lower level language. There is FAR too much value to be unlocked with just Python and nothing else.

  • @TheResearchEngineer
    @TheResearchEngineer 16 дней назад +2

    Probably the best advice to learn a language is writing an HTTP server. Solid advice.

  • @disgruntledtoons
    @disgruntledtoons 5 месяцев назад +3

    C is a layer directly on top of assembler, and is best approached on this basis.

  • @black56night
    @black56night 7 месяцев назад +3

    Having coded for Motorola 6809E and some 68k back in the 90s, the one thing that I've noticed over the last few decades is that people in our technical field have lost the ability to troubleshoot. Learning by making mistakes also seems to be stigmatised somewhat. It's by going through this process and stumbling and failing, then being able to find your bugs that you learn. The ability to leverage internet searches at your fingertips and the collective knowledge of peers is incredible today compared to 30 years ago. And of course "Digital Intelligence"(AI) has also spoiled us. Learning the low level is great but not everyone necessarily appreciates it significance. Do modern curriculums at university even teach it anymore? Or is it merely that the amount of compute at our fingertips spoils us? Loving your videos and thank goodness for people like you. 👍

    • @dipanzan
      @dipanzan 7 месяцев назад

      I follow this channel a lot, and I really like C/kernels and low-level programming in general. Would you say for someone who's not a beginner but not an expert either to learn concepts from a book first, lets say operating system internals/kernels and then apply those concepts/implementation? I've been trying to learn and understand all things low-level and hopefully someday land a job in this niche field but I only have experience in high-level web/mobile development.

  • @Brawlstriker89
    @Brawlstriker89 22 дня назад +1

    I was lucky to have started my programming journey with c++. Then learned html, css, JavaScript. Then c and assembly.

  • @theOsitoProject
    @theOsitoProject 14 дней назад +9

    "Before you take a plane, learn how planes work; before you take a ride, learn how vehicle motors work". See how ridiculous is that? Same with computers. Developer here. I have been working with computers for 8 years, and while certainly would be of help to know how things work "at the low level", that's definitely not an issue for the average aspiring developers.

    • @Singularity606
      @Singularity606 5 дней назад +1

      The right analogy would be, say, flying a plane or performing maintenance on one. Incidentally one of the industries that's suffering the most under the competence crisis.

  • @rajan_0
    @rajan_0 7 месяцев назад +11

    Lmao, I opened your website from the description and my antivirus immediately flagged it as a malware.

  • @hypergraphic
    @hypergraphic 7 месяцев назад +2

    Love that last part about tricking rocks to think. My own personal definition of magic is "the ability to manipulate reality with consciousness". When it comes to computers I think we do just that, which is part of what makes it so cool.

    • @maxmuster7003
      @maxmuster7003 7 месяцев назад

      I tried it with chatgpt, but it creates to much error.

  • @MFC_works
    @MFC_works 8 дней назад

    Thank you for creating such insightful and helpful content keep posting! first understand the system next learning the system

  • @shafransky93
    @shafransky93 7 месяцев назад +2

    Best description I've heard for a computer "We literally tricked rocks into thinking"

  • @DecartesGreatStar
    @DecartesGreatStar 7 дней назад

    c is so high level when asked if it wants soup or salad it responds with 'super salad?'

  • @del669
    @del669 14 дней назад

    I'm a hobbyist with higher languages and this video got me interested in lower languages! Thank you very much, subbed!

  • @danielsutherland2599
    @danielsutherland2599 7 месяцев назад +3

    I'd love LOVE love to see a video about the best practices for rewriting a high level lang to low, I can interpret x86 asm perfectly and vice versa but when I'm RE'ing I tend to create something that's only good enough to run.
    Great video fren

  • @ULTIMARAGNAR0K
    @ULTIMARAGNAR0K 7 месяцев назад +2

    I wished you’d provide excellent links. There’s a lot of trash online and helping people find good sources will make them work out what’s a good source and what’s trash.

  • @dtikvxcdgjbv7975
    @dtikvxcdgjbv7975 7 месяцев назад +2

    I love Your work. Your knowledge spreading and enthusiasm is contagious!
    Keep on being like that.

  • @paulcosta8297
    @paulcosta8297 7 месяцев назад +3

    The best advice in my opinion is to learn Delphi. With the Pascal language and inline assembly, you have maximal low level abilities, but get to produce a useful, tractable Win32 native app with a GUI form editor and very useful RTL which is way cleaner than Cpp STL.

  • @aryanjoshi2796
    @aryanjoshi2796 7 месяцев назад +1

    Thank you for guiding me. I always enjoy learning about how computer stuff works. Thanks for your amazing content!

  • @mt-qc2qh
    @mt-qc2qh 7 месяцев назад +109

    Absolutely spot on! I'm retired after 45 years in my career that started first in hardware (Data General Nova and Eclipse), assembly programming on the same. I learned C from the first edition of K&R C Programming language writing network software for bridging the minicomputers to Novell PC based networks. Knowing the internal register architecture was key to understanding every processor I've used since. I can't quantify how many hours I spent in CodeView hybrid view where the C code was shown in assembly for debugging. I spend most days even now in C on the various microcontrollers enjoying embedded programming. The ties between hardware understanding and programming is essential.

    • @Zeni-th.
      @Zeni-th. 5 месяцев назад +1

      Hey I wanted to ask if K&R is the best for a completely new programmer, don't know anything.
      Will it take me from 0 or does it expect me to be at 30 to take me to 99?

    • @mt-qc2qh
      @mt-qc2qh 5 месяцев назад +5

      @@Zeni-th. The K&R book was a reference for us when the C language was new. Now there are so many resources available, even for free, on the net that I wouldn't start with K&R. Even small platforms like the Arduino are excellent to learn C programming and the number of example programs is astronomical (and with the Arduino/ESP platforms you can extend your learning into Python easily as well.)
      Great place to start,

  • @pavelhassan7457
    @pavelhassan7457 7 месяцев назад +3

    Using C, you can not create big things but you can apply your knowledge on small and outdated things. Using object oriented concept, you can create complex but efficient architecture.

    • @TranscendentBen
      @TranscendentBen 12 дней назад

      You have to wonder how complex but efficient things were made before the common use of object oriented concept.

  • @LukSilva12
    @LukSilva12 15 дней назад

    I have a lot of interest in low level coding and low level knowledge of computers. But my main interest is graphics programming and game development, it is what I am learning now. And, to learn how to write shaders and graphics code (openGL, directX, etc), it is almost mandatory to understand the low level of things, how a GPU works, how data transfer and access works, etc. Liked a lot your video! Will try to make a OpenGL 3D renderer in pure C (Right now I code in C++ at work and use it to study too, together with GDScript for godot when not messing with low level)

  • @omaimakamran4795
    @omaimakamran4795 Месяц назад

    Thanks for creating this channel. I am also amazed about how we tricked rocks into thinking, and I want to learn as much as I can about it!

  • @spacenoodle8207
    @spacenoodle8207 4 дня назад

    Currently learning c and assembly at uni, and I gotta say, this is hell. Maybe it's because the teaching tactics at my uni are equivalent to throwing someone into a river in hopes they would learn how to swim, and calling them a lazy idiot if they ask questions.
    Idk, it seems like a lot of things are so complicated, I would never learn them well enough for this knowledge to actually be useful. Isn't it better to rely on a safety net of a language like python, if that means I can do things I like, and not waste years of my life and destroy my health trying to become assembly expert?

  • @faizanmohammed7687
    @faizanmohammed7687 24 дня назад

    Understanding what is programming, how electrical pulses from wires comes to CPS and converted into 0s and 1s. and how the OS works while program executes. It's just too good to know all these and helps me alot in my compiler design and automata languages. Also in many subjects of CS

  • @Maagiicc
    @Maagiicc 7 месяцев назад +6

    Please bring back low level review. I have a great project for your channel

  • @mikeearls126
    @mikeearls126 13 дней назад

    nand to tetris - amazing. Learning about logic gates was mind blowing

  • @Colaholiker
    @Colaholiker 7 месяцев назад +2

    As an embedded developer, I couldn't agree more.
    The only thing that is quite alien to me and will likely always be is X86 assembly. I dabbled into it way back when Real Mode was the only mode you'd use, but when I look at 64-bits code, I don't understand a thing. But then again, I hardly program anything for the PC - mostly just tools for my actual work, and those tools often are written in Python. But I do understand ARM assembly to some degree, and I worked a lot in assembly on different 8-bit MCUs. There was a time when I even knew most of the 8051 opcodes and could basically read a hex dump as if it were an assembler listing.... 😅
    And when it comes to STM32 - while their idea of generating a lot of code for you is nice, the code is usually pretty terrible. As is their Eclipse-based IDE (ugh), but fortunately you don't have to use it.

  • @dameanvil
    @dameanvil 7 месяцев назад +8

    0:00 🎓 Focus on learning low-level concepts such as C programming language.
    2:49 🧠 Understanding an assembly variant provides insights into CPU behavior and aids in code optimization.
    3:56 🔍 Learning reverse engineering basics enhances understanding of code functionality and aids in debugging.
    5:18 💡 Exploring embedded systems with boards like STM32 and writing C code for them enriches low-level understanding and practical skills.

  • @Phredwerd
    @Phredwerd 7 месяцев назад +1

    LoL it's funny as I learned assembly before I even learned C! Turbo Pascal was a great low level language back in the early 90's as you could write whatever you needed in it but could easily embed assembler inside your Pascal code without needing external files.
    In fact, when the x86 made the jump from 16-bit registers to 32-bit. The current assembler in Turbo Pascal didn't know how to use them so we'd have to embed machine code nemonics inside our inline assembly code to use 32-bit instructions. If I recall correctly it was something like:
    db 0x66;
    Machine Language < Assembly Language < C/C++

  • @YandiBanyu
    @YandiBanyu 7 месяцев назад +6

    To further discuss about C being low level, defining low level language will depend on what are you doing. If you are doing C programming and use a framework, can it still be called low level? Or is it like dialect where the language is the same (C) but how you use it can vary with framework to framework? Arduino framework literally abstract away a lot of things but still give you access to hw if you need to. But yeah, all things considered, C language has a compiler for most architecture so it's still quite universal while being able to do low level stuff.

    • @YandiBanyu
      @YandiBanyu 7 месяцев назад

      @@LiveType yep. But it's sad to see that simpler architecture is being abandoned. Atmega is not being used on the newer Arduino model IIRC. I forgot the replacement but it was really more complex so I don't think it will be suitable for beginner learning.

  • @bertblankenstein3738
    @bertblankenstein3738 18 дней назад

    I coded basic, m6809 assembler (really got to know the computer well) and then C on Sun computers, linux, Raspberry Pi and then microcontrollers. I agree that it is good to understand the hardware as (hopefully) the code will be streamlined for easy conversion in to machine language.

  • @nezu_cc
    @nezu_cc 7 месяцев назад +2

    I've done the exact steps but backwards. started on an Atmel chip (before Arduino was cool), then reverse engineering, learned assembly along the way and recently I wrote a lot of C. And I still somehow don't hate javascript.

  • @daze8410
    @daze8410 6 месяцев назад

    Years ago I stumbled upon Ben Eater and followed along with his 8-bit breadboard computer.
    I understand how logic operates on the physical level but I didn't know any code.
    So I went the complete polar opposite and learned Python.
    Now I'm learning C++ and working my way back down.
    It's cool because in my head when I'm thinking about a problem I weigh the time/effort of soldering components vs coding it up.

  • @EthanLR
    @EthanLR 12 дней назад

    I'd like to learn low level. and this is no critique, but in my current use case I see it more pragmatic using my time to create or find established high level solutions to solve my current problems.

  • @komplettichselbst
    @komplettichselbst 7 месяцев назад +1

    3:08 I think the problem with that is that modern compilers perform so many optimizations that it's mostly not possible to guess what a given piece of code will compile to unless it's a trivial case. Absolutely agree that you should know how a CPU works, but imo actually going to the assembly level only becomes relevant when you're writing high performance code or want to know some specific detail about your code

  • @Bluesourboy
    @Bluesourboy 7 месяцев назад +1

    It's pretty easy to copy past JavaScript into C, mostly you end up changing 'const', 'let' and 'var' into the C types. If you use typescript convert the type definitions into structs and for the last trick convert the function defs into C style functions.
    For all the JS haters, the syntax is designed to be close to C.

    • @cl-7832
      @cl-7832 7 месяцев назад

      Is your last name really Faag-uilar?

    • @Bluesourboy
      @Bluesourboy 7 месяцев назад +1

      The beauty of this approach is it's as degenerate as JavaScript itself and also at the same time is as degenerate as writing C in 2024. Happy coding!

  • @seeker4430
    @seeker4430 7 месяцев назад +1

    This channel is a gold mine

  • @CallousCoder
    @CallousCoder 7 месяцев назад +2

    First Rust will never supersede C if that case it might be Zig. But I think C will never be superseded just because of the sheer quantity of C code that will never be rewritten because it would be a waste of capital. There’s far less COBOL and we still have cobol running and still seeking developers to maintain it.
    Master quantum physics than you’ll approximate understanding as to how electrons behave in silicon.
    But I agree with your list. Sane must I push on people.

  • @robotron1236
    @robotron1236 7 месяцев назад

    Loved the Skyrim reference with the greybeards comment! I still play it to this day. That was Todd Howard's true "magnum opus."

  • @ErikBongers
    @ErikBongers 7 месяцев назад +1

    It may be a good idea to learn assembly for a 6502 or 6510. It's very basic (no pun intended) and it helps you learn the basics with minimal registers, and a very limited instruction set. I think you may be able to find a C64 emulator with an assembler.

  • @anon_y_mousse
    @anon_y_mousse 7 месяцев назад +1

    Personally, I don't have much hope for future generations to understand the lower level concepts. I hope they prove me wrong and keep the knowledge of how to do all of this alive.

  • @johnforde7735
    @johnforde7735 7 месяцев назад +1

    Programming at a low level is pretty easy. In my youth, after I learned BASIC I start programming 6502 assembly on my school's Apple IIe. Programming in a modern language and knowing how the memory models work is where the challenge is.

    • @efdbjon2114
      @efdbjon2114 7 месяцев назад

      there is more to it than that

    • @johnforde7735
      @johnforde7735 7 месяцев назад

      @@efdbjon2114Actually there really isn't. Sure if you are reverse engineering compiled code, you have to know how registers and the stack are used for calling functions, but there is nothing mysterious about assembly.

  • @brunobmartim
    @brunobmartim 7 месяцев назад

    Come here after the stream.
    I’m BMDaemon, I asked about what book should you recommend to learn low level from ground up.
    I love your stream, thanks you so much. 😊

  • @genghisdingus
    @genghisdingus 7 месяцев назад +2

    Subjective-C be like:
    int x I think = 5;

  • @DavidLindes
    @DavidLindes 6 месяцев назад +1

    6:00 - definitely agree here. And... for that reason, I heartily recommend Ben Eater's channel. Build your own 8-bit CPU on a breadboard, and you'll learn so much! Then take it up a notch with the 6502-based computer, too, if you want something _a little_ closer to modern. :)

  • @1234minecraft5678
    @1234minecraft5678 7 месяцев назад +2

    Step 5: You are now able to reverse engineer your own goddamn code from last week to figure out what the heck is even going on there

  • @matsfrommusic
    @matsfrommusic 6 дней назад

    Couldn't agree more, actually I'm going to take that first advice and write a http server in C.

  • @haliszekeriyaozkok4851
    @haliszekeriyaozkok4851 7 месяцев назад +5

    C language is like assembly with bunch of labels and nicer look. I think that's the best answer for that.

    • @newkg3591
      @newkg3591 7 месяцев назад +1

      Similar in many ways but also very different in many ways especially the dynamic part of C

    • @mushroomcrepes4780
      @mushroomcrepes4780 7 месяцев назад

      FASM code looks pretty much like C

  • @loopinnerthe
    @loopinnerthe 7 месяцев назад +1

    I feel assembly poor now. But really agree about the micro-controllers, they taught me so much

  • @onaecO
    @onaecO 7 месяцев назад +6

    I wanted to make my channel a Python one, but C is the king no matter what, you are super right on everything!

    • @queelag
      @queelag 7 месяцев назад

      Hey man, love your videos btw! I just recently completed my piscine and you helped me a lot.

    • @AEONIC_MUSIC
      @AEONIC_MUSIC 7 месяцев назад

      @imprlanass are you talking about the 42 piscine ? I also just completed it in November and will be starting the core in May

    • @queelag
      @queelag 7 месяцев назад

      @@AEONIC_MUSIC eyy congrats bro! Yes I’m talking about the 42 piscine, hope I’ll get accepted as well

    • @AEONIC_MUSIC
      @AEONIC_MUSIC 7 месяцев назад

      @imprlanass I hope you do aswell it took a month or 2 before I was told anything

  • @SunShine-xc6dh
    @SunShine-xc6dh 3 месяца назад +9

    Learning c is alright but Learning circuit design and logic gates is where the magic happens.
    You could type c code on a type writer until you fingers bleed and it wont do anything

  • @garanceadrosehn9691
    @garanceadrosehn9691 4 месяца назад +1

    Bah. When I was learning systems-level programming, we could look at a hexdump and understand what the program was doing! 🙂 ( This can prove to be useful, if you're looking at some large block of data and you suddenly realize "hey, this *DATA* sure looks like about a dozen valid instructions to the CPU - how could that happen?!!" )

  • @hyperoson
    @hyperoson 16 дней назад

    the only C programming I had to do was for a custom split keyboard (corne or the crkbd/r2g), and it was an interesting experience having to prioritize features and optimize the code to fit on a very small memory space
    (im coming from C#, Python and similar stuff)

  • @randomaccount6146
    @randomaccount6146 7 месяцев назад

    Wow your closing statement is something I have thought about before. Especially since today almost any developer job is mostly using dependencies and working in the higher level which ofcoure is fine because it's more time and quality efficient but I have questioned whether with time developers will forget how the lower level works.

  • @kishanbhadoriya8701
    @kishanbhadoriya8701 Месяц назад +1

    'Every program is open source if you know how to read assembly code"
    -Pro Low level Programmer

  • @antinatalope
    @antinatalope 7 месяцев назад +7

    I've been looking at your videos, and I really think that they're of great value for any programmer, especially those who learned through high level languages. I'm really impressed. Great job.! I'd recommend your channel to anyone.
    Btw, would you recommend any particular assembler for the arm64 architecture? I'd like to build up a forth system from scratch.

  • @TalicZealot
    @TalicZealot 7 месяцев назад

    Getting a better understanding of low level is underrated for developers who are used to work with high level languages. I myself sort of stumbled into getting familiar with reverse engineering and assembly through retro game modding and it dramatically enriched the way I think about software. Luckily some c++ experience had me used to the idea of looking at memory directly, that's another one I think is very underrated. It's that extra bit of context that completes the picture.

  • @MikeBramm
    @MikeBramm 7 месяцев назад

    I learned basic then assembly on an Atari 1200xl back in the early 80s'. Once we started using Apple II computers in junior high school, I learned Pascal and C on it. Since then I've read countless books on various architectures and I can't tell you how learning assembly and C has made my life so much easier. I didn't have the Internet back then, so computer magazines like Antic, Analog, PC Magazine and others, and later bulletin board systems, were my main source of learning how other people wrote code. I reverse engineered numerous programs to learn how professional programmers wrote programs, and I learned a lot of tricks from that back then. The last 30 years as a Software Engineer have been so much easier and fun because of learning the basics of how various processors and architectures work, and how to get them to do what you want using assembly and C. Sure, C++ and C# are my daily drivers for Windows applications; but for fast routines, I still rely on C and assembly.

  • @asmEnjoyer
    @asmEnjoyer 9 дней назад

    Bro i love how he says: "God Forbid, JavaScript"
    lol bro single handedly made all js, Node, TS, whatever! programmers mad XD

  • @GoldbergToastyBred
    @GoldbergToastyBred 7 месяцев назад +2

    2:05 what about TCP server? seems cooler for me

  • @thekwoka4707
    @thekwoka4707 7 месяцев назад +1

    I feel liek C doesn't do the "forces you to write bulletproof". It will absolutely let you shoot your foot with little concern. Rust FORCES you to write bulletproof, since. itwill just refuse to compile.

  • @Ben_EhHeyeh
    @Ben_EhHeyeh 4 месяца назад +1

    For all of the most common CPU's, x86, ARM, Etc., is there a common core of OP Codes, where you write it once in assembly, and will work on most processors?
    ADD, JMP, MOV, Etc....
    Can you write all of your programs with 30 OP Codes or less?
    How do you write assembly with energy efficiency as a goal?

  • @jse-shack825
    @jse-shack825 7 месяцев назад

    Bottom up? Top down? None of both: Start in the middle. Learn C, its syntax, procedural flow, understand memory and pointers, call by reference and so on. This will naturally lead you into more binary representations of data. While you learn this, apply it and build more complex datastructures of your own. Explore abstractions, function pointers, callbacks. And best case: do it all on an embedded system. That will also involve some electronics and before you know it, you've become a maker. Starting with assembly (low) or stuff like modern C++ (high) is counter productive IMO.

  • @russellzauner
    @russellzauner 7 месяцев назад +1

    Get a bunch of datasheets online and learn to understand flight times in devices like logic, programmable logic, common microcontrollers, and overview of the interfaces/buses your code is working with. Go through the pain of doing a bit a math for a little while and not only will you become a sniper for particularly difficult groups of bugs to reproduce/fix you'll also be much less likely to code something like that in production. Coding snippets that "break" silicon and then heal it *magically* are sort of fun to do and frequently you even end up finding an actual silicon or microcode bug of your own; exercising code should be something you do often while learning to instrument your debug versions, and in doing so you'll find quirks (every system has some somewhere in it) and "fix them in software".

  • @roz1
    @roz1 7 месяцев назад

    It is absolutely important to understand the lower level sw .... There are very few kernel , firmware , system software engineers.

  • @zilog1
    @zilog1 7 месяцев назад

    I honestly think the very first level is building a Ben Eater computer from the ground up. It gives context for why certain logic functions work the way they do because you're playing with the actual physical mechanisms of the computer.

  • @maxmuster7003
    @maxmuster7003 7 месяцев назад

    I never learned C, but assembly first on C64 and later x86 assembly on intel 80286 starting with DOS Debug, but without internet. Today we can download intel developer manuals for x86 CPU and documents from AMD too.
    In the last time i used batch files as an open source container to put x86 assembly instructions inside to build a routine to create tiny executable files for the Dosbox emulator. I made some videos(no speech) to show how it works and to share the batch files. Have fun.😊

  • @EUPThatsMe
    @EUPThatsMe 7 месяцев назад +1

    As a current "gray beard" that's clean shaven most of the time I can attest to the fact that "we" are getting ready to be done with this world and move on to the next- everything I like to do no longer pays and what I do get paid for is depressing and sad

  • @heckyes
    @heckyes 7 месяцев назад

    What an incredible idea for a channel. Instant sub.
    Very lovely sentiments at 6:00

  • @KonradKosuge
    @KonradKosuge 7 месяцев назад

    I've been in a sort of programming limbo, where I've been jumping from web to data, from data to network and have been intaking a lot of knowledge but accomplishing near to none. Your RUclips channel has directed me towards my niche in programming and I cannot thank you enough.

  • @codyhamilton7682
    @codyhamilton7682 5 месяцев назад

    C was the first language I learned. I was in highschool doing a bridge program to the local community college
    The next semester I took a programming in c++ class that had the c class as a prerequisite

  • @rusmaakatupal4723
    @rusmaakatupal4723 5 месяцев назад

    I saw some dudes hack a building and play pacman with basically the entire building's light system (appartment room lights included) and that from hundreds of meters away (go check the video it's insane).
    They basically managed to install a soft on some micro-controller.
    That soft understands the building's electric map and treats your living room light as a pixel.
    A legit device/building-light driver.
    A clever interface capable of translating the hardware information into a graphic buffer reprensenting the 2D coordinates as well as the on/off information of each light.
    AND they connected it to a laptop (god knows how) and played using the keyboard with no GUI besides the building GUI LOL and some linux termial (I suppose) chilling on the laptop screen.
    All that just to say that hacking a process is so much sexier than hacking data.

  • @Barnooo
    @Barnooo Месяц назад +14

    "to drive a car, you must learn Mechanical and Electrical Engineering" aah video

    • @underview8492
      @underview8492 26 дней назад +3

      bro cant code in c

    • @jcodes55
      @jcodes55 25 дней назад

      @@underview8492 can you? 😂

    • @lukazgarza4075
      @lukazgarza4075 24 дня назад +7

      That would be if the video was "before you use a computer..." not "before you code...".
      I honestly think it is closer to think of it as "before you design a car, learn how a car works", but that's obviously a bit exaggerated. It depends on what you're trying to achieve by coding, really.

    • @Barnooo
      @Barnooo 16 дней назад

      @@underview8492 why tf would I need C if I'm a Web developer?

  • @coder_foo
    @coder_foo 22 дня назад

    "Discuss in the comments..." Well, the first programming course I took in college was "High Level Programming 1" - and it was taught in C. But that was 20+ years ago. I take no fervent stance on if it's "high" or "low" today. It's the lowest you can go, (semi) portably.

  • @potatotoes4261
    @potatotoes4261 7 месяцев назад

    I believe C is a high level language because it abstracts things from assembly quite a bit, but still gives you the freedom to control the memory you use at will, safely or in an unsafe manner. Because of the abstraction, I think it should be considered high level, but I also don't think it's high level compared to other high level languages, just a high level language that gives access to some lower level functions to work with and take less time than writing assembly

  • @jmc042
    @jmc042 4 месяца назад

    "possibly pass away" implying that Linus Torvald might also just be immortal

  • @unity3dconcepts434
    @unity3dconcepts434 24 дня назад

    Wow.. last part was amazing about channel philosophy 😊❤

  • @TheRr1990
    @TheRr1990 29 дней назад

    Great video, you gained another subscriber. Please consider making more such videos.