Bjarne Stroustrup on Precision vs. Fuzziness in Programming: C++, Deep Learning, and Safety-Critical Systems
Summary
This podcast episode features Bjarne Stroustrup, the creator of C++, discussing the fundamental differences between traditional, precise programming paradigms like C++ and the emerging, 'fuzzy' nature of machine learning and deep learning. Stroustrup emphasizes that while C++ is designed for extreme reliability, efficiency, and measurable precision, machine learning systems operate on empirical observation, often achieving accuracy rates in the 80-90% range, which he contrasts with the near 100% reliability expected in critical engineering. He acknowledges that this 'fuzziness' is acceptable and even beneficial in certain contexts, such as pre-screening data, but vehemently rejects its suitability for life-threatening or safety-critical applications like aeroplane or car controls, or nuclear reactors.
The core distinction lies in the acceptable margin of error and the underlying design philosophy. Stroustrup advocates for professional engineers using sharp, effective tools like C++ for systems where precision is paramount, drawing a parallel to the necessity of understanding mathematics for complex calculations. He highlights the danger of the 'everybody can program' mentality when applied to critical infrastructure, stressing that such systems demand specialized education and training. The discussion also touches upon the inherent challenges of human-AI interaction, particularly in scenarios where an AI system, encountering an unresolvable problem, might defer to a human operator with only seconds to react, a situation Stroustrup finds deeply concerning and undesirable for autonomous systems.
From a practical standpoint, the conversation underscores the importance of selecting the right programming paradigm and tools for the specific application domain. It suggests that while machine learning offers powerful capabilities for tasks tolerant of some imprecision, it is not a universal solution and should not replace deterministic, highly reliable engineering in areas where failure carries severe consequences. Stroustrup's perspective reinforces the need for a clear separation of application areas, each requiring different principles and tools, rather than a one-size-fits-all approach to software development.
Ultimately, the episode delves into the broader implications for software engineering, safety, and the future of technology. It raises questions about the ethical responsibilities of developers, the limits of empirical reliability, and the necessity of designing systems that either never require human intervention in critical moments or provide humans with adequate time and information to act effectively. Stroustrup's stance reflects a deep-seated commitment to engineering rigor and a cautious outlook on the uncritical application of fuzzy programming to domains demanding absolute certainty and control.
Key Quotes
"machine learning is a kind of way of programming but just fuzzy it's very very very different than C++ because C++ is a like it's just like you said it's extremely reliable it's efficient."
"I don't want everybody to program my my aeroplane controls or the car controls I want that to be done by engineers."
"a language like C++ is not for everybody it is generated to be a sharp and effective tool for professionals basically and definitely for people who who aim at some kind of precision."
"an eighty-four percent accuracy rate sixteen percent false positive rate it's perfectly acceptable and where people will probably get no more than 70."
"this is fine if it is say pre-screening stuff before the human look at it it is not good enough for for life-threatening situations."
"the idea that scares me the most is the one I have heard... that you have this AI system... and when they're something is too complicated they asked a human for help but human is reading a book or sleep and he has 30 seconds or three seconds to figure out what the problem was."
"I would much rather never rely on a human if you're driving a nuclear reactor if you're or an autonomous vehicle it would it's much better to design systems written in C++ that never asked human for help."
"you have to have different towards different principles and then they interact no major system today is written in one language and there are good reasons for that."
Concepts
Themes
- Precision vs. Approximation
- Engineering Ethics and Responsibility
- Human-Computer Collaboration Challenges
- Risk Management in Software Development
- Domain-Specific Tooling
- The Future of Software Development
- Reliability in Critical Systems
Related to:
Technology Insights
Programming Paradigms Compared
- C++ (reliable, efficient, precise, deterministic)
- Machine Learning (fuzzy, empirical, probabilistic)
Safety Critical Applications
- Aeroplane controls
- Car controls
- Nuclear reactors
- Autonomous vehicles
Human AI Handoff Challenges
- AI systems asking humans for help in complex situations with very limited response time (e.g., 3-30 seconds).
Design Principles
- Different tools and principles are required for different application areas; no major system is written in a single language.
Similar Episodes
Ian Goodfellow on Generative Adversarial Networks, Deep Learning Limitations, and the Future of AI Cognition
The Turing Test: Can Machines Think? A Philosophical and Engineering Deep Dive into AI
Waymo's Decade-Long Journey: Engineering Self-Driving Perception with Deep Learning