-
-
Notifications
You must be signed in to change notification settings - Fork 220
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
C3 is balanced, please leave it alone :) #1830
Comments
I don't want to worry you. Note that the |
See the |
@lerno no problems absolutely. I really appreciate what you have done and doing with C3. I'm trying to look into future developments of the C3, and sooner or later with growing popularity you will face all sorts of people requesting different fancy features (because they present in other languages). So without well thought development policy, it would be harder to resit temptation of adding "nice to haves". I'm really afraid to end up with C3++ kind of situation.
My rant was not specifically on the subject of Maybe it's time to refine Roadmap https://c3-lang.org/getting-started/roadmap/ It's nice to meditate on philosophical questions about core language (excluding issues with stdlib and tools):
p.s. So please don't take this personally, it's an attempt to figure out myself the place C3 could take in my toolbox. Everything is amazing so far. p.p.s. So this is also a stream of consciousness, you may also tag this issue as |
The main constraint of C3 is to be an evolution C. This means overall keeping C semantics and syntax. It also means that there is no particular need to introduce new ways of doing things that aren't in C. Some things have been added that are "new". Where interfaces is actually the biggest break with C tradition. One other thing is that like C there isn't any plans to do C3 2.0 after C3 1.0 is done. Yes the stdlib should be expanded and updated over time, and the compiler itself can gain improvements, but the language should not need to change unless there are actual hardware changes the language needs to adapt to. So similar to C in the span of C89-C11 basically. The things that are unresolved in C3 is whether there should be tagged unions. And tackling the enums with gaps in a good way. Everything else is just about removing corners and such. Like one example would be to allow Then there are deprecations as well. But I am super happy when I find things to remove. I'm really excited about not having It's interesting that you raise the zen on Zig. This one is inspired by the Zen of Python as you might know. But more interestingly, it's quite frequently violated and the statements are fairly open for interpretation. I believe it has something like "together we serve the user", but it's unclear whether this is the programmer or the end user. One can suspect it's not the programmer given that Andrew has stated that he find it fine to make more work for the programmer to make things more explicit. I think and hope that instead the language itself will end up as the answer to what the "Zen" of the language is, especially once it is properly pruned. |
Thank you for deep insight. We are on the same page. I think your post worth to be placed on main documentation page (roadmap or vision section), it's a strategic vision of the language. Conservativeness of a programming language is a strong proposition in modern world.
That's also cool! Shall we open an issue here on GitHub with feature removal proposals? :) |
I'm working on some project in C3 currently, I should say I impressed how C3 is balanced as a language. With some experience in C, I rolled into C3 almost without any issues. I love how C3 can be both safe and unsafe (like C is). It's a cool balance. I read full C3 spec and website a couple of times and I should say that there is no such thing I wanted to have added in C3. Everything is on its place, everything is just right. I would remove some things, but nothing to add to the core of the language. Simplicity is a feature of the C3 language.
When I read language design proposals, I often think to myself, that many of them are "nice to haves" and sometimes proposals just add another shortcut of doing things that C3 already can in other way. In my opinion, C3 language proposals should be filtered at least, we should consider the following questions:
defer
,@defer
,#defer
,%defer
?The language couldn't keep all people happy all the time, there is an example of C++, which went to slippery slope of adding "nice to haves" all around. It eventually became a Frankenstein.
Maybe it is worth enhancing the macro system to let one make "nice to haves" for project specific tasks. Don't touch the C3 it's already cool :)
The text was updated successfully, but these errors were encountered: