kornel,
@kornel@mastodon.social avatar

It's surreal how slowly time moves in the world of C compilers.

Today there are still active projects that are hesitant to move past C89, and C99 is still the "new" standard.

The C99 standard has been released before the first public Mac OS X and Windows XP. It's older Itanium and the x86-64 instruction set. It predates iPod, Game Cube, first ever Xbox, and Nokia 3310.

Entire platforms lived and died in the meantime, while C programmers still can't be sure if they can rely on the new C99.

federicomena,
@federicomena@mstdn.mx avatar

@kornel Our technical debt is measured in centuries.

mjgardner,
@mjgardner@social.sdf.org avatar

@federicomena @NanoRaptor @kornel I feel this so hard, working on a >20-year “legacy” code base

cdamian,
@cdamian@rls.social avatar

@kornel
That's a good thing, right?
@skolima

skolima,
@skolima@hachyderm.io avatar

@cdamian @kornel It's quite like COBOL nowadays isn't it. If it works, it works, don't touch it.

cdamian,
@cdamian@rls.social avatar

@skolima
It's certainly better to having to update your whole build system and fix compatibility problems every few months with modern languages.

(Insert old man shouting at cloud gif)
@kornel

kornel,
@kornel@mastodon.social avatar

@cdamian @skolima There's a difference between stability and stagnation. The downside for C is that it's impossible to fix anything in the language, because it will take 20+ years to become the baseline. I suspect C++ mis-evolution has scared C users into don't change anything ever!.
Both C and C++ are outliers. It's possible to be stable without stagnation: Java and C# evolved without jumping the shark. PHP cleaned up a ton of language warts. Go can ship quickly without breaking things.

timthelion,
@timthelion@emacs.ch avatar

@kornel @cdamian @skolima Sure, but Java is objectively more verbose than in 2004. The language has become unreadable.

kornel,
@kornel@mastodon.social avatar

@timthelion I can’t take your “objectively”intensified outcry seriously.
Java has added terser forms for some previous noisy boilerplate. The old syntax still works. It’s never been a terse language, and it has been conservative in its evolution, so “unreadable” is a gross exaggeration, especially that readability is inherently very subjective and dependent on experience.

colinstu,
@colinstu@birdbutt.com avatar

@kornel any ideas as to how prevalent this issue is in the C++ world side of things?

Can’t speak to C but the first and last time I learned and touched/wrote anything C++ it had to’ve been version 98, MAYBE C++03 but that would’ve been brand new at the time.

I’m amazed by what I see folks do and write now with it. But how often do big existing projects and products really upgrade? I hope it’s plenty but I have a feeling it’s the opposite.

Doomed_Daniel,
@Doomed_Daniel@mastodon.gamedev.place avatar

@colinstu @kornel
In my experience, C++ users are much more eager to target new standards, sometimes up to the point where it gets annoying that code requires C++ standards that are so new that the default compiler in many commonly used Linux distros doesn't support them yet.

oblomov,
@oblomov@sociale.network avatar

@kornel I blame Microsoft for that. The last time I checked (which isn't even that long ago. 201x?) their C compiler still didn't have full C99 standard compliance.

Doomed_Daniel,
@Doomed_Daniel@mastodon.gamedev.place avatar

@oblomov @kornel
Nowadays they support C11 and C17 (the "required" parts of the standards, not the optional ones): https://devblogs.microsoft.com/cppblog/c11-and-c17-standard-support-arriving-in-msvc/

But as they apparently don't want to implement VLAs, they will never support C99 (they became optional in C11).

Anyway, Microsoft definitely is to blame for this, because only with VS2015 they started to aim towards C99 conformance at least in their standardlib, e.g. with a standards-conforming snprintf()

ohunt,
@ohunt@mastodon.social avatar

@kornel happily we have autotools to set defines to show which features we can use :D :D :D

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • PowerRangers
  • DreamBathrooms
  • ethstaker
  • magazineikmin
  • InstantRegret
  • modclub
  • Youngstown
  • everett
  • slotface
  • rosin
  • khanakhh
  • ngwrru68w68
  • kavyap
  • thenastyranch
  • anitta
  • Durango
  • cubers
  • normalnudes
  • vwfavf
  • mdbf
  • GTA5RPClips
  • tacticalgear
  • tester
  • Leos
  • osvaldo12
  • cisconetworking
  • provamag3
  • megavids
  • All magazines