← Back to context

Comment by nicoburns

2 days ago

> C or C++ let you do whatever you want.

C and C++ force you to code in the C and C++ ways. It may that that's what you want, but they certainly dont let me code how I want to code!

There is no C or C++ ways. It's widely known that every codebase is its own dialect.

  • There are lots of C and particularly C++ ways, but you're still restricted. Want to use methods in C: nope, you can't. Want language-level tagged unions and pattern matching in either language: nope. Same for guaranteed tail call optimisation and a bunch of other things.

    This is especially true for C which supports almost nothing (it doesn't even have a sensible array type!). But is also true for C++: while it supports a lot, it doesn't support everything.

    • The funny part is that all of these things are easy to achieve as libraries/paradigms.

      Methods in C, just have function pointers as members. Common in many codebases.

      Guaranteed tail calls, all the compilers guarantee that function calls that are a return expression are tail calls.

      Tagged union in C++, it's trivial as a library, see std::variant for a bad example of it, and all the various monadic/pattern-matching variants (pun intended) people have written. C is at a disadvantage here due to lack of lambdas, but I'm sure people have built stuff using some GCC extensions.

    • what changes, in your opinion, would need to be made to the C array type to make it "sensible"? C's array is simplistic, but I don't think it's not "sensible"...

      2 replies →