Hacker News new | ask | show | jobs
by qalmakka 1457 days ago
The biggest issue with Zig is that IMHO it isn't "revolutionary" enough. It has been shown time and time again that in order to do the jump from niche to mainstream a language _needs_ to either have a huge corporate backer behind (look at Go or Swift) or it must truly be revolutionary (i.e. Rust and compile time memory safety).

Zig has neither, and the sad truth is most developers will not make the jump from C and C++ and throw decades of skills out of the window unless they really have a lot to gain. This is true for Rust: you get compile time guarantees that your programs are memory safe and have no data races. That is enough for most to conclude that Rust has a shot to replace C/C++. But Zig? Like Hare, V, .. it mostly boils down to syntactical sugar, and then you have not only to compete with the rest of the crop of "C replacement tools", but with C + a static analyzer too.

If you forget a defer, you will leak memory, and if you have to deal with Valgrind and the likes anyway you are better off sticking with C and static analysis tools - with the added bonus that it's vastly easier to find skilled developers.

I know, I'm personally a language nut and I love using new languages, but personal preferences are not a great factor when pushing for wider adoption, because most developers out there don't really care about that and would rather use a tool they already know about and they are confident with.

What might make Rust success will be the fact it saves people time and money, and that is demonstrably true. Project Managers will definitely listen more to that argument than to "but it's shiny and new".

3 comments

> Zig has neither, and the sad truth is most developers will not make the jump from C and C++ and throw decades of skills out of the window

But that's exactly Zig's killer feature. As a C or C++ developer you don't need to throw your decades of skills out of the window. Instead you can start coding productively in Zig in a weekend. And you don't need to throw away your C (or C++, or Objc) code either, you can just integrate it into your Zig project and it's exceptionally easy to do so.

If that isn't "revolutionary" compared to other, bigger languages which try too hard to be revolutionary but then go on to build out their own little island paradise separated from the rest of the world I don't know ;)

(also if you're looking for an actually revolutionary single feature in Zig, check out how elegantly Zig's comptime feature enables generics and reflection)

The entire point of Zig is that you don't throw that C knowledge out, you turn it into Zig knowledge in 30 minutes.

"If you forget a defer, you will leak memory"

There is a bit more to it than just plastering defer all over. If you are designing something in a system programming language like a data structure you must know how to achieve memory safety, and might even want other properties like liveness guarantees. It's not like Rust can do this for you automatically in all, but the more trivial cases. There is unsafe Rust, and it's strictly worst than Zig as a C replacement.

On the other hand for simple API-consuming applications Rust is needlessly complicated. You throw time and money out of the window with it.

Rust's sweet spot is replacing C++.