3 ms·
A beginner should be made to learn something only if they get an advantage out of it in readability or type safety or performance or something else. I don't see
by kartickv 10y ago
A beginner should be made to learn something only if they get an advantage out of it in readability or type safety or performance or something else. I don't see that being the case for pre- and post-increment. If anything, I find:
i += 1;
String name = names[i];
more readable than
String name = names[++i];
where I have to pause and remind myself of pre- and post- increment and which one is being used here and mentally translate the code into the above version.
Imperative languages already have a way of specifying execution order: it's the order of statements in your file. Let's reuse that rather than making things more complex.
- felixgallo 10y agoIn your list of things that beginners must get an advantage out of, you left out functionality and brevity. Hope that helps.
- kartickv 10y agoI don't see a difference in functionality — both code snippets I gave do exactly the same thing. As for brevity, I think clarity is more important. We should optimise for the time it takes to read and understand the code (clarity), not just read (brevity). The best abstractions and programming language features are both brief and clear, like Python's list comprehensions. I find [name.uppercase() for name in names if name.startswith("a")] to be clearer than Java's List<String> uppercaseNames = new ArrayList<>(); for (String name: names) { if (name.startsWith("a")) uppercaseNames.add(name.toUpperCase()); } So, the best programming language features enhance both brevity and clarity. When that's not possible, I'll take slightly longer but clearer code over short but confusing one.