C++ – nicht nur eine Sprache für Enthusiasten, sondern der Motor von Einhorn-Startups
\n\nWenn wir über moderne Startups sprechen, kommen einem meistens Python, JavaScript oder Go in den Sinn. Aber es gibt eine ganze Klasse von Projekten, die von Anfang an auf C++ setzen. Warum? Weil Geschwindigkeit, Speicherkontrolle und Vorhersagbarkeit das sind, was ein gutes Produkt von einem großartigen unterscheidet. In diesem Artikel analysieren wir drei echte Erfolgsgeschichten von Startups, die ihr Geschäft auf C++ aufgebaut haben, und sehen uns an, wie der Code aussieht, der ihnen zum Durchbruch verholfen hat.
\n\nGeschichte 1: JetBrains – IDEs, die sich selbst schreiben
\n\nJetBrains ist nicht nur ein Unternehmen, es ist ein ganzes Ökosystem von Tools für Entwickler. IntelliJ IDEA, CLion, PyCharm, ReSharper – sie alle sind in C++ und Java geschrieben. Aber warum C++? Die Antwort ist einfach: Leistung und die Arbeit mit systemnahen Aufrufen.
\n\nDie Gründer von JetBrains (Sergey Dmitriev, Eugene Belyaev und Valentin Kipyatkov) begannen mit einer Idee: einen intelligenten Code-Editor zu entwickeln, der den Kontext versteht. Dafür musste die Syntax in Echtzeit analysiert werden. In C++ ist das einfacher als in Java, weil man direkt mit dem AST (Abstrakter Syntaxbaum) arbeiten kann, ohne unnötigen Overhead.
\n\nCodebeispiel: Schneller Token-Parser
\n\nSo könnte ein einfacher Lexer in C++ aussehen, der Code in Tokens zerlegt. Genau solche Komponenten liegen jedem Code-Analyzer zugrunde:
\n\n#include <iostream>\n#include <vector>\n#include <string>\n\nenum class TokenType {\n KEYWORD, IDENTIFIER, NUMBER, OPERATOR, UNKNOWN\n};\n\nstruct Token {\n TokenType type;\n std::string value;\n};\n\nstd::vector<Token> tokenize(const std::string& source) {\n std::vector<Token> tokens;\n size_t i = 0;\n while (i < source.size()) {\n if (std::isalpha(source[i])) {\n std::string ident;\n while (i < source.size() && std::isalnum(source[i])) {\n ident += source[i++];\n }\n tokens.push_back({TokenType::IDENTIFIER, ident});\n } else if (std::isdigit(source[i])) {\n std::string num;\n while (i < source.size() && std::isdigit(source[i])) {\n num += source[i++];\n }\n tokens.push_back({TokenType::NUMBER, num});\n } else {\n tokens.push_back({TokenType::OPERATOR, std::string(1, source[i++])});\n }\n }\n return tokens;\n}\n\nint main() {\n std::string code = "int x = 42 + y;";\n auto tokens = tokenize(code);\n for (const auto& t : tokens) {\n std::cout << static_cast<int>(t.type) << ": " << t.value << std::endl;\n }\n return 0;\n}\n\n\nDieser Code ist eine vereinfachte Version dessen, was CLion oder ReSharper tun. In C++ arbeiten solche Parser um ein Vielfaches schneller als in interpretierten Sprachen. JetBrains hat sich für C++ genau wegen dieser Geschwindigkeit entschieden – wenn die IDE „trödelig“ ist, verliert der Entwickler die Konzentration. Und in einem Startup zählt jede Sekunde.
\n\nGeschichte 2: Figma – wie C++ das Webdesign rettete
\n\nFigma ist ein Online-Editor für das Design von Benutzeroberflächen. Scheinbar eine Webanwendung, wozu hier C++? Aber intern verwendet Figma WebAssembly, das aus C++ kompiliert wurde. Warum? Weil das Rendern von Vektorgrafiken im Browser über JavaScript langsam ist. Aber über C++ – blitzschnell.
\n\nDer Gründer von Figma, Dylan Field, arbeitete zuvor bei Microsoft an PowerPoint. Er wusste, dass für komplexe Grafiken ein systemnaher Ansatz nötig ist. C++ ermöglichte es ihm, eine eigene 2D-Engine zu schreiben, die direkt im Browser über WebAssembly läuft. Das Ergebnis: Figma wurde zum Standard für UI/UX-Design.
\n\nCodebeispiel: Dreieck rendern mit C++ in WebAssembly
\n\n#include <emscripten.h>\n#include <cmath>\n\nextern "C" {\n EMSCRIPTEN_KEEPALIVE\n void renderTriangle(int canvasWidth, int canvasHei