|
Yeah. Much like C, you don't have stuff like regex out of the box. But, nothing stopping you from using the PCRE C library or a Zig regex library. So, I'm sure it wouldn't appeal to everyone. For those of us to still love C but want something a bit newer (like a better type system)... it's sounding cool. It does bake in unit testing though, which while you can do in C... it's not really baked in.
Jeremy Falcon
|
|
|
|
|
The thing with C is it's universal, it runs on dang near any machine.
I started to learn Rust but got bogged down because it doesn't/wouldn't compile for embedded systems. (Without a lot of foul language involved)
If I do Desktop or Web stuff I use C# and associated tools.
A home without books is a body without soul. Marcus Tullius Cicero
PartsBin an Electronics Part Organizer - Release Version 1.4.0 (Many new features) JaxCoder.com
Latest Article: EventAggregator
|
|
|
|
|
Mike Hankey wrote: The thing with C is it's universal, it runs on dang near any machine. Currently, Zig uses LLVM to produce object code. The same as Rust and clang. Zig has its own linker though. There have been talks about replacing LLVM usage in Zig down the road, but suffice it to say, the very nature of LLVM executable is to also be universal. It actually takes it even one step further and allows you to easily cross-compile, which isn't so easy to do in C.
Keep in mind, it's a system language. Which is to say, like C, there's no runtime that runs along aside it with a garbage collector, etc. So, as long as there's a binary and instruction compatibility (which LLVM handles) then the universality of it will depend on the programmer making system calls, etc. And LLVM supports all the major formats: COFF, ELF, etc. and instruction sets.
Now, can I guarantee there's not some esoteric compatibility out that LLVM doesn't cover? Nope. I'm sure there a few chips it doesn't support. But that doesn't mean we shouldn't use a language. It'll cover 99.9% of the use cases. If you're the one out of a million that needs to support some chip nobody ever heard of, use C. But, if you want something a bit more modern, but without acting "rusty" like Rust there are options.
Mike Hankey wrote: I started to learn Rust but got bogged down because it doesn't/wouldn't compile for embedded systems. IMO Rust took a great concept and over complicated it, which I could look past because the complication also comes with benefits. But, combine that with being too opinionated and the ecosystem being littered with childish zealots... let's just say I deal with enough of that from JavaScript/TypeScript.
Mike Hankey wrote: If I do Desktop or Web stuff I use C# and associated tools. For me, it's Node for web dev and will be for the foreseeable future. Butttt... for lower level stuff me looky looky.
Jeremy Falcon
modified 3-Aug-24 18:52pm.
|
|
|
|
|
I may have to look at it then, had no idea it could link to ELF.
Jeremy Falcon wrote: And LLVM supports all the major formats: COFF, ELF, etc. and instruction sets.
Thanks for the heads up.
A home without books is a body without soul. Marcus Tullius Cicero
PartsBin an Electronics Part Organizer - Release Version 1.4.0 (Many new features) JaxCoder.com
Latest Article: EventAggregator
|
|
|
|
|
Any time man. And I get it; I'll never fully replace C in my heart. It's literally the backbone of the world we live in.
Jeremy Falcon
|
|
|
|
|
Turns out Visual Code has a ZIG language extension. How cool is that?
A home without books is a body without soul. Marcus Tullius Cicero
PartsBin an Electronics Part Organizer - Release Version 1.4.0 (Many new features) JaxCoder.com
Latest Article: EventAggregator
|
|
|
|
|
|
Right now, from an ecosystem standpoint, it's like Rust was back in 2015 before anyone really used it. So, while there are a few online resources like zig.guide (which is one version behind), it's nowhere near as extensive as Rust. And it's not even 1.0 yet. There's a few places online for some docs though and some YT videos.
Still, you can still do stuff like pointer arithmetic. Granted, it's going to make you earn it, by having to cast a pointer to an integer first, as it tries to discourage that... but you can if you need to.
One thing it does do that C doesn't is have a concept of optional pointers vs non-optional ones. The compiler will complain if you have a non-optional pointer with no value... I think. I'm still learning.
Jeremy Falcon
modified 3-Aug-24 20:16pm.
|
|
|
|
|
Jeremy Falcon wrote: It's literally the backbone of the world we live in. A quote I have seen (and used myself once too): "Do not forget that my compiler compiled your compiler."
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpful answers is nice, but saying thanks can be even nicer.
|
|
|
|
|
ou've hit the nail on the head with your assessment of Rust and C. Rust's rigidity, while aiming for safety, can often feel restrictive. C, while potent, demands discipline and is unforgiving of errors.
Zig seems to offer a compelling middle ground. Its C-like syntax and interoperability are huge pluses for those coming from a C background. The ability to fine-tune memory management without sacrificing safety is intriguing. And let's not forget the compile-time magic that can potentially supercharge development.
However, it's still a relatively new language. The ecosystem and tooling might not be as mature as Rust or C++. There could be potential pitfalls or limitations we haven't discovered yet.
I'd love to hear from others who have dived into Zig. Your experiences, both good and bad, would be invaluable.
Have you tried Zig?
What were your first impressions?
Did you encounter any significant challenges or limitations?
Let's share our thoughts and help the community grow
|
|
|
|
|
I haven't used it in a project yet. So far it's just been playing around and watching YT videos. I too, am worried about the ecosystem. Granted, every ecosystem is small when something is new. So, I doubt I'd use it for an enterprise application just yet, but for home projects I would.
Jeremy Falcon
|
|
|
|
|
i downloaded it. i'll check it out, but not right now.
hardware/software issues to work on.
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
jmaida wrote: i downloaded it. i'll check it out, but not right now. Cool man.
jmaida wrote: hardware/software issues to work on. Good times. Good times.
Jeremy Falcon
|
|
|
|
|
Ain't that the truth.
I am a old C programmer, as well, so I like what I am seeing.
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
|
noice? not cool?
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
|
I'm not a C programmer, so forgive my eventual stupid question: there is/was also a language called 'D' which claimed to enhance some of C flaws. I'm not a D programmer either. Anyone here with enough ZIG and D experience to compare both?
|
|
|
|
|
Nothing against D, but AFAIK (could be wrong) it's always had a garbage collector. I heard talks about them trying to make it optional, but not sure if that's happened yet. If I was gonna use a GC language, may as well use Go that's backed by Google ya know.
Jeremy Falcon
|
|
|
|
|
Ah, that's quite a huge difference!
|
|
|
|
|
As far as I know, Zig is a language that promotes the DOD (Data Oriented Design) style. Its creator, Andrew Kelley has posted a lot of material about DOD and the like.
There are several online resources about DOD, including videos by the author of Zig.
Also articles like: Data Oriented Design: A Way of Thinking - Hello C++[^]
Regards
modified 5-Aug-24 5:19am.
|
|
|
|
|
Cool, I'll have to check it out. Thanks.
Jeremy Falcon
|
|
|
|
|
|
|
So I should add something like 'take care, toilet in picture'?
|
|
|
|