8 karma · joined September 20, 2016
I've written C-like programs in Rust, and that goes very well. But I really like function overloading, generic operators that I can overload from the left and the right, integer parameters for my templates/generics, copy semantics as the default (opt-in for moves), placement new, explicit destructors, and maybe a few other niceties. Rust does none of these things the way I want, and so I'm stuck with C++.
There are a few other things where I think Rust just made the wrong choices and didn't improve over C++. I've always hated the dichotomy in C++ strings between const char* pointers and an actual string class. Rust had the chance to make strings feel as comfortable as integers, but instead they introduced their own dichotomy with String and &str.
Speaking of integers, Rust's choice of 32 bit integers as the default for literals is painful given that every machine most of us will ever care about is now 64 bit. I routinely deal with arrays and files that are too large for a 32 bit integer. This means I have to remember to suffix all of my integers in for loops etc... C++ has this wrong too (backwards compatibility), but Rust had a chance to make a clean start and did not.
Computer drivers could make much better use of the existing bandwidth on freeways. I'm guessing 6X better, since my 15 minutes drive takes 1.5 hours during rush hour.
It could be a long time before we ever have enough automated cars to realize this benefit. But when that days comes, we could safely increase speed limits too (computers generally have better reaction times).
Besides, the reason most of us actually like UTF-8 is because it leaves ascii alone (which is all I ever use) while pretending to handle the general case. It doesn't help end users or programmers deal with any of the nonsense around multiple ways to encode glyphs (combining codes vs accented codes), deal with surrogates (yes, people encode surrogates in UTF-8), lexical sorting, or anything else. I'll bet there are dozens of incompatible ways strings are UTF-8 encoded in the real world, each of them a bug for interoperability, and all of that blame falls on Unicode being a terrible standard.
So yes, I'm sure.
Parallelism is about performance, and it seems contradictory to do parallelism well on top of a slow language. Yes, Erlang can call out to other languages, but so can shell scripts.
My guess is that most people who prefer zero-based feel strongly about it, and most people that like one-based don't care that much. If it really doesn't matter that much, I think Julia should've gone with zero. FFTs, Vandermonde matrices (least squares), polynomials, and pretty much anything where the array subscript relates to the mathematics is cleaner with zero-based arrays.