1,475 karma · joined November 14, 2013
"Hard" problems are those you don't expect to solve in a few minutes on a desktop (or laptop) computer.
You can get away with it when you are "the government .gov", but if you are "small start-up.com" and I want to invest in your risky stocks and all I get is an "Oops page" when I want to know a little more about your dividend policy, I'm gone.
The Pascal from 50 years ago was not that great in practice.
Put everything you don't want to manage into Rcs, RefCells, Boxes and the like, and you'll more or less feel like you're using a (verbose) GCed language (with a loss of performance and safety as a natural consequence).
> I enjoy Rust and have been writing it for quite some time. However, I feel like server side languages still have a long way to go. Client-side languages in comparison have been only growing better
The fact you call them "server-side language" is a strong bias. Not everything is a client/server app.
However I agree the idea only a few software need to run fast is bullcrap.
As you said, it's usually not a GC issue. Many of these ridiculously slow programs you talk about are written in C++.
I'm (almost) serious (if you do that, do several, specific titles: "100 lifetime gotchas", "100 traits gotchas", etc.) I've read several books that were little more than short blog posts collections, with a common theme but no real overall structure, and, mind you, some of them were pretty good despite of that, because they solved real problems I had. Some people learn better with a bottom-up approach (i.e seemingly random sequence of independent items that eventually let you grasp the big picture) than top-down (3 parts, with each part having 3 chapters, with each chapter having 5 sections, with each section having...)
Yes, I think technical books are a great marketing asset when you're a consultant / freelancer. It gives you a ton of credibility, more so than one more project to your cv / portfolio. Plus, as a bonus, it provides a few royalties. It's a good way to stand out, too: "Do you have a business card so that I put it with all the other business cards I got today and will forget as soon as I get back home?" "No, Mr. Prospect, but let me give you that book I wrote, you'll enjoy it, and you have my contact info on the first page".
Rather than a potential source of passive income, I tend to see it as a marketing tool that has a very low to negative cost. Seen that way, most of your cons aren't that bad.
If I were a freelancer / consultant, I would definitely write books.
I'm not a seasoned rust programmer though, is there a better, more explicit way to do what I attempted there?
It's just an API kind of thing. If a function / constant / var / type was available and is not anymore, it's a breaking change. It's an objective measure, there is nothing left to subjectivity.
Now, of course a bug fix is going to "break" things if your code relied on the bogus behavior. An updated algorithm can also break things (I maintain a SAT solver, whenever I update the underlying algorithm, even if it's way faster on average, in some limited cases it can make one very specific problem way slower to solve, which can have bad consequences). But as it has no consequence on the API part of things, it's not a major change in semver's meaning.
Not only that, but you can also opt out at compile-time if you need, for performance reasons.
You also have (optional) runtime bound-checking for scalar values (aka "integers"), and you can even specify the bounds yourself (like "A number between 3 and 17").
GCC can also compile Ada. Would you say C/C++/Ada is a single language?
Typedeffing pointers, especially for the sole purpose of "being less verbose" when declaring uninitialized pointers, is a red flag too.