Connect with us

Entwicklung & Code

Microsoft wirft Windows PowerShell 2.0 über Bord


close notice

This article is also available in
English.

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

Ein neuer Eintrag hat sich auf die Liste der abgekündigten Windows-Features gemogelt. Windows PowerShell 2.0 wird aus Windows herausfliegen. Die Erinnerung erfolgt rund acht Jahre nach der ersten Ankündigung.


Eintrag auf der "Deprecated Features"-Liste

Eintrag auf der "Deprecated Features"-Liste

Ein neuer Eintrag auf der Deprecated-Feature-Liste weist auf das nahende Ende von Windows PowerShell 2.0 hin.

(Bild: Screenshot / dmk)

Auf der von Microsoft gepflegten Liste der abgekündigten Funktionen, der „Deprecated Features List“, erklärt der Hersteller: „Abkündigungserinnerung: Windows PowerShell 2.0 ist abgekündigt und wird in einer künftigen Windows-Version entfernt. Anwendungen und Komponenten sollten zu PowerShell 5.0+ migriert werden“. Ursprünglich hat Microsoft erstmals das Ende von PowerShell 2.0 zum Release von Windows 10 Build 1709, also im Jahr 2017, verkündet.

Ursprünglich angekündigt hatte Microsoft die PowerShell 2.0 Ende 2008. Der damalige Chef-Architekt Jeffrey Snover kündigte dort die Integration in Windows 7, Windows 2008 R2 und auch Windows Server Core 2008 R2 an. Sie war für Windows XP, Vista und Server 2008 zudem als Add-on verfügbar. Nach nunmehr 17 Jahren will Microsoft die alte PowerShell-Version jetzt abräumen.

Die Entwicklung an PowerShell selbst hingegen geht munter weiter. Aktuell ist die Fassung 5.1 auf vielen Windows-Systemen, aber auch PowerShell 7 steht seit dem Jahr 2020 bereit – als Open Source. Beide Fassungen lassen sich parallel betreiben. Seit Anfang des Jahres entwickeln Microsofts Programmierer mit der Community hier an Version 7.6, die bislang als „preview.2“ verfügbar ist.

Für die Migration alter Skripte für PowerShell 2.0 auf die aktuelle Fassung des Administratorwerkzeugs stehen keine offensichtlichen Anleitungen von Microsoft bereit. Admins sollten sich jedoch langsam an die Anpassung und Tests der bisher genutzten Skripte an die neuen Versionen machen. Zumindest für den Umzug von PowerShell 5.1 zu PowerShell 7.x liefert Microsoft in einem Support-Artikel Informationen zu den Änderungen unter anderem auch in den Methoden und Funktionen.


(dmk)



Source link

Weiterlesen
Kommentar schreiben

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Entwicklung & Code

Software Testing: Retrospektiven richtig gemacht


In dieser Folge spricht Richard Seidl mit Sabina Lammert über wirkungsvolle Retrospektiven. Gemeinsam gehen sie der Frage nach, warum Retrospektiven Teams echte Veränderung ermöglichen – vorausgesetzt, sie werden richtig gestaltet. Sabina Lammert beschreibt, wie zentrale Aspekte wie Vertrauensräume, Prime Directive und methodische Phasen zu nachhaltiger Verbesserung beitragen und welche typischen Stolperfallen es zu vermeiden gilt. Besonders spannend: Wie sich der richtige Themenfokus und alltagstaugliche Maßnahmen auf die Wirksamkeit auswirken.

Bei diesem Podcast dreht sich alles um Softwarequalität: Ob Testautomatisierung, Qualität in agilen Projekten, Testdaten oder Testteams – Richard Seidl und seine Gäste schauen sich Dinge an, die mehr Qualität in die Softwareentwicklung bringen.

Die aktuelle Ausgabe ist auch auf Richard Seidls Blog verfügbar: „Retrospektiven richtig gemacht – Sabina Lammert“ und steht auf YouTube bereit.


(mai)



Source link

Weiterlesen

Entwicklung & Code

Die Produktwerker: Conversational AI – die Beziehung Mensch-Maschine gestalten


Was zeichnet gute Conversational AI eigentlich aus? Welche Prinzipen braucht es für eine gezielte Gestaltung? Darüber unterhalten sich Dominique Winter und Oliver Winter in dieser Folge des Podcasts. Sie klären, wie sich digitale Produkte verändern, wenn Sprache zur primären Schnittstelle wird. Denn sobald man sich mit Systemen unterhält, entsteht etwas, das weit über Funktion hinausgeht: Beziehung. Und diese will gestaltet sein.


Product Owner AI Day, Online-Konferenz am 6. November 2025

Product Owner AI Day, Online-Konferenz am 6. November 2025

(Bild: ipopba/stock.adobe.com)

Der Product Owner AI Day von iX und dpunkt.verlag zeigt dir am 6. November 2025, wie du als Product Owner, Product Managerin oder mit deinem Team KI konkret in deine Arbeit integrieren kannst – von der Discovery bis zum Rollout. Tickets sind zum Frühbucherpreis erhältlich.

Conversational AI ist dabei nicht einfach ein neues Interface. Sie bringt einen neuen Faktor in die Produktentwicklung. Früher waren digitale Produkte vor allem Werkzeuge – heute können sie zu Gesprächspartnern werden. Das verändert Erwartungen, Erleben und Verantwortung bei der Gestaltung. Wer mit Chatbots, Sprachassistenten oder GPT-Integration arbeitet, muss mehr tun als ein paar gute Prompts schreiben. Es geht um Haltung, Verhalten und Beziehung.

Doch dann stellt sich die Frage: Welche Rolle soll die Conversational AI im Produkt einnehmen? Ist sie ein einmaliger Helfer oder ein persönlicher Assistent? Entsteht eine flüchtige Begegnung oder eine langfristige Interaktion? Und wie spiegelt sich das in Sprache, Ton, Humor oder Autonomie wider? Dominique beschreibt, wie Werte und Prinzipien einer Organisation sich konkret in Conversational AI übersetzen lassen – über Tonalität, Reaktionen, Grenzen und Masterprompts.

Interessant ist dabei auch die Rückkopplung Mensch-Maschine, bei dem eine Conversational AI „lernt“, was Nutzerinnen und Nutzer wollen oder brauchen. Lernen ist dabei aber nicht nur Sache der Maschine, sondern auch die Teams hinter dem Produkt müssen beobachten, reflektieren und nachschärfen. Denn User geben Feedback – implizit, durch Nutzung, Sprache, Abbrüche oder Überraschung. Diese Rückmeldungen gilt es ernst zu nehmen. Wer sie ignoriert, verschenkt Entwicklungspotenzial.

Gleichzeitig braucht es Verantwortung. Technisch ist vieles möglich – doch nicht alles sinnvoll. Dark Patterns funktionieren auch in Sprachinterfaces. Doch wer Beziehung aufbauen will, braucht Vertrauen. Und wer Vertrauen will, muss Haltung zeigen. Auch das ist Teil von Conversational AI: ethische Klarheit, bewusste Gestaltung, respektvoller Umgang.

  • Dominique verweist einmal auf die Podcastfolge zum Decision Stack. Dabei bezieht er sich auf die Abhängigkeit von Unternehmenswerten und den Werten, die das Produkt zum Ausdruck bringt.
  • Oliver erwähnt die Folge der „Sendung mit der Maus„, die in sehr einfacher Form vermittelt, was wir heutzutage unter KI verstehen. Auch für Erwachsene sehenswert.

Die aktuelle Ausgabe des Podcasts steht auch im Blog der Produktwerker bereit: „Designprinzipien für Conversational AI„.


(mai)



Source link

Weiterlesen

Entwicklung & Code

Datenparallele Typen in C++26: ein Beispiel aus der Praxis


Nachdem ich in meinem letzten Artikel Neuerungen in C++26: Datenparallele Typen (SIMD) eine theoretische Einführung in das neue Feature von C++ 26 gegeben habe, möchte ich heute mit einem praktischen Beispiel fortfahren.


Rainer Grimm

Rainer Grimm

Rainer Grimm ist seit vielen Jahren als Softwarearchitekt, Team- und Schulungsleiter tätig. Er schreibt gerne Artikel zu den Programmiersprachen C++, Python und Haskell, spricht aber auch gerne und häufig auf Fachkonferenzen. Auf seinem Blog Modernes C++ beschäftigt er sich intensiv mit seiner Leidenschaft C++.

Das folgende Einführungsbeispiel stammt aus der experimentellen Implementierung der SIMD-Bibliothek. Diese Funktionalität wurde unter dem Namen „Data-parallel types (SIMD)“ vollständig in den Entwurf für C++ 26 übernommen. Um das Programm auf den C++ 26-Standard zu portieren, sollte es ausreichen, den Header durch und den Namespace std::experimental durch std::datapar zu ersetzen.


#include 
#include 
#include 
namespace stdx = std::experimental;
 
void println(std::string_view name, auto const& a)
{
    std::cout << name << „: “;
    for (std::size_t i{}; i != std::size(a); ++i)
        
std::cout << a[i] << ‚ ‘;
    std::cout << ‚\n‘;
}
 
template
stdx::simd my_abs(stdx::simd x)
{
    where(x < 0, x) = -x;
    return x;
}
 
int main()
{
    const stdx::native_simd a = 1;
    println(„a“, a);
 
    const stdx::native_simd b([](int i) { return i - 2; });
    println(„b“, b);
     
const auto c = a + b;
    println(„c“, c);
 
const auto d = my_abs(c);
println(‚d‘, d);
 
const auto e = d * d;
println(„e“, e);
     
const auto inner_product = stdx::reduce(e);
    std::cout << „inner product: “ << inner_product << ‚\n‘;
 
const stdx::fixed_size_simd x([](int i) { return i; });
println(„x“, x);
    
println(„cos²(x) + sin²(x)“, stdx::pow(stdx::cos(x), 2) + stdx::pow(stdx::sin(x), 2));
}


Bevor ich mit dem Programm fortfahre, möchte ich die Ausgabe vorstellen.


Screenshot der Ausgabe

Screenshot der Ausgabe

Ausgabe des Beispielcodes

(Bild: Screenshot (Rainer Grimm))

Zuerst möchte ich mich den Funktionen println und my_abs widmen. println gibt den Namen und den Inhalt eines SIMD-Vektors aus und durchläuft dabei dessen Elemente. my_abs berechnet den Absolutwert jedes Elements in einem SIMD-Vektor mit Ganzzahlen und verwendet dabei where, um negative Werte bedingt zu negieren. Deutlich interessanter ist die main-Funktion.

Bei dem SIMD-Vektor a wird jedes Element auf 1 gesetzt, hingegen wird bei dem SIMD-Vektor b dank der Lambda-Funktion jedes Element so initialisiert, dass dieses seinen Index minus 2 besitzt. Dabei kommen per Default durch const stdx::native_simd SSE2-Instruktionen zum Einsatz. Diese SIMD-Vektoren sind 128 Bit groß.

Nun beginnt die Arithmetik. Vektor c ist die elementweise Summe von a und b, d ist der elementweise absolute Wert von c und der Vektor e ist das elementweise Quadrat von d. Zuletzt kommt stdx::reduce(e) zum Einsatz. Dabei wird der Vektor e auf seine Summe reduziert.

Besonders interessant ist der Ausdruck const stdx::fixed_size_simd x([](int i) { return i; }). Durch ihn wird der SIMD-Vektor x mit 16 long-double-Werten von 0 bis 15 initialisiert. Das ist möglich, wenn die Hardware hinreichend modern ist und AVX-252 unterstützt, beispielsweise mit Intels Xeon-Phi- oder AMDs Zen-4-Architektur.

Ähnlich interessant ist die Zeile println("cos²(x) + sin²(x)", stdx::pow(stdx::cos(x), 2) + stdx::pow(stdx::sin(x), 2)). Sie berechnet cos²(x) + sin²(x) für jedes Element, was aufgrund der trigonometrischen Identität des Pythagoras für alle Elemente 1 ist. Es gilt, dass alle Funktionen in außer den speziellen mathematischen Funktionen für simd überladen sind. Dies sind zum Beispiel die grundlegenden Funktionen wie abs, min oder max. Aber auch zum Beispiel exponentielle, trigonometrische, hyperbolische, Potenz- oder Gamma-Funktionen lassen sich direkt auf SIMD Vektor anwenden.

Nun möchte ich noch auf die Breite des Datentyps simd genauer eingehen.

Die Breite des Datentyps native_simd wird durch die Implementierung zur Compile-Zeit bestimmt. Im Gegensatz dazu gibt der Entwickler die Breite des Datentyps fixed_size_simd vor.

Das Klassen-Template simd besitzt folgende Deklaration:


template< class T, class Abi = simd_abi::compatible >
class simd;


Dabei steht T für den Elementtyp, der nicht bool sein kann. Durch den Abi-Tag wird die Anzahl der Elemente und deren Speicher bestimmt.

Zu diesem Klassen-Template gibt es zwei Aliase:


template< class T, int N >
using fixed_size_simd = std::experimental::simd>;
template< class T >
using native_simd = std::experimental::simd>;


Folgende ABI-Tags stehen zur Verfügung:

  • scalar: Speicherung eines einzelnen Elements
  • fixed_size: Speicherung einer bestimmten Anzahl von Elementen
  • compatible: gewährleistet ABI-Kompatibilität
  • native: am effizientesten
  • max_fixed_size: maximale Anzahl von Elementen, die garantiert von fixed_size unterstützt werden

Nach diesem ersten Beispiel zu datenparallelen Typen möchte ich im nächsten Artikel genauer auf deren Funktionalität eingehen.


(rme)



Source link

Weiterlesen

Beliebt