494 karma · joined November 11, 2020
Median age 27 Male: 98% Female: 2% Youngest: 19 Oldest: 64 Median prison time: 12 months Median probation time: 24 months
All of the above were Copilot inferred. Don't know why I need to know the above, though. :-)
As a result, parsing and semantic analysis cannot be easily divided into independent parts to run in parallel, so they must be performed serially. A modern implementation will typically carry out semantic analysis in phases, for example binding names first, then analyzing types, and so on, before lowering the resulting representation to a form suitable for code generation.
Generally speaking, declarations that introduce names into non‑local scopes must be compiled serially. This also makes the symbol table a limiting factor for parallelism, since it must be accessed in a mutually exclusive manner. _Some_ constructs can be compiled in parallel, such as function bodies and function template instantiations, but given that build systems already implement per‑translation‑unit parallelism, the additional effort is often not worthwhile.
In contrast, a language like C# is designed with context‑free syntax. This allows a top‑level fast parse to break up the source file (there are no #include's in C#) into declarations that can, in principle, be processed in parallel. There will still be dependencies between declarations, and these will limit parallelism. But given that C# source files are a tiny fraction of the size of a typical C++ translation unit, even here parallel compilation is probably not a big win.
The C++ back-end can take advantage of multithreading far more than the front end. Once global optimizations are complete, the remaining work can be queued in parallel for code generation. MSVC works in exactly this way and provides options to control this parallelism. However, parallelism is limited by Amdahl’s Law, specifically the need to read in the IR generated by the front-end and to perform global optimizations.
This fact was driven home to me recently when dropping my mother off at the airport. For various reasons, my mother us to use wheelchair assistance when flying, and I usually get a "gate pass" to accompany her to the gate. An airline provided wheelchair is pushed by an airline employee whom I usually tip a decent amount every time. The last time she flew, the employee insisted that we had to make a detour, otherwise they would "write him up". Not wishing to make his life hard, we agreed and he brought us to an area where they were trialing robotic wheelchairs. They insisted my mother use the robotic wheelchair and since I was with her an a little curious, we agreed. In the process of tranferring her, I forgot to tip the wheelchair pusher.
The robotic wheelchair was an unconditional disaster. In a busy airport, it stopped every time it detected anyone within 5 feet of it and took 20 min to get where it would have taken less than 5 with the cherry on top being that it stopped and told my mother to get off 3 gates away. Had I not been with her, I'm not sure what she would have done, being too weak to lift her carry-on and walking to the gate.
But thinking about it a bit, I realized that sooner or later, the robotic wheelchair would be improved to the point that it did just as good a job as the human pusher at which point, all the income earned by the humans, all of whom are from the poorer sections of society, would be transferred to the robotic wheelchair company and its shareholders, all of whom are probably in the top 2% wealth-wise.
This transfer of wealth from the poor to the rich seems to be a recurrent theme in tech. Sure new wealth eventually is made, but it seems it's mostly for the top strata, with us techies being paid well enough to prevent us from feeling too many scruples.
https://en.wikipedia.org/wiki/Ellipsoid
To make a plot in software such as JMol, you really need parametric equations, which are also given in the above page.
Muslims have got around the problem of not being able to pay for houses in cash by constructing a joint ownership scheme, where the lender and buyer enter into a joint ownership of the house; the buyer pays rent and adds extra to buy more equity, and the rent goes to both the buyer and lender in proportion to their equity as a business partnership. Over time, the rent part decreases and the equity buying accelerates. There are other models, but this is the most popular one. Due to Federal and state laws, such mortgages are often reported with interest rates even though, technically, interest is not being charged.
HIM: AI is going to take all entry level jobs soon. ME: So the next level one up will become entry level? HIM: Yes. ME: Inductively, this can continue up to the CEO. What about the CEO? HIM. Wait...