before you code, learn how computers work

แชร์
ฝัง
  • เผยแพร่เมื่อ 10 ม.ค. 2025

ความคิดเห็น • 793

  • @LowLevelTV
    @LowLevelTV  11 หลายเดือนก่อน +57

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

    • @VskiDevs
      @VskiDevs 4 หลายเดือนก่อน +1

      free?

    • @soumyajit_ojha
      @soumyajit_ojha 3 หลายเดือนก่อน

      Exactly.

    • @tomascontreras7760
      @tomascontreras7760 3 หลายเดือนก่อน

      "Get my free course" button doesn't work

    • @Uvesh-uu5dc
      @Uvesh-uu5dc 3 หลายเดือนก่อน

      Hey,
      Can you suggest me good compiler and IDE for C.

    • @eren352
      @eren352 2 หลายเดือนก่อน +1

      @@Uvesh-uu5dc nvim the best, and faster

  • @rajan_0
    @rajan_0 10 หลายเดือนก่อน +403

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

  • @N7492
    @N7492 9 หลายเดือนก่อน +130

    You can learn C in less than a week, but pointers might take a lifetime. FWIW, C is my favorite language. It's fast. It's very well debugged. It also has unintelligible error messages, and its libraries have unstandardized APIs, e.g. malloc takes one argument, calloc two. Both simply allocate memory.

    • @Chris-d2k2r
      @Chris-d2k2r 2 หลายเดือนก่อน +6

      Like human language, coding is just a bunch of different ways to speak depending on who and where you are the way and language changes. Like going to India as a Canadian and walk up to a women or man and if your south or North it will change .

    • @Joao-oo8yj
      @Joao-oo8yj หลายเดือนก่อน +6

      Instead of thinking in terms of "pointers", think in terms of "addresses". It is much easier to grasp this idea behind pointers.

    • @marcellomenjivar
      @marcellomenjivar 3 ชั่วโมงที่ผ่านมา

      this is one of the best replies I've ever read.

  • @chipswoon4554
    @chipswoon4554 9 หลายเดือนก่อน +61

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

  • @sleepib
    @sleepib 11 หลายเดือนก่อน +3985

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

    • @LowLevelTV
      @LowLevelTV  11 หลายเดือนก่อน +1301

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

    • @jayshartzer844
      @jayshartzer844 11 หลายเดือนก่อน +503

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

    • @pabloalfaro2595
      @pabloalfaro2595 11 หลายเดือนก่อน +42

      @@LowLevelTV i did not expect to see you here

    • @fus3n
      @fus3n 11 หลายเดือนก่อน +26

      he is too deep

    • @yoavmor9002
      @yoavmor9002 11 หลายเดือนก่อน +60

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

  • @thewaterbear
    @thewaterbear 3 หลายเดือนก่อน +407

    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 "

    • @ojochegbe_
      @ojochegbe_ 3 หลายเดือนก่อน +10

      😂

    • @alst4817
      @alst4817 3 หลายเดือนก่อน +59

      Agreed. After coding for 10 years, I taught myself to code in only 2 weeks ! If I can do it, anyone can!

    • @juani2929
      @juani2929 หลายเดือนก่อน +11

      Yeah stupid me for trying to learn how to code without knowing how to code. Useless video.

    • @Shake_Well_Before_Use
      @Shake_Well_Before_Use หลายเดือนก่อน

      @@thewaterbear "why wasn't I told? ..oh no you can't do this to me..."

    • @luckyb0132
      @luckyb0132 หลายเดือนก่อน

      ​@@juani2929hey, CS50x is the perfect course for you

  • @adityaray203
    @adityaray203 11 หลายเดือนก่อน +1695

    C program teaches you that with great powers comes great responsibilities

    • @melficexd
      @melficexd 11 หลายเดือนก่อน +54

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

    • @Henvag
      @Henvag 11 หลายเดือนก่อน +52

      @@melficexd Holy C the goat/TempleOS😂

    • @FLMKane
      @FLMKane 11 หลายเดือนก่อน +41

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

    • @sardineghali
      @sardineghali 11 หลายเดือนก่อน

      very nicely said

    • @ohdude6643
      @ohdude6643 11 หลายเดือนก่อน +4

      and big fuck ups -- which is how we learn

  • @mourneris
    @mourneris 11 หลายเดือนก่อน +662

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

    • @EdWestfieldJr
      @EdWestfieldJr 10 หลายเดือนก่อน +10

      🤯

    • @smallSphere69
      @smallSphere69 7 หลายเดือนก่อน

      ​@@EdWestfieldJr 🤯

    • @bensonboys6609
      @bensonboys6609 7 หลายเดือนก่อน +10

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

    • @bluewater5588
      @bluewater5588 4 หลายเดือนก่อน

      @@mourneris wait i dont get it? Hahahahaha

    • @monzerfaisal3673
      @monzerfaisal3673 3 หลายเดือนก่อน +3

      @@bluewater5588 CPUs are made of sand

  • @rentristandelacruz
    @rentristandelacruz 11 หลายเดือนก่อน +1418

    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 11 หลายเดือนก่อน +121

      You work in the 'news'?

    • @golfchanl
      @golfchanl 11 หลายเดือนก่อน +5

      Haha😂 So true, love this comment

    • @thezouave7636
      @thezouave7636 11 หลายเดือนก่อน +74

      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 11 หลายเดือนก่อน +7

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

    • @whisperpone
      @whisperpone 11 หลายเดือนก่อน +24

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

  • @mt-qc2qh
    @mt-qc2qh 11 หลายเดือนก่อน +166

    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. 9 หลายเดือนก่อน +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 9 หลายเดือนก่อน +7

      @@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,

  • @FredsRandomFinds
    @FredsRandomFinds 8 หลายเดือนก่อน +12

    Was waiting for you to suggest Machine Code. (I knew someone who was teaching themselves to program with this on a ZX Spectrum 128k back in the 80's...)

    • @11141q
      @11141q 3 หลายเดือนก่อน +2

      @@FredsRandomFinds curious what happenend to that guy

    • @raumfahreturschutze
      @raumfahreturschutze 27 วันที่ผ่านมา

      You mean machine code wasn't just a meme? 🤔

    • @ribicb
      @ribicb 21 วันที่ผ่านมา

      He was lucky to have a 128, most of speccies were 48K with rubber keyboards

  • @tony-does-stuff
    @tony-does-stuff 3 หลายเดือนก่อน +183

    Step 0: learn what all of these words mean

    • @RickMyBalls
      @RickMyBalls 2 หลายเดือนก่อน +1

      just look at the blob of C and object dump it bro

    • @wtfyoshipwns
      @wtfyoshipwns หลายเดือนก่อน +4

      @@tony-does-stuff underrated comment

    • @davidpalmo6050
      @davidpalmo6050 หลายเดือนก่อน +13

      @@tony-does-stuff step -1: learn how to learn

    • @nczioox1116
      @nczioox1116 29 วันที่ผ่านมา +1

      @davidpalmo6050 thats recursive

    • @FaezeChenani
      @FaezeChenani 22 วันที่ผ่านมา +2

      🤣🫣😂now I know, I’m not alone in this way

  • @dameanvil
    @dameanvil 10 หลายเดือนก่อน +28

    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.

  • @schism15
    @schism15 11 หลายเดือนก่อน +79

    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.

  • @gamermaniac8506
    @gamermaniac8506 11 หลายเดือนก่อน +37

    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

  • @regiondeltas
    @regiondeltas 11 หลายเดือนก่อน +151

    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 11 หลายเดือนก่อน +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 11 หลายเดือนก่อน +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 11 หลายเดือนก่อน +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.

  • @lisbyte_
    @lisbyte_ 10 หลายเดือนก่อน +933

    If C is not low level, Python is raw English

    • @litjellyfish
      @litjellyfish 8 หลายเดือนก่อน +133

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

    • @すべてに興味を失う
      @すべてに興味を失う 7 หลายเดือนก่อน +186

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

    • @litjellyfish
      @litjellyfish 7 หลายเดือนก่อน +56

      @@すべてに興味を失う yes let’s go back to the basics. Love those old punch cards as well. Back when women did a lot of the coding

    • @すべてに興味を失う
      @すべてに興味を失う 7 หลายเดือนก่อน +13

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

    • @lorenzopiombini3406
      @lorenzopiombini3406 6 หลายเดือนก่อน +16

      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 😅

  • @thomaswesleyscott4555
    @thomaswesleyscott4555 11 หลายเดือนก่อน +107

    I learned ASM6502 (assembly) for NES game programming - one of the best things I've ever done. Any time someone talks about registers, the stack, bit shifting, etc... I feel like I (at a minimum) broadly understand what they're talking about, regardless of the programming language.

    • @proxy1035
      @proxy1035 6 หลายเดือนก่อน +4

      i also started with assembly on the good old 8 bit CPUs like the 6502 and Z80. mainly because i found them simple enough to learn all the features and quirks for, but still powerful/usable enough to do work with (ie gamedev for the NES, Gameboy, writing programs for custom SBCs, etc)
      from there learned C and more Assembly variants like M68K, AVR, some x86_32, RISC-V (though pronouncing it "risk vi" instead of "risk 5" is cursed)

    • @thomaswesleyscott4555
      @thomaswesleyscott4555 6 หลายเดือนก่อน +1

      @@proxy1035 very cool! I'm looking forward to learning Z80 when time permits - I took a brief look at it about a year ago (Gameboy) and it didn't go well - but the same was true with 6502 at first!

    • @pushkarmahajan9294
      @pushkarmahajan9294 3 หลายเดือนก่อน +1

      That is very cool!

  • @azemazaotaru9788
    @azemazaotaru9788 10 หลายเดือนก่อน +34

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

  • @ashfaqadib8085
    @ashfaqadib8085 หลายเดือนก่อน +9

    This knowledge is becoming a hobby more than a necessity everyday.

  • @MartinLindsay
    @MartinLindsay 11 หลายเดือนก่อน +16

    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.

  • @ukaszgrabowski3647
    @ukaszgrabowski3647 11 หลายเดือนก่อน +90

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

  • @scootergirl3662
    @scootergirl3662 11 หลายเดือนก่อน +42

    Lowest level programming is one of my favorite TH-cam 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.

  • @Diablokiller999
    @Diablokiller999 11 หลายเดือนก่อน +14

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

    • @Intense_Cloud
      @Intense_Cloud 3 หลายเดือนก่อน +2

      *sits down on the opposite side of the table*
      "Ok, my friend, let's talk about awesomeness!!"

    • @YouGotOptions2
      @YouGotOptions2 หลายเดือนก่อน

      @@Intense_Cloud lol word

  • @shafransky93
    @shafransky93 10 หลายเดือนก่อน +6

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

  • @black56night
    @black56night 11 หลายเดือนก่อน +10

    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 11 หลายเดือนก่อน

      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.

    • @thegreenshade7
      @thegreenshade7 2 หลายเดือนก่อน

      In my university we do arm assembly language and c

  • @Danny-hj2qg
    @Danny-hj2qg 11 หลายเดือนก่อน +21

    0:47 "God forbid Javascript." LOL!

    • @hma201
      @hma201 3 หลายเดือนก่อน

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

    • @Ahsan5497
      @Ahsan5497 2 หลายเดือนก่อน

      why

  • @disgruntledtoons
    @disgruntledtoons 9 หลายเดือนก่อน +4

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

  • @mbeware
    @mbeware 11 หลายเดือนก่อน +7

    this great advice. this was a really interesting video, so packed with information that I watch it twice (because i usually watch doing the dishes, and I missed some of the information. )

  • @antoniodeodilonbrito7643
    @antoniodeodilonbrito7643 11 หลายเดือนก่อน +309

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

    • @TheVirtualArena24
      @TheVirtualArena24 11 หลายเดือนก่อน +4

      Is js bad?

    • @multivitamin7
      @multivitamin7 11 หลายเดือนก่อน +57

      @@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 11 หลายเดือนก่อน +1

      @@multivitamin7 ohh ok

    • @moistnar
      @moistnar 11 หลายเดือนก่อน +20

      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 11 หลายเดือนก่อน +6

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

  • @deforesttthompson9299
    @deforesttthompson9299 11 หลายเดือนก่อน +41

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

    • @PushyPixels
      @PushyPixels 11 หลายเดือนก่อน +7

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

    • @trots4940
      @trots4940 11 หลายเดือนก่อน

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

    • @МихаилТихомиров-м8ч
      @МихаилТихомиров-м8ч 11 หลายเดือนก่อน +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 11 หลายเดือนก่อน

      @@МихаилТихомиров-м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 11 หลายเดือนก่อน

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

  • @Αλέξανδρος56
    @Αλέξανδρος56 8 หลายเดือนก่อน +14

    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 7 หลายเดือนก่อน +2

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

    • @Αλέξανδρος56
      @Αλέξανδρος56 7 หลายเดือนก่อน

      @@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 ✌️

  • @TheResearchEngineer
    @TheResearchEngineer 4 หลายเดือนก่อน +6

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

  • @tigana
    @tigana 2 หลายเดือนก่อน +2

    Thank you for this video. As a self taught developer whose main languages are JS and Python, I've been wanting to have a stronger foundation and actually understand why/how my code does what it does. So I started learning C about a month and a half ago. It's uncomfortable, but in a satisfying way. I feel like I'm actually going to understand my craft stuff deeply. I'm excited to see what I know this time next year or maybe 2 years from now, going down this path.

  • @komplettichselbst
    @komplettichselbst 11 หลายเดือนก่อน +3

    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

  • @Brawlstriker89
    @Brawlstriker89 4 หลายเดือนก่อน +2

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

  • @dtikvxcdgjbv7975
    @dtikvxcdgjbv7975 10 หลายเดือนก่อน +3

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

    • @thegreatchaos13
      @thegreatchaos13 5 หลายเดือนก่อน +1

      You mean, enthusiASM? 😂

  • @hypergraphic
    @hypergraphic 11 หลายเดือนก่อน +4

    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 11 หลายเดือนก่อน

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

  • @YandiBanyu
    @YandiBanyu 11 หลายเดือนก่อน +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 11 หลายเดือนก่อน

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

  • @aryanjoshi2796
    @aryanjoshi2796 10 หลายเดือนก่อน +1

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

  • @danielsutherland2599
    @danielsutherland2599 11 หลายเดือนก่อน +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

  • @NasCf-d2h
    @NasCf-d2h หลายเดือนก่อน

    So basically you would master computer hardware, C language, reverse engineering code and system design and how they all interact if you had to start again. Thats very helpful to know. Thank you

  • @uujuu316
    @uujuu316 2 หลายเดือนก่อน

    Telling a website that you just like, but not sponsored makes us viewers want to visit it immediately

  • @seeker4430
    @seeker4430 11 หลายเดือนก่อน +3

    This channel is a gold mine

  • @DSWoodworkUSA
    @DSWoodworkUSA 3 หลายเดือนก่อน

    Zero to low level; just what I needed... even that mentality is genius. Slowly but surely is reminiscent to the three pigs story. Let us pace ourselves and work hard, so this foundation will be strong and last. Thank You

  • @lashlarue7924
    @lashlarue7924 7 หลายเดือนก่อน +13

    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.

    • @colbyboucher6391
      @colbyboucher6391 3 หลายเดือนก่อน

      The fundamental disconnect between "talented" programmers and the buusnesses they serve.

    • @lashlarue7924
      @lashlarue7924 3 หลายเดือนก่อน

      @@colbyboucher6391 All the ML tools algorithms live in Python world. Big businesses or businesses with a large customer-facing web presence could certainly use efficient lower-level code, but for the vast majority of business use cases you simply don't need the scale or the speed. Even Wal-Mart made the deliberate decision to run each building on its own separate architecture and tooling (they did this for resiliency and security). For basic business stuff frankly you just don't need the efficiency; the additional value you unlock from just boring Python or Java is perfectly sufficient unless you're Netflix etc.

    • @lakshyajain113
      @lakshyajain113 หลายเดือนก่อน

      Which domain ? Ai and ml

    • @lashlarue7924
      @lashlarue7924 หลายเดือนก่อน +1

      @ operations / supply chain / timeseries

  • @ryanstory1642
    @ryanstory1642 2 หลายเดือนก่อน

    So glad I found this channel. Exactly what I was looking for

  • @paulcosta8297
    @paulcosta8297 11 หลายเดือนก่อน +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.

  • @Cyberwolf-kp4yy
    @Cyberwolf-kp4yy 2 หลายเดือนก่อน

    This, I think is just what I needed to hear to point me into the right direction on my cyber journey!

  • @DavidLindes
    @DavidLindes 9 หลายเดือนก่อน +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. :)

  • @lazyman2451
    @lazyman2451 17 วันที่ผ่านมา +2

    Researcher is what all developers are 😂

  • @del669
    @del669 3 หลายเดือนก่อน

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

  • @ULTIMARAGNAR0K
    @ULTIMARAGNAR0K 11 หลายเดือนก่อน +3

    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.

  • @prathameshpatil0810
    @prathameshpatil0810 4 หลายเดือนก่อน

    That was a really good video! thanks for explaining the basics. made me think actually why coding in depth is important. waiting for future videos!

  • @maxvideodrome4215
    @maxvideodrome4215 14 วันที่ผ่านมา +1

    Kinda why I still like programming for DOS. Pretty close to the hardware

  • @trots4940
    @trots4940 11 หลายเดือนก่อน +6

    Do you recommend new "low level students" to create a compiler from scratch as one of their first exercises? Like, just by studying how a compiler works and start making one just by searching how to implement each small part of it?
    I really want to make one to improve my knowledge and reasoning, but I don't know how difficult it is

  • @heckyes
    @heckyes 11 หลายเดือนก่อน

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

  • @omaimakamran4795
    @omaimakamran4795 5 หลายเดือนก่อน

    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!

  • @MFC_works
    @MFC_works 3 หลายเดือนก่อน

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

  • @Lucas2RC
    @Lucas2RC 11 หลายเดือนก่อน +2

    I believe that C is considerably enough low level since it allows memory manipulation. I know it's not Assembly, nor binary, but it is reasonably deep enough so a learner can understand the intricacies of low level coding. Great suggestion.

  • @johnnygarcia7297
    @johnnygarcia7297 4 หลายเดือนก่อน

    I love the basics of how things work. Love this channel❤

  • @pogo55555
    @pogo55555 9 หลายเดือนก่อน +1

    Master Wizard. You have edified us.

  • @nezu_cc
    @nezu_cc 10 หลายเดือนก่อน +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.

  • @faizanmohammed7687
    @faizanmohammed7687 4 หลายเดือนก่อน

    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

  • @LukSilva12
    @LukSilva12 4 หลายเดือนก่อน

    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)

  • @daze8410
    @daze8410 10 หลายเดือนก่อน

    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.

  • @bertblankenstein3738
    @bertblankenstein3738 4 หลายเดือนก่อน

    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.

  • @pmlbeirao
    @pmlbeirao 2 หลายเดือนก่อน

    Learn assembly for a 8-bit CPU like 6502 or Z80 and use it to develop applications for such platform. It's simple enough that any programmer can do it. Then learn assembly for more complex architectures such as x86, and then C.

  • @TheRr1990
    @TheRr1990 4 หลายเดือนก่อน +1

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

  • @zacherymcclendon3945
    @zacherymcclendon3945 10 หลายเดือนก่อน +1

    “Possibly pass away” Linus could be immortal we just have no way of knowing

  • @Maagiicc
    @Maagiicc 11 หลายเดือนก่อน +6

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

  • @giuliosalvi6790
    @giuliosalvi6790 หลายเดือนก่อน

    i would tell that c is a mediumum level language because you have control on computer’s low level components just using feature of high level languages (such as functions and pseudo-objects that are structs) and to be honest that is why i LOVE C

  • @genghisdingus
    @genghisdingus 10 หลายเดือนก่อน +2

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

  • @flameofthephoenix8395
    @flameofthephoenix8395 8 หลายเดือนก่อน +2

    3:40 Where do I go to compile it? I've never used C or any variants as far as I know.

    • @TranscendentBen
      @TranscendentBen 3 หลายเดือนก่อน

      You get a compiler. MS Visual Studio is a common one, but it's rather overbloated with the IDE and goodness knows what. Linux (such as Ubuntu) comes with the gcc and g++ compilers so you don't have to install anything.

    • @flameofthephoenix8395
      @flameofthephoenix8395 3 หลายเดือนก่อน

      @@TranscendentBen I have Visual Studio already, it wanted me to get a "debugger" or something in order to run programming, so I just don't use it. However, it is definitely overbloated, there was an entire completely functional twenty-year-old Python IDE made by an independent developer that played no role in making Visual Studio hidden inside the files. Plus, two other functional test .exe programs inside the files as well, one would let the user input data then it would echo their input back to the console, and another called EndTask.exe or something along those lines would do as its name suggests and immediately terminate.

  • @AnWe79
    @AnWe79 2 หลายเดือนก่อน

    As an extra point, I'd say learn the basics of digital electronics, and then an extra bonus point, learn the basics of an HDL (hardware description lanugage, like Verilog or VHDL).
    The roughly half semester digital electronics course I took was hands down the best course I've ever taken.
    It started with logic gates, building latches, counters and whatnot, and on from there.
    At the end we knew how all the building blocks of a simple CPU works, because we had effectively built one step by step from the gate level. We could program the thing in machine code/assembly, because we knew it inside out. It's just layers of abstractions all the way down...
    Then go get a cheap FPGA dev board, and the sky's the limit, you can do basically anything then.

  • @1234minecraft5678
    @1234minecraft5678 11 หลายเดือนก่อน +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

  • @CallousCoder
    @CallousCoder 11 หลายเดือนก่อน +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.

  • @Ben_EhHeyeh
    @Ben_EhHeyeh 7 หลายเดือนก่อน +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?

  • @Phredwerd
    @Phredwerd 11 หลายเดือนก่อน +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++

  • @AvgBlue
    @AvgBlue 8 หลายเดือนก่อน

    I feel like I learn alot of what you talked about in my university degree, I'm not a master but I have a great foundation to learn from.

  • @AnandKilli
    @AnandKilli 3 หลายเดือนก่อน

    Funny. I know everything mentioned this video. Graduates in 2005 and my first language to learn and master is C. Programmed 8085 micro controller and learned ASM. Wrote a boot loader using ASM as my Masters final year project. I code micro controllers for fun in C and Micro Python. I see why I only work 2 days in 2 weeks and still get more done than 95% of people :).

  • @robotron1236
    @robotron1236 11 หลายเดือนก่อน

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

  • @echobravo5488
    @echobravo5488 6 หลายเดือนก่อน

    “We literally tricked rocks into thinking”….🤯. Silicon. That is such a POWERFUL observation! You got a sub for life mang!!!

  • @iusearchbtw69
    @iusearchbtw69 5 หลายเดือนก่อน +5

    Ok but *HOW* do i actually get started, do i just stare at random documentation knowing nothing?

    • @h.r.4287
      @h.r.4287 3 หลายเดือนก่อน +3

      @@iusearchbtw69 I know this is late, but his road map is pretty good. My assumption is that you're confused on the very initial steps(before you've even learned C). Before starting a project, follow a tutorial on C and do some small projects to get used to it. Then you start working on the big project. Assuming that you have an okay understanding of C, documentation will be your biggest friend. Cheers, and good luck with your coding!

    • @purpleey
      @purpleey 16 วันที่ผ่านมา +1

      @@h.r.4287 thank you for the comment. i was a bit lost as well

  • @shmackydoo
    @shmackydoo 3 หลายเดือนก่อน

    A great message and i agree with the mission of forming the new well rounded cohort of computer engineers

  • @MikeBramm
    @MikeBramm 11 หลายเดือนก่อน

    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.

  • @anon_y_mousse
    @anon_y_mousse 11 หลายเดือนก่อน +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.

  • @EthanLR
    @EthanLR 3 หลายเดือนก่อน

    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.

  • @egoworks5611
    @egoworks5611 11 หลายเดือนก่อน

    great message at the end man, great message

  • @yash1152
    @yash1152 11 หลายเดือนก่อน

    4:08 yeah, thats crucial
    > _"who's just looking at code & cant figure out why it doesnt work"_

  • @SimantaRajSarma
    @SimantaRajSarma 8 หลายเดือนก่อน +1

    I found a masterpiece yt channel ❤

  • @russellzauner
    @russellzauner 11 หลายเดือนก่อน +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".

  • @ErikBongers
    @ErikBongers 11 หลายเดือนก่อน +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.

  • @Bluesourboy
    @Bluesourboy 11 หลายเดือนก่อน +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.

    • @428Zz
      @428Zz 11 หลายเดือนก่อน

      Is your last name really Faag-uilar?

    • @Bluesourboy
      @Bluesourboy 11 หลายเดือนก่อน +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!

  • @adam7802
    @adam7802 7 หลายเดือนก่อน +2

    I have tried to play with C a few times but the thing that usually trips me up is building - yes it's pretty easy to compile a single source file but once you get into trying to compile something with multiples and you end up looking at things like cmake... Is there a simpler way for getting into this type of stuff or am I just going to have to spend the time learning a build system?

  • @clij5202
    @clij5202 25 วันที่ผ่านมา

    I did on ZX81, C64 and Atari ST (Z80, 6510 and MC 68000); then also C on Atari extending TOS with network functions (Token Ring)

  • @mikeearls126
    @mikeearls126 3 หลายเดือนก่อน

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

  • @randomaccount6146
    @randomaccount6146 11 หลายเดือนก่อน

    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.

  • @dawidziomalify
    @dawidziomalify 7 วันที่ผ่านมา +1

    You don't need to do this if you want to code. You should know this if you plan to code in low level. Truly, your time is limited and you should spend it wisely to learn technology you're tying your close future with. If you're not planning to code in low level technologies.. don't learn new languages. Simply understand the abstraction

  • @PerezTheDev
    @PerezTheDev 3 หลายเดือนก่อน

    "We tricked rocks into thinking." I have never been the same. 🤯