Podbean logo
  • Discover
  • Podcast Features
    • Podcast Hosting

      Start your podcast with all the features you need.

    • Podbean AI Podbean AI

      AI-Enhanced Audio Quality and Content Generation.

    • Blog to Podcast

      Repurpose your blog into an engaging podcast.

    • Video to Podcast

      Convert YouTube playlists to podcasts, videos to audios.

  • Monetization
    • Ads Marketplace

      Join Ads Marketplace to earn through podcast sponsorships.

    • PodAds

      Manage your ads with dynamic ad insertion capability.

    • Apple Podcasts Subscriptions Integration

      Monetize with Apple Podcasts Subscriptions via Podbean.

    • Live Streaming

      Earn rewards and recurring income from Fan Club membership.

  • Podbean App
    • Podcast Studio

      Easy-to-use audio recorder app.

    • Podcast App

      The best podcast player & podcast app.

  • Help and Support
    • Help Center

      Get the answers and support you need.

    • Podbean Academy

      Resources and guides to launch, grow, and monetize podcast.

    • Podbean Blog

      Stay updated with the latest podcasting tips and trends.

    • What’s New

      Check out our newest and recently released features!

    • Podcasting Smarter

      Podcast interviews, best practices, and helpful tips.

  • Popular Topics
    • How to Start a Podcast

      The step-by-step guide to start your own podcast.

    • How to Start a Live Podcast

      Create the best live podcast and engage your audience.

    • How to Monetize a Podcast

      Tips on making the decision to monetize your podcast.

    • How to Promote Your Podcast

      The best ways to get more eyes and ears on your podcast.

    • Podcast Advertising 101

      Everything you need to know about podcast advertising.

    • Mobile Podcast Recording Guide

      The ultimate guide to recording a podcast on your phone.

    • How to Use Group Recording

      Steps to set up and use group recording in the Podbean app.

  • All Arts Business Comedy Education
  • Fiction Government Health & Fitness History Kids & Family
  • Leisure Music News Religion & Spirituality Science
  • Society & Culture Sports Technology True Crime TV & Film
  • Live
  • How to Start a Podcast
  • How to Start a Live Podcast
  • How to Monetize a podcast
  • How to Promote Your Podcast
  • How to Use Group Recording
  • Log in
  • Start your podcast for free
  • Podcasting
    • Podcast Features
      • Podcast Hosting

        Start your podcast with all the features you need.

      • Podbean AI Podbean AI

        AI-Enhanced Audio Quality and Content Generation.

      • Blog to Podcast

        Repurpose your blog into an engaging podcast.

      • Video to Podcast

        Convert YouTube playlists to podcasts, videos to audios.

    • Monetization
      • Ads Marketplace

        Join Ads Marketplace to earn through podcast sponsorships.

      • PodAds

        Manage your ads with dynamic ad insertion capability.

      • Apple Podcasts Subscriptions Integration

        Monetize with Apple Podcasts Subscriptions via Podbean.

      • Live Streaming

        Earn rewards and recurring income from Fan Club membership.

    • Podbean App
      • Podcast Studio

        Easy-to-use audio recorder app.

      • Podcast App

        The best podcast player & podcast app.

  • Advertisers
  • Enterprise
  • Pricing
  • Resources
    • Help and Support
      • Help Center

        Get the answers and support you need.

      • Podbean Academy

        Resources and guides to launch, grow, and monetize podcast.

      • Podbean Blog

        Stay updated with the latest podcasting tips and trends.

      • What’s New

        Check out our newest and recently released features!

      • Podcasting Smarter

        Podcast interviews, best practices, and helpful tips.

    • Popular Topics
      • How to Start a Podcast

        The step-by-step guide to start your own podcast.

      • How to Start a Live Podcast

        Create the best live podcast and engage your audience.

      • How to Monetize a Podcast

        Tips on making the decision to monetize your podcast.

      • How to Promote Your Podcast

        The best ways to get more eyes and ears on your podcast.

      • Podcast Advertising 101

        Everything you need to know about podcast advertising.

      • Mobile Podcast Recording Guide

        The ultimate guide to recording a podcast on your phone.

      • How to Use Group Recording

        Steps to set up and use group recording in the Podbean app.

  • Discover
  • Log in
    Sign up free
Chaos Computer Club - recent audio-only feed

Chaos Computer Club - recent audio-only feed

Technology

Alt werden mit C++ (froscon2024)

Alt werden mit C++ (froscon2024)

2024-08-18
Download Right click and do "save link as"
Für eine langlebige Codebasis ist der Charakter und die weitere Entwicklung der einmal gewählten Programmiersprache bedeutsam. Dies wird verdeutlicht anhand von Beispielen und Erfahrungen im Projekt Lumiera mit der Sprache C++. Diese Sprache bietet Abstraktionsmittel, die sehr hilfreich sein können, in einer großen und komplexen Codebasis die Flexibilität und Änderbarkeit zu erhalten. Allerdings tritt die schrittweise Evolution dieser Sprachmittel selber in Wechselwirkung mit der Entwicklung der Codebasis und erzeugt Wartungsprobleme. Dies wird beleuchtet am Beispiel von Lambdas und Funktoren, der Einführung von RValue-Referenzen, sowie der Entwicklung von Generics und Concepts. Software lebt solange sie änderbar ist. Für langlebige Software ist der Charakter der Programmiersprache bedeutsam. Der Charakter jeder Sprache, und die damit verbundenen Methoden entwickeln sich weiter. Daraus entsteht eine Wechselwirkung mit einer bestehenden Codebasis, die sich ebenfalls weiterentwickelt. Exemplarisch sei dies am Beispiel der Erfahrungen im Projekt Lumiera mit der Sprache C++ aufgezeigt. In diesem OpenSource-Projekt wird Software für professionellen Film/Videoschnitt entwickelt. Die Entscheidung für eine Plattform ist im Kern eine Entscheidung für ein Ökosystem. Ein langlebiges Projekt muss auf Autonomie und Handlungsfähigkeit achten. Daher scheiden die meisten zunächst offensichtlichen und beliebten Plattformen aus. Für Lumiera hat man sich damals für C++ in einem Unix-Umfeld entschieden. Realistische andere Optionen wären noch gewesen: D, Java, C, Haskell. Einmal getroffen, ist eine solche Entscheidung mehr oder weniger endgültig. Denn jede der großen Programmiersprachen steht auch für eine bestimmte Denkhaltung und Herangehensweise. Software bleibt nur änderbar, wenn sie mit den beschränkten menschlichen Fähigkeiten im Einklang steht. Das gilt, sofern Software von Menschen und für Menschen gebaut wird. Die wichtigste Beschränkung liegt hierbei in der Fähigkeit, die Folgen von Änderungen zu verstehen und zu beherrschen. Das wird ermöglicht durch den sachgemäßen Ansatz von Abstraktionen. Durch einen Interface-Kontrakt wird die Implementierung zum Detail, und damit lokal änderbar. Für einen Kontrakt muss aber auch das Verhalten festgelegt werden. Damit dringt die Abstraktion in die Implementierung ein, und erfordert entsprechende Ausdrucksmittel. Der vorherrschende Lösungsansatz für diese Problematik war in den letzten 20 Jahren die Trennung von Infrastruktur und Funktionalität. Ein Stück Funktionalität wird zu einem abstrakten Element, das in einen anderweitig geregelten Kontrakt eingebunden werden kann. Einmal etabliert, könnte ein solches Schema oft an weiteren Stellen angewendet werden, sofern man auch noch von den konkreten Funktionsargumenten abstrahieren könnte. So entsteht die Forderung nach Funktionen auf generischen Argumenten. In der Praxis war der Weg dorthin mühsam und erforderte viele Workarounds. Die Sprachmittel in C++ waren anfangs wenig geeignet und problematisch: im Grunde gab es nur die schon in C nutzbaren Funktions-Pointer. Jedoch hat C++ durch seine Klassen und das Typsystem eine ausgeprägte Stärke im Bauen neuer Abstraktionen. Die Boost-Libraries haben daraus ein neues Sprachmittel geschaffen: Funktions-Objekte. Mit C++11 wurden diese auch Teil der Sprachdefinition; zugleich jedoch wurden auch Lambda-Ausdrücke als neues Sprachmittel eingeführt. Beide Sprachmittel stehen nun gleichberechtigt nebeneinander und ermöglichen völlig neue Anwendungsmuster. Und die Sprache entwickelte sich weiter. Mithilfe der RValue-References wurde das transparente Durchreichen von Argumenten möglich. Die hierfür notwendigen semantischen Anpassungen sind subtil und tückisch. Eine schrittweise Umstellung einer großen Codebasis ist ein langlaufender Vorgang und eine organisatorische Herausforderung. Oft muss man aber Argumente nicht nur durchreichen, sondern eine generische Funktion soll Eigenschaften ihrer Argumente verstehen und sich daran anpassen können. In den meisten älteren Programmiersprachen scheitert an dieser Forderung die Weiterentwicklung in Richtung einer Funktions-Abstraktion. Zum Glück (oder leider) galt das nicht für C++, denn während der Standardisierung der Sprache sind einige Design-Unfälle passiert, deren anfangs gar nicht intendiertes Verhalten in den Compilern dazu verwendet werden konnte, diese »Schallmauer« zu durchbrechen. Gemeint ist die Template-Metaprogammierung, eine Art »schwarze Magie«, mit der man eine funktionale Hilfs-Sprache während des Compilier-Vorgangs ausführen lassen kann. Warum lässt man sich auf schwarze Magie ein? Antwort: weil man dadurch mächtiger wird. Die Sprachmittel werden ausdrucksstärker. In wenigen Zeilen Code lässt sich eine komplexe Funktionalität zuverlässig und sicher realisieren. Dadurch gewinnt man Zeit, über die eigentlichen Anforderungen nachzudenken. Man geht damit aber technische Schulden ein: der Umgang mit der Codebasis erfordert vertiefte Kenntnisse, und einen mathematisch-geprägten Denkstil. Trotzdem war diese Entwicklung in der Praxis derart erfolgreich, dass das C++ - Komitee diesem Trend gefolgt ist, und die Aufgabe übernommen hat, die historisch gewachsene schwarze Magie in klar definierte und sauber verwendbare Sprachmittel inkrementell weiter zu entwickeln. Im Besonderen entstanden so Variadische Ausdrücke und Concepts. Wenn man diese Aufgabe ernst nimmt, kann man sich nicht damit begnügen, einen pragmatischen Gebrauch zu kodifizieren und syntaktisch nett zu verpacken. Vielmehr sind neue Sprachmittel gefordert, die sich zwar in den Stil der Sprache nahtlos einfügen, und auch das gleiche leisten wie die historisch gewachsene Lösung, aber dennoch auf einer neuen Basis stehen, klar definiert und leichter korrekt verwendbar sind. Das ist eine sehr anspruchsvolle Aufgabe; das Ergebnis ist erstaunlich, hat aber auch sehr viel Zeit in Anspruch genommen und ist in manchen Teilaspekten immer noch unfertig. Diese schrittweise Weiterentwicklung der Sprache führt dazu, dass im bestehenden Code eine Menge von Hilfsmitteln entsteht, die aufeinander aufbauen und weithin im Einsatz sind. Jedoch sind die Lösungen aus verschiedenen Entwicklungsstadien untereinander oft nicht kompatibel, da sich die gesamte Herangehensweise geändert hat. In einer größeren Code-Basis entstehen so komplexe interne Binding-Schichten, die erhebliche Probleme bei der Wartung aufwerfen können: zusammenhängende Systeme ziehen sich über weite Strecken durch den Code, und stützen sich jeweils auf Hilfsmittel ab, die untereinander nicht austauschbar sind. Beispiele hierfür sind:
  • Loki-Typlisten vs. Variadic Arguments
  • Type-Traits vs. Concepts
Da die jeweiligen Alternativen den gleichen Zweck auf unterschiedlichem Weg erreichen, kann eine Umstellung herausfordernd sein und läuft auf eine großflächige Überarbeitung etablierter Infrastrukturen hinaus. Daraus erwächst aber auch die Chance, in der Codebasis weithin etablierte Lösungen zu hinterfragen und weiterzuentwickeln. about this event: https://programm.froscon.org/2024/events/3133.html
view more

More Episodes

Einfach Offene Bluesky Feeds bauen (fsck2025)
2025-05-11
Unterwegs in der Welt der mobilen Betriebssysteme - ein Reisebericht (fsck2025)
2025-05-10
LLMs, das Firmen-Wiki und Data Poisoning (fsck2025)
2025-05-10
Milan Meets PipeWire: Deterministic Audio Streaming for everyone (fsck2025)
2025-05-10
Tschüss Spotify und co.: Self-Hosted Musik-Streaming (fsck2025)
2025-05-10
Community in der eigenen Hand - föderiertes forgejo (fsck2025)
2025-05-10
Hört auf, OpenPGP zu benutzen! (fsck2025)
2025-05-10
Verkehrswende: Die Suche nach dem richtigen Werkzeug (fsck2025)
2025-05-10
Ihr habt nen Vogel, euch steig' ich auf's Dach! (fsck2025)
2025-05-09
Leiterfreie Firmware-Freiheit (fsck2025)
2025-05-09
Freifunk in Backnang (fsck2025)
2025-05-09
Meshtastic Solutions to Communications (fsck2025)
2025-05-09
ASCII-Art-Animationen mit COBOL (fsck2025)
2025-05-09
Opening (fsck2025)
2025-05-09
IT Fails in Österreich. Ein Update. (glt25)
2025-04-26
more than alternatives - present and future of self-organized noncommercial FOSS & art server projects (glt25)
2025-04-26
OpenCloud - Exzellentes Filemanagement (glt25)
2025-04-26
systemd's D-Bus Implementation, And Its Python asyncio Binding (glt25)
2025-04-26
Safety ja, Security nein. Analyse eines breit eingesetzten Einsatzmanagmentsystems. (glt25)
2025-04-26
Beyond Microservices: Running VMs, WASM, and AI Workloads on Kubernetes (glt25)
2025-04-26
  • ←
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • →
012345678910111213141516171819

Get this podcast on your
phone, FREE

Download Podbean app on App Store Download Podbean app on Google Play

Create your
podcast in
minutes

  • Full-featured podcast site
  • Unlimited storage and bandwidth
  • Comprehensive podcast stats
  • Distribute to Apple Podcasts, Spotify, and more
  • Make money with your podcast
Get started

It is Free

  • Podcast Services

    • Podcast Features
    • Pricing
    • Enterprise Solution
    • Private Podcast
    • The Podcast App
    • Live Stream
    • Audio Recorder
    • Remote Recording
    • Podbean AI
  •  
    • Create a Podcast
    • Video Podcast
    • Start Podcasting
    • Start Radio Talk Show
    • Education Podcast
    • Church Podcast
    • Nonprofit Podcast
    • Get Sermons Online
    • Free Audiobooks
  • MONETIZATION & MORE

    • Podcast Advertising
    • Dynamic Ads Insertion
    • Apple Podcasts Subscriptions
    • Switch to Podbean
    • YouTube to Podcast
    • Blog to Podcast
    • Submit Your Podcast
    • Podbean Plugins
    • Developers
  • KNOWLEDGE BASE

    • How to Start a Podcast
    • How to Start a Live Podcast
    • How to Monetize a Podcast
    • How to Promote Your Podcast
    • Mobile Podcast Recording Guide
    • How to Use Group Recording
    • Podcast Advertising 101
  • Support

    • Support Center
    • What’s New
    • Free Webinars
    • Podcast Events
    • Podbean Academy
    • Podbean Amplified Podcast
    • Badges
    • Resources
  • Podbean

    • About Us
    • Podbean Blog
    • Careers
    • Press and Media
    • Green Initiative
    • Affiliate Program
    • Contact Us
  • Privacy Policy
  • Cookie Policy
  • Terms of Use
  • Consent Preferences
  • Copyright © 2015-2025 Podbean.com