Advanced Developers Conference C++ - native C++ im Blickpunkt
3. und 4. Mai 2012 in Ohlstadt, Zugspitzland
Native C++ gehört nach wie vor zu den wichtigsten Programmiersprachen – bei der Entwicklung von Betriebssystemen, Treibern oder hochperformanter Software ist sie die erste Wahl. Ein guter Grund für die zweite C++-Spezialausgabe der Advanced Developers Conference (ADC). c++.de hatte nicht nur eine Eintrittskarte für diese Veranstaltung verlost, sondern auch mit Martin Richter – Microsoft MVP und Moderator bei c++.de – einen kompetenten Berichterstatter vor Ort.
Ein Resümee am Anfang
Anfangen möchte ich mit einem kleinen Resümee und der Aussage eines anderen Teilnehmers, die ich wie folgt behalten habe:
„Eigentlich war ich mir bei den Themen nicht ganz sicher, ob ich an der Konferenz teilnehmen soll. So viel Neues gibt es ja doch nicht, außer etwas Windows 8, und über C++11 wird schon lange gesprochen. Aber dennoch bin ich hergekommen, weil einfach auch die Gespräche untereinander beitragen sich in Neuem und Alten zu orientieren! Es hat sich gelohnt herzukommen!“
Ich kann mich dieser Aussage nur anschließen. Es hat sich gelohnt. Es ist nicht die Wissensvermittlung allein. Es ist eine Mischung aus Networking, Bestätigung und auch das Interesse an den Leuten die Produkte herstellen mit denen wir arbeiten. Und mich interessiert was diese zu sagen haben. Es geht mir darum, dass ich mit kritischen Ohren und sehr genau hinhöre was und wie manches gesagt wird, um mir ein besseres Bild davon machen zu können was uns die Zukunft noch bringt und wo ich selbst aufgefordert bin Neues zu lernen.
Manche nachfolgende Berichte sind ausführlicher. Dabei erwähne ich Themen die doppelt vorkamen nur einmal und verweise manchmal auch auf den entsprechenden vorhergehenden Vortrag. Da die Themen C++11, C++/CX, Windows 8 und Metrostyle Apps in mehreren Vorträgen vorkamen, haben sich zum Teil auch Informationen gedoppelt.
Manche Berichte sind etwas kürzer wenn ich denke, dass es genügt, die Stichworte zu erwähnen und ich überlasse es dem Leser sich weitere Infos im Netz zusammen zu suchen, vor allem wenn es um bestimmte Features geht, die seit VS-2010 und C++11 schon länger auf dem Markt sind.
Bei einigen Vorträgen gab es viel Neues für mich, was natürlich die Länge eines Beitrages unwillkürlich erhöht. Und die Wiedergabe von Inhalten ist oft genug auch subjektiv und von dem vorhandenen Wissen beeinflusst. Ich bitte den Leser das zu entschuldigen.
Ohlstadt
Die ADC Konferenz für C++ in Prien am Chiemsee hat schon einen Maßstab gesetzt. Schöne Landschaft, gute Lokation super Wetter. Daran haben letztes Jahr 100 Entwickler teilhaben können.
Dieses Jahr waren es ca. 145 C++ Entwickler und ich schätze davon das ein Viertel davon auch letztes Jahr in Prien waren, so habe ich es während einer Umfrage in einer Session schätzen können.
Die Alpen im Hintergrund, erneut gutes Wetter und ein sehr schönes modernes Konferenzhotel haben hier sogar den Standort im Vorjahr übertroffen.
Die Organisation im Vorfeld und während der Konferenz durch das PPEDV-Team war sehr gut. An diesem selbst gesetzten hohen Maßstab werden sie sich wohl auch zukünftig messen lassen müssen.
Tag 1
Keynote: Visual C++ and the C++ Renaissance (Steve Teixeira)
In der Keynote versuchte Steve Teixeira (Director of Development bei Microsoft) herauszustreichen, was hinter der C++ Renaissance steckt, die wir aktuell erleben können.
Eingestiegen ist er mit dem „Mythos“, dass C++ Programmierer alte Männer mit Bärten sind. Er zeigte eine Statistik über C++ Entwickler, bei der das Gros der Entwickler Ende 20 und Anfang 30 ist.
Dann kam er auf die seiner Meinung nach treibenden Faktoren für die C++ Renaissance (alles alte Bekannte): Cross-Plattformfähigkeit, nahe an der Hardware und schnell, kompatibel, neue Devices, der Zwang/Trend zur Parallelisierung und ein aktueller Performance-Boost durch die neuen produktiven Tools, die C++ Programmierern heute zur Verfügung stehen. Dazu gehört gerade auch C++11, neue Libraries und verbesserte Werkzeuge mit Visual Studio, die auch in schnelleren Entwicklungszyklen veröffentlicht werden.
C++ ist nach seiner Ansicht geradezu prädestiniert für Anwendungen, die responsiv, kompakt und effizient arbeiten müssen. Auf neuen Devices steht eben nicht unbegrenzt Rechenleistung und Speicher zur Verfügung.
Er stellte anschließend die neue Welt vor, die mit Windows 8 und Metro-Style auf uns zukommt: Native C++ Programmierung mit XAML und einer neuen API WinRT. Er warf ein Streiflicht auf C++/CX, der neuen Spracherweiterung für der auf COM und Exception basierenden Welt von WinRT. C++/CX ist eine native Spracherweiterung, die stark an C++/CLI angelehnt ist, aber eben nativen Code erzeugt und alle Funktionen und Bibliotheken der C++11 Welt integrieren kann.
C++ verändert sich auch rapide mit der neue Hardware, die uns zur Verfügung steht. Galt von 1975-2005 noch das Ziel, auf jedem Tisch, in jedem Haus und in jeder Tasche einen Computer zu haben. So konnte die rasante Hardware Entwicklung dafür sorgen, dass wir von 2005-2011 Supercomputer auf jedem Tisch, in jedem Haus und in jeder Tasche hatten.
Aber hier ist das Ende der Fahnenstange erreicht.
2012, also heute, heißt es: „Willkommen im heterogenen Dschungel“. Wie schaffen wir es die heterogenen Devices, Computer lokal und verteilt, in den Griff zu bekommen, egal ob auf jedem Tisch, in jedem Haus oder dem in unserer Tasche.
Von den grundsätzlichen Fähigkeiten und mit den neuen Werkzeugen sieht Steve Teixeira in C++ das Werkzeug der Wahl den neuen Anforderungen zu genügen. Neue Spracherweiterungen mit automatischer Schleifen-Vektorisierung, erweiterten Parallelbibliotheken, ausgereiften ISO normierten Sprachfeatures.
Dazu Werkzeuge wie VS-11, das jetzt auch projektkompatibel zu VS-2010 ist. D.h. einer IDE, mit der man selbst älteren Code mit den Tools aus VS-2008 und VS-2010 kompilieren und linken kann, aber nicht auf die neuen Funktionen in der VS-11 IDE verzichten muss.
Und was erwartet uns als nächstes?
Es wird C++ in der Cloud sein. Daten und Rechenleistungen in der Cloud anzubieten, die schnell und ressourcensparend arbeiten. Mit C++ asynchrone Libraries für diese Anforderungen zu entwickeln, die ein großes Maß an Reaktionsfähigkeit aufweisen.
Modern C++ 11, with VS 2011 (Thomas Totzki)
Der Vortrag, den Thomas Totzki gehalten hat, ist großen Teilen ähnlich den Vorträgen, die er während der C++ Days im Frühjahr dieses Jahres gehalten hat (ich habe in meinem Blog über den Tag in Bad Homburg berichtet).
Alles was hier angesprochen wurde sollte jeder Programmierer in sein eigenes Repertoire integrieren. Denn alle hier erwähnten Sprachfeatures sind wirkliche Produktivitäts-Booster.
Der Reihe nach kamen die neuen STL Funktionen wie auch die Compiler Features zur Sprache:
auto , shared_ptr , unique_ptr , for_each , Lambdas, final , override und so weiter...
Wer diese Features noch nicht in der eigenen Entwicklung einsetzt, sollte sich schnell über sie klug machen und sie verwenden.
Klar kam heraus, dass Garbadge Collection eigentlich niemand braucht, wenn man mit Smart-Pointern die delete s im Code letzten Endes überflüssig macht. Mit den entsprechenden Klassen, die nun zum Standard gehören, ist es nun möglich Exception-safe und ohne Speicherloch zu entwickeln. (Pers. Anmerkung: das war auch schon früher möglich, aber es wird einfacher und normierter. Dem Vorwurf, der C++ immer gemacht wird, dass man Fehler beim Memory-Management machen kann, konnte man immer entgehen, bei entsprechend angewendeter Technik.)
Weiterhin bietet C++ ein ganz klares deterministisches Verhalten bei der Freigabe von Ressourcen ohne weiteren Programmieraufwand, nur Aufgrund der Semantik der Sprache. Gerade dies macht C++ zu einer Sprache der Wahl, wenn es um ressourcensparende Programmentwicklung geht.
Speziell Lambdas machen endlich Funktoren überflüssig und damit auch den Code übersichtlicher. (Pers. Anmerkung: mir persönlich waren Funktoren immer ein Graus, weil sie den Code und die Aktionen auseinandergerissen haben. Mit Lambdas wird das ein Kinderspiel und der Code wird nicht mehr auseinandergerissen).
Auch die neuen R-value-References zur Implementierung der Move-Semantik und deren direkte Anwendung wurde in Beispielen gezeigt.
Abgeschlossen wurde der Vortrag mit der Vorstellung der neuen Schlüsselwörter override , final (vormals in VS-2010 sealed ), die wir aus der .NET Entwicklung schon kennen, die aber Fehler beim Umgang mit virtuellen Funktionen vermeiden helfen.
Building Metro Style Apps using C++ and XAML (Darius Parys)
Darius Parys nahm zu Anfang die Annahme von Steve Teixeira auf, dass alle C++ Programmierer einen Bart haben. Er zeigte einige bedeutende Persönlichkeiten aus der Java-Szene und er musste feststellen, dass diese alle (mittlerweile) einen Bart tragen.
Darius Parys führte uns dann in die Grundlagen von Metrostyle-Applikationen ein, deren Design so gänzlich anders ist als wir es von Desktop-Applikationen gewöhnt sind. Dieses Design und deren Konzept sind natürlich auf Touchdevices abgestimmt. Aber die entsprechenden Gesten und Funktionen lassen sich auch mit Tastatur und Maus einfach ausführen. Mit anderen Worten: auch an einem Desktop PC ohne Touchscreen ist die Bedienung einer Metrostyle-Applikation ohne Probleme möglich.
Das Konzept geht immer von Vollbild-Anwendungen aus. Er zeigte uns, was „Content before Chrome“ bedeutet. Inhalt geht eben vor Steuerelementen und Rahmen, die den Informationsbereich kleiner machen, oder von der Information selbst ablenken. Nur die wichtigsten Elemente bleiben sichtbar. Aber Bedienleisten lassen sich entsprechend von unten, oben, links oder rechts einblenden - bei Bedarf. Der Content füllt im Allgemeinen das gesamte Bild aus.
Verzichtet wird auch auf Farbverläufe und Alphablending, mit dem wir uns die letzten Jahre oft genug beschäftigt haben. Jetzt zielt alles auf starke Kontraste und klare Farben ohne Farbverläufe.
Grundsätzlich geht man nur noch von zwei Farblayouts hell und dunkel aus.
Das sonstige Layout wird durch GUI-Guidelines stark strukturiert und vorgegeben. So sind die Punktgrößen der Schriftarten und Elemente exakt in diesen Guidelines definiert: Titel 42pt, Headlines 20pt, Text 11pt, Subtitle und Anmerkungen 9pt.
Die Darstellung erfolgt normalerweise über nur eine Achse (meistens horizontal) fließend.
Alle Apps haben damit eine gemeinsame Silhouette. Strenge, fest auf Punkten basierende Ränder und Zonen, die alle im Designguide festgeschrieben sind. VS unterstützt mit entsprechenden Templates genau diese Guides, Heights und Margins (siehe auch http://design.windows.com ).
Auch bei der Darstellung von Zusatzsymbolen wird gespart, d.h. es gibt keine Pfeile für einen Jump-Button, der Text allein genügt. Befehle werden in den Content integriert.
Die Ecken erhalten spezielle Zonen, mit denen spezielle Befehlszeilen über Events eingeblendet werden können. In allen Apps kann man so auf dem gleichen Weg an die Settings und Einstellungen gelangen. Die Symbole selbst auf diesen Bars sind keine Grafiken, sondern Schriftensymbole aus Truetype-Dateien.
Die Ausnahmen gibt es natürlich auch - besonders bei speziellen Vollbildanwendungen (immersive Apps) wie Spiele, Videoplayer etc.
Fehler werden (wie oft auch auf modernen Websites) direkt am Element angezeigt nicht in extra Boxen. Kurz wurde auf flaches und hierarchisches Design eingegangen und wir lernten das Konzept von Hub&Spokes kennen (Hub - die Einstiegsseite und Spokes - die jeweilige Detailseite).
Extrem nützlich ist die unterschiedliche Darstellung in verschiedenen Ebenen der Hubs & Spokes, im semantischen Zoom. Hier verändert sich die Darstellung selbst mit dem ein- und auszoomen nicht nur in der Größe, sondern auch in der Art der Informationspräsentation (Hinzufügen, Weglassen von Details und evtl. neuer Umbruch).
Alles wird automatisch animiert durch die fest eingebauten und vorgegeben Gesten und Befehle. Die Animationen lassen sich auch über eine Animation-Library direkt nutzen und ansteuern.
Devices müssen eine Mindestauflösung von 1024x768 haben, die empfohlene Größe ist 1366x768 und mehr. Erst ab dieser Auflösung gibt es einen den Snap-View, d.h. man kann eine Anwendung links oder rechts neben einer anderen Anwendung andocken.
Unterstützen muss dieses Feature allerdings jede Anwendung. Entsprechend müssen die Inhalte dann evtl. anders dargestellt werden oder ein Pausen-Bild bei Spielen angezeigt werden. Alle Anwendungen müssen eine Skalierung über die benutzerdefinierbaren DPIs unterstützen.
Danach wurde ein kurzer Einstieg in WinRT gezeigt. Eine Betriebssystemschicht, die in Windows 8 nur für Metrostyle Applikationen zur Verfügung steht. Eine Welt, komplett getrennt von der Desktop-Welt, die wir bisher unter Windows kennen.
Die WinRT selbst ist fast komplett asynchron. Es gibt einen - nicht kleinen - Subset aus Win32-API-Funktionen, den man benutzen kann. Nicht die gesamte Win32-API steht hier zur Verfügung! Es gibt einen großen Standardvorrat an vordefinierten Funktionen, alle Standard-Controls bieten natürlich auch die vordefinierten Interaktionsmöglichkeiten der Touchoberflächen.
Applikationen werden nach bestimmter Zeit im Hintergrund schlafengelegt (suspended). Aktiv ist immer nur eine Anwendung. Man erhält eine Benachrichtigung über das „schlafengelegt werden“. Die App hat dann 5 Sekunden Zeit ihren Zustand zu speichern. Die Anwendung kann im Suspended Mode jederzeit ohne weitere Nachricht terminiert werden. D.h. zum Terminieren werden der Anwendung nur Millisekunden zugestanden. Es wird aber er erwartet, dass der vorherige Zustand der Anwendung wieder hergestellt wird, egal ob die Anwendung terminiert oder nur suspended wurde.
Anwendungen können auch an Trigger gebunden werden, die dann eine bestimmte Zeit zur Verfügung stellen Aktionen durchzuführen.
Daten können sofort mit anderen Apps geteilt werden (Sharing), man kann ein Bild oder Text in der eigenen App sofort einem anderen Programm zur Verfügung stellen. Man stellt nur einen Kontrakt über die Art der Daten bereit. Die entsprechenden Nutzer (das Email-Programm, oder Grafik-Programm) werden vom System anhand der Kontrakt-Daten ermittelt.
Die Deklaration und Erzeugung der Überfläche erfolgt über XAML (wohl gemerkt in C++ und nicht mit C#). Man kann alle entsprechenden Controls und Trigger-Interaktionen in XAML deklarieren und nutzen, wenn man nicht den Weg über DirectX gehen will und alles wie bei einem Spiel selbst konstruiert und zeichnet.
Es gibt von Microsoft angebotene Workshops um den Umgang mit Metro zu erlernen, inkl. vergünstigtem App-Store-Zugang, Infos dazu in der MSDN http://www.msdn-online.de/win8events .
Tips & Tricks: Upgrade to VisualStudio 11 (Boris Jabez)
Zu Anfang stellte Boris Jabez die größten Unterschiede zwischen den verschiedenen VS-Versionen dar.
Wer noch VC6 benutzt, der wird wohl am meisten mit den Compileränderungen zu kämpfen haben. Es gibt Änderungen am Compiler von VS-11 gegenüber allen 200x-2008 Versionen, aber für die jeweilige Umstellung doch relativ unproblematisch gegenüber einer Migration von VC6.
Ab VS-2010 hat sich das Buildsystem geändert. D.h. hier kann es schon bei größeren Projekten zu größeren Umstellungen kommen, was Projektabhängigkeiten von Libraries und DLLs betrifft. Unter Umständen kämpft man bei einer Migration einen Kampf an mehreren Fronten.
Die wichtigste und gute Neuerung ist, dass die Projektdateien von VS-2011 und VS-2010 kompatibel sind, das erste Mal können Projektdateien sowohl in einer neueren als auch in der alten VS-Version benutzt werden. Wenn man ein Projekt von VS-2010 umstellt wird man gefragt welches Toolset man verwenden möchte. In VS-11 kann man entscheiden ob das Projekt mit VS-2008, VS-2010 oder mit VS-11 kompiliert werden soll, sofern diese VS-Versionen installiert sind.
Bei der Umstellung auf VS-2010 und damit auch auf VS-11 (wenn man von 2008 und früher kommt) gibt es einige Fallen auf die eingegangen wurde. Ich nenne diese hier nur als Stichpunkte:
Linker Output directory
Property Sheet Ordering
Project and Solution dependencies by references not just by ordering
Weiter wurde hingewiesen auf neue Funktionen und Unterschiede in den Compilern:
static_assert
die Option forscope (Scope für Variablen in for -Schleifen speziell in VC6), die eine Konvertierung einfach machen.
wchar_t nun ist nun eine nativer Datentyp ist und kein typedef mehr.
using muss nun verwendet werden, um Memberfunktionen in den aktuellen Scope einer Klasse zu bekommen und die private/protected/public-Klasse einer Memberfunktion oder Variable zu verändern
Template-Instanziierungen müssen unterschiedliche Basistypen haben und sich nicht nur in typedef Namen unterscheiden.
Das Exception-Handling hat sich geändert. Früher in VC6 hat ein catch(…) auch SEH-Exceptions (Structured Exception Handler) gefangen. Das ist in den neuen Compilern per Default nicht so. SEH -Exceptions werden grundsätzlich nicht gefangen.
Hingewiesen würde auch auf die neue Secure-CRT, die meistens auch den Entwickler bei erster Umstellung eines Programmes mit tausenden von Warnungen überschwemmt. Abhilfe schaffen hier Defines _CRT_SECURE_NO_DEPRECATE .
Zur Sprache kamen auch checked Iterator, die durch entsprechende Defines ein- und ausgeschaltet werden können, bzw. deren Verhalten sich einstellen lässt.
Siehe ( _SECURE_SCL , _HAS_ITERATOR_DEBUGGING , _ITERATOR_DEBUG_LEVEL ).
Kurz wies Boris Jabez am Ende noch auf die Fähigkeiten der Static-Code-Analysis hin, über die die neuen VS-Versionen verfügen. Auch diese sind ein extrem guter Helfer in der Entwicklung.
Using Sensors with Windows Metro-Style Apps (Gunter Logermann)
Sensoren und deren Interfaces waren das Thema dieses Vortrages. Viele der neuen Devices verfügen über vielfältigste Sensoren, die exakte Bestimmung der Position und Lage im Raum ermöglichen.
Kosteten manche solcher Sensoren im Modellbau (dreifach Gyroskop) vor 1-2 Jahren noch um die 100 Dollar, kann man gleiche und leistungsfähigere Geräte heute schon für 1/20 des Preises erhalten.
Bisher war es eigentlich immer nur das Problem diese Geräte und Treiber anzusteuern, da diese in der Vergangenheit über eine eigene Schnittstelle anzusprechen waren. Das hat sich mit Windows Vista und Windows 7 geändert. Seitdem stellt Microsoft eine Sensors-API zur Verfügung, die es erlaubt gezielt Geräte unterschiedlicher Hersteller konform anzusprechen.
Damit werden allgemeine Einstellungen für alle Nutzer (Apps) normiert. Und mehrere Nutzer können zeitgleich diese API und damit auch die Sensoren benutzen. Früher wurde oft das GPS-Gerät per serieller Schnittstelle angesprochen, konnte dann aber nur von einem Nutzer verwendet werden.
Beschleunigungssensoren, Neigungssensoren, Lichtsensoren gehören zum Standard von Windows 8 Devices. Optional steht auch ein Location-Service zur Verfügung, der auch ohne GPS-Sensor andere Lokalisationsmöglichkeiten wie WLAN, Mobilfunk und IP-Adresse benutzen kann.
Das Sensor Device Driver Interface (Sensor DDI) besteht entsprechend aus der Sensor-API, der Location-API und den Sensor Services. Angesteuert werden damit 3D-Acceleratoren, 3D-Gyrometer und 3D-Magnetometer mit einer maximalen Auflösung von 16ms.
Über die Sensor Fusion - das ist eine Zusammenfassung der Informationen obiger Sensoren - liefert die API Kompassinformationen, Inclinometer, Device Orientierung. Geliefert wird zum Beispiel ein dreidimensionaler Vektor der Lage im Raum, plus Winkel für die Lage des Gerätes.
Diese Daten können direkt über DirectX in einer entsprechenden Projektion benutzt werden, um eine künstliche 3D Welt damit zu steuern.
Die Nutzung der Sensoren wird über Manifeste gesteuert. Das bedeutet, dass der Nutzer vor der Abfrage der Devices gefragt wird ob der der entsprechenden Nutzung auch zustimmt. Apps können damit nicht ungefragt Positionsdaten ermitteln. Diese und andere Sensoren liefern dann die entsprechenden Events an die Applikationen wie Shake, Rotate, Flip. Gleiches gilt entsprechend für den Lichtsensor, um evtl. eine Darstellung Schwarzweiß auf Weißschwarz mit mehr oder weniger Kontrast umzuschalten.
Die Abfrage der Daten kann roh erfolgen oder über die Sensor Fusion bereits aufgearbeitet. Windows 8 macht es noch einfacher mit Sensoren umzugehen als seine Vorgänger Windows Vista und Windows 7.
MFC 11 Update (Cosmin Dumitru)
Diese Session war leider nur ein weitgehen bekannter Querschnitt über alle möglichen Neuerungen in C++ und deren Integration in VS. Angesprochen wurden die Ribbonbar-API und deren Editor (beide schon bekannt aus VS-2010 SP1 und dem MCNext-Featurepack).
WinRT und C++11 waren das Schwergewicht der Änderungen und Erweiterungen in der C++ Welt, die MFC selbst hat nur ca. 250 Fixes erhalten. Insgesamt gab es leider kaum Neuerungen in der MFC-11.
In dieser Session hätte ich mir etwas mehr Insider Informationen erwartet. Da der Tag auch ziemlich voll war habe ich hier auch nicht mehr viel mitnehmen können.
Abendveranstaltung und FAQ
Am Donnerstagabend waren alle Teilnehmer zu einem Abendevent eingeladen. Wir spazierten gemütlich nach der letzten Session zu einem Grillplatz, der etwas weniger als 20 Gehminuten entfernt war. Dort befanden sich große Zelte. Lagerfeuer, gemütliche Sitzsäcke unter einer Markise auf einem Holzpodest. Es gab deftiges vom Grill, gutes bayrisches Bier und Wein.
Dazu spielte eine Ein-Mann-Band gute Musik, die manchen zum Mitsingen/Mitsummen/Tanzen animierte. Wie auch letztes Jahr gab es zu etwas späterer Stunde im großen Hauptzelt eine FAQ, bei der alle Sprecher Rede und Antwort standen.
Michael Wong wurde gebeten „dafür zu sorgen“, dass es bis zum nächsten Standard nicht mehr so lange dauert. 12 Jahre waren zu viel. Er avisierte ein Ziel mit spätestens 2017 für den nächsten Standard. Zugleich bat er uns, dass wir auch in diesen offenen Prozess einsteigen, mitdiskutieren, und ihn mit Eingaben und Feedback gestalten. Er wurde auch gefragt wie er zwischen Firmeninteressen und Interessen für C++ im Allgemeinen abwägen kann und gab eine sehr diplomatische „breite“ Antwort.
Es wurde gefragt wie sich die neue Metrostyle-Welt in die Windows-API-Welt eingliedert, in denen wir Handles zu Windows-Stations, Desktop, Windows haben. Boris Jabez gab zur Antwort, dass hinter den Kulissen eigentlich alles wie bisher tickt. Mögen auch Metro und DirectX einem suggerieren mit direkten Events zu arbeiten, so gibt es weiterhin Handles und Messageloops im Hintergrund, die alles am Laufen halten.
Es gab eine Bitte aus dem Publikum, dass WinRT auch für den Desktop-Bereich verfügbar gemacht werden sollte, weil viele neue asynchrone Features und anderes interessante Funktionalitäten dort integriert sind. Steve Teixeira gab zur Antwort, dass hier eine Antwort nur das Windows-Team geben könne. Aber in der Diskussion antwortete er auch, dass er sich vorstellen könne, das WinRT tatsächlich den Weg für eine neue Betriebssystemgeneration auf späteren Windows Versionen (nach bereiten kann. Es sollte nicht wundern, wenn hier wirklich (das erste Mal) von einem Ersatz für die Windows-API gesprochen werden kann.
Dann kam natürlich die unweigerliche Frage wie es sich damit verhält, dass VS-11 keinen Support mehr für Windows-XP hat. Steve Teixeira räumte ein, dass Ihre Berechnungen von einer weit niedrigeren Verbreitung von XP (ca. 20% und weniger) zum Zeitpunkt der Veröffentlichung von VS-11 ausgegangen sind. Es zeigt sich aber, dass es noch ca. 46% PCs gibt, die XP nutzen. Damals erschien diese Entscheidung als gut, heute muss man bekennen, dass es ein Fehler war. Man dachte es genüge, wenn Entwickler VS-2008/20010 in die IDE integrieren können.
Endgültiges ist aber von Microsoft noch nicht entschieden. Für welche Betriebssysteme mit VS-11 entwickelt werden kann wird sich erst in den nächsten Wochen entscheiden.