Unpopular opinion: i64, int64_t, Int64 and similar types should be named according to their actual meaning, Ring64.
Even better, all programming languages should have a Ring[N] type that provides unit, zero addition and multiplication over a domain of N-bit strings, with the compiler applying proper optimizations when available (and requested).
Never trust non-GPL code... 🤣
You are technically right, but i think they SHOULD be rings (and named accordingly). So that programmers would learn from the beginning to live with the clear semantics of rings, always aware of the risk of overflow.
Uhm... no. You are not "right".
You are technically right because you narrowed the discourse on standard C. Then, speaking of one specific language (standard C), you are right that int64_t is not a ring.
(And I do the worst possible things with computers... things you can't even imagine... so start looking if you dare to know... 😉).
But I'd argue that the Rust choice is... arguable.
I mean, it's a choice, legitimate for its authors. BUT calling the same time Ring64 AND giving it ring semantics would be an equivalent design choice.
The point: is it better as a bade type in a language, a limited integer that throw an exception in some conditions, or a ring that consistently works as a ring and let people build on top of its clear and predictable semantics?
I'd say the second.
It's a simpler solution, faster to learn and predictable.
(It's worth noticing that I'm wondering about an hypothetical language that is as simple and consistent as possible)
Uhm.. I'm arguing that calling a bounded type as "int" is a design error.
Take Wirth's Oberon: it uses INTEGER. At compile time you can specify the actual size.
Yet, it's NOT really an integer because it's bounded.
So if it's not a integer why calling it so?
I'm a programmer. 😉
It's not an integer.
It's NOT a theoretical argument, indeed overflows happen.
There are three possible solutions to this: force people to rationalize that "it's not an integer, but... who cares?", making it an actual integer (whatever it costs computationally... but you know.. halting problem) or to name such in another way.
The first increase cognitive load for no reason: it's accidental complexity or, if you prefer, a global technical debt.
Another example: division should not be defined on types that include zero. You shouldn't be able to construct a type for which division is defined, with a zero.
Now in a world with JavaScript and C++, we know programmers can rationalize basically anything.
But still... I think it's worth to imagine better worlds.
Exactly.
So why should we adopt such self-deception by calling something that is not an integer "integer" instead of building something that actually work as an integer?
Early optimization?
Or maybe we think that programmers cannot properly handle rings (as they cannot handle overflow errors)?
I'd argue that such belief is a little "paternalist" and well... wrong.
So we know that people cannot properly handle such corner case... why not make their management mandatory from the start?
Too late... too many typo... sorry.
s/bade/base
Actually the problem with #GPL and #AGPL is that they are not strong enough to protect and reserve the knowledge that free software expresses to the commons.
Full access to software sources and full right to hack it, just like writings and any other human expression, is the most fundamental human right.
Preventing such right to any human is preventing them to be human, a specie that defines itself as *homo sapiens sapiens*.
It's somewhat funny, but very incorrect.
Even MIT and BSD impose obligations on people builing on licensed code, just fewer than a #copyleft.
Actually, such swallow depiction of free software licenses is quite similar to calling int64_t as "integer". 😅
As for an even stronger copyleft, I wrote the #HackingLicense: http://www.tesio.it/documents/HACK.txt
I must admit that I'm not yet happy with its formulation, but it can give an idea of what I hate in weaker copylefts like the #AGPLv3.
I'm going to remove the "organizations" thing. Making it shorter would be nice but apparently I can't without opening to corporate abuse one way or another.
In any case, if you want to give it a read and show me a way it could advantage big corps, I'll promise I'll study a fix for that.
BUT Google does not use or extend AGPL software. Why?
I'd argue that a strong copyleft is better than a permissive license against steer manpower.
And that against such big corporations not even keeping the software closed source provide an effective protection.
The Hacking License, instead, gives the original authors full (non exclusive) copyright and patent grants on any derived work.
Fine... but why?
I mean, is this a philosophical hate against common good and the commons or something you consider pragmatic, apolitical... such as profit in a capitalist world or something like that?
Even if we do not agree on this matter (mostly because we do not agree), I'd really like to learn your perspective.
Mozart's music is common good.
So is Bethoven's or Vivaldi.
Shakespeare poems are common goods. And Montale's too.
Actually most of human knowledge is common good.
A huge amount of software is common good. I'd argue that most global cpu cycles at any given time this year are running free software that IS common good.
This does not means, in any way, that you shouldn't be paid for creating it if you want to.
So I deduce your is a fundamental mistrust in society, in the communities around you that could benefit from your work if it was available.
To be fair, you might be right on this. There is a huge risk we evolve back to egocentric apes unable to collaborate if not under the rule of few... owners.
As for me, I choose to still hope for the better from our specie.
Anyway... thank for sharing!
They are both right, btw.