Ch0. Introduction to C++ with fast_io

Why This Tutorial Exists

My journey into C++ was deeply shaped by C++ Primer, 5th Edition. It was the first full English book I ever read, and it opened the door to the language. Unfortunately, there will never be a 6th edition. When I began writing documentation for fast_io, I realized something important: this library touches almost every corner of C++. Even the classic Hello World example looks different now.

This created a long-term challenge — how do you explain fast_io without explaining the entire language context? For novices, the documentation was too hard to follow. For experts, it was unnecessary. That tension convinced me to take a different path: instead of writing only library docs, I would build a complete C++ tutorial, taught through fast_io.

Teaching in the Age of AI

We are now in the age of AI, and the way we teach and learn programming must evolve. Old-style C++ books are outdated. The WG21 committee, including Bjarne Stroustrup, has struggled to embrace new ideas. Decisions made decades ago — such as exception handling — remain controversial and, in many ways, misguided. This tutorial will not shy away from questioning those choices and exploring alternatives.

Learning today requires adaptability, context, and debate. This book is not just about memorizing syntax; it is about rethinking programming itself.

Beyond C++

While C++ is the main focus, this tutorial will also briefly explore other languages and ecosystems to provide perspective:

By comparing languages, we gain a clearer picture of where programming is heading and how different paradigms shape our thinking.

What You Will Learn

Unlike traditional C++ books, this tutorial will cover topics that are often ignored or considered too advanced:

These are not side notes — they are core parts of how modern C++ should be understood and used.

Debates and History

This tutorial will also dive into debates that go beyond C++: programming philosophy, language design, and the cultural forces that shape our tools. Along the way, we will examine the history of programming, including stories like the rise and fall of Windows Phone, and other moments that reveal both progress and missed opportunities.

Some of these reflections may be sobering, even depressing, but they are essential to understanding the bigger picture of how programming evolves.

Class Perspective

As a Marxist, I often view programming and technology through the lens of class struggle. There are aspects of the modern programming world that deeply trouble me, because capitalism is actively destroying the programming ecosystem. Decisions driven by profit rather than progress have shaped languages, tools, and even entire platforms. In future chapters, when we discuss topics like Windows Phone, we will also examine them from this perspective — asking not only what went wrong technically, but also what went wrong socially and economically.

One case we will explore in detail is the failure of Windows Phone. On the surface, it was a technical and market battle against iOS and Android. But beneath that, it reveals how corporate priorities, licensing models, and profit-driven decisions undermined innovation. By analyzing Windows Phone through both technical and class-based perspectives, we can better understand how capitalism shapes — and often limits — the evolution of programming and technology.

Looking Ahead

This tutorial is more than documentation. It is a new way to learn C++. By combining the clarity of teaching with the power of fast_io, we will explore not only the language itself but also the broader world of programming.

The journey will not stop at the basics. We will move into advanced territory, explore cutting-edge features, and rethink what it means to write modern C++ code in the age of AI.