Trend Report 2011: Gordon Breuer gibt Antworten zu Tools, Programmiersprachen und mehr
Unser allseits beliebter Trend Report 2011 geht in die nächste Runde, und heute stellt sich Gordon Breuer unseren Fragen, die er sehr ausführlich und sehr gewissenhaft beantwortet. Was lernen wir daraus? Nun, Gordon ist “Technology Producer” bei der DATA MODA digital Engineering GmbH, hält das Programmierer-Nerd-Konzept für überholt und glaubt, dass parallel programmierte Anwendungen der Zukunft ordentlich skalieren müssen.
Software Dev Blog: Herr Breuer, mit welchem Satz reagieren Sie auf das Vorurteil „Programmieren ist der langweilige Zeitvertreib von Nerds, die keine Freunde haben.“?
Gordon Breuer: Auf Personen ohne Bezug zur Materie mag Programmieren sicherlich genauso langweilig erscheinen wie für mich die Arbeit als Jurist, Arzt oder Laborant. Auch wenn es für Außenstehende nur nach seltsamen Begriffen und unzähligen Sonderzeichen aussieht, so finde ich es durchaus spannend, sich immer wieder neue Lösungsansätze und Ideen auszudenken.
Und ob man einen großen oder kleinen Freundeskreis hat, hängt meiner Meinung nach nicht vom Beruf ab, sondern maßgeblich von der eigenen Persönlichkeit. Ein Romanautor kann ebenso introvertiert sein und sich deshalb in seine selbstgeschaffenen Fantasiewelten flüchten, wie ein Programmierer ein Party-Tier sein kann.
Dass man sich unter einem Programmierer auch heute noch einen blassen, Koffein- und Fastfood-süchtigen Menschen vorstellt, ist ein völlig überholtes Klischee. Der moderne Entwickler ist vielmehr eine Mischung aus Künstler, Analytiker, Querdenker und Visionär. Doch am schönsten hat es Andrée Beaulieu-Green ausgedrückt: „Programmieren ist wie Küssen: Man kann darüber reden, man kann es beschreiben, aber man weiß erst, was es bedeutet, wenn man es getan hat.“
SDB: Von welchem Programmier-Tipp oder Leitsatz haben Sie persönlich am meisten profitiert?
Breuer: Den „ultimativen Tipp“ oder „wegweisenden Leitsatz“ habe ich leider auch noch nicht entdeckt. Am meisten konnte ich vermutlich aber von meiner Neugier nach allem Technischen profitieren. Aber Neugier alleine ist auch nur die halbe Miete: Man muss auch den Ehrgeiz und die Fantasie besitzen, sich Tag für Tag neuen Herausforderungen zu stellen und das, was man gelernt hat, bei jeder Aufgabe aufs Neue zu hinterfragen. Nirgendwo werden Ideen und Prinzipien schneller verworfen und durch neue ersetzt als in der Informationstechnologie! Es ist ein wenig wie mit einer Modelleisenbahn: Man muss immer ein wenig basteln und verändern, denn sobald man fertig ist, wird sie schnell langweilig und bleibt in der Ecke liegen.
SDB: Mit welchen aktuellen Programmiersprachen und/oder Tools sollten sich Developer in diesem Jahr unbedingt beschäftigen, um „up-to-date“ zu bleiben?
Breuer: Das Thema 2011 ist sicherlich HTML5, CSS3 und Javascript. Offensichtlich will diese rund 20 Jahre alte Technik heute jeder überall einsetzen: Sei es, um Programme für Windows 8 zu schreiben, plattformunabhängige Mobile-Anwendungen oder multimediale Websites ohne Zusatz-Plugins. Ob sich dieser Trend auch die kommenden Jahre durchsetzen kann, bleibt jedoch abzuwarten.
Auch immer wichtiger werden Systeme, die für eine beliebige Anzahl an parallelen Prozessen skalieren können: War man früher dankbar für eine schnelle CPU, ist heute das Minimum schon ein Prozessor mit vier Kernen. In modernen Servern verrichten normalerweise mindestens 2 CPUs mit 8 Kernen ihren Dienst. Nicht zuletzt durch die immer erschwinglicher werdenden Cloud-Systeme sind heute Anwendungen mit hunderten Prozessen gleichzeitig denkbar, für die man noch vor zehn Jahren einen Supercomputer benötigt hätte. Dabei wird auch die dezentralisierte und redundante Datenhaltung für jedermann nutzbar und in den nächsten Jahren erheblich an Relevanz gewinnen.
SDB: Für das Betriebssystem der Zukunft haben Sie drei Wünsche frei! Welche sind das?
- Eine intuitive Oberfläche, die sich den jeweiligen Bedürfnissen des Benutzers ohne sein Zutun intelligent anpasst. Die Maschine richtet sich ganz nach dem Menschen, nicht umgekehrt.
- Schnell und zuverlässig: der Mensch sollte nicht in seiner Arbeit ausgebremst oder gar behindert werden durch langsame Systemstarts oder Backups.
- Immer und überall sofort verfügbar, unabhängig davon, ob im Internetcafé oder auf Smartphones, Notebooks, Tablets oder klassischen Workstations. Die Synchronisierung und Aktualisierung aller Komponenten und Daten muss unsichtbar und nicht unbemerkt im Hintergrund funktionieren.
SDB: Welchen Tipp haben Sie für Programmierer, die möglichst schnell ihre Apps erfolgreich im Markt platzieren möchten?
Breuer: Wenn es dafür ein Allround-Konzept gäbe, hätte ich es wohl schon längst umgesetzt. Wichtigstes Element ist die Zielgruppe: Hierfür sollte man sich möglichst frühzeitig mit potentiellen Anwendern zusammensetzen, um die Oberfläche, Abläufe und Funktionalität zu planen. Nur eine außergewöhnliche Idee zu haben hilft nichts, wenn die Anwendung hinterher niemand vernünftig benutzen kann oder das wahre Potential unerkannt bleibt, weil es zu versteckt ist.
Umgekehrt wird eine Applikation, die mehr Schein als Sein ist, auch keine Preise gewinnen. Es geht nicht darum, was man selber für sinnvoll oder logisch erachtet, wenn die Mehrzahl der späteren Benutzer eine völlig andere Erwartung mitbringt. Nur wer im ständigen Dialog mit den Anwendern steht, kann eine erfolgreiche App erstellen. Das bedeutet natürlich auch eine kontinuierliche Weiterentwicklung. Der Anwender muss nicht nur sehen und erleben, dass er und seine Bedürfnisse im Mittelpunkt stehen. Er will sich auch darauf verlassen können, stets eine aktuelle und “weitergedachte” Anwendung zu verwenden.
SDB: Welche(s) Webseite oder Online-Magazin empfehlen Sie, die oder das jeder Entwickler kennen sollte?
Breuer: Die „Bibel“ und erste Anlaufstelle bei Problemen für jeden Entwickler ist die Community rund um StackOverflow.com. Nirgendwo sonst findet man in kürzester Zeit eine so breit gefächerte Kompetenzvielfalt.
SDB: Was gefällt Ihnen am Software Dev Blog? Was könnten wir besser machen?
Breuer: Das Wichtigste sind sicherlich die Inhalte, und diese sind in der Regel immer gut recherchiert und geschrieben. Doch die schönsten Inhalte nützen nichts, wenn die Präsentation nicht stimmig ist. Auf modernen Monitoren mit einer Auflösung jenseits der 1.600 Pixel in der Breite wirken die Beiträge zusammengedrängt. Hier könnte man durch ein moderneres Layout und eine kleinere Marginalie den vorhandenen Platz deutlich besser nutzen.
Auch wird man von der Textmenge erdrückt und verliert so leider schnell die Lust am Lesen: Ein paar Illustrationen, Grafiken oder Fotos innerhalb der Artikel lockern den Lesefluss auf einfache Weise auf und ermöglichen auch das ermüdungsfreie Lesen längerer Beiträge.
Leider wirkt das Software Dev Blog auch ein wenig unpersönlich. Entwickler sind eben nicht nur „Nerds in Kellerräumen“, sondern ganz normale Menschen. Kann man einem Artikel zu einem technischen Thema ein Gesicht geben, nimmt man die ansonsten formlos wirkenden Inhalte ganz anders wahr: „Jemand teilt seine fachlichen Kompetenzen mit anderen“ ist, wenn auch nur unterbewusst, eine ganz andere Botschaft als „Jemand versucht die fachlichen Kompetenzen einer Firma zu vertreten“ – wenn man es auf die Spitze treibt.
Trend Report 2011: Max Seelemann gibt Antworten zu Tools, Programmiersprachen und mehr
Sie ahnen es schon: Neue Woche, neues Interview aus unserer Reihe “Was tut sich eigentlich gerade im Software-Entwickler-Land?”. Heute ist am Start: Max Seelemann, Mac-Entwickler aus Leidenschaft, Referent auf diversen Veranstaltungen wie der Macoun und Inhaber einer eigenen Firma, die sich The Soulmen nennt.
Für Max kommt Funktionalität vor Design, und er empfiehlt allen Entwicklern, sich doch mehr mit Grand Central Dispatch zu beschäftigen. Für optimal skalierende Multicore-Anwendungen.
Software Dev Blog: Herr Seelemann, mit welchem Satz reagieren Sie auf das Vorurteil „Programmieren ist der langweilige Zeitvertreib von Nerds, die keine Freunde haben.“?
Max Seelemann: Ich kenne nicht viele Programmierer, auf die das zutrifft. Meiner Meinung nach ist dieses Vorurteil, wenn es jemals richtig war, schon lange überholt.
SDB: Von welchem Programmier-Tipp oder Leitsatz haben Sie persönlich am meisten profitiert?
Seelemann: “Eat your own dogfood!”. Soll heißen: wer sein eigenes Programm nicht ernsthaft selber nutzt, merkt wahrscheinlich nie, wo sich die wahren Probleme verstecken.
SDB: Mit welchen aktuellen Programmiersprachen und/oder Tools sollten sich Developer in diesem Jahr unbedingt beschäftigen, um „up-to-date“ zu bleiben?
Seelemann: Da ich ja nur in der Apple-Welt unterwegs bin, kann ich auch nur dazu etwas sagen: Das ist derzeit vor allem Automatic Reference Counting für OS X Lion und iOS 5. Aber auch die Unterstützung des neuen Dienstes iCloud wird innerhalb kürzester Zeit zum Standard für alle Programme werden. Aktuell sind auch immer noch Grand Central Dispatch für die Parallelprogrammierung und Blöcke einen genaueren Blick wert. Wer das immer noch nicht nutzt, ist selber schuld.
SDB: Für das Betriebssystem der Zukunft haben Sie drei Wünsche frei! Welche sind das?
Seelemann: Wenn ich ganz ehrlich bin, ist der Status Quo mittlerweile schon relativ ausgereift. Mir fallen zwar eine Masse an kleineren Ideen ein, für drei große Wünsche bin ich aber überfragt.
SDB: Welchen Tipp haben Sie für Programmierer, die möglichst schnell ihre Apps erfolgreich im Markt platzieren möchten?
Seelemann: Natürlich müssen ein paar Grundvoraussetzungen erfüllt sein: Das Programm muss eine klare Funktion bieten und diese zuverlässig erfüllen. Desweiteren sollte es sich von der Konkurrenz deutlich abgrenzen und (sinnvolle) Funktionen bieten, die kein anderes Programm aufweist.
Es geht aber auch um ein optisch ansprechendes Äußeres („Design“), das sehr wichtig und oft sogar essentiell ist. Design darf aber nicht über fehlende Funktionen hinwegtäuschen.
Und schlussendlich muss Marketing betrieben werden. Hierzu sollte man viele (Presse-/Blog-)Leute persönlich anschreiben, gezielt Coupon Codes verteilen, öffentlich auf Twitter und Co auftreten, und vieles mehr.
SDB: Welche(s) Webseite oder Online-Magazin empfehlen Sie, die oder das jeder Entwickler kennen sollte?
Seelemann: StackOverflow.com ist die wohl mit Abstand am besten funktionierende und hilfreichste Webseite für Entwickler. Wenige Fragen wurden dort bisher noch nicht gestellt. Wenn dennoch eine Antwort fehlt, wird sie meistens innerhalb von ein paar Stunden von der Community gefunden.
SDB: Was gefällt Ihnen am Software Dev Blog? Was könnten wir besser machen?
Seelemann: Ich muss ganz ehrlich zugeben, dass ich den Blog erst kürzlich kennengelernt habe. Er deckt sich auch nur sehr wenig mit meinen Aktionsfeldern Mac und iOS. Vielleicht kann man in diese Richtung etwas tun?
Trend Report 2011: Klaus Bock gibt Antworten zu Tools, Programmiersprachen und mehr

Klaus Bock
Neue Woche, neues Interview in Sachen Trend Report 2011. Dieses Mal ist Klaus Bock an der Reihe, der schon mal gern Dieter Nuhr zitiert, sich eine verbesserte Sprachsteuerung wünscht und MSDN grundsätzlich für eine nützliche Webseite hält.
Software Dev Blog: Herr Bock, mit welchem Satz reagieren Sie auf das Vorurteil „Programmieren ist der langweilige Zeitvertreib von Nerds, die keine Freunde haben“?
Klaus Bock: Hier würde ich gerne Dieter Nuhr zitieren: „Wenn man keine Ahnung hat, einfach mal die Fresse halten.“
SDB: Von welchem Programmier-Tipp oder Leitsatz haben Sie persönlich am meisten profitiert?
Bock: “All input is evil until proven otherwise!”
SDB: Mit welchen aktuellen Programmiersprachen und/oder Tools sollten sich Developer in diesem Jahr unbedingt beschäftigen, um „up-to-date“ zu bleiben?
Bock: Da sich mobile Endgeräte immer mehr vom Gadget zum Arbeitsgerät entwickeln, sollte man sich mit möglichst vielen Dingen rund um diese Thematik beschäftigen. Ob das Apps sind oder Webseiten für mobile Geräte, kann jeder für sich entscheiden.
SDB: Für das Betriebssystem der Zukunft haben Sie drei Wünsche frei! Welche sind das?
1. Verbesserte Benutzbarkeit, d.h. die Anwender sollten besser mit Hilfe verständlicher Hilfemenüs unterstützt und nicht durch verwirrende Fehlermeldungen verunsichert werden.
2. Zeitnahe Unterstützung aktueller Hardware-Standards. Ich will nicht jedes Mal erst auf die nächste Version warten müssen.
3. Sprachsteuerung auf Betriebssystemebene.
SDB: Welchen Tipp haben Sie für Programmierer, die möglichst schnell ihre Apps erfolgreich im Markt platzieren möchten?
Bock: Erkundigt euch, was wirklich benötigt wird und bleibt realistisch in der Preisgestaltung. Und eine fehlerfreie Funktionalität ist Grundvoraussetzung für ein gutes Produkt. Ihr wollt ja schließlich Geld dafür.
SDB: Hier können Sie eine Webseite oder ein Online-Magazin empfehlen, die oder das jeder Entwickler kennen sollte.
Bock: Auch wenn viele darüber schimpfen, mir hat das MSDN immer gute Dienste erwiesen.
SDB: Was gefällt Ihnen am Software Dev Blog? Was könnten wir besser machen?
Bock: Mir gefallen der hohe Informationsgehalt sowie die Professionalität des Blogs. Trotzdem könnte es mehr die Persönlichkeit des Autors widerspiegeln. Es ist nun mal ein Blog und kein Nachschlagewerk. Oder etwa doch?
Live von der GDC Europe 2011: Christian Heckl von Lumatix im Interview
Wenn es um 3D-Visualisierungen und Visual Effects geht, hat sich Intel-Partner Lumatix bereits einen internationalen Namen gemacht. Nun möchte das Unternehmen seine innovative Global Illumination-Technologie auch im Spielemarkt platzieren. Im Interview klärt Managing Director Christian Heckl, welche Software-Hersteller von den aktuellen Lösungen profitieren können und wie sein Unternehmen den Intel VTune Amplifier beim Software-Design gewinnbringend eingesetzt hat. Zudem gibt er eine kurze Demo des Tools Atrium Designer.
Hier das sehr sehenswerte Video dazu:
Und weitere Informationen finden Sie auf der Webseite unter www.lumatix.com.
Live von der GDC Europe 2011: Andrew Bowell von Havok im Interview
In diesem Jahr ist das irische Unternehmen Havok aus Dublin Partnerunternehmen von Intel auf der GDC Europe. Havok ist einer der weltweit wichtigsten Software-Schmieden für Simulationstechnologien und Middleware. Zu deutsch: Sie produzieren Scripts und Code, die die Figuren im Spiel, deren Bewegungen, Optik, Kämpfe und Klamotten real erscheinen lassen. Havok arbeitet mit Spielefabrikanten auf der ganzen Welt zusammen. Klassiker wie Halo:Reach nutzen Havok-Lösungen, um komplizierte Rendering- und Textur-Probleme zu lösen.
Am Dienstagmittag hatte ich mit Tom zusammen die Gelegenheit mit Andrew Bowell, dem Head of Product Management, über das Unternehmen, die Lösungen, die Bedeutung der GDC und die Partnerschaft mit Intel zu sprechen.
Live von der GDC Europe 2011: Levent Akyil im Interview
Nach seiner Session “Hotspot Flops & uOps” hatten Tom und ich die Gelegenheit, Levent zu interviewen, um ein paar Kernthemen seiner Präsentation zu vertiefen. Wir wollten von ihm wissen, welche Anforderungen sich auch unter Sandy Bridge-Architekturen für Programmierer ergeben, die Wert auf fehlerbereinigten, parallelen Code legen. Zudem haben wir ihn gebeten, die Idee hinter AVX zu erklären und zu erläutern, warum der VTune Amplifier 2011 XE ein unverzichtbares Tool ist – nicht nur für Games Developer. Viel Spaß damit!
Live-Berichterstattung von der Dotnet Cologne 2011 – Teil 1
Start frei für die dotnet Cologne 2011 – eine der kleineren, aber durchaus wichtigen Entwicklerkonferenzen für den .NET-Bereich.
Positiv fällt auf, dass die Location wirklich schön ist. Freundliche Konferenzräume, heller, wenn auch sehr kleiner Ausstellungsbereich. Negativ bleibt festzuhalten, dass es im Ausstellungs-und Pausenbereich absolut keine Stühle gibt (ich sitze auf einer Kiste). Liebe Veranstalter, das könnt ihr beim nächsten Mal sicher besser machen.
In diesem Jahr nehmen die Themen Silverlight und Windows Phone 7 sehr viel Raum ein. Unser Highlight ist aber selbstverständlich der Vortrag zum Thema „Parallelisierung und Skalierbarkeit in nativer C/C++ Softwareentwicklung – leichter als je zuvor“ von Hubert Haberstock.
Ich werde live davon bloggen, hatte aber schon vorher die Möglichkeit, Hubert ein paar Fragen zu stellen.
Wen adressiert Intel Parallel Studio XE? Welche Programmierer profitieren am meisten davon?
Parallel Studio XE ist ein Visual Studio-Plug-In, das Parallelisierung von nativem Code unter C und C++ ermöglicht. Es bietet diverse Multithreading-Methoden und Tools, die Entwicklern helfen, auf der Hardware-Ebene schnellere und fehlerbereinigte Apps zu programmieren. Auch Fortran wird von Parallel Studio unterstützt.
Von welchen Funktionen profitieren Anwender?
Vor allem natürlich von der Vektorisierung. Programmierer können ab sofort Multimedia-Register-OPs verwenden wie AVX, und so mit einfachen Methoden parallelen Code produzieren. Zudem profitieren Entwickler von der Möglichkeit, ohne Managed Code direkt die Hardware zu steuern.
Stichwort Debugging: Was können Programmierer von den Debugger-Erweiterungen erwarten?
Es gibt eine Parallel Debugging Extension, die selbstverständlich nicht den Microsoft-Compiler ersetzt, unter Cilk, OpenMP und TBB (Intel Threading Building Blocks) aber sehr gute Dienste leistet.
Data Races und Bootlenecks gehören zu den häufigsten Schwachstellen in parallelem Code. Was leistet hier Parallel Studio XE, um Fehler dieser Art zu vermeiden?
Parallel Studio XE bietet leistungsstarke Performance- und Analyse-Tools, die dazu beitragen, typische Fehlerquellen im Code offenzulegen, selbstverständlich zunächst im seriellen Code. Allen voran der VTune Amplifier, der Bottlenecks aufspürt. Ein weiteres wichtiges Tool ist der Inspector, mit dem Entwickler sehr schnell Data Races und Deadlocks erkennen können. Insofern arbeitet der Inspector als Debugger. Als sehr praktisch erweist sich die Option, den kompletten Code zunächst mit dem Statitc Security Analyzer einer sehr schnellen, statischen Analyse zu unterziehen und im Anschluss Codebestandteile in Echtzeit zu prüfen. Der Programmierer weiß dann, wie sich der Code tatsächlich innerhalb der App verhalten wird.
Intel Array Building Blocks steht mit der Beta-Version in den Startlöchern. Kannst du unseren Lesern das Konzept hinter den Intel Array Building Blocks kurz erklären?
Intel Array Building Blocks sind Spracherweiterungen für parallele Patterns, die eine Parallelisierung schon auf Code-Ebene ermöglichen. So werden unter Intel Array Buildung Blocks (ArBB) „for“-Loops durch Vektoranweisungen ersetzt. Ein zweiter Aspekt: Die dynamische Laufzeitumgebung passt den Code auf die Target-Architektur an, also exakt auf die Hardware, für die der Code konzipiert wurde.
Letzte Frage: Mit welchen Tools zur Parallelprogrammierung sollten sich Entwickler unbedingt beschäftigen, um effizienter zu arbeiten?
Keine Frage, das ist Parallel Studio – ein komplettes Öko-System aus optimierenden Compilern, Libraries, Tuning-Tools und Analyzer-Werkzeugen für native Code-Umgebungen. Nicht nur, aber auch gerade für Einsteiger ein unverzichtbares Tool-Set.
Heute nachmittag geht es weiter. Dann werde ich selbstverständlich auch von Huberts Präsentation berichten.
Lernen von erfahrenen Programmierern – Teil 2
Am Mittwoch erst habe ich Auszüge eines Interviews mit eigenen Anmerkungen veröffentlicht, das die Kollegen des SoftTalk-Blog mit dem Software-Entwickler Asaf Shelly geführt haben. Im ersten Teil ging es vor allem um Fragen wie:
Was war deine größte Herausforderung beim Umstieg auf die Parallelprogrammierung?
Was ist ein guter Tipp für angehende Parallelprogrammierer?
Was bringen Sandy Bridge und AVX für parallel ablaufende Anwendungen?
Der zweite Teil hingegen befasst sich mit Fragen wie:
Welche Programmiermodelle werden sich durchsetzen?
Laut Asafs Aussage werden objektorientierte Programmiermodelle wie C++ zwar weiterhin bestehen, allerdings stoßen sie beim Parallelprogrammieren immer wieder an ihre Grenzen, da es sehr schwer ist, Tasks zu kontrollieren. Asaf glaubt, dass man in Zukunft auf der obersten Abstraktionsebene viel stärker in Tasks denken muss, um dann im weiteren Verlauf mit Objekten arbeiten zu können. Allerdings behebt auch diese Heransgehensweise nicht das Problem immer wieder auftretender Zufallsabstürze, wie man sie beispielsweise bei Borland C++ 5.0 beobachten kann. Fazit: neue Programmiermodelle müssen her! Und Tools wie der VTune Amplifier XE für das Aufspüren potenzieller Abstürze von parallel programmierten Anwendungen.
Welche Programmiersprachen bevorzugst du?
Asaf setzt für seine Programme – der ersten Frage zum Trotz – am liebsten noch auf C und C++ (für den Programmcode) und auf C# (für das Programmieren für Bedieneroberflächen). Zudem lassen sich beide Sprachen mithilfe von .NET-Wrappern prima innerhalb derselben Entwicklungsumgebung wie Visual Studio verwenden.
Was sollte man Studenten empfehlen, die sich mit dem Thema Parallelprogrammierung beschäftigen wollen?
Guter parallel programmierter Code beginnt bereits mit dem Design. Denkt also nicht seriell, sondern parallel! Gute Anwendungen müssen sogar parallel programmiert sein, da der Computer von Haus parallel arbeitet, da er ja auf mehrere Ereignisse aus unterschiedlichen Richtungen gleichzeitig reagieren muss. Um den seriellen Eingabestrang, dem wir immer noch unterworfen sind, aufzubrechen, sollte man laut Asaf mit Threads oder Thread-Pools arbeiten. Parallelprogrammierung beginnt also in den Köpfen und erfordert sehr viel Arbeit und Umdenken beim Einsatz bekannter Modelle.
Das vollständige Interview können Sie auf dem SoftTalk-Blog nachlesen (Teil 1 und Teil 2).
Lernen von einem erfahrenen Programmierer: Asaf Shelly
Die lieben Kollegen des SoftTalk-Blog haben einen Intel Black-Belter interviewt, namentlich Asaf Shelly. Asaf Shelly ist Software-Entwickler und arbeitet unter anderem am Thema Parallelprogrammierung. Darüber hinaus wird er auf dem Intel-Entwickler-Event teilnehmen, das am 10. Mai in München stattfinden wird. Grund genug, Teile des Interviews mit Asaf hier wiederzugeben.
Zudem möchten wir Sie an dieser Stelle noch einmal herzlich zu der exklusiven und kostenlosen Entwickler-Veransaltung einladen! Es sind nur noch wenige Plätze frei. Melden Sie sich am besten noch heute an!
Nun aber zu dem Interview: Eine wichtige Frage handelt von den Herausforderungen, mit denen Asaf in Sachen Parallelprogrammierung konfrontiert wurde. Dazu hat er eine ganz einfache Antwort parat: Der Umstieg war die größte Hürde, da es gar nicht so einfach war, parallel und nicht mehr seriell zu denken. So hatte er echte Schwierigkeiten, für kritische Code-Abschnitte einen Mutex anstatt eines Locks zu verwenden. Außerdem musste er beispielsweise erst mal lernen, dass ein Mutex nicht die kritische Sektion, sondern die betreffende Ressource, also die involvierten Speicherbereiche schützt.
Ein sehr schönes Bild hält Asaf auf die Frage bereit, was denn der beste Tipp in Sachen Parallelprogrammierung sei. Sein Antwort: Man muss wie Menschen und nicht wie Maschinen denken. Als konkreten Fall nennt er einen Schnellimbiss, bei dem mehrere Leute an mehreren Verkaufstheken gleichzeitig bestellen, und diese Bestellungen anschließend von verschiedenen Mitarbeitern des Restaurants bearbeitet und an die Kunden ausgegeben werden. Genau so verhält es sich nämlich mit asynchroner Datenverarbeitung mithilfe von Task-Queues, Worker-Threads und vielem mehr.
Interessant sind auch Asafs Antworten auf die Fragen, was Sandy Bridge und AVX für Entwickler tun können. So sieht er in der neuen Core-Architektur eine erhebliche Verbesserung für parallel programmierte Anwendungen, da aufgrund des Core-to-Core-Designs Daten schneller zwischen den einzelnen Prozessorkernen hin- und herfließen können, was die Zahl an Bottlenecks erheblich reduziert.
Als Beispiel führt er die Berechnung einer Aufgabe an, die ohne AVX vier Prozessorkerne mitsamt aller Sycnhronisationsalgorithmen erfordert. Mithilfe von AVX geschieht dies wegen der breiteren Register auf einem einzigen Prozessorkern, was natürlich viel zu besser handhabbar ist. AVX kann laut Asaf in bestimmten Fällen bis zu 16 Prozessorkerne eliminieren.
Die Fortsetzung des interssanten Interviews können Sie am Freitag hier lesen.
[Videochat] Manuel Wille von Nik Software zu Multicore-Optimierungen, AVX und Parallel Studio XE
Hoch droben über den Dächern von Dubrovnik bekam ich ihn vor die HD-Kamera, inklusive Wind und Meerrauschen: Manuel Wille, seines Zeichen Vice President Engineering bei der Nik Software GmbH.
Manuel spricht in unserem Interview über die Optimierungen, die Nik Software an HDR Efex Pro vorgenommen hat. Die Rede ist aber auch von den Leistungssteigerungen, die das Lübecker Unternehmen dank des Einsatzes von AVX-Operationen erzielen konnte. Manuel spricht dabei von 30 bis 40 Prozent.
Und zu guter Letzt geht es noch um die Frage, welche Intel-Tools Nik Software zur Multicore-Optimierung seiner Anwendungen einsetzt. Die zugehörige Antwort fand ich dann doch einigermaßen überraschend. Doch seht am besten selbst…
[Videochat] James Reinders von Intel über Entwicklertools, 2012 und MeeGo
Auf der diesjährigen Intel Software Conference im wundervollen Dubrovnik hatte ich die Gelegenheit, mit Chief Evangelist James Reinders von Intel ein paar Worte zu wechseln. Dabei ging es um vier schlichte Fragen, die er allesamt recht ausführlich beantwortet hat.
Zusammengefasst kann man sagen, dass Entwickler ein oder zwei Augen auf die neuen Intel Array Building Blocks werfen sollten, mit deren Hilfe mathematische Operationen in Zukunft recht einfach auf mehreren Prozessorkernen parallel ausgeführt werden können. Darüber hinaus nahm er sich sogar die Zeit, das Konzept hinter den verwandten Intel Threading Building Blocks zu erläutern.
Darüber hinaus verfolgt Intel mit MIC eine interessante Strategie: dieser Quasi-Nachfolger von Larrabee wird wohl im nächsten Jahr auf den Markt kommen und von sämtlichen Tools unterstützt werden, die es jetzt auch schon gibt. Nur in angepasster und verbesserter Form, natürlich.
Aber auch zu MeeGo und den passenden Entwicklertools hatte James eine dedizierte Meinung, wie sich anhand der Beispiele für künftige MeeGo-Gerätschaften erkennen lässt: so nennt er Tablet-PCs an Nummer Eins, aber auch Handhelds, In-Car-Infotainment- und andere Gadgets werden in Zukunft mit MeeGo laufen. Sagt zumindest Chefentwickler James Reinders.
OOP 2011: Stephen Blair-Chappell über die Parallelisierung von Anwendungen
Während der OOP 2011 in München hatte ich die Gelegenheit mit Stephen Blair-Chappell zu sprechen, der auf der Entwicklerkonferenz am zweiten Tag seinen Vortrag hielt. Die Präsentation lief unter dem Titel “Introducing parallelism into legacy code: Three case studies”. Kurz danach stand uns Stephen für drei kurze Fragen parat:
In welche Fallen tappen Software-Entwickler gemeinhin, wenn sie versuchen, seriell programmierte Anwendungen zu parallelisieren?
Gibt es Fälle, in denen es keinen Sinn macht, Teile einer Software-Anwendung zu parallelisieren?
Existieren gute Beispiele für erfolgreiche und erfolglose Versuche, bestehenden Code zu parallelisieren?
Na, dann viel Spaß mit dem Videointerview!
Maxon setzt auf Intel Softwaretools für optimierte Apps
Dass Maxon alles dafür getan hat, ihre Software-Anwendungen wie Cinema 4D für die aktuellen Intel-Prozessoren zu optimieren, darüber habe ich schon vor längeren gebloggt. Und wie es der Zufall wollte (ok, der natürlich keiner war), konnten wir mit Maxon höchstpersönlich darüber reden, wie sie es immer wieder schaffen, dass ihre Anwendungen besonders performant auf Rechnern mit Intel-Architektur laufen.
Ein wesentlicher Punkt ist unter anderem der Einsatz des Intel C++ Compilers, der laut Maxon schon mal ohne nennenswerte Änderungen am Code etwa 15 Prozent mehr Speed bringt. Aber auch der Intel Thread Profiler steht bei Maxon ganz oben auf der Liste, wenn es darum geht herauszufinden, wie sich das parallelisierte Programm verhält, ob also die anfallenden Threads möglichst gleichmäßig auf die vorhandenen Ressourcen verteilt werden (Skalierung ist hier das Zauberwort).
Darüber hinaus kommen VTune Performance Analyzer und Intel Threading Building Blocks zur Sprache. Ok, dann würde ich mal sagen, den Rest solltet ihr euch am besten selbst ansehen. Viel Spaß dabei!
Skalierende Musikprojekte dank Multithreading: Sonar 8
Der Name Cakewalk ist wohl hauptsächlich eingefleischten Audio-Freaks ein Begriff. So entwickelt das in Boston, Massachusetts beheimatete Unternehmen Software für Musiker und ähnliche Menschen. Eines der wichtigsten Software-Titel von Cakewalk ist Sonar, ein professioneller Audio-Sequenzer, mit dem sich sowohl Audio- als auch MIDI-Tracks parallel mischen, arrangieren und aufnehmen lassen. Ach ja: Sonar hieß irgendwann mal Cakewalk Pro resp. Cakewalk Pro Audio. Aber das nur so am Rande.
Warum ich das alles erzähle? Nun, ich hatte gestern die exklusive Gelegenheit, mit Noel Borthwick ein ausführliches Telefonat zu führen. Noel ist CTO von Cakewalk, also der führende technische Kopf des Unternehmens. So gesehen hat Noel eine ganze Menge über Sonar und dessen Multithread-Fähigkeiten zu erzählen.
Zunächst einmal gab es ein wenig Geschichtliches. So erfuhr ich, dass Cakewalk Pro Audio etwa 1993/94 entstanden ist und damals schon multithread-fähig war. Ok, natürlich nur auf einer Multisocket-Plattform mit zwei parallel geschalteten Prozessoren, mit deren Hilfe es möglich war, die komplette Bedieneroberfläche auf einen separaten Thread auszulagern und die Audio Engine auf die zweite CPU. Das war sicherlich nicht sonderlich effektiv, zeigt aber, das sich Cakewalk schon seit mehr als 15 Jahren mit dem Thema Multithreading beschäftigt – und das sehr erfolgreich, wie die Firmenhistorie zeigt.
Im Jahr 2001 vollzog Cakewalk dann den Namenswechsel: Aus Cakewalk Pro Audio wurde Sonar und damit ein skalierendes Produkt, das auf Basis einer komplett neu entwickelten Audio Engine die Möglichkeiten des damals aufkommenden Software-Multithreadings erheblich besser ausnutzen konnte als sein Vorgänger. Hierfür war neben dem Redesign der Software auch ein eigener Task Scheduler notwendig, der in Sachen Funktionsumfang dem Task Scheduler der Intel TBB ähnelt. Für eine optimale Skalierung werden also die vorhandenen Ressourcen (Kerne) ermittelt und anhand dessen die anstehenden Aufgaben (Tasks) intern in Threads umgewandelt und zur Laufzeit dynamisch auf die vorhandenen Prozessorkerne verteilt.
Multicore-Fähigkeiten mit Spezialtool herausfinden
Im bayerischen Pilsting-Großköllnbach kennt man sich ziemlich gut aus mit der Archivierung von relationalen Datenbanken. Denn in Pilsting-Großköllnbach sitzt die Software-Schmiede CSP GmbH und Co. KG, die das Archivierungstool Chronos entwickelt hat. Diese Anwendung lagert nicht permanent benötigte Daten in ein Langzeitarchiv aus, um so die vorhandenen Datenbankserver kontinuierlich zu entlasten.
Das Extrahieren dieser Daten geschieht in Echtzeit, also während des laufenden Betriebs. Um eine möglichst reibungslose Archivierung zu garantieren, hat sich die CSP schon sehr früh auf das Multithreaden ihrer Anwendung konzentriert.
Das gesamte Konzept ist also auf parallele Datenverarbeitung ausgelegt. Es findet sogar eine doppelte Parallelisierung statt: Es kommt ein Mini-Cluster zum Einsatz, in dem einzelne Server bestimmte Aufgaben übernehmen. Und innerhalb dieser Server gibt es eine hohe Multithreading-Kultur, die eine skalierende Ausführung der Anwendung sicherstellt.
Chronos ist übrigens vollständig in Java programmiert und findet innerhalb der Java Runtime Environment statt, die standardmäßig mit Java-Threads auskommt. Auf diesem Weg können Java-Anwendungen mithilfe bestimmter Bibliotheken und Klassen parallelisiert werden. Für die komplette Verwaltung sämtlicher Threads hat CSP übrigens einen eigenen Threadmanager entwickelt, der im Hintergrund analog zu den Threading Building Blocks die einzelnen Tasks auf die vorhandenen Prozessoren und Threads verteilt. Für eine bestmögliche Auslastung der Ressourcen.
Wieso können sich die Entwickler von CSP aber so sicher sein, dass Chronos wirklich optimal auf Intel Multicore-Plattformen skaliert? Nun, um das herauszufinden, besorgte man sich in Pilsting-Großköllnbach das kostenlose Tool Concurrency Checker, mit dessen Hilfe festgestellt werden kann, ob eine Anwendung effizient auf Intel Multicore-Plattformen läuft.
Und die Entwickler der CSP GmbH waren ziemlich schnell davon überzeugt, dass der Concurrency Checker das richtige Tool für ihre Zwecke ist. Denn sie waren sehr zufrieden mit der Bedienbarkeit des Programms, da sie für einen ausführlichen Multicore-Test gerade mal einen halben Tag investieren mussten. Danach war den CSP-Programmierern klar, dass sich der Concurrency Checker für ihre Zwecke optimal einsetzen lässt. Und dass Chronos auch das hält, was es verspricht: eine optimale Ausnutzung der vorhandenen Systemressourcen, sprich der Prozessorkerne und Threads.
Interview: Visual Studio 2010 und seine Multicore-Fähigkeiten
Während der OOP 2009 gab es die Möglichkeit, mit Microsoft zusammenzusitzen und ein wenig über Visual Studio 2010 und das zugehörige .NET Framework 4.0 zu plaudern. So der Plan! Leider kam es anders, was dazu führte, dass ich am vorigen Mittwoch via Festnetz mit einem der Technikgurus, Dariusz Parys, über diverse Aspekte der Parallelprogrammierung mithilfe des .NET-Framework in der Version 4.0 sprach. Und das ist dabei herausgekommen.
Wie unterstützt das .NET Framework 4.0 die parallele Programmierung?
Hierfür gibt es diverse Komponenten. Es wird sowohl für den Bereich “Managed Applications” – also C# und Konsorten – als auch für native Programmiersprachen (Fortran, C++ etc.) Bibliotheken und ähnliche Dinge geben. Für beide Programmiermodelle wurde die Concurrency Runtime entsprechend aufgebohrt.
Für die .NET-Entwickler gibt es dann zwei neue Modelle, und zwar die Task Parallel Library (TPL) und PLING. Mit der TPL lassen sich Aufgaben abstrahieren, was unter der Oberfläche und mithilfe der Concurrency Runtime zu Threads führt, um deren Verteilung auf die einzelnen Prozessorkerne sich der Entwickler nicht mehr kümmern muss. PLINQ stellt eine parallelisierte Erweiterung von LINQ dar. Und LINQ wiederum ist “eine Komponente von Microsofts .NET-Framework, mit der SQL-, XLink- und XQuery-Anfragen direkt in .NET-Programmiersprachen wie C# 3.0 oder VB.Net 9.0 als Code statt als String eingebunden werden können” (Quelle: Wikipedia).
Aber auch bei den nativen Sprachen gibt es neue Ansätze bezüglich der Concurrency Runtime: Dies ist zum einen die Parallel Pattern Library, die sich mit den Intel Threading Building Blocks vergleichen lässt. Zum anderen bietet Visual Studio 2010 eine Agent Library für C++ und Co, die bestimmte Aufgaben verwalten und ausführen kann.
Was sagen Sie Entwicklern, wenn Sie mit ihnen über die parallele Programmierung reden?
Das hängt davon ab, mit wem ich spreche. Entwickler, die sich zum Beispiel schon länger mit serviceorientierten Anwendungen beschäftigen, in denen separate Aufgaben durch Dienste erledigt werden, verstehen das Konzept der parallelen Programmierung oft schneller als Programmierer, die nur die rein serielle Entwicklung kennen. Wichtig dabei ist die Erkenntnis, dass es in den meisten Anwendungen Programmteile gibt, die man loslösen kann von der restlichen Programmlogik. Ein Beispiel hierfür ist die parallele Speicherung von Daten.
Multicore-Programmierung auf der OOP 2009 [Upd]
Seit gestern läuft eine der größten Entwicklerkonferenzen im deutschsprachigen Raum, die OOP 2009. Dort geht es um vielfältige Softwarethemen und natürlich auch um die Multicore-Programmierung.
Aus diesem Grund werde ich mich heute und morgen Nachmittag im Messezentrum München herumtreiben und diesbezügliche Informationen zusammentragen. So treffe ich unter anderem die Leute der Dotnetpro, die auf der OOP mit einem eigenem Stand vertreten sein werden. Eines ihrer Themen wird die erste deutschsprachige Multicore-Konferenz sein, die am 23. April diesen Jahres ebenfalls in München stattfindet.
Am Dotnetpro-Stand hoffe ich die Hauptredner des Multicore-Powerday zu treffen, Ralf Westphal und Bernd Marquardt. Mit beiden plane ich kurze Interviews, in denen sie mir hoffentlich ein wenig mehr über ihre Sessions auf der Eintagesveranstaltung im April erzählen werden.
Nach diesen Interviews treffe ich mich mit einer weiteren Koryphäe der Multicore-Programmierung: Walter F. Tichy von der Uni Karlsruhe, der um 17:45 Uhr mit seinem Vortrag “Herausforderung Mehrkernsysteme” dran ist. Im Gespräch mit ihm werde ich versuchen, die scheinbaren Widersprüche aufzulösen, die in seinem Gastbeitrag zu stecken scheinen, den er für die Online-Ausgabe der Computerzeitung geschrieben hat. In seinem Vortrag scheint er ebenfalls ein, zwei diskussionswürdige Thesen zu vertreten:
Der Vortrag skizziert die gegenwärtige Hardwareentwicklung und geht dann auf erste Erfahrungen mit der Parallelisierung nicht-numerischer Anwendungen ein. Insbesondere werden einige der üblichen Parallelisierungsempfehlungen als Mythen entlarvt.
Wie dem auch sei, ich bin schon sehr gespannt, was die Herren Westphal, Marquardt und Tichy zu erzählen haben. Und was sonst noch alles auf der OOP 2009 los ist, sehe ich mir ebenfalls an und werde darüber live und in Farbe berichten. So, stay tuned …
Update: Ich habe während der OOP 2009 zwei Vorträge zum Thema Multicore-Programmierung besucht. Daraus sind 12 Thesen zur Multithread-Entwicklung enstanden sowie eine mehrteilige Mini-Serie zum Thema Multicore-Programmierung (Teil 1, Teil 2, Teil 3).
Lernen mit Crytek: Deshalb ist Crysis erfolgreich
Anfang Dezember haben Crytek und Ascaron den Deutschen Entwicklerpreis 2008 verliehen bekommen. Acscaron für Sacred 2 – Fallen Angel und Crytek für Crysis. Beiden Spielen liegt eine Menge an Optimierungsarbeit zugrunde. Soll heißen, dass beide Softwareschmieden ihre Erfolgstitel intensiv auf Multicore-Plattformen abgestimmt haben, damit diese bestmöglich auf zwei, vier, acht oder mehr Prozessorkernen skalieren.
In beiden Fällen wollten wir natürlich wissen, welche Anstrengungen unternommen wurden, um die Spieletitel zu parallelisieren. Tja, und heute haben wir Teil eins unserer Fragen zurückbekommen, und zwar von Crysis. Geantwortet hat der Director of Technology höchstpersönlich, Mister Mark Atkinson. Mark zeichnet übrigens verantwortlich für erfolgreiche Titel wie Burnout Revenge und Football Manager 2009, die er vor seiner Zeit bei Crytek mitentwickelt hat.
Software Dev Blog: Mit welchen Tools haben Sie Crysis für Multicore-Plattformen optimiert?
Mark Atkinson: Wir setzen im Wesentlichen eigene Tools ein, um den Quellcode unserer Spieletitel wie Crysis für Multicore-Plattformen zu optimieren. Aber auch externe Anwendungen wie der VTune Performance Analyzer kommen bei uns zum Einsatz. Dieser ist für uns vor allem wegen des Thread Profilers interessant, mit dessen Hilfe wir überprüfen können, in welchem Umfang und in welcher Qualität die Parallelisierung des Spieletitels gelungen ist.







