creativemonkeys
Joined 5 years ago
Joined 5 years ago
Let's say you want to work with numbers and you want your program to run as fast as possible. If you specify the number of bits you want, like i32, then the compiler must make sure on 64bit CPUs, where the register holding this value has an extra 32bits available, that the extra bits are not garbage and cannot influence a subsequent operation (like signed right shift), so the compiler might be forced to insert an instruction to clear the upper 32bits, and you end up with 2 instructions for a single operation, meaning that your code now runs slower on that machine.
However, had you used 'int' in your code, the compiler would have chosen to represent those values with a 64bit data type on 64bit machines, and 32bit data type on 32bit machines, and your code would run optimally, regardless of the CPU. This of course means it's up to you to make sure that whatever values your program handles fit in 32bit data types, and sometimes that's difficult to guarantee.
If you decide to have your cake and eat it too by saying "fine, I'll just select i32 or i64 at compile time with a condition" and you add some alias, like "word" -> either i32 or i64, "half word" -> either i16 or i32, etc depending on the target CPU, then congrats, you've just reinvented 'int', 'short', 'long', et.al.
Personally, I'm finding it useful to use fixed integer sizes (e.g. int32_t) when writing and reading binary files, to be able to know how many bytes of data to read when loading the file, but once those values are read, I cast them to (int) so that the rest of the program can use the values optimally regardless of the CPU the program is running on.
Being direct creates an imbalance, for example when one describes an issue or person purely from a negative point of view, regardless of whether all of it is actually true. Most people will innately attempt to say something positive about that same person to restore some sort of balance to the discussion.
Generalizations are also an example of imbalance, with people typically having a strong reaction to it, even though I think most people would agree that if 97 times out of 100 something is true, it's safe to say that thing is true.
Lastly, as a special case of generalizations, taking an absolute stance is also seen as imbalanced, and therefore bad, because, I assume, most things in life aren't black and white - there's lots of gray areas, so it's pragmatic to start out assuming that in actuality there's a gray area with any issue.
This is all to say that Stallman doesn't speak in a balanced way, which is why I think his speeches and ideas do not appeal to the American audience, or any other audience that places a higher value on balance than on the actual ideas.
If he were able to convey those same ideas in a less absolutist, more nuanced and more pragmatic manner, I think he, as a person, would be more appreciated in the US and perhaps people would listen more closely to what Stallman has to say.
I've lived in several other countries, particularly in Europe, and generalizations, absolute positions and speaking in a direct manner are all generally appreciated by the society there, or at the very least it's tolerated much better and won't get you dismissed right away (since that's how most people speak).
At the end of the day, I personally think Stallman is right. When I look at what he says, I see a non-compromising idealist who places more value on truth, and how things "ought to be", than on pleasantries and gray areas, and that's a difficult sell to the American audience. When I focus on his content with the understanding that he's converting gray into either black or white, I see a dreamer and a believer in a utopian society. I too would like to live in a world where all software is FOSS and we all write FOSS code that runs on FOSS hardware, but I recognize that's a dream. It shouldn't stop us from trying to make that dream a reality though.