It's not even possible for a single human to understand how a modern processor works in full detail, let alone how all the software running on top of it works. The same is true for almost all complex machinery (and not just because most things contain little computers nowadays).
You have to distinguish between inherent complexity that is necessary to solve the problem at hand and needless complexity that arises from not having the resources for building a simpler solution.
Uhh no.
Systems are so insanely complex that we have to use analogies to explain how they work to other people in our field. Its just not possible to truly understand from high to low level every single component and how they operate. That being said, I truly appreciate and agree with the premise that we should strive for brevity and simplicity _where possible_.
And yet everyone is voting this claim up from their Web browsers which do not come anywhere near this standard, on operating systems of which the same can be said.
If by toy languages you mean HTML then that's precisely why I dislike those things.
I want my browser to be served marked up text with the occasional embedded hypermedia, that's it.
I don't need fancy layout, I don't need transition effects and I don't need updated data without making another request to the server. If I wanted all those things I'd install an app like I do on my phone.
Of course, that spells doom for advertisers and those that rely on advertising dollars to generate content. But I'd rather pay for content if I think is worth paying for, like the Wall Street Journal for example.
I agree but what I has in mind is the horrible complexity of css, with 50 different ways to do somethings, making really hard to do simple things like middle align, etc.
Forgive me for being obtuse, but I can't see how the result would be any less complex or easier to understand than one application with reasonably modular design. You're just moving debugging into the interaction of services instead of the interaction of application components.
What I mean is that 'one person can understand the whole system' doesn't mean that everybody has to understand it in the same way. It can be understood using different abstractions.
A single system? Absolutely not. Even with a lifetime of study it might not be possible for an individual to really understand everything that goes into a modern web browser.
A single module with well-defined interfaces that abstract away its internals for its consumers? Yes, that metric is appropriate for a module like this.
I don't know if you're quoting this to show the absurdity of the statement or if you really believe it.
Nobody understands how a processor is made. Hell, I bet there's almost nobody that truly understands how a plastic cup is made. Do you know how complex the equipment for exploration and drilling oil is, refining, polymerizing, injection molding etc? Do you really think you can find a single man that's able to do this from scratch? And that's an easy case.
No system can be understood in it's entirety by anyone. This is because there's no absolute truth to be known, only approximations of varying degrees.
I am not sure if this makes sense. How would you build anything of some complexity? At some point you have to use components that are probably understood by someone else but I don't think a single person can understood the whole system.
How would you build a big rocket or an OS that way?
EDIT: A good principle would be that every software author should understand his own code in detail. This is often not the case.
Not sure. A lot of the world system from basic to very high level need coordination and modular ... you need some principle of operation which hopefully can be evolved over time so we are in the same page from time to time.
But no. You cannot ask for all to be understood like that.