Hacker News new | ask | show | jobs
by scythe 2548 days ago
Ultimately, though, this is the real tragedy of D. It started as a C clone, and continues to be named like it's a C clone, but it is no longer a C clone. It is a general-purpose memory-aware compiled programming language inspired by C++, but it is pretty different by now! People expecting a C clone miss what else it has to offer.

(Can it be a C replacement? Sure, but so can Rust/Swift/Go/etc)

2 comments

I don't believe it ever was a C clone. I remember it always presented as a C _successor_, like C++, but in a different direction.
Go (and some others, swift surely) cannot be used as a C replacement since they need a runtime.
Just like C does for calling into main(), doing floating point emulation if CPU not available, calling library initializers (common C extension), handling VLA allocations.

Just because it is tiny does not make it inexistent.

Then there is the whole POSIX, which is kind of runtime that wasn't made part of ISO C, but follows it everywhere.

It's not necessarily tiny but it's optional (besides main() ). Linux kernel, baremetal embedded does not use this.
Linux kernel surely used it during the time they had VLAs in, they are now mostly removed thanks to Google efforts reducing memory exploits on the Linux kernel.

One just links another implementation, just like printf() vs printk().

libc.so.6 is about 2MB.