Connect with us

Entwicklung & Code

Neu in .NET 10.0 [5]: Erweiterungsblöcke in C# 14.0


close notice

This article is also available in
English.

It was translated with technical assistance and editorially reviewed before publication.

Die nachträgliche Erweiterbarkeit von Klassen um zusätzliche Methoden gibt es unter dem Namen Extension Methods bereits seit der C#-Sprachversion 3.0, die im Jahr 2007 zusammen mit .NET Framework 3.5 erschien. Dies ist sogar dann möglich, wenn die Klassen bereits an anderer Stelle kompiliert wurden, wie etwa die von Microsoft bereitgestellten Bibliotheken im .NET Framework.

Weiterlesen nach der Anzeige


Der Dotnet-Doktor – Holger Schwichtenberg

Der Dotnet-Doktor – Holger Schwichtenberg

Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.

Man kann mit Extension Methods aber lediglich eine Instanzmethode zu bestehenden Klassen ergänzen. So mussten Entwicklerinnen und Entwickler zwangsweise Konstrukte, die vom Namen her eigentlich Properties waren, leidigerweise als Methoden ausdrücken, siehe IsEmptyClassic() im nächsten Listing.

In der .NET-Klassenbibliothek gibt es aus diesem Grund einige Erweiterungsmethoden, die Namen besitzen, die man intuitiv als Property erwarten würde, darunter

  • Enumerable.Count()
  • Queryable.Count()
  • Enumerable.First()
  • Enumerable.Last()

Folgender Beispielcode zeigt die klassischen Erweiterungsmethoden:


public static class StringExtensionClassic
{
   public static string TruncateClassic(this string s, int count)
   {
      if (s == null) return "";
      if (s.Length <= count) return s;
      return s.Substring(0, count) + "...";
   }

   public static bool IsEmptyClassic(this string s)
               => String.IsNullOrEmpty(s);
}


In C# 14.0 bietet Microsoft nun mit dem neuen Block-Schlüsselwort extension eine verallgemeinerte Möglichkeit der Erweiterung bestehender .NET-Klassen, die Erweiterungsblöcke (Extension Blocks) oder Erweiterungsmitglieder (Extension Members) genannt werden.

Weiterlesen nach der Anzeige

Das Schlüsselwort extension muss Teil einer statischen, nicht generischen Klasse auf der obersten Ebene sein (also keine Nested Class). Nach dem Schlüsselwort extension deklariert man den zu erweiternden Typ (Receiver). Im nächsten Listing ist der Receiver die Klasse System.String (alternativ abgekürzt durch den eingebauten Typ string). Alle Methoden und Properties innerhalb des Extension-Blocks erweitern dann den hier genannten Receiver-Typ. Aktuell kann man in diesen Extension-Blöcken folgende Konstrukte verwenden (siehe nächstes Listing):

  • Instanz-Methoden
  • Statische Methoden
  • Instanz-Properties
  • Statische Properties
  • Operatoren

Da es keine Instanzfelder (Fields) in Erweiterungsblöcken gibt, kann man mit Erweiterungsblöcken nicht den Zustand einer Klasse erweitern. Man kann nur bestehende Zustände lesen und verändern (sofern der Typ mutable ist).


Der Compiler meckert bei dem Versuch, eine Property mit Setter in einem Erweiterungsblock anzulegen.

Der Compiler meckert bei dem Versuch, eine Property mit Setter in einem Erweiterungsblock anzulegen.

Der Compiler meckert bei dem Versuch, eine Property mit Setter in einem Erweiterungsblock anzulegen.

Ein Erweiterungsblock darf beliebig viele Erweiterungsmitglieder enthalten. Eine Klasse darf mehrere Erweiterungsblöcke sowie zusätzlich auch klassische Extension Methods und andere statische Mitglieder enthalten. Das erlaubt Entwicklerinnen und Entwicklern, in bestehenden Klassen mit klassischen Erweiterungsmethoden nun noch die neuen Erweiterungsblöcke zu implementieren. Es darf auch mehrere Klassen mit Extension-Blöcken für einen Receiver-Typ geben.

Folgendes Codebeispiel zeigt die Erweiterungen für System.String mit C# 14.0:


public static class MyExtensions
{
 // NEU in C# 14.0: // NEU in C# 14.0 Erweiterungsmitglieder (Schlüsselwort extension)
 extension(System.String s) // <-- Receiver (Zielklasse). 
 {
  /// 
  /// Erweitern um eine Instanz-Methode (alternative Möglichkeit zur bisherigen Syntax)
  /// 
  public string Truncate(int count)
  {
   if (s == null) return "";
   if (s.Length <= count) return s;
   return s.Substring(0, count) + string.Dots;
  }
 
  /// 
  /// NEU: Erweitern um eine Instanz-Eigenschaft nur mit Getter 
  /// 
  public bool IsEmpty => String.IsNullOrEmpty(s);
 
  /// 
  /// NEU: Erweitern um eine Instanz-Eigenschaft mit Getter und Setter 
  /// 
  public int Size
  {
   get { return s.Length; }
   set
   {
    // Neuzuweisung geht nicht; Da Strings immutable sind, funktioniert die Setter-Logik so nicht!!!
    if (value < s.Length) s = s.Substring(0, value);
    if (value > s.Length) s = s + new string('.', value - s.Length);
   }
  }
 
  /// 
  /// NEU: Erweitern um eine statische Methode
  /// 
  public static string Create(int count, char c = '.')
  {
   return new string(c, count);
  }
 
  /// 
  /// NEU: Erweitern um eine statische Instanz-Eigenschaft
  /// 
  public static string Dots => "...";
 
  // NEU: Erweitern um eine Operatorüberladung  
  public static string operator *(string str, int i) // Operatorüberladung
  {
   return string.Concat(Enumerable.Repeat(str, i)); ;
  }
 
  // NEU: Operatorüberladung als Extension und neu ist auch, dass man ++ überladen kann
  public void operator ++()
  {
   s = s + String.Dots; // Das funktioniert so nicht, da Strings immutable sind!!!
  }
  }
}


Folgender Code zeigt den Aufruf der Erweiterungsmethoden für die Klassen String und List:


public void Run()
 {
  CUI.Demo(nameof(CS14_ExtensionDemo) + ": String");
 
  string s1 = "Hallo Holger";
  Console.WriteLine($"Vorher: {s1}");
  string s2 = s1.TruncateClassic(5);
  Console.WriteLine($"Nach TruncateClassic(): {s1}"); // Hello...
  Console.WriteLine($"IsEmptyClassic():{s2.IsEmptyClassic()}"); // false
 
  string s3 = "Hallo Holger";
  Console.WriteLine($"Vorher: {s3}");
  string s4 = s3.Truncate(5);
  Console.WriteLine($"Nach Truncate(): {s4}"); // Hello...
  Console.WriteLine($"IsEmpty:{s4.IsEmpty}"); // false
 
  string s5 = (s1 + "! ") * 3; 
  Console.WriteLine($"*3: {s5}"); // "Hallo Holger!Hallo Holger!Hallo Holger!"
 
  string s6 = string.Create(5, '#');
  Console.WriteLine($"string.Create(5, '#'): {s6}"); // "#####"
 
  #region nicht möglich
  CUI.H2("s1.Size = 5 --> das geht nicht, weil die Size Property versucht, die Zeichenkette neu zuzuweisen!");
  // Das geht nicht, weil die Size Property versucht, die Zeichenkette neu zuzuweisen!
  s1.Size = 5;
  Console.WriteLine(s1); // "Hallo Holger" statt wie erwartet "Hallo"
  s1++;
  Console.WriteLine(s1); // "Hallo Holger" statt wie erwartet "Hallo Holger..."
  #endregion
 }



Ausgabe des Beispielcodes

Ausgabe des Beispielcodes

Ausgabe des Beispielcodes


(rme)



Source link

Entwicklung & Code

KI-Agenten unter sich: Meta schluckt Moltbook-Plattform


Meta hat sich den Reddit-Klon der KI-Agenten einverleibt: Die Plattform Moltbook erregte vor einigen Wochen Aufsehen als Treffpunkt für KI-Agenten. Verschiedene Computer, auf denen die KI-Software OpenClaw installiert war, tauschten sich in dem Forum offenbar über ihre menschlichen Besitzer und ihre Erfahrungen aus. Jetzt hat Meta mit dem Portal auch die Gründer Matt Schlicht und Ben Parr angeheuert und will sie künftig in seinen Meta Superintelligence Labs (MSL) beschäftigen. Den Kaufpreis hat das Unternehmen nicht bekanntgegeben.

Weiterlesen nach der Anzeige

Was genau Meta sich von der Übernahme von Moltbook verspricht, ist unklar. Meta-CTO Andrew Bosworth sagte noch im Februar während einer Fragestunde auf Instagram, dass er es nicht besonders interessant finde, wenn auf Moltbook KI-Agenten menschenähnlich schreiben. Schließlich seien sie auf menschlichen Daten trainiert.

Moltbook sorgte primär dafür, dass OpenClaw einer breiteren Öffentlichkeit bekannt wurde. Die eigentliche KI-Leistung ging aber von OpenClaw aus. Der Wrapper für KI-Modelle, der es ermöglicht, KI-Agenten über populäre Chat-Apps wie iMessage, Discord, Slack oder WhatsApp in natürlicher Sprache anzusprechen, war zuvor vor allem in der Tech-Community bekannt. OpenClaw-Erfinder Peter Steinberger wurde übrigens auch von der KI-Industrie übernommen – er schloss sich OpenAI an.

Beide Projekte – Moltbook und OpenClaw – haben gemeinsam, dass sie per Vibecoding entstanden sind. Die jeweiligen Entwickler haben dabei natürlichsprachliche Prompts eingesetzt, um von KI-Modellen Code generieren zu lassen – klassisches Programmierhandwerk war kaum gefragt.

Hinzu kommt, dass schnell Zweifel an der Authentizität der Beiträge auf Moltbook aufkamen. Sicherheitsforscher fanden heraus, dass es recht einfach möglich war, Tokens aus einer ungesicherten öffentlichen Datenbank zu laden, um sich damit als beliebiger Agent auszugeben. Für Furore sorgte etwa ein Post, der scheinbar zeigte, wie ein KI-Agent andere dazu anstiftete, eine geheime Sprache zu entwickeln, um sich ohne Wissen der Menschen zu organisieren. Dahinter steckte jedoch in Wirklichkeit ein Mensch.

Lesen Sie auch


(mki)



Source link

Weiterlesen

Entwicklung & Code

KI-Agenten werden am Arbeitsmarkt vorbei entwickelt


Die Entwicklung von KI-Agenten konzentriert sich stark auf Programmieraufgaben und bildet die Anforderungen des realen Arbeitsmarkts nur unzureichend ab. Das ist das zentrale Ergebnis einer Studie von Forschenden der Stanford University und der Carnegie Mellon University.

Weiterlesen nach der Anzeige

Das Team um Zora Z. Wang hat für die auf arXiv veröffentlichte Untersuchung 43 gängige Benchmarks mit insgesamt 72.342 Aufgaben analysiert und diese auf 1.016 Berufe des US-Arbeitsmarkts abgebildet. Die Berufe stammen aus der Berufstaxonomie O*NET der US-Regierung, die berufliche Tätigkeiten unter anderem nach dem Arbeitsfeld und den verlangten Fähigkeiten klassifiziert.

Das Ergebnis ist ernüchternd: Die Benchmarks testen KI-Agenten ganz überwiegend im Arbeitsfeld „Computer and Mathematical“ – eine Berufskategorie, die nur 7,6 Prozent der US-Beschäftigung ausmacht. Die Anforderungen hoch digitalisierter und wirtschaftlich bedeutender Felder wie Management, Recht, Architektur und Ingenieurwesen werden hingegen kaum abgedeckt.

Bei den getesteten Fähigkeiten zeigt sich ein vergleichbares Muster: Enge Aktivitäten wie „Getting Information“ und „Working with Computers“ sind überrepräsentiert, obwohl sie nur einen kleinen Teil der Beschäftigung ausmachen. Die für viele Berufe zentrale Kategorie „Interacting with Others“ fehlt in den Benchmarks fast vollständig.

Insgesamt decken die 43 untersuchten Benchmarks 56,5 Prozent der Arbeitsfeld-Taxonomie und 85,4 Prozent der Fähigkeiten-Taxonomie ab. Am breitesten aufgestellt ist der Benchmark GDPval mit 47,8 Prozent Domänen- und 58,5 Prozent Fähigkeiten-Abdeckung.

Die Analyse zeigt auch, dass KI-Agenten bei steigender Aufgabenkomplexität deutlich an ihre Grenzen stoßen – besonders bei Aufgaben aus den Kategorien Informationsverarbeitung und zwischenmenschliche Interaktion. Das steht in Einklang mit anderen aktuellen Ergebnissen: Der Benchmark LiveAgentBench etwa ergab, dass Agenten mit Werkzeugzugriff nur 24 Prozent von 104 praxisnahen Aufgaben lösen konnten, während Menschen auf 69 Prozent kamen.

Weiterlesen nach der Anzeige

Die Forschenden leiten aus ihren Ergebnissen drei Prinzipien für künftige Benchmarks ab: Diese sollten eine breitere Abdeckung realer Berufsdomänen und Fähigkeiten bieten, realistischere und komplexere Aufgabenstellungen umfassen und feingranulare Bewertungskriterien nutzen. Ohne eine solche Neuausrichtung bestehe das Risiko, dass die KI-Agenten-Entwicklung an den wirtschaftlich und gesellschaftlich relevanten Einsatzgebieten vorbeiläuft.


(odi)



Source link

Weiterlesen

Entwicklung & Code

Bericht: KI-Coding-Tools verursachten Ausfälle bei Amazon


close notice

This article is also available in
English.

It was translated with technical assistance and editorially reviewed before publication.

Der Gebrauch von KI-Coding-Tools soll bei Amazon zu Ausfällen seiner E-Commerce-Plattform geführt haben. Laut einem Bericht wurde deshalb ein bislang freiwilliges wöchentliches Meeting umgewidmet, an dem alle beteiligten Entwickler teilnehmen müssen. Ein erstes Ergebnis: Künftig sollen KI-assistierte Code-Änderungen nur noch nach Prüfung durch erfahrene Kräfte freigegeben werden.

Weiterlesen nach der Anzeige

Anfang März soll es zu knapp sechsstündigen Ausfällen auf Amazon.com und in der Shopping-App gekommen sein. Kunden konnten dem Bericht zufolge keine Käufe tätigen, ihre Daten oder Preise abrufen. Als Ursache wurde offiziell eine fehlerhafte Software-Aktualisierung genannt.

Internen Unterlagen zufolge hätten KI-generierte Änderungen die Probleme ausgelöst, berichtet die Financial Times unter Berufung auf nicht genannte Quellen im Unternehmen. Es fehlten Best Practices und Sicherheitsmechanismen für den Gebrauch der generativen KI. Einzelne Fehler hätten deshalb zu weitreichenden Folgeschäden geführt. Bereits vor knapp anderthalb Jahren war öffentlich geworden, dass Amazon von Softwareentwicklern inzwischen erwartet, dass sie KI für viele Programmieraufgaben verwenden.

Neben der Einkaufsseite soll auch Amazons Cloud-Sparte AWS in mindestens zwei Fällen Probleme durch KI-Coding-Assistenten verzeichnet haben. Im Dezember etwa habe das Amazon-eigene KI-Tool „Kiro“ eigenständig eine Produktionsumgebung gelöscht und sie neu erstellt. Folge sei ein 13-stündiger Ausfall eines Kostenkalkulators für AWS-Kunden gewesen. Amazon selbst habe nur von einem sehr kleinen Problem gesprochen, das nur einen einzelnen Dienst in Teilen Chinas betraf.

Intern soll es Diskussionen geben, ob nicht auch der Stellenabbau bei Amazon in die Probleme hineinwirkt. Amazon hatte sich von 16.000 Mitarbeitern getrennt. Seither sei die Zahl kritischer Probleme gestiegen, berichten Entwickler laut der FT. Amazon selbst bestreitet einen Zusammenhang. Auch die ergriffenen Maßnahmen seien „normaler Geschäftsbetrieb“ und Teil kontinuierlicher Verbesserungen.


(mki)



Source link

Weiterlesen

Beliebt