AP2_FIAE - Programmiersprachen - Fortgeschrittene Konzepte

Deck: AP2_FIAE Kategorie: Programmiersprachen Subkategorie: Fortgeschrittene Konzepte Anzahl Karten: 22


Was sind Exceptions?::Exceptions sind besondere Objekte in der Programmierung, die den Fluss eines Programms unterbrechen und es zu einem speziellen Abschnitt von Code umleiten, der zur Behandlung dieser Ausnahmesituationen gedacht ist.

Warum sollte man Exceptions verwenden?::Exceptions ermöglichen es einem Programm, auf außergewöhnliche oder unerwartete Ereignisse zu reagieren, ohne den normalen Ablauf komplett zu stören. Sie erhöhen die Robustheit und Klarheit des Codes und bieten reichhaltige Fehlerinformationen.

Was ist ein Try-Catch-Block?::Ein Try-Catch-Block ist die Grundlage der Exception-Behandlung. Innerhalb des try-Blocks wird der Code platziert, der potenziell eine Exception auslösen könnte. Falls tatsächlich eine Exception auftritt, wird der Ausführungsfluss an den catch-Block übergeben, in dem die Exception behandelt wird.

Was ist ein Finally-Block?::Ein Finally-Block ist optional und folgt einem oder mehreren catch-Blöcken. Dieser Block wird ausgeführt, egal ob eine Exception aufgetreten ist oder nicht, was ihn ideal für Aufräumoperationen macht.

Wie kann man eigene Exceptions werfen?::Man kann eigene Exceptions werfen, um besondere Fehlerbedingungen anzuzeigen, indem man eine neue Instanz einer Exception-Klasse mit einer Fehlermeldung als Parameter wirft: throw new ExceptionType(“Fehlermeldung”);

Was sind generische Programmierung und Templates?::Generische Programmierung ist ein Konzept, das sich darauf konzentriert, Code so zu schreiben, dass er mit verschiedenen Datentypen wiederverwendbar ist. Templates (in C++) oder Generics (in Java, C#) erlauben es, Typ-Parameter zu verwenden, anstatt Funktionen oder Klassen für jeden einzelnen Datentyp zu schreiben.

Was sind die Vorteile der generischen Programmierung?::Generische Programmierung bietet Typsicherheit, Wiederverwendbarkeit und Leistung. Der Code wird für die genutzten Datentypen zur Kompilierzeit spezialisiert, wodurch kein Overhead zur Laufzeit entsteht.

Was sind Typbeschränkungen und wofür werden sie verwendet?::Typbeschränkungen werden verwendet, um sicherzustellen, dass Generics nur mit bestimmten Eigenschaften oder Methoden eingesetzt werden. Sie stellen sicher, dass Operationen innerhalb generischer Funktionen oder Klassen nur für bestimmte Typen sinnvoll sind.

Was sind gängige Anwendungsbeispiele für generische Programmierung?::Ein klassisches Anwendungsbeispiel für Generics sind Container-Klassen wie Listen, Stapel oder Warteschlangen, die Elemente beliebiger Typen speichern können.

Was ist parallele Programmierung?::Die parallele Programmierung nutzt simultane Recheneinheiten, um Aufgaben in kürzerer Zeit zu erledigen. Dies ist besonders nützlich in Systemen mit Mehrkern-Prozessoren oder in verteilten Systemen.

Was ist der Unterschied zwischen einem Thread und einem Prozess?::Ein Thread ist die kleinste Einheit der Prozessausführung, die parallel zu anderen ausgeführt werden kann. Ein Prozess ist ein Programm in Ausführung, das seinen eigenen Speicherbereich hat. Die parallele Ausführung von Prozessen wird meistens in verteilten Systemen genutzt.

Was ist nebenläufige Programmierung?::Die nebenläufige Programmierung ist mehr auf die Strukturierung von Programmen ausgerichtet, so dass sie mehrere ‘Operationen’ gleichzeitig verarbeiten können. Es geht nicht unbedingt darum, dass Aufgaben gleichzeitig ausgeführt werden, sondern dass das Programm so entworfen wird, als ob dies der Fall wäre.

Was ist ein Mutex und wofür wird es verwendet?::Ein Mutex (Mutual Exclusion) ist ein Synchronisationsmechanismus, der den Zugriff auf Ressourcen schützt, so dass zu einem Zeitpunkt nur ein Thread darauf zugreifen kann.

Was sind Deadlocks und Race Conditions?::Deadlocks sind Situationen, in denen zwei oder mehr Threads ewig auf Ressourcen warten, die von den anderen Threads gehalten werden. Race Conditions sind Fehler, die auftreten, wenn das Ergebnis der Ausführung von der relativen Reihenfolge der Threads abhängt.

Was ist funktionale Programmierung?::Funktionale Programmierung ist ein Paradigma, das Berechnungen als die Auswertung von mathematischen Funktionen behandelt und die Vermeidung von veränderlichem Zustand und veränderlichen Daten hervorhebt.

Was sind die Grundkonzepte der funktionalen Programmierung?::Zu den Grundkonzepten der funktionalen Programmierung gehören Unveränderlichkeit, reine Funktionen, Funktionen höherer Ordnung und Funktionen als Bürger erster Klasse.

Was ist ein Lambda-Ausdruck?::Ein Lambda-Ausdruck bietet eine klare und präzise Möglichkeit, eine Funktion zu definieren. Es ist besonders nützlich in Sprachen, die funktionale Konzepte unterstützen. Ein Lambda-Ausdruck wird oftmals als anonyme Funktion bezeichnet, da sie keine explizite Deklaration wie eine benannte Funktion benötigt.

Was sind die Vorteile der funktionalen Programmierung?::Die Vorteile der funktionalen Programmierung sind einfache Parallelisierung, weniger Bugs durch Unveränderlichkeit und reine Funktionen sowie bessere Modularität durch viele kleine, wiederverwendbare Funktionen.

Was ist Metaprogrammierung?::Metaprogrammierung ist eine fortgeschrittene Technik, die es dir ermöglicht, Programme zu schreiben, die wiederum andere Programme oder sich selbst zur Compile-Zeit oder zur Laufzeit generieren, analysieren oder modifizieren können.

Was ist Reflection und wie hängt es mit Metaprogrammierung zusammen?::Reflection ist ein verwandtes Konzept zur Metaprogrammierung und ermöglicht es einem Programm, seine eigene Struktur und Eigenschaften zur Laufzeit zu untersuchen und zu manipulieren. Reflection wird oft in der Laufzeit-Metaprogrammierung genutzt.

Worin unterscheiden sich Compile-Time und Laufzeit-Metaprogrammierung?::Compile-Time Metaprogrammierung generiert oder verändert Code während der Kompilierung, was typsicher ist und die Laufzeitperformance verbessern kann. Laufzeit-Metaprogrammierung erhöht die Flexibilität eines Programms, kann aber zu höheren Laufzeitkosten und verminderter Vorhersagbarkeit führen.

Wann macht die Nutzung von Metaprogrammierung Sinn?::Die Nutzung von Metaprogrammierung macht besonders Sinn, wenn viel Boilerplate-Code reduziert werden kann, wenn Abhängigkeiten oder Konfigurationen dynamisch zur Laufzeit geladen und angewendet werden müssen oder wenn generische Bibliotheken oder Frameworks für unterschiedliche Typen oder Strukturen entwickelt werden.