26 comments

[ 3.0 ms ] story [ 69.1 ms ] thread
I don't understand the point this article is making, and don't agree with the sentiment either.

One should not feel embarrassed for not knowing something and then asking more in order to learn.

The correct term is not embarrassment, it is inquisitiveness - which must be encouraged and not shamed

> One should not feel embarrassed for not knowing something and then asking more in order to learn.

Agreed: ignorance is not embarrassing. We're all ignorant about most things.

But it is embarrassing to say something like "why'd they name iota after a Greek letter? To seem smart?" As this article explains, there is a history there and it doesn't have anything to do with "seeming smart".

I didn't know the history of "iota". I'm only vaguely familiar with APL. And I've never listened to a Turning Award lecture. This makes me ignorant. But I also didn't criticize this feature from my place of ignorance because I'm aware of it. Had I done so, it would be embarrassing.

I have criticized things from ignorance in the past, and it was embarrassing.

> One should not feel embarrassed for not knowing something and then asking more in order to learn.

The point is not that you should feel embarassed by your ignorance, but that you should not feel proud about it.

New Testament: "until heaven and earth pass away, not an iota, not a dot, will pass from the Law" (Mt 5:18)

https://en.cppreference.com/w/cpp/algorithm/iota

https://superuser.com/questions/841439/excel-auto-fill-a-col...

My first context for iota was biblical, and I’ve used it as an expression my whole life (e.g., “Not one iota”). I was surprised to see it in STL, but after learning its history, I’ve been happy to use it in my code without mocking it.
"I gave a lecture recently and a student stopped me. “I’m sorry, I don’t know what a coroutine is. Can you explain?” More than happy to. That level of embarrassment.

If you have a better word, please provide it. But I believe embarrassment is the correct emotion to feel in response to one’s own ignorance."

"Embarrassment", for me, is definitely not the right word.

If I feel embarrassed, I do not ask. I will go quietly google it.

"Bothered" might be a better word?

I'm only going to feel embarrassment if it was some kind of prerequisite for the lecture, and like you I would probably just look it up afterwords (probably on YouTube).

I would admit to ignorance if I have never learned the subject and forgetfulness if I had learned it and forgot or just had a "brain fart" and temporarily forgot which would leave me annoyed at myself. I think this article misuses embarrassed.

From https://en.cppreference.com/w/cpp/algorithm/iota:

> The function is named after the integer function ⍳ from the programming language APL.

The article spends a lot of time talking about how a lot of things leading up to std::iota are very important, but not very much time talking about why they're important.

While I agree that the criticism "you're just trying to look smart" is misguided, it's a bit ironic that his response had the implication that "if I know this thing and you don't then you should be embarrassed [because I'm smarter/better than you]."

(I think that was the source of much of the objection to the comment, and the post makes no attempt to apologize for it, even if it was unintended.)

Entire articles and Twitter battles being fought over a simple iota keyword.

Sometimes I think the software industry is deeply silly.

Actually, I think that a lot of the time.

> By embarrassed I meant as when you are in a foreign country and you can’t remember the native words for please or thank you.

The reason why this is embarrassing is because it might imply a certain disrespect for the country you are visiting. But neither does a programming language and its community deserve the same level of respect as a country and its people, nor is the history of iota() comparable to knowing the word for thank you.

No visitor to England should ever feel embarrassed in any meaning of the word for not knowing why some food words have french origin and others don't. Nor should they need to apologise for stating that they find that confusing.

Is it just me who thought this was about the itoa C function?
iota is silly because it's non-descriptive even though there are so much more descriptive alternatives, such as simply naming it range. To me, iota falls under the same category as naming variables acig, gfeq, fqcl, aiwn, or any other permutation of of 4 letters that have nothing to do with what it does.
I also keep reading it as i-to-a which shows my own bias but doesn’t help it being immediately understood.
Also, maybe shows your dyslexia.
If I understand correctly, iota fills a data structure with a range of incrementing values.

...at the risk of sounding ignorant (perhaps I should be embarrassed?) why is iota a clearer name than, say, range?

I do have to admit upfront that I've not spent overly much time on APL because in my day to day programming life, it's merely a historical curiosity that required a special keyboard.

Also, the author's assumption that a senior software developer should have studied a lecture from 1979 (that runs to 380ish pages) as a matter of course is, well, bloody odd. I've read Joe Armstrong's dissertation on Erlang from cover to cover because it was relevant to me. Can I now assert that any senior developer who has not should be embarrassed?

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.

It’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.

Agreed, 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".
The 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.

You 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/12cd68f54bb71a3940eae5cd...

But "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.

Being embarrassed isn't the same thing as telling someone they should be embarrassed.
(comment deleted)
While I don't really care what the history is, the name seems odd to me since I thought it was itoa() at first. It seems too similar to a common function (that nobody should use anymore).