5 ms·
Having taught programming to novices a little, I believe “if not” is clearer than “else”. Imagining “not” being prepended to the original conditional expression
by goblin89 6y ago
Having taught programming to novices a little, I believe “if not” is clearer than “else”. Imagining “not” being prepended to the original conditional expression would be natural, especially in languages with “not X” construct (like Python), and it’s easy to forget that “else” is in fact archaic to non-programmer ears, slightly and possibly needlessly raising the barrier.
if (X) { doY(); }
if not /* X is implied */ { doZ(); }
In languages like Python it could be generalized to enable one to use “if not” with an expression as usual but omit the expression if it is the last branch of a conditional, thus getting rid of the “else” keyword while maintaining or arguably improving readability.
That said, there is no programming language that could entirely map to a spoken one, so perhaps it’s actually beneficial to shed any semblance of such mapping early-doors in the learning process.
- shawnz 6y agoWhat if there were 3 cases though? "Else" should exclude both of the preceding cases, but the phrasing of "If not" seems to imply it would only exclude the previous case
- goblin89 6y agoTrue! A point could be made for restricting ifs to 1 or 2 clauses and delegating more complex conditions to switch/case, but that is arguably even more far out there (and in case of Python it actually doesn’t have the switch operator). Also, “if not X {…} if not {…}” would be confusing but possible. I guess I should leave language design to the better-equipped for the time being.
- throwawaw 6y agoI wonder whether anyone has used "otherwise" for this. It'd be a simple alias for "else", but it'd certainly sound natural: if (X) { doY(); } otherwise { doZ(); }
- erk__ 6y agoTowards the bottom of the article there is a example of MAD[0] that uses something similar, and there is also the John McCarthy proposal which also uses otherwise. I could imagine it being used in a language that had a tight connection to maths as otherwise is often used there. [0]: https://en.wikipedia.org/wiki/MAD_(programming_language) https://en.wikipedia.org/wiki/MAD_(programming_language)
- throwawaw 6y agoOh, right, the article...