6 ms·
But engineers know "one overriding idea" never works except in theory On the contrary, good engineers are not dogmatists. They're open to new ideas and strive
by wissler 14y ago
But engineers know "one overriding idea" never works except in theory
On the contrary, good engineers are not dogmatists. They're open to new ideas and strive for simplicity, which means striving for unified approaches based on empirical reasoning. See Newton.
- maratd 14y agoYour continued comparison of physics to software engineering is horribly flawed. Software engineering is about creating something for humans while working with other humans. It is a science that is primarily constrained by human nature. Physics is about describing reality. It is a science that is primarily constrained by reality. In software engineering, it is always better to choose a flawed technical solution that leads to less friction among humans. Because less friction among humans is the entire point of software engineering.
- wissler 14y agoYour continued comparison of physics to software engineering is horribly flawed. Your contrast of science and engineering is horribly naive. In science, we use Ockham's Razor regarding explaining phenomena; in engineering we use Ockham's razor regarding implementing requirements. Both follow the same logical, empirical process, and both strive for the same result: as simple as possible, but no simpler.
- astine 14y agoOccam's Razor says that we should prefer simpler explanations to more complex ones with the same explanatory power. That is, we should prefer explanations which don't raise more questions than they answer. This has nothing to do with the engineering 'KISS' principle which desires simpler architectures because they are easier to understand and thereby to debug and maintain. The point is to avoid astronaut architecture, which is what you get when you chase theoretical ideas rather practical solutions. Linus's whole point is that microkernels are a prime example of astronaut architecture.
- dxbydt 14y agoThere is nothing astronaut-ty or theoretical about microkernels. For eg, QNX is a fairly successful, practical microkernel, its what your BlackBerry runs on. If anything, microkernels are one of the most practical ways to approach OS design. You strip the kernel to its bare minimum and do everything else in usermode via IPC. It so turns out in practice that the performance costs of IPC is much more than making a direct syscall in a monolithic kernel, but that is just today's state of the art. As IPC performance improves & monolithic kernel KLOCs explode, you will see microkernels making a strong comeback, especially on mobile. Wait and see.
- jbooth 14y ago"As IPC performance improves & monolithic kernel KLOCs explode" 1991 called. They told you to keep waiting. If you have to write way more code to hack around the message passing performance, you haven't simplified anything.
- jbooth 14y agoHaving to hack up all your code to perform appropriately in the context of a message-passing system is not simpler than a monolithic kernel. That's the rub. If performance were not a concern, message-passing could be simpler.
- wissler 14y agoIf he had only criticized a monolithic kernel and not general ideas in general, then I would not have criticized him. But he takes a single example of an allegedly failed general approach, and then takes a wild leap to the conclusion that all such methodologies are hopeless to try. The irony is that it's Torvalds who is leaping to wild and unjustified generalizations.
- jbooth 14y agoI read it as, if you have a methodology/ideology as your goal rather than an actual goal, you'll fall short of people who keep their eyes on the prize. I guess it could be read multiple ways.
- wissler 14y agoIf he'd said it like that, I wouldn't have taken exception to his statement. I do agree with him that ideas for their own sake are a bad idea, especially in an engineering context.
- andreasvc 14y agoOccam's razor is merely a heuristic, not a part of the scientific method. Its usefulness is debated in philosophy of science, and also in a practical sense in the context of machine learning; their conclusion is that it could very well be false.
- andreasvc 14y agoCf. Domingos (1999): "Occam’s razor has been interpreted in two quite different ways. The first interpretation (simplicity is a goal in itself) is essentially correct, but is at heart a preference for more comprehensible models. The second interpretation (simplicity leads to greater accuracy) is much more problematic. A critical review of the theoretical arguments for and against it shows that it is unfounded as a universal principle, and demonstrably false. A review of empirical evidence shows that it also fails as a practical heuristic." http://reference.kfupm.edu.sa/content/r/o/the_role_of_occam___s_razor_in_knowledge_100134.pdf http://reference.kfupm.edu.sa/content/r/o/the_role_of_occam_...
- snowwrestler 14y agoAre you a scientist or an engineer? You said "we" for both. They do not follow the same logical processes. Science begins with observations and uses inductive reasoning to create theories. Engineering starts with formal rules and proven facts, and uses deductive reasoning to prove the correctness of a particular solution.
- nnq 14y agoside comment to q, not answers (as the q is not for me): isn't engineering about creating a solution that mostly works, based on mostly formal rules and mostly proven facts, test it, start using it in production, and then MAYBE, if you have the need and/or resources actually formally proving that it will keep working in most cases or discover the cases where it will not and ad some hacks for them? (there's actually 2 main approaches to engineering: the science/proof/theory based one and the empirical one that also uses science/proofs/theory but as a scaffolding and as a compass to realize we don't waste resources trying to do something "really" impossible)
- dxbydt 14y agoI am genuinely curious how anything technically superior ever gets a chance in this concocted world of yours. Clearly, you prize "less friction among humans" above all else. So given a choice between a clearly flawed technical solution ( say building an operating system in PHP) and alienating other humans ( specifically, an office full of PHP experts ), we should build the OS in PHP because that leads to less friction among humans...yeah ? Let me know how that goes... Back on point, In grad school, we read the Tenenbaum-Torvalds debates in OS class to get an idea of the current state of research. Tenenbaum's point, among other things, was that microkernels were an unsolved problem. Granted they pushed the problem space into communication, and you had to contend with latencies....but that was the whole prize, to solve this brand new problem space. Whereas big bad monolithic OSes were a solved problem. We know they could be done. As far as a CS researcher was concerned, there was no meat in that space...it was mostly implementation detail and optimizing. Whereas microkernels, despite being a cleaner, more elegant approach to OS design, clearly had tons of issues to be solved, and whoever took a stab at them would push the state of the art forward. That is the point => to find a superior technical solution, not minimizing friction among humans.
- maratd 14y ago> I am genuinely curious how anything technically superior ever gets a chance in this concocted world of yours. If it actually works, sure. Unfortunately, due to uncontrolled hipsterism most technologies touted as "technically superior" don't actually work. It's very easy to throw up a demo or a benchmark. It's very easy to write a paper that shows how amazing what you wrote happens to be. Integrating something into a production stack that doesn't cause more problems than it solves is really hard. And it very rarely happens. So yeah, while you're still at the office at midnight trying to track down what exactly in your stack exploded ... I'm sleeping ... because I decided to go with something that's proven, rather than the latest and greatest. > we should build the OS in PHP Bonus points for trolling.
- wissler 14y agoI'm glad to see someone getting the point, which is that we as scientists strive for simplified, unified explanations and systems, and that's a good thing. Linux is nice and practical, but try working with it as a systems programmer sometime. It's full of hacks and arbitrary complexity and all manner of nonsense that persists year after year.
- CrLf 14y agoAnd... Newton was also wrong. His theories ended up not "overarching" at all, but flawed for aspects of reality that he didn't know about/didn't think about/had little data for. CS has lots of similarities with physics, yes. But the devil is in the differences. Think of it this way: If Newton had been trying to solve problems that included objects moving near the speed of light, not caring for what that would imply, he would have failed miserably. Computer scientists were trying to use microkernels to solve problems that required performance, without caring for performance, and failed miserably. Microkernel research was useful, Linux actually implements a lot of concepts devised to improve microkernel performance. It just happens that these concepts work even better when applied to a monolithic/modular kernel. Though luck for microkernelists...
- davesims 14y agoGreat comment, basically a restatement of Christopher Alexander's philosophy of architecture, as applied to software. This to me is where top-down thinking like Design Patterns sometimes go wrong; The GOF and related literature never really emphasized or adopted at a fundamental level, Alexander's most essential insight: the discovery of patterns should be driven from the bottom up, from the essential goal of expressing how human beings live in buildings (software). I like and use patterns, but rarely according to 'textbook' implementations, and I always felt that the patterns literature never went deep enough into Alexander's fundamental principles, which I think you've paraphrased so well here. Less friction among humans is the entire point of software engineering. Should be on a banner over every CS department and software publishing house in the world.
- MartinCron 14y agoSee Newton Are you trying to imply that Newton was somehow an effective software engineer?
- comex 14y ago"One overriding idea" is a type of dogma. Working towards simplicity is a good thing, but being dogmatic about an architectural principle is not.
- Evbn 14y agoWhat would happen if Newton designed your spaceship? It would miss its target, because his simple idea was not precise enough.