Then ... you find out that smoking was introduced to the new world in the 16th c, and indigenous North Americans didn't start using the bow & arrow ubiquitously until after the year 1000. But! Native North Americans were using copper contemporaneously with the old world.
So... every company only hires the best!? I jest, I jest!
In general, I've found that the younger engineers (20s, up to 30s) have a lot of vim & vigor; but, even the very best ones generally do a lot of spinning-in-place, when they think they're making progress. Almost anyone above a certain level -- call it the 30–40% mark (it's low!) -- can be raised up to be a competent engineer. Probably what'd be called an "an A- or B+" player? That's just part of a good training & onboarding regime; although, it can take 1-3 years, depending on the person. Very good "natural" talent can definitely boost top performance to an A+, but it won't substitute for literal time-under-stress of delivering high quality product-ready code to clients.
Highly recommend not doing this in production code. If nothing else, there's no compiler protection against offset+size being > total size, but one could add it with a static assert! (I've done so in the godbolt link)
You might want to have a look at the unboxing and packing annotations that are proposed for Virgil. The unboxing mechanism is implemented and there was a prototype of the packing mechanism implemented by Bradley for his thesis. I am working on making a more robust implementation that I can land.
I'm curious if some of the bits in your data types are "control bits" that determine what the format of the other bits are. If that's the case, then it sounds like an algebraic data type would be a natural way to express it. If you read the linked paper, algebraic datatypes in Virgil can have different encodings for the cases. As long as the cases are distinguishable via a decision tree, it should be possible to just describe the formats declaratively and have the compiler do all the encoding/decoding/matching.
Bitfields are kind of a fake feature because they can't be individually addressed like variables can. So they just turn into inlined getters and setters. Old compilers could not inline arbitrary short functions so bitfields were required as an extra hack, but this is no longer the case today.
Ballpark figures based on the ram earth construction for TGE vs AOT would have the AOT wall be 5-10x the volume & mass of the TGW. The issue is labor — the Great Wall probably represents 20–100 million ma years of labor. The AoT wall probably has at most 100k man years of labor it could've pulled from. That'd mean it's labor-mass ratio is off by 1000–10000x.
This gets into spoiler territory, but the walls in Attack on Titan weren't made with human labor. The first hint that something funky is going on was at the end of the first season finale, but we don't get the full story about the walls until much later.
It also was built when Marley was still very much a massive empire. So it wasn't limited to the manpower inside the walls. This is clear from how many of it's actual construction materials were used.
You can't say "no" to a restaurant without voting "yes" to an alternative. The first restaurant to a majority wins. Is it a perfect system? No. Do I get to eat in a reasonable amount of time: yes.
You sound bored. If we triple head count overnight, we'd only slow our backlog, temporarily. Every problem we solve only opens up a larger group of harder problems to solve.
The irony of a five sentence article making giant claims isn't lost on me. Don't get me wrong: I'm amenable to the idea; but, y'know, my kids wrote longer essays in 4th grade.
reply