* Henry Baker <hbaker1@pipeline.com> [Jun 10. 2014 18:10]:
"Iterators" -- at least as currently envisioned -- is one of the worst ideas to ever hit computer science.
No. My search of those grid-filling curves would have been impossible without it. Even for iterators it would have taken > 7 years for _one_ of the searches near end of what I have done (which took 41 hours). Recursively: not likely in < 20 years. Read the timings in "did we miss an order?". Everybody and his dog now teaches parallelization, but few pay attention that prior to that your code should be non-crappy. That's why I do a course "HPC" that does "everything" _but_ parallelization. My record so far: a factor of 10k. The guy could do in minutes on his laptop what 200+ cores did in weeks on a cluster. I have seen a grown man cry.
[...]
(This heavyweight exception mechanism for C is now the target of hacking, because the gcc exception handler has a _Turing-complete_ programming language for walking the stack ! Hackers can easily take over this mechanism to do dastardly deeds.)
C++ has exceptions, C doesn't. C++ exceptions, to the best of my knowledge, are as cheap as it gets performance-wise.
[...]
C/C++ didn't implement automatic garbage collection because they thought that the programmer knew better.
Nope, rather the option of max performance was never abandoned. Good!
We now know that most programmers haven't a clue about how hard memory management is, and we've now spent in excess of $1 trillion on memory management-related bugs, including the entire computer security field.
Just keep those monkeys doing Java.
Fortran, C/C++, etc., didn't bother with array bounds checking.
I do not think that I want to check those bounds 10^9 times a second when I _know_ it is useless.
Perhaps 90% of software bugs have to do with array bounds violations. (I may have been the only person to actually utilize PL/I's array bounds checking code; it found innumerable bugs.) Oops!
Ach ja!: valgrind exists. (Yes, I did find a few bugs in my collection of high performance crappyness; valgring: good!). During runtime in a shipped product? Erm, please no. And then, maybe, yes: people are so used to Microsoft performance that they'd never notice.
The more you study programming languages, the more you appreciate the power and elegance of the lambda-calculus. Entire decades of computer science research has gone into the understanding of the power inherent in this extremely elegant system:
* lexical scoping of variables * function closures * partial application of functions * lazy evaluation of argument expressions * arbitrary recursion via the Y combinator * tail recursion via the eta rule
Performance? Am I the only person alive that is massively annoyed by the idiotic lack of performance these days? Today sucking at a _battery_, energy costs at least 1000 x over mains energy. Yes I owe a dumb phone (recent poll: all students had a smart phone, requiring one recharge a day. Good luck with your emergency call.)
About the only feature of the lambda calculus not normally found in modern computer languages is the lazy evaluation of argument expressions. While this feature can be partially emulated using function closures, it can still provide exceedingly elegant implementation of algorithms like "spigot" algorithms, where the print function decides how many digits of precision to output, and "sucks" these digits out of the rest of the program. [...]
Best, jj (aka performance mongrel) P.S.: if I WDS'ed a bit too much... it's past beer o'clock (the Australian apology).