5 ms·
Something seemingly glossed over in these discussions is whether calling it "iota()" is even that helpful. The fact that a lot of software engineers -- enginee
by atombender 8y ago
Something seemingly glossed over in these discussions is whether calling it "iota()" is even that helpful.
The fact that a lot of software engineers -- engineers, not mathematicians! -- are unfamiliar with it at least points to an impedance mismatch between the standard and its intended users.
Calling this function "iota()" asks the reader/user to carry around with them a considerable history of CS/maths. If you're a physicist writing code for the LHC, sure. A game dev working on a AAA game? Possibly not. It's not a helpful term if you don't already know it.
On the other hand, something like "std::sequence()" or "std::fill_range()" would be obvious to anyone, math degree or no.
- gumby 8y agoIt’s just a word to learn, like lambda or for. At the end of the day you have to learn the semantics anyway; the label should be below your noise floor. Musicians don’t complain about having to use Italian words (e.g. fortissimo). Objecting to the foreign origin of iota (where the foreignness can be from its Greek origin or mathematical origin) is not worth the effort.
- dorfsmay 8y agoAgreed, this more about familiarity than "wotds from everyday language". If it weren't, the same people who complain about iota would also complain "lambda functions".
- chronial 8y agoThe difference between `lambda` and `for` vs `iota` is that the former are key concepts and often reserved keywords. There is only a very small amount of those. `iota` on the other hand is just one of many standard library functions. There are way more standard library functions than Italian words in music. So your comparison doesn't hold. Standard library functions should not require the memorization of obscure words.
- alangpierce 8y agoYou can argue that "it's not so bad, just learn it", but the confusion from domain-specific jargon can really add up, from my experience, and I think more understandable terminology is almost always better. I think that if we want to design a welcoming system, we should try to make it intuitive and limit the number of weird words that you need to "just learn". Imagine if every CSS property was some greek letter instead of a descriptive name. Experts could still use it, sure, but it would be even more hostile to beginners. Iota is particularly bad not just because it's hard to understand and remember, but because it's easy to misunderstand. In English, "iota" usually means "a little bit", so my initial guess (after re-reading it a few times to confirm it wasn't "itoa") was that it was a small float value, maybe some variant of epsilon. Relatedly, I'm a fan of Elon Musk's email against acronyms at SpaceX: https://gist.github.com/klaaspieter/12cd68f54bb71a3940eae5cdd4ea1764 https://gist.github.com/klaaspieter/12cd68f54bb71a3940eae5cd...
- atombender 8y agoBut "lambda" (if you're referring to the Python keyword) and "for" are fundamental. Iota isn't. The author of the article insists that iota comes from APL, where perhaps it is fundamental. I don't really appreciate the relevance, since C++ isn't close to being APL, and it seems like it's one of very few concepts taken from APL. It comes across a homage to Ken Iverson's APL more than anything, which makes it seem arbitrary.