C is 50 Years Old. Should You Learn Rust?

Поділитися
Вставка
  • Опубліковано 25 кві 2023
  • ITS A DEBATE AS OLD AS TIME. OR POSSIBLY 8 YEARS DEPENDING ON YOUR DEFINITION OF THE WORD "YEAR".
    There's ton's of debate around what language you should learn first. Is it C? Is it Rust? TODAY WE FIND OUT.
    🏫 COURSES 🏫 Check out my new courses at lowlevel.academy
    🙌 SUPPORT THE CHANNEL 🙌 Become a Low Level Associate and support the channel at / lowlevellearning
    🛒 GREAT BOOKS FOR THE LOWEST LEVEL🛒
    Blue Fox: Arm Assembly Internals and Reverse Engineering: amzn.to/4394t87
    Practical Reverse Engineering: x86, x64, ARM, Windows Kernel, Reversing Tools, and Obfuscation : amzn.to/3C1z4sk
    Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software : amzn.to/3C1daFy
    The Ghidra Book: The Definitive Guide: amzn.to/3WC2Vkg
    🔥🔥🔥 SOCIALS 🔥🔥🔥
    Low Level Merch!: www.linktr.ee/lowlevellearning
    Follow me on Twitter: / lowleveltweets
    Follow me on Twitch: / lowlevellearning
    Join me on Discord!: / discord
  • Наука та технологія

КОМЕНТАРІ • 923

  • @Stopinvadingmyhardware
    @Stopinvadingmyhardware Рік тому +1968

    Learns C, builds a C library that handles memory like Rust.

    • @LOL-cp6js
      @LOL-cp6js Рік тому +101

      accept 🙂👍

    • @GeneralHazerd
      @GeneralHazerd Рік тому +311

      Whoever does this should be hailed as a god of programming. Songs will be sung of their deeds for a thousand years. Shrines will be built in their honor. Children shall be named after them. They will bring about a new era!

    • @christopheriman4921
      @christopheriman4921 Рік тому +89

      @@GeneralHazerd But wouldn't that just be Rust?

    • @peter9477
      @peter9477 Рік тому +139

      @@christopheriman4921 Without a syntax change to allow implementing a borrow checker, no. Rust memory management is inextricably tied to that.

    • @Wariowa345
      @Wariowa345 Рік тому +11

      probably impossible

  • @turun_ambartanen
    @turun_ambartanen Рік тому +523

    That intro makes no sense. Time clearly came into existence on January the first, 1970.

    • @Leonhart_93
      @Leonhart_93 Місяць тому +4

      At least they had the decency to pick something decent as the starting point, and not 1971-07-17 or something 🤣

    • @chaosbytes
      @chaosbytes Місяць тому +3

      @@Leonhart_93 I'm incredibly disappointed they didn't use June 9th of the prior year, colossal missed opportunity

    • @yuichikita6018
      @yuichikita6018 16 днів тому +2

      Wait, does that mean Time will cease to exist on January 19, 2038?

  • @postmodernist1848
    @postmodernist1848 Рік тому +1128

    Whether or not you're going to learn Rust or use C in production, C is so immensely important to computer science and computing history that basically every real programmer needs to have experience with it

    • @LowLevelLearning
      @LowLevelLearning  Рік тому +168

      Totally agree

    • @daro_ziom
      @daro_ziom Рік тому +90

      unreal programmers thank god they don't need to

    • @stopper0203
      @stopper0203 Рік тому +1

      Yep

    • @lubba64
      @lubba64 Рік тому +6

      Nah probably never going to have a use case for C. Maybe if i were an embedded developer or went to a university

    • @stopper0203
      @stopper0203 Рік тому +30

      @@lubba64 Really? From experience I'd say that having the confidence to use C anywhere makes you 100x more effective as a developer - even if you don't use it in whatever project you're currently working on.

  • @semicharmedkindofguy3088
    @semicharmedkindofguy3088 Рік тому +114

    I've used C professionally long enough to be mad at it's limitations, but it is still the best language to build your foundational knowledge with. Because once you understand C, you start to understand the building blocks that pretty much the entire field of software development is built on. You don't have to learn it first IMO, any high level language is fine, but definitely learn it second. Speaking from my experience learning C contextualised my earlier experience with Java and a lot of the design of the language features started to make sense.

    • @FastRomanianGypsies
      @FastRomanianGypsies 8 місяців тому

      Yes without its limitations it would be the greatest language--the programmers.

  • @guilherme5094
    @guilherme5094 Рік тому +403

    C.
    If every language were like a martial art, I'd say that C is the one that improves your combat posture, and that can really make a difference.

    • @k1gen
      @k1gen Рік тому +10

      Underrated comment!

    • @unperrier5998
      @unperrier5998 Рік тому +22

      C gives you a fighting chance when the other languages fail you.

    • @julienmarcuse9023
      @julienmarcuse9023 Рік тому +43

      I feel like rust improved my "combat posture" - other languages will let you write basically whatever, so it's easy to get into bad habits since the compiler usually won't catch them, or will give you warnings at most. in Rust, mistakes that are just considered bad practice in other languages are actually compiler errors, so rust can help you learn how to design resilient code, and it's a skill that will affect how you write non-rust code, too.

    • @postsupremacy
      @postsupremacy Рік тому +11

      @@julienmarcuse9023 im trying to care. i really am

    • @weirdo911aw
      @weirdo911aw Рік тому +14

      Yes, and Rust is like Aikido, looks good superficially but essentially useless

  • @Zwiebelgian
    @Zwiebelgian Рік тому +359

    As quite a new „rustacean“, the biggest improvement for me was the tooling. I know C and C++ have lots of great third-party tooling but no setup one short command for everything is just so much better.

    • @Miles-co5xm
      @Miles-co5xm Рік тому +12

      the exact reason, I want to try out rust, but c++ seems so simple that i just dont want to leave it.

    • @tourdesource
      @tourdesource Рік тому +126

      @@Miles-co5xm There's not a single aspect of C++ I would describe as "simple".

    • @anon-fz2bo
      @anon-fz2bo Рік тому +2

      Yep, that's was the deal breaker, although I still code cpp sometimes for scripts and if I just want that classic feel

    • @JorgetePanete
      @JorgetePanete Рік тому

      " "*

    • @Miles-co5xm
      @Miles-co5xm Рік тому +3

      @@tourdesource what makes you think so?

  • @alexanderheim9690
    @alexanderheim9690 Рік тому +77

    100% learn C. I would advise any beginner to start with C until you get to posix things, do those too and voila, a bit more networking stuff and you are set for great success

  • @TJDeez
    @TJDeez Рік тому +300

    Full stack dev here and I can't stand how commonplace it is to just not give a fuck about memory. This depiction is so accurate. Even solid experienced devs happily choose js methods that create completely unnecessary memory and make excuses.

    • @TehKarmalizer
      @TehKarmalizer Рік тому +31

      Tbf, JS makes it difficult to not allocate memory. You fight the language to be performant. Other garbage collected languages don’t necessarily have that problem, despite garbage collection always being a performance uncertainty.

    • @TimothyWhiteheadzm
      @TimothyWhiteheadzm Рік тому +30

      Not caring about memory waste is one thing, not caring about memory safety is a completely different issue. JavaScript is memory safe. C is not. Using a wasteful js method typically won't create bugs. Being careless about memory management in C typically will.

    • @framegrace1
      @framegrace1 Рік тому +5

      As a devops and sysadmin... I'm the one that ends up feeling the pain. Typical one: reading unbounded queries from a DB. A Time Bomb waiting to explode on most of your systems. (I'm sure your company have at least one of those, no matter who you are :) )

    • @TimothyWhiteheadzm
      @TimothyWhiteheadzm Рік тому +1

      @@framegrace1 True but as always its a balance between the cost of that timebomb going off vs the cost of preventing it from happening. Highly reliable systems simply cost more. But yes following best practices is important to reduce the number of potential time bombs.

    • @bionic-beaver
      @bionic-beaver 11 місяців тому +1

      GNOME Shell devs?

  • @snek_john_titor
    @snek_john_titor Рік тому +20

    C++ have good memory security features. But too much people write C code in C++ with is pointless

    • @snek_john_titor
      @snek_john_titor Рік тому +1

      @@satrac75 Yes. Rust, C and C++ still coexists well

    • @zactron1997
      @zactron1997 Рік тому +13

      That's the real problem with C++. It's all well and good that you "can" write secure and safe code, but it's entirely non-trivial to enforce that standard. And good luck trying to enforce it if you need any third party code!

    • @maleldil1
      @maleldil1 3 місяці тому +2

      C++'s memory security features are behind what Rust can do. For example, you have no way of encoding lifetimes in the type system as Rust does, so anyone can trivially write code that gets that wrong. There's also no enforcing of reference aliasing (e.g. many shared references vs a single mutable reference).

  • @sammyfromsydney
    @sammyfromsydney Рік тому +41

    Experienced developer here. C and Java among other languages. I'll learn RUST as soon as I have a need for it. Right now there are no job listings that list RUST in my area and right at the moment there are no software projects using RUST that I want to get into. If you're going to be a developer you should expect to be asked to pick up languages quickly as needed. It shouldn't take more than a couple of weeks to get productive with basics, though obviously it will take you longer to learn idioms, libraries and frameworks with proficiency.

    • @MiChEaLaDeNuGa-kx6iv
      @MiChEaLaDeNuGa-kx6iv Рік тому

      So I re-write to build a project which was previously built on typescript with rust , I’ve been crying since , rust is after my life , the syntax is sweet, I love it forces you to use snake case conventions but it’s just too unnecessary complicated

    • @steveoc64
      @steveoc64 Рік тому +5

      Agreed. After a few decades you get pretty good at spotting long term trends vs fads as they emerge.
      The current return to caring about low level code is an expected outcome of moores law tailing off whilst scale keeps increasing.
      Rust is in the fad category. Unfortunately a lot of noobs can’t see this yet, and they are going to get horribly burned by investing heavily in rust.
      They are all cheering each other on, watching videos from inexperienced “sw engineers” who don’t know any better.
      Rust has all the red flags of a massive train wreck in the making.

    • @shrootskyi815
      @shrootskyi815 Рік тому +2

      What exactly are the red flags that you're seeing?

    • @zaper2904
      @zaper2904 Рік тому +2

      @@steveoc64 *Fucking this* seriously Rust has been treated like the second coming of Christ for the past decade and yet there is still basically nothing that actually uses it its actually insane how *not* popular it is, its like the reverse Java.

    • @julianrachele757
      @julianrachele757 Рік тому +6

      @@zaper2904 The language is only 8 years old, give it some time. Firefox's entire JavaScript engine is written in it, and it's starting to be used more and more in the Linux and Windows kernels

  • @hicknopunk
    @hicknopunk Рік тому +110

    I agree C is great as you need no libraries, objects or classes when creating software. Direct low level hardware calls give you full control of the audio chip/card.

    • @malcolmx86
      @malcolmx86 Рік тому +25

      C is godlike

    • @peter9477
      @peter9477 Рік тому +25

      Just an FYI, but you can do exactly the same with Rust, with only slightly more verbosity.

    • @parlor3115
      @parlor3115 Рік тому +3

      Ok, and what are the advantages of C?

    • @katekyy7
      @katekyy7 Рік тому +12

      ​@@parlor3115 Idk what do you mean but I have 2 answers:
      "Ok, and are those advantages of C?" - Yes.
      "Ok, and what are advantages of C?" - That you can directly manage memory. You pretty much have full control of your cpu. So pretty much what the main comment said. And that's not everything but obviously I am too lazy to write everything here.

    • @GlennHamblin
      @GlennHamblin Рік тому

      @@parlor3115
      Know it and you shall know.

  • @jongeduard
    @jongeduard Рік тому +58

    My advice would be to learn several programming languages, at least 3 or 4. So learn Rust and C, but do more if you can.
    I can at least recommend learning a combination of languages from which you learn all of these aspects: manual memory management, automatic memory management (garbage collection), procedural programming, object oriented programming (OOP) and functional programming (the latter one is gaining more popularity these days), strongly typed, loosely typed (scripting languages are often loosely typed). Many languages have a combination of those aspects, so you can often learn multiple things together.

    • @jessiegoodman9620
      @jessiegoodman9620 11 місяців тому +8

      Just dont add C++ to that list or you'll be learning 1 language forever

    • @FreestylStudio
      @FreestylStudio 11 місяців тому

      Learn all languages! 😈

    • @jongeduard
      @jongeduard 11 місяців тому

      @@FreestylStudio So you also know how many programming languages actually exist in the world? 😜

    • @FreestylStudio
      @FreestylStudio 11 місяців тому +1

      @@jongeduard Can't be more than 500, eez peez

    • @U20E0
      @U20E0 11 місяців тому +1

      this is the most correct answer

  • @madezra64
    @madezra64 Рік тому +26

    Just gained a new respect for you. Many Rust tubers try to shit all over C, that you should avoid C like it's Aids, that C is useless, etc, denying the fundamentals of systems programming and understanding of programming as a whole in general. C is an incredible language, BUT so is Rust. It's very refreshing to see a Rust advocate step up and be honest about it. I tried learning programming from Python, C++, C#, and a few other languages first and it was a literal nightmare. Without any logical understanding of what was happening behind the scenes I was basically at the mercy of whatever tutorial or teacher I had. You know print("Hello, World!") displays "Hello, World!", but you don't know why or how. You just ASSUME the computer sees print and displays your sentence. Now some tutorials are better than others and give you some insight into abstraction, but the reality is most don't, and with that lack of fundamental understanding most beginners are confused from the beginning to the very end. It's like okay I see what these things I typed potentially can do, but I have no way of manipulating into my own will and desires because I know fuck all about the basics beneath it... It was when I finally decided to learn some basic assembly (cause why not at this point of my confusion) did I FINALLY understand what I was learning at the higher level. It was the epiphany that all beginner programmers stride for. That moment where shit just "clicks" and you now KNOW the path you must take to get better and know what to look for and learn. Did I understand how to do anything specific? Fuck no! But I understand the path I needed to take. I understood I needed to learn a, so I could learn b, then approach c, for approaching d, and so on and so on. I didn't learn assembly, but I learned what a programming language actually was. That's when I jumped right into C and began accelerating and actually learning finally!
    I really don't believe Python is a good beginners language for this very reason among other languages.

    • @Fafr
      @Fafr 2 місяці тому +1

      Well, I suppose Python works for those who want things magically done without caring about what happens there? I mean, I'm more than sure there are tons of people out there learning things solely so they get some sort of a job, not because they're truly interested in the language and its inner workings

    • @programmingloop7
      @programmingloop7 21 день тому

      Wait you tried to learn programming by going over 3+ languages, struggled and you think it's the languages fault? I think perhaps you were switching too often without giving yourself the time to solidify the concepts first. To go from Python, C++, C# and a "few other languages" and still having that level of confusion tells me the path that you took was the problem not so much the languages. I think the issue was that you didn't have a good roadmap so you were all over the place and it made things more difficult. It's a very common problem that beginners face so I completely understand where you're coming from, but I just wanted to clarify the programming languages weren't the reason because many many people have become successful software engineers without learning C first

    • @madezra64
      @madezra64 21 день тому

      @@programmingloop7 That is a fair point. I should also elaborate. Just reread my comment and can see how it sounds in hindsight. So basically my over all point was the lower level stuff seemed to snap everything in place? Like, everything from high to low felt very abstract in a way I couldn't grasp until I saw assembly and how that translates into higher level stuff.
      Basically I suck at explaining shit.

    • @programmingloop7
      @programmingloop7 21 день тому +1

      @@madezra64 I got you. Btw I do agree with you that learning lower level stuff will help grok these concepts in a deeper way

  • @joshua7884
    @joshua7884 Рік тому +2

    I enjoy the topic, the content and the comedy, thank you

  • @LogicEu
    @LogicEu Рік тому

    Best video out there about programming language choices when learning by far!

  • @muhammadsulthanmazaya2388
    @muhammadsulthanmazaya2388 Рік тому +26

    Quality content, never expect something less from you 😄

  • @diogob003
    @diogob003 11 місяців тому +9

    I've learned and coded a lot of C. Now I'm beginning to learn Rust and there's some patterns that I definitely will use within my C code too

  • @boody8844
    @boody8844 Рік тому

    Thank you for this! I was pretty overwhelmed.

  • @paulchamberlain7942
    @paulchamberlain7942 3 місяці тому

    Yours is some of the best advice around for programmers.

  • @billigerfusel
    @billigerfusel Рік тому +53

    C Syntax is just so simple and pure. Rust is like they tried to be as hipstery as possible.

    • @FlanPoirot
      @FlanPoirot Рік тому +12

      how is it hipstery? it looks exactly the same way as all modern languages (postfix types and keywords for everything). it's just how modern languages are built (it makes parsing way easier), if you look at languages built in the late 80s up to the mid 2000s you'll see that a lot of them just look like an extended C (Java, C++, C# and the likes)
      also the mechanics in the language are all there for a good reason, the borrow checker helps with memory bugs, expression based syntax reduces boilerplate and mutability by default reduces general complexity
      almost everything else is present in most languages and if u take the time to properly look at the language you'll see that it's not actually that different it merely is more pedantic with how u should write stuff cause it cares (sometimes a bit too much) about safety

    • @JorgetePanete
      @JorgetePanete Рік тому +2

      ​@@FlanPoirot because*

    • @FlanPoirot
      @FlanPoirot Рік тому +2

      @@JorgetePanete 🤓

    • @Simlo
      @Simlo Рік тому +5

      I feel like Python went as hipstery as possible

    • @RandomGeometryDashStuff
      @RandomGeometryDashStuff Рік тому

      ​@@SimloI like python syntax because it uses keywords of lowercase letters for most things and that's easy to search in google like 'python3 "{keyword here}"'

  • @psymcdad8151
    @psymcdad8151 9 місяців тому +4

    My friend had a very pragmatic approach to this question;
    "Take a look at some examplecode. Pick the one that looks appealing. You will have to pick up other languages allong the way, so start with one that you like on first look. Most important is to just start somewhere and then keep going."
    (Was C++ for me. Just recently decidet to go 'full C' after another 30-ish-hour-nightmare-debugsession-from-hell because returnvalues from templates that get funeld into frameworks wich in turn return a pointer to a polymorphed class with 35 levels or inherritance sucks quite some major cojones. And while I miss some features of C++ (references, operator- and function overloading) the general ease of use outweights those few drawbacks, IMHO)

    • @azimuth4850
      @azimuth4850 5 місяців тому +1

      Same exact thing happened to me. I think it depends on what you're using it for. Personally I am writing math programs that just need to do a lot of calculations. So I don't need all the complexity of C++, it's useless to me. I'll admit I still use vector though, because it's going to take me a while to be an expert at C.

  • @IvanStamenkovicSeemsIndie
    @IvanStamenkovicSeemsIndie Рік тому +6

    C and Zig. Would recommend a lot

  • @wagnerjosegertrudesmuitoal3638
    @wagnerjosegertrudesmuitoal3638 11 місяців тому

    Thanks for the great advice!

  • @WizardOfArc
    @WizardOfArc Рік тому +43

    I fully agree with this C then Rust approach. A great book I used for learning C was « Learn C the hard way » …
    Although I think dabbling in Haskell can help explain some of the abstractions/ patterns that rust uses…🤔

    • @MrGriefCreep
      @MrGriefCreep 7 місяців тому

      As a Rust dev with bits and pieces of C/C++ exposure, I agree as well. C is a powerful but very simple language which makes it easy to understand all of the concepts you need to make a compiled program, and knowing C will help with transitioning to Rust immensely, as Rust simply adds a layer of depth through borrowing from functional languages, much in the same way as C++ borrowed from OOP.
      Rust is my favourite systems language because when you fuck up, it makes it very clear how you've done so (and how to fix it).
      Some people take tissue with Rust's verbosity, that it is that which allows the language the safety it has. I simply think that going from C -> Rust should be the main systems dev pipeline over C -> C++.
      Hell, Zig is pretty cool too, but I really dislike the way it prints variables to stdout, so I don't use it much. Really it's all down to taste.

  • @thomasi.4981
    @thomasi.4981 Рік тому +34

    Learning C for one semester helped me enormously in my programming journey. Especially when, in the next semester, i taught myself Rust. C has made me a better programmer, just like he says. It's an insanely cool experience. Rust is fun, though. I enjoy the potent abstractions while knowing I've hardly lost any speed.

    • @dysania1832
      @dysania1832 5 місяців тому +1

      Do you know of any good ways to learn rust? I currently know python without oops

    • @thomasi.4981
      @thomasi.4981 5 місяців тому

      @@dysania1832 Reading the official online book "The Rust Programming Language" and running every single example it gives in your IDE (VSCode) is the best way in my opinion. That's how I got started.

    • @ultimatedude5686
      @ultimatedude5686 3 місяці тому

      @@dysania1832Look into rustlings. It has a bunch of challenges that walk you through the syntax, borrow checker, and some of the common types from the standard library.

    • @amihartz
      @amihartz 2 місяці тому

      @@dysania1832 ChatGPT. Just try to program something and whenever you get stuck, ask it a question. Don't ask it to write your whole program for you. Try to write the program yourself, and only ask it things when you get stuck. If you think, for example, your program might benefit from having a class, you can ask ChatGPT "hey, does Rust have classes, and if so, how can I create one?" ChatGPT is good because even if you ask it a silly question it often will point you in the right direction.

  • @agedvagabond
    @agedvagabond 4 місяці тому

    I started using rust from c# and I am amazed how easy it is, rust seems to allow the use of higher level concepts that I commonly used in c# and I thought going to a lower level language would be difficult but generics and dynamic types are so much simpler and logical when down at lower level I wish I had learned it sooner, and the speed and memory usage! Amazing. I never used C but I did watch the cs50 videos that used c.

  • @johanngambolputty5351
    @johanngambolputty5351 Рік тому +2

    Absolutely, and this is coming from someone who has spent most of their time with python... knowing a bit of c at least, helps you appreciate things like deep copies vs shallow copies. But yeah, maybe python (or I guess any dynamic interpreted language, just less syntax and easier debugging to begin with) then c then c++ then rust :)

    • @demenevdmitriy4175
      @demenevdmitriy4175 Рік тому +2

      C++ is a rabbit hole

    • @johanngambolputty5351
      @johanngambolputty5351 Рік тому +2

      @@demenevdmitriy4175 Maybe, but it gave us RAII and zero cost abstractions, and in my view it's pretty sane in its approach to OOP which sometimes goes too far in other languages...

  • @zilog1
    @zilog1 Рік тому +122

    Another thing to note is that C is crazy small for a language. The entire manual is like, 100 pages. I would say its actually a good beginner language.

    • @hwstar9416
      @hwstar9416 Рік тому +14

      Where can I find such manual?

    • @zilog1
      @zilog1 Рік тому +25

      @@hwstar9416 The C Programming Language. 2nd Edition. google it. stop asking people to do things for you. you cannot have random people on the internet hold your hand. do it yourself or you will never be successful.

    • @nates9778
      @nates9778 Рік тому +216

      @@zilog1 You went full stack overflow with your answer there calm down.

    • @jvmgang
      @jvmgang Рік тому +99

      ​@@zilog1 was that really necessary? He asked for what manual you were talking about, it's not clear that you meant the C programming language 2nd ed. in your original comment

    • @NostraDavid2
      @NostraDavid2 Рік тому

      @@zilog1 get the hell out of here with that attitude! Some people simply learn better from humans. And you post about some nebulous manual and then act pissed when someone asks? You're acting weird, my man.
      Props for giving the source though.

  • @thingsiplay
    @thingsiplay Рік тому +6

    I'm just doing light commandline programs for desktop in Rust since 2 years, but I decided to go into C too. The reason is, that so many programs are written in C and I can either port them to Rust or just help on the code base in C as it is. In example I can't do much in one of my favorite applications, RetroArch, because it is not written in Python or Rust. So, I'm going to learn C once and for all! Somehow, Rust gave me the confidence to do that. Not sure if that makes sense. Edit: I should have noted that I read the C Language from Kernighan & Ritchie book 20 years ago or so.

  • @dimaryk11
    @dimaryk11 20 днів тому

    That's like the path of learning every language. Learn C first then learn something else after. Understanding C gives you a really good foundation

  • @Bp1033
    @Bp1033 Рік тому +1

    assembly is fun, it lets me put all my variables into display memory. just ignore that line of pixels on the top left.

  • @pjf7044
    @pjf7044 Рік тому +15

    Maybe I’m just too inexperienced but after trying rust and then trying C, C seems to be a bit “easier for me”. I am primarily a JavaScript developer . It’s interesting because I was very intimidated of C which is why I chose rust (and nearly GO) … but after trying rust and then hopping over to C, I find C a bit easier to learn

    • @peter9477
      @peter9477 Рік тому +8

      C is definitely easier to learn. Smaller cognitive footprint. On the other hand, Rust's advantages do ultimately outweigh the cost of learning it so it's worth the investment.

    • @TehKarmalizer
      @TehKarmalizer Рік тому +6

      C is definitely easier. Which makes it easier to do things wrong. The difficulty in r*st, especially for people unaccustomed to memory management, is often that it makes memory errors very difficult while C makes them very easy.

    • @oddikaro8236
      @oddikaro8236 Рік тому

      C syntax is much more direct and clear than Rust syntax, so it is easier to think and write what you want. However, as long as your program/software increases, crashes will also increase most likely.

    • @oddikaro8236
      @oddikaro8236 Рік тому +1

      @@peter9477 Yes...and no...almost 0% of software is made in Rust. Almost anything is made in C.

    • @peter9477
      @peter9477 Рік тому

      @@oddikaro8236 I'm not sure what your "no" is referring to. How widely Rust is used relative to C has little bearing on the cost-benefit ratio, although I will note that, despite less adoption, the existing Rust crates are *far* easier to add into a program and therefore far more effective than any existing C code, so even with its "0%" adoption rate it's still easily paying off its own investment quickly. I speak from experience, having written C since the 80s...

  • @lightinside87
    @lightinside87 Рік тому +2

    C is a language that can't be replaced, if a language is built from C people will try to replace it. But here's the catch, C implements itself into other languages. Like putting MySQL Js Php and C, in microcontrollers and PLCs python bash and C, Java. Java is dirty but you get the idea. The bare bones of C will have security issues but there are other versions of C that were created and updated throughout the years. If C has security holes, it can be fixed by creating functions and libraries.

  • @edwardmurphy440
    @edwardmurphy440 3 місяці тому

    Agree. Learn C first 1) it is a simpler language 2) you will understand computer architecture when you have learned C, 3) you will really appreciate the guardrails Rust puts in front of you before it will compile your program. Idiomatic safe Rust hides so much (which is ultimately very good) that starting there will actually make it harder to learn the why of Rust; why Box, why RC, why Arc?. I would learn to program in C, then learn data structures in C, then learn to code in Rust.

  • @Zempi3
    @Zempi3 10 місяців тому

    This is so awesome! 😍This is exactly the question I faced just a couple of weeks ago.... and yeah, I chose C ❤

  • @tokiomutex4148
    @tokiomutex4148 Рік тому +6

    By learning C you won't understand how processors work, only what they do at the high level.

    • @yokunjon
      @yokunjon Рік тому +1

      Shhh, don't spoil it. Some people just want to feel different from others; it's c00l.

    • @ElPikacupacabra
      @ElPikacupacabra Рік тому +1

      True! But you still get more than with Rust. Really, any good programmer should have seen some assembly and how function calls work.

    • @fullmontis
      @fullmontis 6 місяців тому +1

      you do understand how memory works though. Endianness, cache, how data structures are packed in memory, pointers, segments etc. All of that is abstracted away in GC languages, and it makes it unnecessary to understand how your program is mapped in memory. Maybe people are right in seeing pointers as dangerous, but the first time I was able to change a variable by overflowing a buffer it made me feel like I could see the matrix lol. You can't get that feeling of freedom and power with raw pointers from any other language, and I would say it's for the best, but you can't deny it's something that every programmer needs to experience at least once in their career.

  • @ulrich-tonmoy
    @ulrich-tonmoy Рік тому +6

    Well theres Zig and Nim
    Nim might be good for Web dev as its compile to other lang like c js and it has c like performance + python like syntax it should be great to build js packages quickly with Nim
    and Zig lets you use c and its promising and it lets you choose how you want you memory to be manage it gives all the choice out there so this should be great for performance type native and embedded system

    • @djazz0
      @djazz0 Рік тому +2

      I code embedded with Nim it’s great :)

  • @felipedidio4698
    @felipedidio4698 Рік тому

    Very well said

  • @thepisewigeon
    @thepisewigeon Рік тому

    This was a really great video, funny and informative, noice

  • @georgehelyar
    @georgehelyar Рік тому +15

    Everyone should learn C. It's not hard to learn, learning it teaches you a lot about how computers/languages work, and it's actually useful. I've had to drop down from another language to C several times for work.
    Then crash your C program a few times and rewrite it in rust, to appreciate the benefits that rust brings.
    If you just learn rust as your first language then it will seem hard and you won't understand why it is great.

    • @bobsmithy3103
      @bobsmithy3103 7 місяців тому

      Would you recommend C or C++? Usually I see job listing for C++ but not C so wouldn't learning C++ be better?

    • @henryshaw1437
      @henryshaw1437 7 місяців тому

      You can essentially learn the core aspects of C in like a week. Then, everything you learn in C is more or less directly applicable to C++ or C++ provides a "better" way to do what you would do in C. This is because C++ is for many purposes a superset of C (if you are gonna nitpick this statement, no body cares about hand countable number of C99 and beyond features that make C different) althought modern C++ has a lot of different features, that some people encourage over using C like constructs in C++.

  • @lazyh0rse
    @lazyh0rse Рік тому +9

    As someone who tried learning C, then got discouraged then tried C++. I would say C++ is usually enough in my opinion, you will not be a C wizard probably, but you will definitely learn a lot of C since most C++ libraries take advantage of C code or even written completely in C and you will use them like C. Anyway, just my thoughts. I found that the road to C++ was much easier ime.

    • @189Blake
      @189Blake Рік тому +1

      Interesting, C is more basic than C++, which in my case meant that I grasped better C than C++. With C++ there are so many features and updates that I know whatever I do, there will always be another way to do it, with its pros and cons. With C is just one way, period.

    • @lazyh0rse
      @lazyh0rse Рік тому +1

      ​@@189Blake You are right, but it's more that I could do something with C++ rather than it being "easier", since you have the standard library. But C, you have to build everything from the ground up. You could use libraries to speed up the job, but what I'm saying is that why not learn C++? I don't think you will learn less C, rather you would have both solutions and you can test and see what you like. In my case, I learn a lot of C even though I do C++. So I think it could benefit you more if you just went ahead and chose C++. If I'm to go the C route now, I would be able to hold up just fine. It's not like you would go 180% degree...

    • @kevinyonan9666
      @kevinyonan9666 Рік тому +2

      Keep in mind that C & C++ are not the same

    • @danielhalachev4714
      @danielhalachev4714 6 місяців тому

      Absolutely. C was overwhelming for me. C++ was enjoyable.

  • @SnakeEngine
    @SnakeEngine 5 місяців тому +2

    Everyone should learn C as this is the thinnest layer over Assembler that allows you to write high level code. Once you understand how to write it in C, you will be able to understand any language and concepts in a very profound way.

  • @jaysistar2711
    @jaysistar2711 Рік тому +2

    No love for Zig? I'm going to go with learn Zig 1st, and Rust 2nd. To fix or port existing things learn C 3rd, C++ 4th.

  • @allesarfint
    @allesarfint Рік тому +4

    That dude is not a real Rust programmer, didn't said "Rust btw" even once smh my head.

  • @ErikBongers
    @ErikBongers Рік тому +6

    I fully agree. In order to understand the moderate annoyances of Rust you need to feel the excruciation pain of C, I mean that constant anxiety of "I think I covered all edge cases...right?". I'd even go one step further: after learning C, try to refactor your programs to C++, using idiomatic C++ to avoid the dangers of C. Only THEN will you breathe a sigh of relief when seeing how much better Rust has implemented the safeguards.

    • @DissyFanart
      @DissyFanart 6 місяців тому +1

      and even then people on the internet will sit around saying you're not a real dev because you choose to use rust and avoid pulling teeth every time you try to do basically anything.

    • @DS-nv2ni
      @DS-nv2ni 3 місяці тому

      @@DissyFanart Maybe because what you say is not true and you are delusional?
      "avoid pulling teeth every time you try..." what?
      Make an example of something that you do often while programming for which C/C++ are such a pain? Are you a civil engineer on a nuclear plant? Do you program embedded systems for life saving situations? What kind of programmer are you to need that extra safety (and btw not having solid frameworks for that already in your prod at the same time after ALL these years of experience you have) ?

    • @ultimatedude5686
      @ultimatedude5686 3 місяці тому

      @@DS-nv2niSecurity is important for most large projects, and 70% of security vulnerabilities are memory-safety related. Rust is designed to mitigate these issues without sacrificing performance.

  • @DerSolinski
    @DerSolinski Рік тому +1

    Ha, didn't expect sound advice.
    Good one. The trolls are probably disappointed now.
    I personally think dabbling a bit with assembly is a good educational exercise too.
    Nothing fancy, e.g. building a deadpan calculator app would suffice. Gives tremendous amounts of insight.

  • @wege8409
    @wege8409 22 дні тому

    I started to try to learn c a little while ago but I had so much trouble trying to set up a GUI. I am considering learning Rust instead just for the package manager and ease of setup.

  • @sprytnychomik
    @sprytnychomik Рік тому +5

    Actually, first things that a programmer should learn are algorithms and data structures. Language then is just a way to express them. C and ASM are great languages to delve into computer architectures and writing efficient code.

    • @gappergob6169
      @gappergob6169 10 місяців тому +3

      Algorithm is not that necessary for beginners, it will instead make things appear more complicated than it seems.
      Most beginners project doesn't need much. Just basic design pattern, db, basic of network, some os stuff. They can grow from there, as they get more comfortable writing code.

  • @therealb888
    @therealb888 Рік тому +9

    This is literally my dilemma RIGHT NOW!
    I'm not even exaggerating. I want to start building my projects ASAP & be productive. My area of interest (hw security & crypto) seems best suited for rust. But math,C, asm, computer architecture, memory, DSA, OOP are topics that would help me with a long term career.

    • @brumd21
      @brumd21 Рік тому +4

      You can do "math, asm, computer architecture, memory, DSA OOP" in Rust too :)

    • @eternal_flam3-145
      @eternal_flam3-145 Рік тому +2

      Honestly, it's probably a good idea to start in Rust. You'll want to start with something that will keep you interested, and then once you start finding interest in other fields, you can start venturing into C.

    • @therealb888
      @therealb888 Рік тому

      ​@@brumd21 thank you, I really love safety & performance rust brings, I'm a big fan of it. I guess I'd be more excited learning rust than any other language because I value it's benefits.

    • @0xCAFEF00D
      @0xCAFEF00D Рік тому

      One is a language which requires a lot of work to learn and understand. It forces you to learn about several high level language topics it's implemented and some it's invented.
      The other is a simple language that offers a thin abstraction over memory (less true every decade) that makes for a helpful model of most underlying machines you'll encounter.
      I think you should try Rust and see if you're really learning what you hoped. Because most of the things you mention are orthogonal to language choice and could be learned in either language. I'd prefer a simpler environment for that, but maybe you don't.

    • @0xCAFEF00D
      @0xCAFEF00D Рік тому +4

      @@therealb888 You shouldn't have preconceived notions about something you don't know based on what people say.

  • @HyperFirezAlt
    @HyperFirezAlt Рік тому +1

    3:30 I 100% agree here. I started with Java as my first language (modding Minecraft when I was like 12 and used it in High School classes) and initially taking classes in Uni with C++ was a bit of a shock. C/C++ provided the groundwork for the higher level objects in a language like Java. I feel like if I had learned C or C++ first, then Java would have made a lot more sense going into it. At this point however, I am very confident in both Java and C++ and I hope to have opportunities to use other languages such as Rust in the future.

    • @kingofhiskingdom4616
      @kingofhiskingdom4616 10 місяців тому

      Hi, as someone confused btw c++ and java right now. What should I go with. Which one is good as foundation and you can build cool and gui projects

    • @HyperFirezAlt
      @HyperFirezAlt 10 місяців тому

      @@kingofhiskingdom4616 Java is by far easier to build GUIs with, same with C#. C++ is better if you want to build a solid foundation however.

  • @betatrix8474
    @betatrix8474 7 місяців тому

    one of the best videos I've ever seen
    idk why people try to choose 1 thing when they can learn everything !

  • @shaunkeys7887
    @shaunkeys7887 Рік тому +5

    I wholeheartedly agree with this, with one extra clarification: Don’t spend too much time on C if you don’t need it. Learn the basics, understand how it works, and break some things. Then transition to Rust for production code. Obviously, there will be exceptions to this, because C is far more prevalent than Rust, but if you’re starting something new, you’ll usually be able to make better, more secure programs faster with Rust.
    Related side-note: Cargo is AWESOME! My biggest pet peeve with C is the barrier to entry for building any program with more than a few files. Build systems are HARD. Cargo may not have all the features of an old C build system, but it’s SO EASY. I can spend weeks on a build system for a C program or I could just use the defaults provided by cargo and be up and running in mere moments

  • @pastasawce
    @pastasawce Рік тому +3

    Seg fault is my middle name

  • @S7rul
    @S7rul 6 місяців тому

    I would add that it can be realy helpful too learn to read a little bit of assembly. The stack realy first clicked for me when I had to read and undrestand a function decompiled to assembly for school.

  • @melvyn99
    @melvyn99 Місяць тому

    There is a different kind of developer we have today. Everything is library or an import so all people are doing is someone elses code to put things together. I'm glad to see more people going down the road of learning lower level languages. It changes the way you see computers and the software that you use on a daily basis.

  • @SkegAudio
    @SkegAudio Рік тому +3

    I learned Python then Rust. The journey was painful but worth it.
    It has helped me write better code in other languages, including C.

  • @JB52520
    @JB52520 Рік тому +4

    Rust is A LOT harder to learn than C. Never learn it as a first language unless you're freakishly genius or you're really into crushed dreams and mental breakdowns.

    • @abisarwan20
      @abisarwan20 10 місяців тому

      really ? i never really take my time for rust xD but i'm interested in

    • @taylrthegreat
      @taylrthegreat 3 дні тому

      Is it tho? I like the book approach

  • @oefzdegoeggl
    @oefzdegoeggl 8 місяців тому

    of course c first, then rust. but i'd like to add assembly in between, as this will allow you to understand what's going on behind the scenes.

  • @Pocketkid2
    @Pocketkid2 Рік тому

    In terms of learning, C is more important because else how could you appreciate what Rust does or does not bring to the table? Or any other programming language for that matter?

  • @WarrenMarshallBiz
    @WarrenMarshallBiz Рік тому +3

    For me, it's about the basics. If you don't know what's happening under the hood, then it's hard to appreciate what Rust is bringing to the table. And I'm one of those who still uses C as my primary language because I find it expressive and freeing. But I do see what Rust is doing and it's not a bad thing.

  • @zawizarudo7295
    @zawizarudo7295 Рік тому +9

    Fun Fact: There are many static analysis tools for C like splint and clang static analyzer. So using them is like using borrow checker but in C. (Borrow-checker is also a static analysis tool)

  • @Nintron
    @Nintron Рік тому

    Fantastic video! 👏

  • @maeve92
    @maeve92 Рік тому +1

    Found this video today. Was pretty funny and shared it with my friend because I thought she might enjoy it. Also. My absolute first programming language is C and I started learning it like a few months ago. I had to stop though because I felt like I was making no progress. Decided to try again 4 days ago and started to get more on the correct path. I also did get a look into Rust when my friend showed me some of the code she made. It did interest me but I decided to master C first. Then I will take a deeper dive into Rust. I just need a mentor to help me though because I need to have some guidance in my journey to learn C and programming in general.

    • @FastRomanianGypsies
      @FastRomanianGypsies 8 місяців тому

      SIGSEGV will be your mentor

    • @azimuth4850
      @azimuth4850 5 місяців тому

      You will be glad you learned C. Knowing a "lower-level" language will improve your skills even if you go on to specialize in some other language. Also if you ever get into an application like AI or Data Science where speed is essential, C is really the only way to go. I recommend the book by the original creators of C: "The C Programming Language" by Kernigan and Ritchie. Its a very good place to begin for a beginner. Be sure to do the exercises and have fun!

  • @xloppyschannel4881
    @xloppyschannel4881 Рік тому +3

    I tried more languages than my age, and I have to say use whatever you want to, either way your code is gonna be so bad that it should land you in prison.

  • @davidtozz
    @davidtozz Рік тому +6

    Well, with C you're getting your hands dirty. Literally.

  • @Korudo
    @Korudo Рік тому +1

    This was super helpful. Thanks for answering that question, and providing a proper context.

  • @FA18_Driver
    @FA18_Driver Місяць тому

    LOL This was hilarious! Good job :D

  • @zactron1997
    @zactron1997 Рік тому +15

    Ok I understand the "You should learn C first because it teaches you how a computer works" argument is really common, and I used to believe it as well. But now I actually think this is a bad take. Despite what everyone thinks their start in programming was, nobody started writing in C.
    My grandfather's generation learnt by writing ladder diagrams, a trivial language with arbitrary rules and little bearing on the fundamental hardware.
    My dad's generation learnt by writing in BASIC, a trivial language with arbitrary rules and little bearing on the fundamental hardware.
    My generation learnt with JavaScript, a trivial language with arbitrary rules and little bearing on the fundamental hardware.
    Sure, in a computer science course at the university level you'll learn something like C right now, but does C really teach you how a computer "works"? It completely obfuscates how registers, caching, context switching, etc. work. C only feels bare metal because you already know how a computer works and you're projecting over the gaps.
    By the logic of "learning how a computer really works", you could make the argument that people should be writing assembly as their first language, and some schools still believe that. The problem is, assembly is awful for teaching how to think algorithmically.
    This is why most schools would teach maths and assembly: something high level for algorithms, and something low level for implementation.
    Now, we're in a world where languages are expressive enough, and computers are fast enough, that you can write complex algorithms in a very expressive language and compile them down to fundamental instructions.
    The C memory model is no less arbitrary than the Rust model.
    After all of that, I still think you should learn C, but not because you need it to understand a computer. You should learn C for the same reason you should learn Zig, Rust, TypeScript, BASIC, etc., Because knowledge is transferrable, and learning anything helps with understanding everything.

    • @mikethemonsta15
      @mikethemonsta15 Рік тому +1

      My start in programming was writing C

    • @zactron1997
      @zactron1997 Рік тому +2

      @@mikethemonsta15 That's awesome! No sarcasm or malice intended. But I would ask:
      1) Was it actually your first ever exposure to programming? (No high-level algorithms course in mathematics, no BASIC/Python/JS/etc.)
      2) Do you think you represent a common experience?
      I think there's a bias in these kinds of communities towards the savant. You already have to be either very enthusiastic or very good at programming to watch these kinds of videos, and I don't think that makes us a good representation of most people's experiences with programming.

    • @mikethemonsta15
      @mikethemonsta15 Рік тому +5

      @@zactron1997 That was my first exposure to programming. No algorithms or anything. No high level languages.
      I don't know if it's a common experience, I haven't surveyed anyone. But it is what I recommend to every new prospective programmer starting out. Start out with writing a simple console text adventure game in C. It'll teach you the basics about I/O, functions, data structures, string manipulation, and when you get something on screen, it feels real and very satisfying.

    • @UnworthyUnbeliever
      @UnworthyUnbeliever Рік тому +1

      ​@@zactron1997
      I have similar situation. my first programming language was C, and I'm very happy about it (i started around two years ago) but since then, i become a programming languages junkie.
      Also the saying "[...] by that logic one should start with assembly language not C [...]" is faulty reasoning (slippery slope fallacy), the 'low level' argument in favor of C does not extend to assembly language.
      Plus, 'low level' is not the only argument in favor of c, 'simplicity' and 'high return-for-effort' are two further arguments. Simplicity means among commonly used programming languages c is the simplest one to learn ( (simple != easy) && (simple != easy to master)). "High return-for-effort" means since it is so simple, it doesn't take much time to learn as use-case agnostic language, compared to POSSIBLE use cases one might have.
      All things combined, C is the best use-case agnostic beginner programming language.
      Dont even think about functional programming languages.
      ALMOST all books that teach OOP-supported programming languages start with classes and not with primitive concepts, which is bad way of teaching IMO.
      UI-enabled programming languages are bad beginning. (So basically JS)
      Also, JS is also bad beginning language (independent of aforementioned point).
      In-development programming languages with lacking beginner friendly teaching material are bad beginner languages, so Nim, Zig etc.
      C, python, go, php are examples of good beginner languages, IMO.

    • @felippealmeida8075
      @felippealmeida8075 Рік тому +2

      my first language happened to be C, and the thing is I dont see why people see it as hard, its just a bit less easy going than JS, and what does people mean by understanding how a computer works? The only thing I can think of is working with pointers, thats what I learned of more complex on my college, which isnt that hard once u define the types, u are just implementing data structures before using then, the diff on JS is that they came already built for you. Do people think C is hard?

  • @SarahGreyWolf
    @SarahGreyWolf Рік тому +3

    Personally I feel that writing learning Rust first can be very helpful for learning C in the future, working with the borrow checker and race safe threads can help you to realise where in C you need to be cautious with your memory management and watching your variable usage, and getting into scenarios that I did need to use raw pointers in Rust, is really helpful for then going on to experiment with C

    • @cthutu
      @cthutu Рік тому

      In my experience it's the other way round (mostly with C++). You understand why the ownership model in Rust is great. You understand why there are lifetimes to avoid dangling pointers because you're familiar with those problems in C/C++. But going back to C/C++ afterwards does make you a better C/C++ programmer.

  • @nelsonfleig5024
    @nelsonfleig5024 4 місяці тому

    I am currently the full stack chad in the video, but learning C to learn memory management and hopefully be able to do some lower level stuff. I've been wanting to get into Rust, but at this point it feels pointless since I wouldn't be able to appreciate the reasons why it was created and the kind of problems it solves.

  • @robcab3725
    @robcab3725 9 місяців тому

    the 'i go to frat parties you don't'-bit was really good lol

  • @IonizedComa
    @IonizedComa 2 місяці тому +2

    I've always said that C is the best language for beginners. The concepts translate to other languages, forces you to pay attention to how the stack and heap work etc.

  • @eljuano28
    @eljuano28 Рік тому +6

    C is the language of the gods. Rust is the language of the gods irritated killjoy wives telling them the platypus is a bad idea.

  • @blank001
    @blank001 4 місяці тому +2

    Start with C, learn basics, get comfortable with fundamental concepts, get used to it, and switch to Rust

  • @jan5504
    @jan5504 5 місяців тому

    so which should I learn first if I want to venture on ethical hacking C or assembly? (Ignore the profile I don't how to change it, no connection. )

  • @zvqle
    @zvqle Рік тому +8

    C Programming Language Gang
    👇

  • @norude
    @norude Рік тому +2

    Rust is faster than C, safer than C and syntactically better than C.

    • @happygofishing
      @happygofishing 11 місяців тому

      Nothing is faster than c

    • @norude
      @norude 11 місяців тому

      @@happygofishing Oh yeah? Create a hashtable

    • @raianmr2843
      @raianmr2843 10 місяців тому

      don't agree with the first claim but +1 because propaganda is important 😂

    • @joseoncrack
      @joseoncrack 2 місяці тому

      Rust is faster than light.

  • @ferugulant
    @ferugulant Рік тому

    frankly, I'd say to learn both, plus maybe some assembly (ARM is good if you have a chip you can use)
    Use C and assembly to learn about how computers work, how programs interact with an OS, etc.
    Then use Rust to develop instincts around memory safety, as all it really does is force you to follow best practices

    • @wheeI
      @wheeI Рік тому

      arm is so easy to learn, 1000x easier than x86 due to being risc (what the fack is a cvttss2si???) and i'd say it's easier than c++. not c though, c is super simple.

  • @johansteenkamp9214
    @johansteenkamp9214 Рік тому

    I think with with recent flood of articles on the Internet regarding the new T&C's of the Rust Trademark, a small group of people might be turned off to start learning Rust, especially if they plan in the future to write some educational content for a living.

  • @heitormbonfim
    @heitormbonfim Рік тому

    a hell of an actor you are!

  • @gnagyusa
    @gnagyusa 23 дні тому

    Good advice.

  • @jacklwipa1187
    @jacklwipa1187 Рік тому

    Loving the beard 💪🏽

  • @finkelmana
    @finkelmana 2 місяці тому +2

    10 print "I solved this problem by learning BASIC on my Apple IIe first"
    20 goto 10

  • @kuoster
    @kuoster Рік тому +4

    It's just like the question of "whether to learn Java or C++ first" back in the 00s. I'm old...🥲

    • @erikkonstas
      @erikkonstas Рік тому +2

      And we now know that both have their pitfalls...

  • @JaykPuten
    @JaykPuten Рік тому +1

    Hearing this reminds me of an old presentation or textfile I can't remember
    I *think* by cult of the dead cow
    (I'm 38... I'm old look it all up if anyone thinks I'm making this up)
    Smashing the stack for fun and profit
    Anyone else remember that?
    Awesome for the time as it was something that hadn't been covered in a like "we" sense rather than people just individually figuring it out and and keeping it to themselves...
    Yes alot of this is irrelevant...
    But I'm also interacting so you know the algorithm shows this channel to more people

  • @PurpleTeamer
    @PurpleTeamer 11 місяців тому

    Between C and Python, for reverese engineering or red teaming purporse, which one would you recommend?

  • @edwarddejong8025
    @edwarddejong8025 8 місяців тому

    Modula2 was better than C in every objective measurement, except for popularity. Sadly, people have turned to Rust to counteract the many flaws of C, and it indeed is far superior in terms of protection against dumb mistakes, and has addressed packages more sensibly, and cleans up some of the syntax mistakes of C. However, Rust has by my measurement around a 24% punctuation frequency (percent of chars, excluding whitespace that are non alphanumeric), which is terrible for readability. In certain areas like string processing, Rust is beyond clumsy. Have a string you want to index by character, use:
    let letters = name.chars().collect::();
    that's obscene IMHO.

  • @dogyX3
    @dogyX3 Рік тому

    Now you gotta do C Vs Zig

  • @michaelschnell5633
    @michaelschnell5633 Рік тому +1

    Of course it's true that with C you can learn the hard (and thorough) way how computers work and how badly you can fail to translate your ideas into code - while Rust in many cases just denies to compile nonsense. But (1) it might be helpful that Rust's error messages provide explanations on what is abysmal, and (2) doing ASM is even more brutal than C on that behalf. Hence you should start with ASM to really get wet.
    (In fact I did start with doing ASM on a cupboard I don't even recall the name of any more , and then some 30 more ASM variants and some 20 higher level languages and now finally very delighted by slowly improving on Rust)

  • @Mystixor
    @Mystixor Рік тому

    Well said.

  • @alcar32sharif
    @alcar32sharif 3 місяці тому

    Order of German CS students learned programming in 2007:
    1. Semster: Haskell (Functional Programming)
    2. Semester: Java SE 5 OOP
    3. Semester: C on ARM to build a complete OS from scratch.
    So it was from exotic, to easier, to hardcore and it was great 😃👍

  • @dale116dot7
    @dale116dot7 6 місяців тому

    Most microcontrollers have an available C compiler, not all micros have any other compiler available. Although there are plenty of microcontroller applications written in assembly.

  • @caddr
    @caddr Рік тому +1

    Yes, C first and then Rust, sometimes you need FFI that only C can do in other programing language

  • @pabblo1
    @pabblo1 11 місяців тому +1

    C is incredibly versatile. You can run it on anything, from a Commdore 64 from the 1980s, to an AMD Ryzen powerhouse from today.

  • @maximkulkin2351
    @maximkulkin2351 Рік тому

    Exactly! I was advocating for this order for a long time! You need to understand what high level language gives you to appreciate it.

  • @stera182
    @stera182 8 місяців тому

    If you want to learn rust, it will be hard to find a job if you only know it. So learning C and C++ would only benefit your CV. You'll find more job opportunities, and in all cases, you will be able to read and to work on legacy code base, might it be to rewrite it in rust or not.

  • @bellissimo4520
    @bellissimo4520 6 місяців тому

    I've been working with Java ever since it was introduced. But before that, I also programmed in C for a few years, and before that, back on my Atari ST computer, dabbled in assembly. I absolutely agree that learning a low-level language like C is very valuable, even when you don't want to use it later. It really helps better understanding what that stuff in a high-level language like Java does under the hood.
    Also, as of right now, with Rust still being quite young, you will likely find more job openings asking for C programming knowledge than for Rust. So for this reason alone I'd recommend learning C first.

    • @toby9999
      @toby9999 6 місяців тому

      Did you find it difficult to transition to Java after learning and using C?
      I also dabbled in Assembly way back in the 70s and 80s. Subsequently, I've been a C/ C++ developer for 25 years but completely failed at transitioning to Java. I hate the language literally and conceptually and I hated the whole java ecosystem. We're forced to use the Eclipse IDE. And what a peice of unstable bloated crap that is. And since our dev team has been moving away from C++ toward Java, I'm effectivelly being forced into early retirement.

  • @Luix
    @Luix 6 місяців тому

    I would like to know how a so big compiled executable should be used in embedded ddvices

  • @eliasrodriues6614
    @eliasrodriues6614 11 місяців тому +1

    Rust is just a Haskell -flavored C.
    It's great, really good, but most of the people don't know exactly what they're doing. Learn some set theory and category theory and maybe Haskell (no pun intended) you'll know what Rust will bring to the tables.
    Haskell is way better in phylosophy, but poorly implemented. Rust is so much better implemented than Haskell. But it make some C++ concessions when it's necessary. It holds the programmer on a leash....
    I think C/C++ are the best programming to solve really really complex problems. Like factoring numbers using methods like general number sieve. It's really unbeatable in this sense. And in the embedded world, of course.

  • @norbertbolanowski7416
    @norbertbolanowski7416 Рік тому +1

    UA-cam sent me notification after 18secs, unbelivable