i changed my mind about zig

Поделиться
HTML-код
  • Опубликовано: 29 апр 2024
  • For a long time, I really didn't understand where Zig fit in in the developer ecosystem. Now, I think I get it.
    🏫 COURSES 🏫 Learn to code in C at lowlevel.academy
    📰 NEWSLETTER 📰 Sign up for our newsletter at mailchi.mp/lowlevel/the-low-down
    🛒 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!: lowlevel.store/
    Follow me on Twitter: / lowleveltweets
    Follow me on Twitch: / lowlevellearning
    Join me on Discord!: / discord
  • НаукаНаука

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

  • @LowLevelLearning
    @LowLevelLearning  15 дней назад +52

    come learn about C and other languages at lowlevel.academy

    • @VivekYadav-ds8oz
      @VivekYadav-ds8oz 15 дней назад +1

      can u pls give me ur course for free? i am in my pre-final year in uni and I have an intern in TI in a month, I need to get pro in C 🙏 im broke haalp

    • @nickbors-sterian
      @nickbors-sterian 15 дней назад +1

      hey, if you could price your course better it would be great for us students. Im struggling to pay accomodation and my car payment (i need it to get to campus) but a student plan would greatly help but currently i am unable to afford your courses so im stuck with your generously provided free youtube content. I want to support you, but i need to support myself first :(

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

      @@simpleprogrammingcodes3834 i dont know c

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

      Hey LowLevelLearning, you should probably include zig in the title of the first video about zig, I had the use youtube's channel search function to find it.

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

      Wow that's pretty cheap for a lifetime license! I hope you get into MPI someday.

  • @foobar3202
    @foobar3202 15 дней назад +685

    You didn't even talk about one of the best features of Zig - seamless integration with C! It's really cool, you can straight import and start using C libs without writing any FFI.

    • @RFelizardo
      @RFelizardo 15 дней назад +57

      This is what I was excited about, but when I started looking at using it for a pet project I started noticed that most folks still ended up writing bindings for common libraries anyway to get around issues with C APIs not being descriptive enough in some cases. Kind of ruins the magic. :(

    • @Sevenhens
      @Sevenhens 15 дней назад +92

      "You didn't even talk about one of the best features of (C++) - seamless integration with C! It's really cool, you can straight import and start using C libs without writing any FFI." - lol

    • @matrix07012
      @matrix07012 15 дней назад +16

      @@Sevenhens You can't every library though

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

      @@matrix07012 You can because C++ is a superset of C, meaning any C code is valid C++ code.

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

      @@matrix07012 like you can use every library seamlessly in zig

  • @TheDolphiner
    @TheDolphiner 15 дней назад +167

    One aspect of Zig I find so refreshing is how minimal it feels - you can comfortably go through the language documentation in a couple hours because there just isn't that much to learn. Zig comfortably gets so much done with comparably so few features.

    • @fr3ddyfr3sh
      @fr3ddyfr3sh 14 дней назад +14

      Honestly, that sounds like Go 8 years ago.
      Or every sane language during their early years.
      It’s a fundamental law that the older a language gets, the more docs and features it will have.

    • @TheDolphiner
      @TheDolphiner 14 дней назад +13

      @@fr3ddyfr3sh Sure, in practice some amount of that is inevitable - but to offer a reply to your example: Generics in Go needed to be a new feature added to the language. In Zig, the feature that was already there, comptime, is so powerful that it produces generics for free. Same for interfaces (as awkward as they currently can be).
      I don't want to get too hung up on this as a be-all end-all of how programming should be done, but it is my takeaway from the language in a comparable way to how I believe Rust popularized to many people what a modern typesystem could feel like.

    • @fr3ddyfr3sh
      @fr3ddyfr3sh 14 дней назад +1

      I’m a little hyped for zig too.
      I always thought an expression-style try-catch feature would be cool, and zig simply has it out of the box :)

    • @189Blake
      @189Blake 14 дней назад +3

      I heard that they want to follow C philosophy and keep the language as slim as possible.

    • @quinten01
      @quinten01 14 дней назад +3

      @@fr3ddyfr3sh wym? Go is still like that today.

  • @cubemaster1298
    @cubemaster1298 15 дней назад +294

    Let's all agree on the fact that Zig has by far the best build system. It is literally built into the language itself. No more bullshit Makefiles, pkgconf or Ninja. Don't even get me started with CMake.

    • @LowLevelLearning
      @LowLevelLearning  15 дней назад +187

      you dont like having version control for your build systems build system? \s

    • @Adiee5Priv
      @Adiee5Priv 15 дней назад +50

      Rust moment?

    • @ScibbieGames
      @ScibbieGames 15 дней назад +90

      C++ dependency management can non-controversially be declared utter fucking dogshit.

    • @vintagewander
      @vintagewander 15 дней назад +36

      We have cargo for rust tho

    •  15 дней назад +9

      ​@@LowLevelLearning escaped s is crazy

  • @krtirtho
    @krtirtho 15 дней назад +194

    Zig is the best C toolchain ever

    • @mgord9518
      @mgord9518 14 дней назад +6

      Which is pretty amazing considering that C is 50 years old and hasn't figured this shit out
      No reason I should have to install gigabytes of libraries for other architectures when I just want to link to them

    • @IamPyu-v
      @IamPyu-v День назад

      Yea, it's amazing.

  • @zactron1997
    @zactron1997 15 дней назад +226

    If I didn't have Rust, I'd definitely be using Zig. For me, the philosophy behind Rust and Zig is what matters: we can make the compiler do more work for you, so why don't we? While I appreciate certain problems are so much easier to solve in Zig than in Rust, the stuff I write works really well in Rust, and it just clicks for me mentally.

    • @scheimong
      @scheimong 15 дней назад +18

      Agreed. I just wrote a microservice yesterday in Rust that takes a netcdf file and cuts out a subregion based on a geojson "selection". I've been writing rust for 4 years so I kind of knew what to expect, but I was still shocked when all the tests passed on the first try. I was so happy that I went bragging to my colleagues for the rest of the day 😅. And because it's rust, all possible errors have been handled gracefully and I don't have to worry about race conditions at all.
      Granted I used quite a bit of well-tested third-party libraries, but still there were about 1000 lines of my own code. I'm pretty confident when I say that had I written it in any other language (Go, Java, Cpp, or god forbid JS), debugging alone would have taken me at least 2 days.

    • @raylopez99
      @raylopez99 15 дней назад +3

      @@scheimong 33% of software bugs cannot be caught by the Rust compiler.

    • @gato-rs
      @gato-rs 14 дней назад +25

      @@raylopez99 33% is way better than 100%

    • @raylopez99
      @raylopez99 14 дней назад +3

      @@gato-rs True, if you can fight the compiler. I played around with Rust for a few months then gave up. If more devs adopt it, and it's taught in uni, it might have a future; same with Zig. Otherwise not and with AI on the horizon it might be moot.

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

      ​@@raylopez99Except it's not moot. If AI becomes as good a programmer as everyone thinks it will be then we can just abandon all languages because the godly AI will program everything directly in fully-optimized machine code.
      At that point, maybe everything is moot. We can just abandon our jobs because the AI will do everything and give us UBI

  • @pierreollivier1
    @pierreollivier1 15 дней назад +117

    Zig is definitely an amazing language, but there is so much you should have mentioned, maybe in another video, because as a C developer, Zig is really everything I wish C was.
    1 - It's simple and easy to use.
    2 - I'ts the most refactorable language (meaning you don't have to jump in 30 files fixing headers and function prototypes.
    3 - Comptime is capturing 90% of the power of C++ templates/Macros, while still being very readable and type safe.
    4 - The build system is insanely good, I replaced make/cmake with Zig, and with Zig itself it's really amazing.
    5 - Zig found the right balance of freedom, meaning you can do exactly what you are doing in C (aka crazy casting and weird stuff unlike Rust) but at the same time the language design makes it very inconvenient and verbose to do so. Which makes it actually easier to just to the right thing and not take any shortcuts. So for once the Type system is actually one that doesn't deceive you because of how loose it is like C or how tight it is like Rust.
    6 - Allocators are first class citizen. Even the Std is build around that which is amazing. I really don't get how a manual memory managed language like C didn't come with some form of interface for allocators.
    7 - The interops with C is the most natural, intuitive, and straightforward that I've ever seen. You literally just add an @cImport("header.h"); and a exe.addCsourceFile("") in your build.zig and you are good to go.
    8 - Zig also has integrated unit testing, which makes it so easier and cheaper to test code. In C I would literally spend 30 minutes writing some code and one hour testing it properly. In Zig you write a function write 2/3 tests forget about it and just do a quick zig build test and you are good to go. Which is also why it's so easy to refactor Zig btw.
    9 - No hidden memory allocation, no hidden control flow, everything you read is everything you get, you don't have to guess whether this functions aborts, returns -1 or 0, or whether it sets ernno.
    10 - The error handling and all the builting safety features makes it so much easier to write fast and correct code.
    I could go on an on but TLDR if you are a C developer you should definitely try Zig as I'm sure it's going to be the real C replacement. In System level programming.

    • @mgord9518
      @mgord9518 14 дней назад +5

      I've been re-making a C project in Zig, started with a dumb 1:1 port and have slowly been implementing safety features and metaprogramming. It's pretty amazing how much more readable code becomes when you don't have to rely on 30 helper functions to extract data from packed structs like you do in C or Go

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

      @@mgord9518 Yes that's for me one of my favorite features of the language, is just how much readable it is, at doing what you would do in C. One example that I love is logging. I'm a sucker for logging things to a file as a mean to debug, in C it's cumbersome, and you can't really use printf unless you also use fflush and all that jazz, you have to change the %_ to do anything, or you have to write your own implementation of printf, and even that is tricky and annoying, in Zig, you just implement a format functions, and you can call that type format function it's very easy and, with comptime you can automate that process, and basically recursively check the type of the field at comptime, to see whether it has a member called idk print, or if it's a simple type just use {any} with it it's really amazing..

    • @pierreollivier1
      @pierreollivier1 14 дней назад +2

      @@mgord9518 I even forgot to mention how good and complete and portable the std is compared to C.

    • @jaivarsanb9194
      @jaivarsanb9194 13 дней назад +1

      hello thanks for this review of zig and how it helps you. I'm curious to know how much does the zig compiler help prevent data race related bugs due to concurrency & also identifying or prevention of memory leaks.
      If possible please help it by comparison with rust/golang
      thanks.

    • @fluffy_tail4365
      @fluffy_tail4365 11 дней назад +2

      also defer is so good, the video doesn´t go into detail but also it is made to substitute the goto: error pattern you would sue in C when you need deinit/deallocs. It is just C but improved for me

  • @sirbuttonhd
    @sirbuttonhd 15 дней назад +111

    Zig makes low level development fun, accessible and productive

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

      it wasnt already fun?

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

      ​@@iraniansuperhacker4382 as a dev coming from the high level world, no :D.
      C is rather banal, C++ is universally hated for a million different reasons, CMake is hell, Rust priorities safety over developer productivity and happiness. Zig is the only contender I really believe in. (Other than Odin and perhaps Jai, which are even more esoteric than Zig)

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

      @@iraniansuperhacker4382 C = mundane, C++ = universally hated for a million different reasons, CMake = a pain in the ass, Rust = no respect for developer productivity, Zig = finally a worthy tool

    • @Luke.-cv9uv
      @Luke.-cv9uv 5 дней назад +3

      @@iraniansuperhacker4382 CMake is not fun

  • @ImmiXIncredible
    @ImmiXIncredible 15 дней назад +40

    Finally you got zig-pilled :D One nitpick though: in zig defer operates on block scope, not function scope! Go's defer is function scope. Little, but important difference

    • @TheSulross
      @TheSulross 10 дней назад +4

      still not ready to embrace Zig myself - going to sit tight and wait for it's successor language Zag

    • @immige9216
      @immige9216 10 дней назад +5

      @TheSulross better wait for zog then, it fixes all the stuff zag got wrong

    • @TheSulross
      @TheSulross 10 дней назад +1

      @@immige9216 I confess that my real fantasy for Zag is to be a subset language of Zig that can be a Turbo Pascal like programming IDE that can run directly on 8bit and 16bit retro computers - or modern retro themed computers like the Agon Lite or the Commander X16. To do retro games development, of course. But where would be the fun in that if it didn't run directly on the target computer. 🙂

    • @JoseColonTV
      @JoseColonTV 8 дней назад +3

      He said "defer macro". He has C Stockholm Syndrome. lol

  • @CoolestPossibleName
    @CoolestPossibleName 15 дней назад +124

    My takeaway: Learn everything!

    • @CyberDork34
      @CyberDork34 15 дней назад +9

      Except C++ apparently, despite being more relevant and more widely used than either Rust or Zig

    • @Darkyx94
      @Darkyx94 15 дней назад +12

      Rule 1 of low level programming, we don't talk about C++,
      Rule 2 of low level programming, if we're trying to find example, pretend everything was written in C

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

      ​@@CyberDork34Because learning C++ means becoming a C++ programmer

    • @189Blake
      @189Blake 14 дней назад

      ​@@CyberDork34learning c++ would take the same time than the other 3 combined 😅

  • @Elesario
    @Elesario 15 дней назад +17

    After reading some of the comments my thought is "since when did programming languages become religions?"

    • @andrewdunbar828
      @andrewdunbar828 15 дней назад +5

      Several decades ago.

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

      Since their inception

    • @user-vj9hb3gy6d
      @user-vj9hb3gy6d 7 дней назад +2

      Rust is king! Repent and learn Rust to experience heaven on Earth! Zig is for sinners.

    • @Rudxain
      @Rudxain 12 часов назад

      If you've read "PHP: a fractal of bad design", you'll notice some obvious parallelisms between the PHP community and any cult/sect/religion. This also reminds me of the joke "Cult of Vim VS Church of Emacs"

  • @AkitooMusic
    @AkitooMusic 15 дней назад +60

    Zig is nice.

  • @itr00ow93
    @itr00ow93 15 дней назад +772

    Zig is for puppygirls, rust for catboys

    • @zokalyx
      @zokalyx 15 дней назад +108

      weird take but ok

    • @vinylSummer
      @vinylSummer 15 дней назад +153

      Greatest take of the century

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

      @@zokalyx arf arf

    • @howisshegameing
      @howisshegameing 15 дней назад +84

      based take actually

    • @InternetExplorer687
      @InternetExplorer687 15 дней назад +59

      most reasonable take i have heard this month

  • @m4rt_
    @m4rt_ 15 дней назад +10

    technically, defer runs at the end of the current scope, not function scope. so if you have something like this:
    fn main() {
    {
    defer print("b");
    print("a");
    }
    print("c");
    }
    you get this:
    a
    b
    c
    if it was at the end if the function it would be this:
    a
    c
    b
    if it ran at the end of the function scope rather than watever nested scope it's in, it would try to free a pointer that is out of scope, which doesn't work.

  • @nathanfranck5822
    @nathanfranck5822 15 дней назад +30

    Zig makes 1000% more sense for game dev IMO ... Dont want to be worrying about Arc when I'm just trying to do stuff. Zig's "reflection" is also amazing for game dev stuff like network\io serialization, GUI etc

    • @Leonhart_93
      @Leonhart_93 15 дней назад +10

      Yes, for that you need something with real control, instead of giving you bits and pieces always wrapped in some insanely complicated proprietary memory management system like Rust.

    • @andrewdunbar828
      @andrewdunbar828 15 дней назад +7

      Have a look at Odin. I like Zig and Odin but Odin might be even more game friendly.

    • @nathanfranck5822
      @nathanfranck5822 15 дней назад +7

      @@andrewdunbar828 Yeah, the builtin Quat, Vector and Matrix types in Odin definitely helps with ergonomics. Also the context object to pack allocators and debugging tools into. I'm sticking with zig for now, and having a good time with the killer zig features so far, though the ergonomics aren't as good as Odin

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

      Does Zig have OOP?

    • @nathanfranck5822
      @nathanfranck5822 15 дней назад +5

      @@heavymetalmixer91 You can pack data into structs and give them methods --- the best parts of OOP :)
      If you want interfaces and inheritance, it's not a first-class feature, you'd have to use anytypes and make some (arguably cool) comptime code to build up those concepts again, you'd get worse tooling and the community isn't generally impressed with it

  • @hacking4arabs
    @hacking4arabs 15 дней назад +135

    At first, I was suspicious of Zig, thinking it was just another pointless endeavor. However, after giving it a try, I'm now addicted to it. I've been able to accomplish incredible things that I couldn't achieve with other languages

    • @FlanPoirot
      @FlanPoirot 15 дней назад +22

      I enjoy Zig, Rust and Odin. they're give u different opinions and perspectives on the low level coding niche :)
      I like them for different reasons and I personally wish all 3 get popular and embraced by the broader community

    • @echoptic775
      @echoptic775 15 дней назад +45

      What did you accomplish that you couldn't do with other languages?

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

      You should try frenti 😉

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

      @@FlanPoirot With you on this!

    • @Adiee5Priv
      @Adiee5Priv 15 дней назад +1

      Endeavour os?

  • @maxturgeon89
    @maxturgeon89 15 дней назад +17

    Pros and cons of C: you can do what the hell you want

    • @wiktorwektor123
      @wiktorwektor123 6 дней назад +4

      Pretty much. Zig is not much different in that regard, but I still prefer to use Zig instead of C.

    • @nikkehtine
      @nikkehtine 2 дня назад +2

      C:
      pros: it does exactly what you tell it to do
      cons: it does exactly what you tell it to do

  • @user-fi6qx8bw6k
    @user-fi6qx8bw6k 15 дней назад +24

    as a beginner to programming, zig is my favourite out of all the languages i tried, i feel like i can read the standard library code and have an understanding of what its doing, unlike other low level languages where i cant comprehend anything others wrote , but the thing is , it feels like zig is dependant on C , you cant really do anything without importing a C library atleast from my prospective, also it feels like the community around it assumes everyone is coming from using C

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

      it seems c and c++ are what everybody learns on i’m in prog foundations and it’s c++ at my community college

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

      Depends on what you're doing. On a language-level, Zig is absolutely NOT dependent on C. However, Zig is a young language, it lacks libraries. So you have to either roll stuff yourself or rely on existing C libraries if you want to do stuff not available in std

  • @BrainySmurf77
    @BrainySmurf77 15 дней назад +22

    Nice video! Some good pros for Zig, and you didn't even get to its build system, which is arguably even more impressive in concept than the language itself.

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

      As a c/c++ enjoyer, zig is the only one I tried out of the "hot new" languages. so far, I am loving it.

  • @angeloceccato
    @angeloceccato 15 дней назад +17

    In May, there is "the software you can love" in Milan. They'll speak about zig and system programming! I already took the ticket!

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

    Thanks for the left!right idea for errors. Really helped me be able to read Zig better!

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

    Great video, I was just about to start my zig journey when I came across Odin. It's my first foray into low level/manual memory management and it's been really fun so far. I'd love to hear your thoughts on Odin as well.

  • @phusicus_404
    @phusicus_404 15 дней назад +13

    C++ is the best

  • @aniketbisht2823
    @aniketbisht2823 15 дней назад +24

    As a C++ dev, Rust sucks but Zig comes close to what modern C++ offers you without any bullshit.

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

      In what way?

    • @dwight4k
      @dwight4k 15 дней назад +1

      @@heavymetalmixer91 I would like to know as well.

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

      Modern C++ is good...if you can close your eyes to the ugly ugly BS and drama and bikeshedding over implementations. FFS unordered_map and regex are still broken and will never be fixed. Runtime exceptions are the cause of a holy war that Google wages against the standards committee. 3rd party packaging and the CMake build system being a complete mess (second only to Python's mess). Tons of legacy footguns that the standards committee refuses to deprecate or atleast warn against using like vector. Networking...LOL.
      Despite all of that...modern C++ niceties like ranges and constexpr/consteval are genuinely cool to have in a programming language.

    • @aniketbisht2823
      @aniketbisht2823 15 дней назад +1

      @@heavymetalmixer91 C++ and Zig both have excellent compile-time computation capabilities : proc macros in Rust are a language of their own whereas in C++ you write almost the same code as you would for "runtime".
      C++ templates combined with constexpr make for a powerful metaprogramming system. The only thing that is lacking is a Reflection system (the proposal is on its way for standardization in C++26). Rust's macro system is tedious and an expert-only feature. For anything sophisticated, you have to reach out to them. For example: "println!" in Rust is a macro while in C++ std::print (which is more flexible) is just another function template.
      Rust also includes many runtime checks which you cannot get rid of in release builds, unlike the "NDEBUG" macro in C/C++.
      Rust is an awesome language for "application" developers who won't be writing any "low-level" code themselves and instead would use libraries for the same (which are most developers). But it is very tedious for library authors who might find the language limiting at times.

    • @aniketbisht2823
      @aniketbisht2823 15 дней назад +1

      @@heavymetalmixer91 C++ and Zig both have excellent compile-time computation capabilities : proc macros in Rust are a language of their own whereas in C++ you write almost the same code as you would for "runtime".
      C++ templates combined with constexpr make for a powerful metaprogramming system. The only thing that is lacking is a Reflection system (the proposal is on its way for standardization in C++26). Rust's macro system is tedious and an expert-only feature. For anything sophisticated, you have to reach out to them. For example: "println!" in Rust is a macro while in C++ std::print (which is more flexible) is just another function template.
      Rust also includes many runtime checks which you cannot get rid of in release builds, unlike the "NDEBUG" macro in C/C++.
      Rust is an awesome language for "application" developers who won't be writing any "low-level" code themselves and instead would use libraries for the same (which are most developers). But it is very tedious for library authors who might find the language tedious and limiting at times.

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

    Again with the fire videos!

  • @Vifnis
    @Vifnis 14 дней назад +4

    "you should learn all the things"
    You know I'm not gonna do that, Ed.... my brain isn't big enough yet

  • @PouriyaJamshidi
    @PouriyaJamshidi 15 дней назад +4

    Nim is also a system's programming language with optional GC

  • @minirop
    @minirop 15 дней назад +3

    defer not only "places" the code at the end of the function, but at all exit points (if there is an early return for instance) like a destructor in C++. (and the futur defer statement in C hopefully)

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

    I really love your cybersecurity stuff, it's the future, dude

  • @afridi501
    @afridi501 15 дней назад +17

    Lol I want to know about c++

  • @DiThi
    @DiThi 15 дней назад +3

    I hope you take a look at nim some day. Many of the zig features you've mentioned are also in nim, and it has many more that I would miss in zig. It's more high level than zig, but at the same time very low level when you need it to be.

    • @mitchelvalentino1569
      @mitchelvalentino1569 15 дней назад +4

      Nim’s flexibility is great. I enjoy it more than I ever expected.

    • @adriancruz2822
      @adriancruz2822 15 дней назад +1

      I did not enjoy Nim.

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

      I'd put Odin somewhere between Zig and Nim. Nim felt like it has less momentum and I didn't look at it as deeply as the others because of that.

  • @darkfllame
    @darkfllame 15 дней назад +29

    it really depends on what domains you want to work on:
    embedded systems: zig
    games: zig
    webdev: zig
    os: zig
    c: zig
    networking: zig
    automation: zig

    • @mgord9518
      @mgord9518 14 дней назад +8

      Also:
      Build system: zig
      C++ compiler: zig
      JS runtime: zig
      Just use the right tool for the right job

    • @RiwenX
      @RiwenX 14 дней назад +1

      Embedded zig? I mean, have you been doing any embedded stuff? After years, Rust has finally reached the point where it's usable for embedded (well, for MCUs whose vendor supports it officially, ot there is good community support). I simply cannot see Zig being a productive language for embedded for years to come; that is, if vendors/community pick it up. Which is doubtful at best.

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

      Nice 😂

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

      @@mgord9518 the right zig for the right job 😁

    • @31redorange08
      @31redorange08 14 дней назад

      You put zig everywhere.

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

    Zig is an interesting option I really need to try out at some point, I've seen some interviews with the creator they make some really good points.

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

    Nice overview of zig. I never bothered to look into it before.

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

    I'd love to see more zig content, maybe a video comparing zig to cmake or premake for building large c(++) projects

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

    As complete beginner in low level programming after high level on java and js it was really nice to program in zig, because its compiler says where I made a misstake, in C I just got error code and that's all. Also modern syntax feels refreshing and enjoyable.

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

    Hello and greetings from a fellow low level programmer. How are you doing? I have spent close to a decade on assembly language programming of proprietary DSPs either directly or by way of analyzing cross-compiled disassembly. I really appreciate your efforts in educating the general public about low level coding. As we know it, it seems scary and may be it is to some extent, but its amazing with lots of scope for creativity.

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

    I really like the concept of comptime in zig. It seems really powerful

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

    I think the most uniquely-zig thing is payload capture. There are also, of course, comptime/defer/undefined/slices, but the truly innovative payload-capture invention deserves the chef's kiss.

  • @size_t
    @size_t 15 дней назад +3

    I have to think about the video "Interview with Senior Rust Developer in 2023" from "Programmers are also human", where he said "They don't like 'unsafe' in my code, so just stuff it into macros"

  • @demarcorr
    @demarcorr 15 дней назад +2

    im dipping into zig after 15ish years of c# and java. its definitely a weird switch but im eager to expand my skillset into systems level prog, even if i dont do it professionally

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

      Noob here , can you make computer app with zig ?

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

      @@padmabharali1306 whats a zig?

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

    My favourite feature is comptime. You can run piece of code at compile time, and with this you can generate more complicated arrays of data.

  • @michelromero7671
    @michelromero7671 15 дней назад +3

    Why not C++? I'm just curious, is it actually that problematic like the "blow the entire leg off" meme?

    • @arson5304
      @arson5304 15 дней назад +2

      the language is just really hard to work with, there are just so many decades of bad design decisions stacked on top of each other that the language has become so bloated. they're trying to fix all of it now, but it's too little too late: c++20 concepts, c++20 views, c++23 expected, and so on.

    • @michelromero7671
      @michelromero7671 15 дней назад +1

      @@arson5304 this you say in the context of system's programming or in general?

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

      @@michelromero7671 in general, but that also includes systems programming

  • @Alendrik
    @Alendrik 15 дней назад +4

    quick mention to nim, optional gc, small binaries, and great interop with c code. great to look at, but struggles with a smaller community and worse documentation.

    • @priyanshu3331
      @priyanshu3331 11 дней назад

      Well, there is also D language, it has a great interop with c and c++. Like Go, it's compiled. It also has an optional GC. The syntax is C like, has very good performance. Honestly I would say it's an extremely underrated language.

  • @MeriaDuck
    @MeriaDuck 15 дней назад +1

    As a Java programmer I'm mot a fan of forced exception handling. I'd rather have the choice to not do it, or not do it right then and there. Java has evolved and the standard api is also moving away from checked exceptions in lots of cases.
    Having it in the signature of the function like zig has looks quite neat. Will surely look into it.

  • @Leonhart_93
    @Leonhart_93 15 дней назад +71

    Zig's purpose is not a thing because "Rust is too hard", since it sounds like you are uplifting Rust to a new high. Rust is too restrictive and inherently doesn't trust the developer to write good code, which sounds more like the reason why Zig is an alternative.
    Zig's purpose is to be a modern C, that's it. Complete control over memory with more easily usable features like error handling and perfect inter-operability with C.
    And also, Zig's standard library is insanely clear and accessible. You get it out of the box in plain Zig code and it can be one hell of a tutorial in the advanced Zig features if you study the implementation of everything.

    • @nathanfranck5822
      @nathanfranck5822 15 дней назад +6

      Zig makes "memory soundness" another problem to solve eventually instead of a requirement for getting your code to run initially. Which is good if you are trying things out, and don't know exactly what you have set out to build. I can build a giant system that leaks like crazy and then solve the leak once I'm happy with the behaviour and design later.

    • @Leonhart_93
      @Leonhart_93 15 дней назад +14

      @@nathanfranck5822 Maybe you can make that argument for C, but Zig handles a lot of that with the "defer" statements, custom allocators and error handling.
      And even with that argument, hardcore engineers with still pick C over everything, because they like power and control, and are not afraid of using memory. But they may be somehow inclined towards Zig since it allows doing all of that.

    • @angeldude101
      @angeldude101 15 дней назад +23

      "Rust ... inherently doesn't trust the developer to write good code."
      Considering I don't trust myself to write good code, and barely trust others to write good code, Rust seems pretty perfect for me.

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

      why is it too restrictive, i've yet to be held back by chains from the language

    • @nathanfranck5822
      @nathanfranck5822 15 дней назад +4

      @@arson5304 Yeah Rust isn't bad if you just clone() everywhere, but then it runs significantly slower than JavaScript or Go for the same algorithm. Doing the easiest thing in Zig generally results in really fast single threaded code (talking small CLI apps with some hash maps, lists, iterations, from experience)

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

    One of the few sublime text users that are left, Respect!

  • @VaughanMcAlley
    @VaughanMcAlley 15 дней назад +12

    The defer keyword is a cool idea- easy to use and easy to implement if scoping is already in place.

    • @m0llux
      @m0llux 15 дней назад +4

      "stole" that from Go.
      Can be a double edged sword tho since it can make control flow hard to follow, similarly to GOTO statements.

    • @Sevenhens
      @Sevenhens 15 дней назад +4

      @@m0llux "Stole" what? RAII has been around since the 80s with C++ and Ada. Those defer statements are essentially destructors in practice.

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

      @@m0llux in the video is not mentioned, but defer is scoped by a block, not by a function

    • @udasai
      @udasai 15 дней назад +1

      Scoped deallocation could have been done more cleanly by just throwing a "local" or "auto" keyword in front of the allocation. In fact, almost all the features of these new languages like Rust could be added cleanly to existing languages, without inventing new languages. Well, cleanly added to any language but C, which is a hot mess.

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

      @@udasai that idea was toyed around syntactically, it provides problems if you don't have destructor as a concept, and zig does not have it. The language have no context around those semantics.
      At the end defer is the method we got, and there are still posibilities but unlikely we get in zig the autoclean function.
      Also having a keyword doing it requires knowing which resources are being allocated, while here we talk about heap, defer is used for closing files and a number of other resource management op.
      And for the adding to other languages, yes, but the fact you cannot add it yourself because you want it, have to go tru a bunch of process to get it in existing language, remember that is hard to implement something in existing languages without support.
      It's not because it exists that is cool (it's not even a novelty) is the fact that it works nicely for the language objective

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

    Not a big comment guy, but I just want to say, your presentation has got so good, some of your early videos sounded fascinating but were a bit jargon heavy. Now, frankly, I watch pretty much every LLL video that comes up in my feed even if I’m never gonna use them or maybe even never gonna understand 👏 👏 👏

  • @jvillasante
    @jvillasante 14 дней назад +24

    I mean, when talking about system languages saying that we are not going to talk about C++ in here is like saying "let's talk about GPUs, but not you NVIDIA" :)

    • @zackyezek3760
      @zackyezek3760 13 дней назад +7

      Yeah, let’s not talk about c++ when it’s BEEN the “higher level C replacement” for about 40 years now & is the only language anywhere close to C in terms of widespread usage for systems (or even just compiled) code.
      Zig seems to be an attempt to merely replace C rather than Rust, which is clearly going after C++ too. Being a new, de facto rewrite of C rather than trying to replace both wholesale probably is the better design & strategy. Especially because linker ABI compatibility with C lets you become a transparent drop in replacement, ironically the SAME THING K&R C did to FORTRAN by making it trivially simple to link Fortran libs into C programs.

    • @TheSulross
      @TheSulross 10 дней назад +2

      yeah, the waves of weird anti C++ bias just tsunami rolled me

    • @uzoochogu
      @uzoochogu 10 дней назад +1

      @@TheSulross Yes, it is almost like a trendy thing to just hate C++. Very cliche. Yet all their fancy tools are built with C++.

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

      When C++ devs die they don't leave a corpse, it goes on a puff of black smoke straight to hell

  • @BachenBenno99
    @BachenBenno99 14 дней назад +8

    Hold on, why are we not talking about C++? Did I miss something?

    • @31redorange08
      @31redorange08 14 дней назад +3

      Yes. Rule #1: We don't talk about C++.

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

      @@31redorange08 ok, but why?

  • @1kvolt1978
    @1kvolt1978 14 дней назад

    Chaotic Evil? Sounds good to me! 🤗

  • @Rudxain
    @Rudxain 12 часов назад

    Something I like about 5:35 , is that it's like a mix (a "math product", if you will) of Rust's `unwrap_or_else` and `match`.
    7:40 is interesting! It looks like an implementation of an iterator in C, but behaves like a `for` in Go/Rust. The `next` method is called explicitly, instead of being sugared. `while` seems to be capable of using an `Option`/`Maybe` as a condition where `Some`=`true` and `None`=`false`. The (unwrapped) value of the `Option` is concisely bound to the variable `chunk` without the need for an awkward "assignment expression" (see Python "walrus" operator)

  • @guilherme5094
    @guilherme5094 14 дней назад +1

    I'm totally in love with Nim, but Zig looks great.

  • @kenneth_romero
    @kenneth_romero 15 дней назад +1

    can you change code theme when presenting? that red text is hard to see on the background color. at least for me since i'm a bit colorblind

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

    Another important thing to remember about Zig is that there are a lot of applications where completely memory-safe code simply isn't as important, and other concerns come first. An example I'm very familiar with is software video encoders; nearly all are written in C because the #1 concern is performance. Zig would make an ecosystem around developing one of these much more accessible, and give devs the tools they need to catch problems earlier & write code more quickly.

  • @mar.m.5236
    @mar.m.5236 14 дней назад

    Not doing dev anymore but coming from a VHDL, firmware, bootloader, kernel background and after just playing with the zigling "tutorial": this is the language I would have like to have during my low-level dev phase. It seems to make all the dangerous things quite visible and therefor controllable... I hope to see this language used more in the future (besides nim.... ;-) )

  • @obkf-too
    @obkf-too 14 дней назад

    I would also recommend Odin programming language, it is similar to zig yet feels different, people like using it for GUI applications, Game development,...
    The creator GingerBill is a friend of Andrew Kelly the zig creator, they influenced each other to make these languages what they are now.

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

    I really like the idea of Zig, but coming from a JS and Rust background, I found it really hard to work with. Maybe it's because I'm running on Windows, but it seemed like a lot of the examples I found online required a lot of workarounds (or were simply out of date) and a lot of the docs were missing critical info to get over those roadbumps.

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

    CompTime is also a pretty sick feature. You could have a function that creates an array with the 1 million first prime numbers and have it be computed at compile time instead of runtime

  • @abbatrombonelol
    @abbatrombonelol 15 дней назад +14

    Not gonna mention holy C or C+ :p

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

      Why would he

    • @shangsty
      @shangsty 15 дней назад +3

      he must not be divine enough

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

      What is c+

    • @abbatrombonelol
      @abbatrombonelol 15 дней назад +3

      @silloo2072 It is a shell and compilted language used by temple OS, read the wiki its an insane story.
      Short version is "God spoke to him" and he made a Christian OS where each peocess comes off adam, C+ is called holy C as it looks like a cross, etc.

    • @silloo2072
      @silloo2072 15 дней назад +1

      @@abbatrombonelol thanks

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

    Been doing this a while - the only thing I'd automatically start in C is not a project, but a class of actual computer science students - for two reasons: 1) to later appreciate every other language and what they bring to the table; and 2) to have the beginnings of an understanding of how the machine works and a basis to read kernel code.

  • @HaydenGray
    @HaydenGray 15 дней назад +13

    As much as I wanted to like Zig and use it as a C replacement I just couldn't. I found that it added "too much" to the language and had overly verbose syntax (I would rather just use Rust at that point). When I compared it to Odin, I found that Odin was just simpler overall while still giving the benefits that Zig has (no hidden allocations/manual allocators, range-based iteration, sized arrays, better error handling, etc). Zig definitely has a lot more momentum behind it now with the release of tools like Bun but I would really like the ecosystem with the better tooling (especially the LSP), MUCH simpler syntax, builtin linear algebra, and a style that feels like what C++ *should* have been to take off

    • @ovi1326
      @ovi1326 14 дней назад +1

      Actually there are some great podcast episodes between Andrew Kelley and G
      gingerBill where they both explain their rationales for doing things the way they do them.
      I like zig way more for comptime stuff, more explicitness in both the stdlib and the lang itself and most importantly @cImport

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

      Can you elaborate on the simpler syntax? I found it difficult because I am a beginner who never had to consider things like memory and static types before (lol), but I personally didn't find the syntax difficult.

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

      @@stretch8390 I wouldn't call it "difficult" but more just... odd (i.e. the "for" loop syntax). There wasn't a single thing that really killed it for me, it was more just death by a thousand paper cuts that made it kind of unpleasant to write (having to do error handling for writing to stdout without using the debug print for example). I'm sure things will change as the language evolves but having to do stuff like: ` try std.io.getStdErr().writer().print("Hello {s}!
      ", .{"foo"});` (which also requires the function to be marked with "!" which is quite a leaky abstraction) vs `fmt.eprintfln("Hello {}!", "foo")` to log to stderr without using the debug functions is just unpleasant to me. At that point, I think we cross the "simple language" barrier and I would rather just use Rust at that point

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

    Hey, I'm thinking about learning C to build my own data structures and algorithms, plus get into some networking (like TCP and chat apps), and maybe touch on graphics with OpenGL or something like that. I want to grasp some fundamental skills that you don't usually see in JavaScript or PHP projects. Also, I’m curious about how rendering works and want to get more into algorithms. Do you think Zig might be a better choice for diving into this stuff instead of C?

    • @atijohn8135
      @atijohn8135 14 дней назад +2

      General algorithms are more or less the same in any language. Outside of Zig's more readable memory deallocation, they'll be the same in C and Zig (although do note that C doesn't have any data structures in its library, so you need to write your stacks, queues, heaps, linked lists, trees and graphs all by yourself before writing an algorithm that requires them, while Zig has a bunch of standard containers for you to use. But since you're building your own data structures anyway, that shouldn't be an issue for you)
      Non-generic data structures are very simple to implement in C, but implementing generic data structures requires you to perform macro hacks or use the ugly and impossible to optimize void pointers. Zig is way better in that regard, since it has native support for generics.
      OpenGL programming is the same in any language. Zig might once again help you with memory deallocation, but in OpenGL you typically do not want to allocate memory while rendering, only at the start of your program, and then deallocate it at the end, at which point you don't even need to do that, since it'll get freed up automatically once your program exits.
      Networking itself is more or less the same in both languages; however C doesn't have anything network-related in its standard library, meaning that you'll also need to learn one of C's thousands of build systems, which can be troublesome; in contrast Zig not only has networking support in its standard library, but it also has a significantly better build system than any of the build systems available for C.

  • @nezby3945
    @nezby3945 11 дней назад

    Hi! I have to choose an OOP language for my uni class I can choose between C++, C# and Java which one would you guys recommend and why? Thanks!

  • @TheyCallMeHacked
    @TheyCallMeHacked 15 дней назад +3

    I think Zig also fills another role : it's a better alternative to unsafe Rust. If I have a Rust function I'm about to mark as entirely unsafe, I think twice and rewrite it in Zig. I think unsafe Rust has more footguns than Zig does, and has a much clunkier syntax.

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

      That true, "unsafe" Zig (which is whole language) is safer than unsafe Rust.

  • @awesomedavid2012
    @awesomedavid2012 15 дней назад +9

    I hate to be one of these people, but you should check out Odin if you haven't. It seemingly fits in a similar place as Zig, but with a completely different mindset. I like that in Odin, you have access to allocators and calling conventions, but they aren't forced on you; you can just call new and use the default allocator.

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

    Ummmm 1:40 no D mention? The better Go? Where you can turn off the garbage collector and with better generics?

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

    nice explanation

  • @InvaderTakko
    @InvaderTakko 15 дней назад +12

    Would be cool if you checked out Odin as well. Its quite similar to Zig but in my opinion more ergonomic/readable and at least on the language side more mature. Doesnt have as much traction and a smaller community tho.

    • @andrewdunbar828
      @andrewdunbar828 15 дней назад +5

      Odin is a fair bit more C-like than Zig even though it is also fairly Pascal-like.

    • @eduardabramovich1216
      @eduardabramovich1216 14 дней назад +1

      @@andrewdunbar828 Yes sir, Zig is simple, but Odin is more simple.

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

    I wonder if you have an opinion about D(lang). I do not understand why it never took off.

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

    The zig compiler is a god-send for generating statically-linked binaries and cross-compilation.

  • @Ash-qp2yw
    @Ash-qp2yw 15 дней назад

    Hey LLL - what kinds of small projects work for someone who wants to get started with specifically systems dev?

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

      Reimplement a commandline tool or implement one you always wished existed.

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

    5:17 the main thing about this isn't even just that, but also that it runs at every possible end of the scope/function. If you have multiple return statements (because you handle multiple possible errors from different functions) then the defer will return at every possible return so you will only have to write the cleanup in one place and it will always run, you wont miss it in some cases.
    The way to do this is in C is to write a goto to the end of the function that does the cleanup and checks that the values aren't NULL. This defer is basically that goto but cleaner and directly after the allocation as you say so you can immediately see if its done or not.
    It's basically like c++ RAII, except you dont have to write a class with a destructor to do it for every case (or write a hacky macro to do it). Zig also has errdefer to do it only when an error has happened for example if you want to cleanup everything that has been done when an error has occured but if it succeeds you want to return that data instead in its complete form.

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

    I haven't tried Zig before, but I have tried Rust and wrangling with the borrow checker is SO FRUSTRATING!!! Zig, which doesn't have a borrow checker, seems like it lowers the barrier to entry for a modern C alternative, making it easy to write fast but safe code.

  • @SuperMixedd
    @SuperMixedd 15 дней назад +1

    I am reasonably good with C but not with C++ and I was wondering if I should rather a) hone my C++ or b) learn Rust

  • @nezu_cc
    @nezu_cc 15 дней назад +8

    so basically c++ raii but with extra steps and some syntactic sugar. c++ without the `new` and `virtual` and `throw` keywords is basically C but better, idk why people hate on it so much as a systems language.

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

      Its just a skill issue, its easy for a bad dev to do lots of bad stuff in C++ when running at system level

    • @MGMan37
      @MGMan37 14 дней назад +4

      C++ is the definition of extra steps and syntactic sugar.

    • @pierreollivier1
      @pierreollivier1 10 дней назад

      Because C++ sucks, it's not ergonomic, it's not fun, it's very bloated and hard to read. Zig achieves 90% of the power of C++ while remaining very readable, understandable, and that's why it's worth talking about. I love C++, but this language, is just not a good language compared to what exist today, it's hard to collaborate with people, it's hard to use some else's code because you have to audit it all to make sure it works like you want it to work. It's hard to debug with templates, the error messages aren't good, the compiler is quite slow, but the real problem is the amount of features available in the language, and how you can basically do everything with everything. I know people don't like to hear about it, but at the end of the day a programming language is just a tool, not a church to go on a crusade for, everyone with an ounce of objectivity can see that C++ is just not a good language this days, when things like Rust, Zig, Odin, Jai, exist.

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

    I adore it and I see it as definite language for new “C” projects. And definitely great no awesome for embedded. And C developers will build so much faster in Zig than Rust.

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

    The best idea of zig for me is the build system, unlike CMake nor Meson you don't to learn a new 'language' for it, you can apply complex control flows in your 'build.zig'.
    To me, it feels like Terry David's HolyC, it's next-level design.

  • @tenv
    @tenv 11 дней назад +1

    It's one thing for Zig to improve and modernize C whilst still keeping the language small and lean, that would make it a great lang on its own. But then comptime... honestly its the best approach to generics I've seen, and it happened by accident! Best lang 10/10

  • @fourbytes1
    @fourbytes1 15 дней назад +8

    Is Zig suitable as a first programming language? Is it worth investing your time in it?

    • @not_kode_kun
      @not_kode_kun 15 дней назад +3

      if you want to get into low-level systems programming, absolutely. learning zig will also make the transition to learning C much easier.

    • @nathanfranck5822
      @nathanfranck5822 15 дней назад +5

      Zig is fun and the community is cool. Worst thing as a beginner's language is just the basic difficulty typing .what = .{ .thing = .etc } a bunch
      Kinda the antithesis to python that way...

    • @s0laret012
      @s0laret012 15 дней назад +5

      It is, but i wouldn't learn it as a first language.
      Don't get me wrong, Zig is my *favourite* language, but i think as a first language you should learn something stable with a good foundation (I started with C++, and would always not recommend it, but instead i'd recommend C.)

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

      @@not_kode_kun one more thing to consider is the available resources to learn the language. C/C++ being older language seems to have an advantage over zig on this matter. So, maybe learning C/C++ to get familiar with low level stuff and switching would be much easier, no?

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

      @@s0laret012 Thanks for the recommendation!
      I've already tried Rust and I found it comparable to climbing Mt. Everest one way. 😀

  • @MaxCupertino-gf5ht
    @MaxCupertino-gf5ht 14 дней назад

    I am a programmer and i love both of them, they both are fast can use for system programming.
    Zig ❤️ rust ❤️

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

    What are your thoughts on the Nim language?

  • @notapplicable7292
    @notapplicable7292 14 дней назад +3

    Zig is enjoyable, rust is not. Then again, C++ is very enjoyable for me so maybe im just broken.

    • @smoked-old-fashioned-hh7lo
      @smoked-old-fashioned-hh7lo 7 дней назад

      i don't think rust is inherently not enjoyable. there is quite a large crowd that enjoys using it. it's just that it's so different that a lot of people feel intimidated and also humbled. zig is more familiar and people associate familiarity with good.

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

    I like Zig a lot. While trying to understand computers at the low level, it's been more fun exploring it with Zig. Rust has too many abstractions, assembly has too little abstractions, C is close but has a lot of warts. Zig feels just right.

  • @skychip7784
    @skychip7784 15 дней назад +1

    thanks for the sober security vid

  • @jonathanh.7907
    @jonathanh.7907 15 дней назад +9

    ZIG ONTOP!

    • @xaxfixho
      @xaxfixho 15 дней назад +1

      U power bottle 🍼 🤪 om

  • @samuelbarber5097
    @samuelbarber5097 15 дней назад +1

    5:27 I feel like this wasn't as accurate as it could be, defer guarantees that a line of code or code block will run on exiting the function, whether the function errors or returns.
    (correction) defer runs at the end of a scope, so if defer was made in an if statement it will run at the end of said code statement, even if an error occurs.

    • @andrewdunbar828
      @andrewdunbar828 15 дней назад +1

      No! Zig's defer happens at the end of the current scope/block. That's a difference with Go where it does happen at the end of the function.

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

      @@andrewdunbar828 yes, which makes him more wrong.

  • @nyx211
    @nyx211 15 дней назад +2

    Is it just me or does it seem like Zig's syntax is weird for no reason? At 6:24 he mentions how you can think of running the openFile() function as going left or right. When you go left, the success result is put into f, but when you go right you catch the error value. So then why is the return type std.fs.File.OpenError!std.fs.File. Why is the right on the left and the left on the right?

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

    Zig is simply a really great modern C alternative, and it also serves as a great toolchain for C itself. Now, I'm personally not a C or very low-level programmer, so I don't use it very much, but if I were, using Zig would make my life at least moderately bearable.
    I know people will hate me for making this comparison, but I'm doing it anyway. If Rust is a way to make writing C++ projects bearable, than that's exactly what Zig does for C.

  • @GoWithAndy-cp8tz
    @GoWithAndy-cp8tz 14 дней назад

    For Linux enthusiasts, C is often preferred over Rust due to its simplicity and speed. In C, one can directly use functions like dlopen() and dlsym() to dynamically import binary libraries and call existing functions without the need to recompile the code each time. In contrast, Rust requires compiling all libraries from source each time, which is necessary to satisfy its borrow checker requirements. This aspect can be frustrating for some users. Cheers!
    P.S> I pick Go despite I like Zig and Rust but I decided to learn them one by one.

  • @mrlithium69
    @mrlithium69 15 дней назад +15

    can you put zig in the title please ? not everyone can see the thumbnail

  • @conundrum2u
    @conundrum2u 10 дней назад

    I really do see the potential for Zig. I'm just learning it now, more for curiosity than professionally. defer is great, but the plumbing exists to defer immediately when reserving your memory, why not have it flow as one expression? get your pointer and have it automatically marked for collection or don't by omitting defer. maybe there's a plan for it somewhere in the language roadmap, but I've written enough boilerplate in my career that even 1 extra line that can be eliminated down to 1 extra keyword on a statement makes me a little irritated. Do something else like have it be implicitly deferred collection and a tail call reference return prevents the defer, or a different return like "refreturn" that marks it as collectible by the calling method. maybe that goes against the explicitness that Andrew Kelley is trying for.

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

    I got subbed to you due to your youtube shorts, where you jebait as a cute girl video then say "i don't care, here is how you do that in C...."
    that was hella funny, I definitely think you should keep making them occasionally
    its off the topic, just wanted to give feedback that its working

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

    I suppose zig is good if you need no garbage collector , if garbage collector is ok , then I really really like golang.
    Rust is also good if you don't need any C code , though it might be hard.
    I am thinking of doing this.
    Typescript / Python / Lua , Golang , Gleam (seems like rust would try it ) , ZIg , C , Rust.
    This depends from person to person but I am pretty happy with these language , I don't know but I love the fact that there are sooo many programming languages.

  • @user-ti2ju9of6h
    @user-ti2ju9of6h 14 дней назад

    I don't know if you have been asked about odinlang and your thoughts about it

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

    I really wish you would use title case

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

    Hi LLL, I was really tempted to enroll in your courses but I see you put the prices up recently and removed the monthly option so it kinda put me off sadly

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

    What about the Ada language?
    If you don't know it, try check it out! Maybe it has already been discussed...
    I think that Ada is a valid alternative when it comes to systems programming: it has both low-level and high-level features, a strong compiler and a strong runtime.
    I'm not saying that Ada is universally better than anything else (and that's never the goal of a good discussion), in my career it was and so I'm sharing my thoughts and would love to hear yours
    LLL keep doing this! Love your videos ❤

  • @holyknighthodrick5223
    @holyknighthodrick5223 15 дней назад +1

    I feel like you could just disable the GO garbage collector if you really needed, not sure why you would use zig instead of go