Hilfreiche und informative Blogs und Webseiten zum Thema Software-Programmierung
Es ist ja nicht so, dass es im deutschsprachigen Raum keine vernünftigen Ressourcen in Sachen Software-Entwicklung gibt. Zugegeben, umfangreiche und hochprofessionelle Angebote wie Dr. Dobb’s sind in unseren Breitengraden eher selten. Nichtsdestotrotz gibt es eine Reihe nützlicher Quellen und Blogs, die stets einen Blick wert sind. Ich stelle hier meine ganz persönliche Hitliste vor, die selbstverständlich keinerlei Anspruch auf Vollständigkeit erhebt. Und wer seinen Namen respektive den seines Blogs/ seiner Webseite nicht finden sollte – ein kleiner Kommentar reicht aus, und schon sind Sie drin.
Die Unterseite “Parallel Computing” auf MSDN bietet auf jeden Fall einen guten Einstieg in die Welt der Parallelprogrammierung – zumindest aus Microsoft-Sicht. Allerdings wurde das Angebot mit Erscheinen von Windows Phone etwas aufgeweicht, aber interessante Links und Artikel findet man dort immer noch. Unser aktuellen Tipp: sämtliche Videos von der Microsoft BUILD 2011.
Die Kollegen des dotnetpro-Entwickermagazins rund um Chefredakteur Tilman Börner sind zwar für ein gutes Heft bekannt, der Online-Auftritt hingegeben ist nicht unbedingt ihre Stärke. Allerdings findet man regelmäßig News aus der Branche, und die Heftvorschauen und das zugehörige Archiv sind auch ganz nett. Und wer sich für ein Testabo interessiert, sollte die Webseite mal ansurfen.
Wo Heise drauf steht, ist Heise drin. Das gilt natürlich auch für die Developer-Sektion, die der Online-Auftritt des Heise Verlags schon seit langem beheimatet. Dort finden interessierte Entwickler regelmäßig News rund um das Thema Software-Entwicklung, und die Grundlagen-Geschichte können sich auch mehr als lesen lassen. Nett sind auch die fünf Entwickler-Blogs, in denen Spezialisten ihres Fachs regelmäßig Einblicke in ihr Seelenleben gewähren.
“Code Inside” nennt Robert Mühsig seinen Blog rund ums Thema Software-Entwicklung, und der Name ist Programm. Denn was Robert hier bloggt, ist aller Ehren wert. Ob das seine persönliche Einschätzung hinsichtlich der Microsoft BUILD ist oder sein Gedanken zu der Zukunft von Javascript – Robert lässt uns daran teilhaben, und das sehr persönlich und sehr regelmäßig. Und richtig toll sind seine Grundlagenartikel zu HTML, ASP.NET und Co.
Wer sich für .NET in seiner Gesamtheit interessiert, kann entweder bei Microsoft stöbern gehen oder dem .NET-Community-Netzwerk DotNet German Bloggers einen Besuch abstatten. Dort werden sämtliche diesem Blognetzwerk zugehörigen Blogs zu einer großen Webseite zusammengefasst, die regelmäßig über die deutschsprachige .NET-Landschaft berichtet. Sehr besuchenswert!
Das Blog von Gordon Breuer aka anheledir trägt zwar in der “Tagline” den Zusatz “Gordon Breuer’s Blog about .NET-Development and the Windows Phone Platform”, aber erstens hat sich das Ganze recht intensiv in Richtung Windows Phone verschoben und findet zudem ausschließlich in Deutsch statt. Schön an dem Blog sind die detaillierten Tipps und Tricks rund um die mobile Plattform von Microsoft. Da sollte für jeden etwas dabei sein. Und wer wissen will, was Gordon sonst noch macht, dem sei seine Portfolio-Übersicht empfohlen.
Wenn sich ein Seite “Der Softwareentwickler Blog” nennt, sollte man auf der richtigen Seite sein, oder?! Und in diesem Fall ist das auch so, wobei sich die Macher des Blogs nicht so ganz entscheiden können, ob sie vorwiegend über Unity3D berichten, oder doch über Windows 8 oder Android 4.0 oder sonst was. Aber zum Stöbern und Querlesen taugt das Weblog allemal.
Codekicker gebührt der krönende Abschluss meiner Rundschau in Sachen nützliche Blogs und Webseiten für Software-Entwickler. “Krönend” zum einen, weil dieser Blog dort aufgeführt wird und zum anderen, weil das Konzept so schlicht wie genial ist: Entwickler helfen Entwicklern. Wenn Sie also eine Frage haben, deren Antwort Sie alleine nicht finden können, ist Codekicker eine gute Anlaufstelle. Denn hier hat der Begriff “Community” noch seine Berechtigung, da die Gemeinschaft sich selbst hilft. Nachahmenswert, wie ich finde!
SDK für AMT 7.0, Google+ und 25 fiese Programmierfehler
Heute mal in aller Kürze ein paar aktuelle Surf- und Download-Tipps. Den Anfang macht natürlich Intel:
- Intel hat mit dem neuen AMT 7.0 ein neues SDK veröffentlicht. Von praktischen Snippets über Source-Code-Support bis hin zu host-basiertem Konfigurations-Support bietet das Software Developer Kit Entwicklern nun deutlich mehr Komfort und Möglichkeiten (detaillierte Informationen zum SDK und eine Download-Option finden Sie auf dieser Seite). In dem Zusammenhang sei auch auf das Video Host-Based Configuration and Setup verwiesen.
- Google+ beherrscht derzeit die IT-Schlagzeilen und wird mit vielen Vorschusslorbeeren bedacht. Allerdings nicht von Seiten der App-Entwickler. Denn um diese kümmert sich Google bislang noch recht stiefmütterlich. Es gibt noch keine freien APIs oder Spezifikationen. Immerhin hat Google+ eine Seite für die Registrierung interessierter Entwickler ins Netz gestellt.
- Eine interessante Statistik hat Heise Developer zitiert: Die Top 25 der gefährlichsten Fehler in der Softwareentwicklung. Auf Platz 1 steht „SQL Injenction“, also das Ausnutzen einer Schwachstelle in einer SQL-Datenbank. Auf Platz 2 folgt die fehlerhafte Anbindung von Anwendungen an das jeweilige Betriebssystem. Das mag auf den ersten Blick sehr oberflächlich und profan erscheinen, wer sich aber die Mühe macht, die komplette Studie zu lesen, erfährt Details zu typischen Programmierfehlern und löblicherweise auch Hilfestellungen inklusive Code-Beispielen. Runde Sache!
Lesetipp: Elektroniknet.de über die “Softwarefirma Intel”
Ok, die jährlich stattfindende Intel-Software-Konferenz iSTEP ist schon wieder eine ganze Weile her, aber nichtsdestotrotz hat es sich Kollege Joachim Kroll von elektroniknet.de nicht nehmen lassen, die Veranstaltung und seine Lehren und Erkenntnisse daraus auf drei Seiten zusammen zu fassen. Es ist ein sehr gelungener Beitrag geworden, dessen Kernaussagen ich ein wenig kommentieren möchte.
Einer der großen Meilensteine war dabei die Übernahme des Embedded-Softwareherstellers Wind River durch Intel.
Absolut richtig. Allerdings ist die Schlussfolgerung des Kollegen Kroll nicht ganz zutreffend:
Einzig und allein die Ankurbelung des Prozessorgeschäfts ist die Triebkraft, die die Aktivitäten Intels antreibt.
Das stimmt im Falle des Wind-River-Deals so nicht ganz, wenn man sich die derzeitige Embedded-Strategie Intels ansieht. Denn mit der Akquisition des Embedded-Spezialisten hat man nicht nur in Sachen Multicore und Parallelisierung viel Expertise eingekauft, sondern auch eine Menge Know-how im Bereich Mobile Linux und Mobile Gadgets ins Haus geholt. Und das kann Intel hinsichtlich seiner Moorestown-MeeGo-Smartphone-Aktivitäten ganz gut gebrauchen.
Vielmehr wird Intel auch mit der Software »inside« bleiben und Entwicklungswerkzeuge, Bibliotheken und Middleware für Betriebssystemhersteller und Anwendungsentwickler anbieten.
Diesen Passus finde ich ein wenig verwirrend. Klingt so, als ob Intel gerade dabei ist, zur Beschleunigung bestehender Software-Titel Tools auf den Markt zu bringen, die Software-Entwickler dabei unterstützen sollen, ihre Apps zu parallelisieren. Dass das so nicht stimmt, weiß der Autor allerdings schon, nur an dieser Stelle könnte der Eindruck entstehen, als ob Intel mit Software-Tools bis dato nix am Hut hat.
Echte Parallelität und »paralleles Denken« bei der Konzeption von Anwendungen stehen hingegen noch ganz am Anfang.
Hm, wie soll man diese Aussage bewerten? Sicher, viele Entwickler verlassen sich nach wie vor darauf, dass ihre Anwendungen von schneller werdenen Prozessoren und Architekturen beschleunigt werden, was natürlich nicht stimmt. Allerdings sind vor allem die größeren Entwicklerschmieden schon längst auf den Parallel-Zug aufgesprungen. Da kann man einfach mal bei DivX, Nik Software, Crysis, Exasol, Maxon, Nero und all den anderen nachfragen.
Eine fest codierte Verteilung (z.B. mit pthreads oder Windows threads) ist aber wenig zukunftssicher.
Absolut richtig! Der daraus resultierende Rat, den Software-Spezialisten wie Mario Deilmann oder andere geben, lautet: “Denkt in Tasks, nicht in Threads!”. Denn das thread-basierte Programmieren läuft bei vielen Anwendungen auf eine schlecht skalierende Programmausführung hinaus und ist zudem sehr fehleranfällig. Viel besser und effizienter ist es hingegen, seine Anwendung von Anfang an so zu strukturieren, dass eine Abstraktion des Quellcodes möglich ist. Und mit den richtigen Frameworks wie Intel TBB oder .NET 4 von Microsoft muss sich der Programmierer um das Verteilen der Tasks auf die zugehörigen Threads gar nicht mehr kümmern.
Allerdings ist eine neue Programmiersprache für die Parallelverarbeitung nicht in Sicht [...]
Tja, eine gewagte Aussage. Denn mit funktionalen Programmiersprachen wie F#, die mit dem Erscheinen von Visual Studio 2010 Bestandteil der Microsoft-Entwicklungsumgebung ist, lässt sich die Parallelprogrammierung durchaus vereinfachen. Inwieweit sich F# und andere funktionale Sprachen durchsetzen werden, ist natürlich fraglich.
Viele Entwickler suchen allerdings nach weniger anspruchsvollen Erweiterungen [wie OpenMP und die MPI-Bibliothek], mit denen sich in C/C++ geschriebene Desktop- und Embedded-Anwendungen parallelisieren lassen [wie mit Intel TBB].
Es stimmt natürlich, dass OpenMP nicht so mächtig ist wie die C++-Bibliothek Intel TBB. Aber OpenMP als anspruchsvolle Erweiterung zu bezeichnen, ist ein bisschen übertrieben. Gerade mit OpenMP lassen sich mit wenigen Handgriffen vor allem Schleifen parallelisieren. Hierzu bedient man sich lediglich einiger, weniger Pragmas, die in den bestehenden Quellcode eingefügt werden müssen. Der Rest geschieht dann quasi von selbst.
Nützliche Online-Infos rund ums Parallele Programmieren
Über das künftige Multithread-Programmiertool Parallel Studio von Intel habe ich an dieser Stelle ja schon öfter berichtet. Und heute erreichte mich die Nachricht, dass es ab sofort eine komplett neu eingerichtete Webseite gibt, auf der es eine Menge Infos zu diesem Programmierwerkzeug gibt. Klar, dass ich mir das mal genauer ansehen musste.
Mein erster Gedanke zur neuen Webseite rund um die parallele Programmierung: sehr aufgeräumt. Denn die Seite besteht lediglich aus einer Handvoll von Verweisen auf Informationen, die sich mit den unterschiedlichen Aspekten des Parallel Computing befassen.
Dazu gehören nützliche Infos zu Parallel Studio, die nur einen Mausklick entfernt sind. Dort könnt ihr euch über die einzelnen Tools der Suite informieren (Composer, Inspector und Amplifier). Ihr könnt euch aber auch für das Beta-Programm eintragen oder sogar bei QT software oder der SOS Software Service GmbH bereits heute ein Paket von Parallel Studio vorbestellen. Oder seht euch einfach mal das Video an, dass Intel mit dem Parallel-Guru James Reinders gedreht hat.
Aber die Webseite hält auch eine Menge an Informationen für alle HPC-Enthusiasten (High Performance Computing) bereit. Hier geht es primär um die ganzen anderen Tools, die Intel für das Multithreaden und Optimieren von Hochleistungsanwendungen bietet. Die Rede ist also von Compilern, Threading Building Blocks, Integrated Performance Primitives, Math Kernel Library, Thread Checker und anderen Tools.
Übrigens: All diese Produkte können ausprobiert und auch gekauft werden. Und einige dieser Software-Pakete kann man sogar kostenlos nutzen, solange man damit keine kommerzielle Anwendungen baut.
Nützliche und kostenlose Entwickler-Tools
Kennen Sie eigentlich die Code- und Download-Seite des Intel Software Network? Nein?! Dann wird’s aber höchste Zeit. Auf dieser sehr nützlichen Webseite finden Sie diverse Tools, aber auch Sourcecode-Beispiele, die Ihre tägliche Arbeit rund um die Software-Entwicklung erleichtern und verbessern sollen.
Finden Sie zum Beispiel mit dem Concurrency Checker heraus, ob Ihre Software tatsächlich parallel programmiert wurde und wie sich der Multicore-Code zur Laufzeit verhält. So spüren Sie relativ einfach Fehler im Quellcode auf. Anhand der Ergebnisse wissen Sie dann schon mal ziemlich genau, wo es bei Ihrer Software in Sachen Multithreading hakt. Anschließend können Sie mithilfe der Intel Threading Analysis Tools die Fehler beheben und aus Ihren Anwendungen echte Multicore-Anwendungen machen.
Aber auch kostenlose Entwickler-Werkzeuge für nicht-kommerzielle Softwareprojekte finden Sie dort. Dazu gehören beispielsweise die Intel-Compiler (C++ und Fortran) für Linux sowie der VTune Performance Analyzer für Linux. Aber auch die C++-Multithread-Bibliothek Intel Threading Building Blocks lässt sich für nicht-kommerzielle Zwecke gratis nutzen.
Tipps, Infos & Tricks rund ums parallele Programmieren
Das Thema „Paralleles Programmieren“ ist ein weites Feld, auf dem man sich ohne die passenden Tipps und Tricks, ohne hilfreiche Anleitungen und nützliche Webseiten-Empfehlungen ziemlich schnell verirren kann. Aus diesem Grund hat das Medienunternehmen Jupiter Online Media gemeinsam mit seinem Partner Intel eine Webseite ins Leben gerufen, die genau das leisten soll: helfen, anleiten, empfehlen.
Diese Seite nennt sich go-parallel.com und berichtet in regelmäßigen Abständen über das parallele Multicore-Universum der Software-Entwicklung. Zu diesem Zweck ist die Seite in fünf Bereich unterteilt: „Getting Started“, „Concurrent Programming“, „Community and Opinion“, „Tools and Tips“ und „Advanced Concepts“.
So findet man in „Getting Started“ hilfreiche Anleitungen, wie man beispielsweise eine komplette TBB-Umgebung unter Windows einrichtet und wie die Programmierung einer TBB-kompatiblen Anwendung funktioniert. Aber auch Themen wie OpenMP werden dort behandelt.
Mehr Leistung mit mehreren CPUs: Multicore Computing
Der dritte und letzte Teil unserer kleinen Einführungsrunde hinsichtlich der Frage, was die Veranstaltung hier überhaupt soll, handelt vom Thema „Multicore“. Dass sich dahinter mehr verbirgt als die Frage, wie viele Kerne im Intel Core 2 Duo Prozessor stecken, dürfte klar sein. Es geht hier nämlich um zahlreiche Aspekte:
- Wie bringe ich meine Software dazu, auf Multiprozessorkern-Systemen optimal zu laufen?
- Welche Tools hat Intel für die Multicore-Optimierung meiner Software in petto?
- Welche Vorzüge bieten die Intel Threading Building Blocks und wie komme ich daran?
- Welche Ansätze parallelisierter Anwendungen gibt es eigentlich?
- Wie setze ich OpenMP für meine eigenen Software-Projekte sinnvoll ein?
- Wie programmiere ich überhaupt „multi-threaded“ Applikationen?
Darüber hinaus findet man auf der Multicore-Seite von Intel weitere nützliche Tipps und Hinweise. Zum Beispiel kann man via Feedburner Neuigkeiten aus dem Parallel-Universum abonnieren, die neuesten Blogeinträge lesen und sich im Forum umsehen, auf welche Hürden andere Programmierer stoßen.
Wenn Hard- und Software verschmelzen: Virtualisierung
Wichtig sind darüber hinaus einzelne Aspekte, mit denen sich Software-Entwickler beschäftigen sollten: Welche Virtualisierungsmodelle es gibt, wie sich virtuelle Anwendungen entwickeln lassen und was es mit der Intel VT für Netzwerk-Komponenten auf sich hat.Aber auch die technischen Online-Dokumente sollen Software-Entwicklern dabei helfen, das Thema Intel VT besser zu verstehen. Hierfür gibt es eigens eingerichtete Workshops, die zeigen sollen, wie sich eine virtualisierte Umgebung mithilfe von VMWare-Lösungen einrichten lässt. Oder wie man I/O-Schnittstellen für virtualisierte Zugriffe optimieren kann.
Teil zwei unserer kleinen Vorstellungsrunde „Was findet hier eigentlich statt?“ beschäftigt sich mit dem Thema Virtualisierung. Dass es sich hierbei um einen Begriff handelt, der sehr unterschiedlich genutzt wird, macht es nicht wirklich leichter. Wir wollen aber trotzdem versuchen, uns dem Thema ein wenig anzunähern.
Ein guter Start in die virtuelle Intel-Welt ist die Webseite Intel Virtualization Developer Community, auf der es eine Menge an nützlichen Infos zu entdecken gibt. Dazu gehören unter anderem Hintergrundinformationen rund um das Thema Virtualisierung: Warum Software-Entwickler die Virtualisierung ernst nehmen sollten, Vorteile der Virtualisierung in großen Unternehmen, Software-Design für virtualisierte Rechner und was hinter der Intel Virtualization Technology (Intel VT) steckt.


