Meine ersten Gehversuche mit AutoFac – Teil 1

In diesem Beitrag beschreibe ich meine ersten Gehversuche mit AutoFac, einem vielversprechenden DI-Container (DI = Dependency Injection).

Ich hatte in den vergangangen Jahren den sehr einfachen SimpleIOC-Contailer von Laurent Bugnion verwendet, der Teil von MVVM Light ist. Doch da ich MVVM Light seit einigen Jahren nicht mehr verwende und stattdessen die aus meiner Erfahrung sehr gute MVVM-Assembly von DevExpress (deren Kern nicht nur kostenlos, sondern auch quelloffen ist), habe ich auch SimpleIOC aus den Augen verloren.

Die wichtigste Frage natürlich vorweg: Wozu braucht man einen DI-Container?

Diese Frage ist gar nicht so einfach zu beantworten und sie ähnhelt der Frage, die Anfang der 90er Jahre of gestellt wurde. Wozu brauche ich diese Vererbung?

Schon damals hatte ich keine guten Antworten parat, außer dem üblichen „Sie führt einfach zu besser strukturiertem Code“. Aha. Bei DI ist es ähnlich. Wer DI konsequent einsetzt, kommt tatsächlich zu deutlich besser strukturiertem Quellcode. Der Weg dahin ist allerdings lang und beschwerlich. Und das nicht, weil DI eine komplizierte Technik ist. Das ist nicht der Fall. Der Grund ist, dass man ein Prinzip verstanden haben, muss, dass sich grundlegend auf den Programmaufbau auswirken kann (aber nicht unbedigt muss). Man muss ein wenig daran glauben.

Zum Glück gibt es auch ein wenig DI, genauso wie es auch ein wenig OOP damals gab. Auch wenn viele Puristen davon nicht viel halten, ich kann diesen Ansatz vertreten,dd aman damit in das Thema hineinwachsen kann.

Warum AutoFac? Gegenfrage: Warum nicht? Es gibt über ein Dutzend DI-Container, AutoFac ist einer der Namen, die immer wieder genannt werden. Die Webseite macht einen guten Eindruck, das Projekt wird laufend weiterentwickelt was sehr wichtig ist, es gibt viele Beispiele (u.a. im Rahmen von WCF), viele Fragen mit Antworten auf StackOverflow usw. für einen DI-Container muss man sich entscheiden (mir sagt Unity vom Pattern&Practices Team bei Microsoft nicht ganz so zu, was aber eher eine Frage der persönlichen Präferenzen ist und die sind bekanntlich breit gestreut). Und da in einem Projekt, mit dem ich beruflich zu tun hatte, AutoFac verwendet wurde, war dies der Anlass mich selber etwas mit AutoFac zu beschäftigen.

Die sehr gut gemachte Projektwebseite ist http://autofac.readthedocs.io/en/latest/index.html

Schritt 1: AutoFac hinzufügen

Das geht dank Package Manager-Konsole sehr einfach:

Install-Package AutoFac

Schritt 2: Typen registrieren

Ausgangspunkt ist ein sehr kleines Konsolenprogramm, das ein Interface und ein paar Klassen verwendet:

>IDocumentService.cs
>DocumentFileService.cs
>DocumentViewModel.cs
>MainViewModel.cs

Das Ziel soll es sein, eine Instanz der MainViewModel-Klasse zu erhalten, deren Documents-Eigenschaft eine Reihe von DocumentViewModel-Instanzen liefert, die zuvor per DocumentFileService, die IDocumentService mit ihrer GetDocuments-Methode implementiert, aus einer Xml-Datei eingelesen wurden.

Der Beitrag ist aktuell nur provisorisch, ich werde ihn in den nächsten Tagen noch einmal überarbeiten. Grundsätzlich hat es aber funktioniert:)

Mein Besuch beim „Microsoft Cloud Summit 2017“

Vom 9. bis 10. Februar 2017 fand in Frankfurt am Main der Microsoft Cloud Summit 2017 statt. Anders als im letzten Jahr allerdings nicht in der schönen Frankfurter Messe mit ihrer großzügig weitläufigen Architektur, angeschmiegt an die Festhalle, in der ich u.a. Hall and Oates, die Stones (1982) und Jethro Tull live erlebt habe, und natürlich ein paar Mal Peter Gabriel und den Boss bei diversen Touren, sondern in dem Kongresszentrum des Sheraton Airport-Hotels an Flughafen. Gut zu erreichen (vom ICE-Gleis bis zum Konferenzcenter sind es nur ein paar Minuten), aber leider mit einer etwas verwirrenden Topologie, viel zu engen Räumen mit nur einer einzigen (!) Tür und dem konsequenten Weglassen von Beschriftungen. Aber man kann sich ja durchfragen, um irgendwo hinzu gelangen. Frankfurt a.M. war auch nur ein Stopp von vielen auf einer ausgedehnten Welttournee. Der Eintritt war kostenlos.

Die Themen der Konferenz waren Office 365 in allen Variationen, verschiedene Azure-Angebote (u.a. Cloud Backup mit einem „Schutz“ vor Ransomware, die darin besteht, dass ein mutwillig gelöschtes Backup noch 14 Tage lang wiederhergestellt werden kann – bei Amazon Cloud Drive gibt es das natürlich auch) und Entwicklerthemen. Allerdings durchweg auf 100er-Niveau. Wer auf dem Technical Summit in Damrstadt im Dezember letzten Jahres war und/oder die Entwicklung ein wenig verfolgt hat, wird auf diesem Summit nicht viel Neues erfahren haben. Die „Hallo, Cloud Summit“-Demo, die aus welchen Gründen auch immer, unbedingt in einem Docker-Container ausgeführt werden muss, gehört einfach dazu.

Interessant war der Vortrag zu .NET Core – anders als beim großen .NET Framework gibt es hier eine Roadmap. Demnach ist die Version 2.0 für die zweite Hälfte 2017 geplant (die Zeiten, in den ein „H2“ auch die zweite Hälfte des Geschäftsjahres von Microsoft, das bekanntlich im Juli beginnt, hätte bedeuten können, sind zum Glück vorbei, wir reden hier immerhin von einem Open Source-Projekt, das sind Ehrlichkeit und Offenheit auch für Microsoft Pflicht). Passend dazu gibt es die Standard Library. Eine Klassenbibliothek, die das Attribut portabel verdient, denn sie kann sowohl unter .NET Core als auch unter dem .NET Framework verwendet werden.

Das Beste an solchen Vorträgen sind immer die Fragen und die Antworten des Microsoft-Sprechers. Sie sind auch eine kleine Belohnung dafür es bis zum Ende ausgehalten zu haben. Die erste von beiden Fragen hatte etwas mit dem Umstand zu tun, dass .NET Core bislang in erster Linie für Ubuntu angeboten wird, nicht aber für andere Linux-Distributionen vor allem Debian. Die Antwort in Kurzform: Wir arbeiten dran, sind sprechen mit dem Maintainer und versuchen nett zu sein, wir sind zwar Microsoft, können aber niemand zwingen .NET Core in eine Distribution aufzunehmen. Irgendjemand dabei, der unbedingt .NET Core unter Debian ausführen muss? Kann ich mir im Moment nicht vorstellen, aber ich lasse mich gerne eines Besseren belehren. Nett sind immer jene Momente, in denen der Sprecher solche Fragen ans Publikum richtet und die Anzahl der Rückmeldungen < 3 ist. Aber wir Deutschen sind auch bekanntlich etwas zurückhaltender (vermutlich aus Datenschutzgründen;) und ich saß auch ganz vorne links und konnte daher den Saal nur eingeschränkt überblicken). Die zweite Frage war sehr viel interessanter, vor allem die Antwort. Frage: Gibt es irgendwelche Pläne für ein GUI-Paket für .NET Core? Antwort: Eine sehr gute Frage, das hören wir öfter, aber nein, es gibt aktuell keine solchen Pläne. Das einzige Projekt von dem ich (der Sprecher) etwas weiß ist Electron (ein JavaScript-Framework für Desktop-Anwendungen). Mit anderen Worten: Dass es einmal so etwas wie WinForms oder WPF für .NET Core geben wird ist im Moment ähnlich unwahrscheinlich wie Warum? Ganz einfach weil es Microsoft nicht interessiert, sie darin keine Notwendigkeit, keinen strategischen Nutzen sehen. Docker für irgendwelche JavaScript-Anwendungen ja, richtige Anwendungen mit einer GUI leider nein. Liebe Desktop-Entwickler: Ihr wart einmal gern gesehene Kunden, aber das war noch das alte Microsoft. Sorry, aber seht es endlich ein. Desktop-Anwendungen interessieren uns nicht mehr, mobile Anwendungen und Web-Anwendungen interessieren vor allem solange sie Azure verwenden.

Die Zukuft der Anwendungsentwicklung unter Windows beschränkt sich für Microsoft zur Zeit offenbar auf die „Universal Windows Platform“ (UWP), bei der die Benutzeroberfläche in XAML definiert wird. Als Programmiersprache kommen neben C# auch VB, C++ und JavaScript in Frage. Richtige Anwendungen entstehen dabei nicht, sondern lediglich Apps mit begrenzten Möglichkeiten. Man kann solche Apps auch gleich für Android oder iOs schreiben und Microsoft sorgt dafür, dass sie auch unter Windows 10 läuft.

Mit Visual Studio, das in Gestalt der Community Edition inzwischen ja kostenlos ist, erhält man zwar sehr viele Optionen. Was die Entwicklung klassischer Desktop-Anwendungen angeht ist die Unterstützung durch Microsoft aber praktisch eingestellt worden.

Interessante Links:

>https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/
>https://github.com/dotnet/core/blob/master/roadmap.md

Mein Besuch auf dem Technical Summit 2016

Vom 12. bis 13. Dezember fand in Darmstadt der Microsoft Technical Summity 2016 statt. Wie im letzten Jahr wurde als Veranstaltungsort das Darmstadtium gewählt, das für die Durchführung einer solchen Konferenz beinahe perfekt geeignet ist, lediglich einige Räume könnten etwas größer sein. Anders als als im letzten Jahr fand der Summit zwei Wochen später im Jahr statt, so dass auch ein Besuch des Darmstädter-Weihnachtsmarktes möglich war. Da die meisten Teilnehmer natürlich weniger an Glühwein und heißen Maronen interessiert waren (wenngleich es beides auch am Abendbuffet gab), hatte sich der Veranstalter (wie immer die bewährte e-Team< GmbH aus Kiel) einiges für das „Brain“ einfallen lassen.

Der Sprecher für die Keynote am ersten der beiden Konferenztage, die bereits um 8 Uhr 30 begann, war kein geringerer als der Vice President der Cloud Division bei Microsoft Scott Guthrie. Er war schon oft zu Vorträgen in Deutschland, so dass er für die meisten Zuhörer ein vetrautges Gesicht gewesen sein dürfte. Natürlich stand er im vertrauten roten Poloshirt auf der Bühne, aber auch wenig unter dem Einfluss des Jetlag (als der Vortrag begann war es in Redmond bereits 1 Uhr Nachts). Das machte sich auch bei einer Demo zum Thema Azure Machine Learning bemerkbar. Die vorgeführte App war mit Hilfe einer WebCam in der Lage, das Alter von Personen zu schätzen, deren Gesicht von der Kamera erfasst wurde – er wurde offenbar ein paar Jahre älter geschätzt als er tatsächlich ist. Das Faszinierende an der App war aber weniger die Altersschätzung (das gibt es bereits seit ein paar Jahren unter https://how-old.net), oder der Umstand, dass das erfasste Bild anschließend für eine Internetsuche verwendet wurde. In Echtzeit, so dass sein wahrer Name fast verzögerungsfrei angezeigt wurde. Das Faszinierende (und für mich persönlich auch etwas Beängstigende) war, dass die Anwendung anhand der Gesichtsmikik die emotionale Verfassung aller (!) auf dem Bild erkannten Personen anhand ihrer Mimik einordnen konnte – in Echtzeit!

Damit liefert die kurze Demo unter dem Stichwort „Crowd Emotions“ einen Vorgeschmack davon, was in einigen Jahren an „neuralgischen Sicherheitspunkten“ zum Standard gehören könnte: Eine kontinuierliche Gesichtserkennung mit Personenprofilierung in Echtzeit und eine Einschätzung des „Gefahrenpotentials“ anhand der Mimik eines Gesichts. „Emotional Profiling“ als Ergänzung zum „Racial Profiling“. Im Rahmen des Vortrags wurde das natürlich nicht thematisiert bzw. die kleine Demo sollte lediglich andeuten was mit Azure Machine Learning bereits alles möglich ist.

Sehr lehrreich und gleichzeitig unterhaltsam war der Vortrag von Seth Suarez (der „Typ“ von Channel 9) am Ende des zweiten Konferenztages mit dem vielversprechenden Titel „Machine Learning for Developers“. Sein Vortrag wurde auf Channel 9 live übetragen und jeder Zuschauer konnte weltweit Fragen stellen. Seth, der nach eigener Aussage früher Lehrer war, gab in knapp 40 Minuten eine Einführung in das faszinierende Thema, an der das kleine 1×1 in Gestalt der grundlegenden Algorithmen an selbst entwickelten Beispielen erklärte – u.a. wie ein Algorithumus eine Gruppe von Werten auf einer Ebene in zwei Gruppen einteilt. Am Ende wurde es zwangsläufig etwas speziell, aber für den ersten Einstieg war sein Vortrag ideal geeignet.

Am zweiten Tag wurde die Keynote von Entwicklerlegende Erich Gamma gehalten, der einen Überblick über das VsCode-Projekt gab, das unter seiner Leitung in Zürich betrieben wird. Sein Vortrag war sehr gut trotz des etwas übertriebenen plakativen Titel „Microsoft loves Open Source“.

Dazu eine persönliche Anmerkung: Ich sehe die ganze Entwicklung „Microsoft goes Open Source“ nach wie vor mit gemischten Gefühlen und verstehe die Motivation nicht ganz. Auf der einen Seite ist Open Source natürlich positiv. Wir allen profitieren davon, wenn die Komponenten eines Technologie-Stacks quelloffen zur Verfügung stehen und der Quellcode von wichtigen Tools verfügbar ist.

Auf der anderen Seite haben die meisten Entwickler, die im Microsoft-Umfeld arbeiten, überhaupt nichts davon. Am Ende des Tages müssen wir Anwendungen entwickeln, möchten dafür angemessen entlohnt werden und benötigen dafür Tools wie Visual Studio und eine API, die nahe am Betriebssystem ist. Und das ist nun einmal Windows und wird es auch auf absehbare Zeit bleiben. Ob die Tools Open Source sind (was weder Visual Studio noch Windows vermutlich jemmals sein werden) spielt dafür keine allzu große Rolle.

In den von Microsoft orcherstrierten Jubelchor „Wir finden Open Source ganz toll“ kann ich daher nur bedingt einstimmen. Ein Visual Studio Code als Alround-Editor ist nett, aber ich werde es für meine Projekte, von PowerShell-Skripten einmal abgesehen, nicht verwenden. Es ist mir daher auch relativ egal, ob es unter Mac OSX oder anderen Plattformen läuft. Das gleiche gilt für Cross Plattform, was für 90% aller Desktop-Anwendungen, die für Windows in den letzten 20 Jahren entwickelt wurden, absolut keinen Mehrwert bietet und daher auch die Entwickler nicht interessiert.

Man nimmt es auf Konferenzen wie dem Technical Summit zur Kenntnis, aber mehr nicht. Ich denke, ich spreche für die Mehrheit der Entwickler im Microsoft-Umfeld, dass es um einiges wichtiger wäre Microsoft würde WPF weiterentwickeln oder einen Migrationspfad zu den neueren Techniken schaffen, als bei jeder Gelegenheit ausführlichst Werbung für Themen zu machen (Open Source, läuft auch auf einem Mac, irgendeine JavaScript-Erweiterung, Container sind die Zukunft usw.), die nur einen Bruchteil der Entwickler interessieren.

Natürlich haben alle diese „Pseudothemen“ einen Hintergrund – Werbung für die Azure-Plattformen zu machen, in die Microsoft in den letzten Jahren viele Milliarden U$S investiert hat, und die in Zukunft ein Vielfaches an Gewinn abwerfen soll bzw. muss. Schade nur, dass die Haupt-Klientel von Microsoft, die seit Jahrzehnten bereits mit Visual Studio, unter Windows und für Windows entwickeln, dafür nahezu komplett ignoriert wird. WPF war auf dem Technical Summit natürlich kein Thema. Und da wir gerade dabei sind: Es nervt mich inzwischen auch regelrecht, wenn bei einem Microsoft-Vortrag auf einer Entwickler-Konferenz (!) mit großem Brimborium auf der Bühne ein JavaScript-Programm (basierend auf Node) auf dem Niveau eines „Hello, World“-Progrämchens zum Laufen gebracht wird und als Beweis für die neue Coolness und Offenheit herhalten soll – ich weiß nicht, ob es nur mir so geht. Viele sind nicht so kritisch gemessen an dem Applaus, den solche Vorführungen am Ende erhalten.

Auf dem Technical Summit 2015 wurde von Microsoft die German Cloud angekündigt mit Rechenzentren in Frankfurt a.M. und Magdeburg, bei der T-Systems die Rolle des Datentreuhänders spielt. Wenn also die NSA sagt, wir wollen Daten, sagt jemand bei T-System „sorry, geht nicht“. Inzwischen ist sie im Betrieb und kann genutzt werden. Dass es zwischen der allgemeinen Microsoft-Cloud und der „German Cloud“ oder auch der „China Cloud“ tatsächlich keinen Durchgang gibt macht der Umstand deutlich, dass man seine Zugänge neu anlegen muss und in der allgemeinen Cloud angelegte Ressourcen nicht in die German Cloud verschoben werden könnte.

Natürlich gab es auf dem Technical Summit, der sich ja nicht nur an Entwickler, sondern allgemein an die „IT-Pros“ richtet, viele gute und auch ein paar sehr gute Vorträge (empfehlenswert ist z. B. der Deep Dive zum Thema „Events Tracing for Windows“ von Alois Kraus und Wolfgang Kroender am ersten Tag). Im Grunde gab es keinen einzigen schlechten Vortrag, sondern höchstens Vorträge, die mich weniger interessiert hatten. Außerdem wird die Mehrheit der Teilnehmer Jahr für Jahr jünger, so dass zielgruppengerechte Vorträge wie HoloLens und Apps einfach dazu gehören muss.

Positiv ist die bunte Themenvielfalt, durch die alle Teilnehmer in zwei Tagen auf den aktuellen Stand gebracht werden was Microsoft-Themen angeht. Und das an einem angenehmen Ort, der leicht erreichbar ist, am Ende des Jahres, was will man mehr?

Einen Überblick über die Vorträge des Technical Summit 2016 gibt es unter https://www.microsoft.com/germany/technical-summit/nachlese-2016.aspx. Dort gibt es auch Links auf die Videos zu den Vorträgen, sofern sie zur Verfügung stehen.

Ein paar persönliche Fotos von mir gibt es hier.

Wissen ohne Ende – ein Angebot, dass ich nicht ablehnen konnte

Fortbildung steht hoch im Kurs, das weiß ich sowohl als Trainer für .NET und PowerShell, aber auch als jemand, der selber permanent Wissen aufnimmt und versucht sich neue Techniken beizubringen (aktuell z.B. Authentifizierung von Web-Anwendungen im Zusammenhang mit Azure AD). Natürlich findet man sehr viel Know-how im Web, vor allem als Videos, ber ob man sich stundenlang durch Blog-Einträge, Tutorials, die oft nicht mehr auf dem aktuellen Stand sind, und mehr oder weniger gut gemacht und verständliche Videos zu klicken, oder man einem jemand ein Themengebiet systematisch erklärt, ist ein großer Unterschied.

Es gibt schon seit Jahren teilweise kostenlose, teilweise kostenpflichtige Weiterbildungsportale. Eines davon ist die Microsoft Virtual Academy, ein anderes die Plattform Udemy (https://www.udemy.com/), ein Drittes das im deutschprachigen Raum beliebte Video2Brain, das, über mehrere Stationen, inzwischen an Microsoft angedockt wurde.

Und da gibt es noch den großen Know-how-Verlag O’Reilly, der schon seit vielen, vielen Jahren für Bücher und Videos mit einem hohen Qualitätsanspruch steht, der so gut wie immer auch eingehalten wird. Vorbildlich.

Von O’Reilly, jetzt komme ich zum Thema dieses Blog-Eintrags, erhielt ich vor kurzem ein Angebot, das ich nicht ablehnen konnte – für 199 US$ (172€) pro Jahr erhält man einen unbegrenzten Zugang zum Safari-Portal, auf dem laut Verlag über 40.000 Bücher und Videos zu allen denkbaren IT-Themen zur Auswahl stehen. Regulär kostet das Abo 399 U$S pro Jahr. Das Abo ist jederzeit kündbar, der Preis, so verspricht es der Verlag, bleibt für immer konstant. Normalerweise bin ich bei solchen Angeboten skeptisch, da ich erfahrungsgemäß aus den unterschiedlichen Gründen nur einen Bruchteil des Angebots nutze, so dass der Erwerb der einzelnen Bücher in jedem Fall um einiges günstiger wäre (der Klassiker sind die Visitenkarten, die einem mit dem Argument verkauft werden, dass 300 Stück statt 50 Stück doch deutlich günstiger sind – bezogen auf den Stückpreis – das Ergebnis ist, das noch ca. 280 Stück in dem kleinen Pappkarton liegen, in dem sie geliefert wurden). Bei dem Angebot habe ich das Gefühl, dass es sich lohnen – alleine die freie Auswahl bei den Trainingsvideos zu haben ist für jemanden, der selber Schulungen durchgeführt, das Geld wert.

PS: Das Angebot gilt noch bis zum 4. August 2016 – wer diesen Blogpost zufällig heute (4.8) lesen sollte, kann sich das Angebot noch einmal durch den Kopf gehen lassen. Weitere Infos gibt es unter https://www.safaribooksonline.com

Enorme Projektvielfalt bei Visual Studio 2015

Microsoft wird gerne für dies und jenes kritisiert. Windows 10 ist schlecht weil es sich bei jeder sich bietenden Gelegenheit persönliche Daten abgreift, Apps und andere Funktionalitäten sind nur nach Anmeldung mit einem Microsoft-Konto, ein weiterer potentieller Datensammler, nutzbar, das Startmenü sieht immer noch wirklich nicht gut aus und, da wir gerade dabei sind, Silverlight wurde eingestellt (was ich auch bedauere), wer redet noch von Lightswitch, das ebenfalls sang und klanglos beerdigt wurde, die Entwicklung von Desktop-Anwendungen wurde, wenn man nicht C++ verwendet (das dafür, ganz nebenbei, immer schon die beste Wahl war seit dem es Windows gibt), auf ein Abstellgleis geschoben, auch WPF scheint eines langsamen Todes zu sterben usw. usw.

Es gibt aber auch Bereiche, bei denen man als Entwickler richtig zufrieden, vielleicht sogar regelrecht glücklich sein muss. Dazu gehört sicherlich die Entwicklung im Bereich JavaScript, TypeScript, Angular und Node, mit der ich aber persönlich relativ wenig am Hut habe. Dazu gehört auf alle Fälle die Entwicklung von Visual Studio, das mit VS 2012 aus meiner Sicht mit jeder Version einfach nur besser wird. Vor allem die Umstellung auf Roslyn, offiziell die .NET Compiler Platform, scheint unserer Lieblings-IDE richtig gut getan zu haben – das absolut empfehlenswerte Add-On Supercharger stelle ich in einem weiteren Blog-Eintrag vor.

Als ich vor einiger Zeit endlich Visual Studio 2015 installiert habe, war ich nach dem es endlich vollständig installiert war, überaus beeindruckt von der Projektvielfalt, die Entwicklern heutzutage zur Auswahl steht. Dank Xamarin lassen sich Android und iOS-Apps in Visual Studio und in C# programmieren (die VB-Unterstützung wird mit Sicherheit nicht lange auf sich warten lassen;). Wer hätte sich das noch vor ein paar Jahren vorstellen können. Ein großes Kompliment an die Verantwortlichen bei Microsoft. Hier hatte jemand eine klare Vision für ein universelles Entwicklungswerkzeug, die über die letzten Jahre konsequent umgesetzt wurde.

Erfreuliche Projektvielfalt bei Visual Studio 2015 (zumindest für C#-Entwickler)

Erfreuliche Projektvielfalt bei Visual Studio 2015 (zumindest für C#-Entwickler)

25 Jahre Visual Basic und ein Blick in die Zukunft

Vor 25 Jahren, am 21. Mai 1991, wurde, damals noch von Bill Gates höchstpersönlich, Visual Basic 1.0 vorgestellt (unter dem Codenamen Thunder war es schon seit über einem Jahr für „Beta-Tester“ erhältlich – ich erinnere mich noch gut an meine erste Vorführung durch den damaligen Produktmanager in den Räumen der Microsoft GmbH in Unterschleißheim).

Die damalige Ankündigung von Bill Gates gibt es bei YouTube: https://www.youtube.com/watch?v=bMz2Mgs7UU0&feature=related

In dem Video geht es in erster Linie um Neuerungen von Windows 3.1 – am Anfang stellt Bill Gates „Object Linking and Embedding“ vor – im Rückblick eine der zahlreichen Techniken, die man heute als „epic fail“ bezeichnen würde. Visual Basic gehört zum Glück nicht dazu. Die Faszination von Visual Basic und die Aubruchstimmung, die es bei vielen Entwickler und solchen, die es gerne werden wollten, erzeugt hat, wird durch das kleine Programm, das Bill vorführt (er gibt offen zu, dass er die Befehle nicht selber eintippt, sondern lediglich ein Makro verwendet;), sehr schön deutlich. Kurios ist auch wie Bill Gates am Ende noch einmal das Thema Handschrifterkennung anpreist – ein Thema, das mit dem aktuellen Windows 10 Update („Windows ink“) wieder einmal aufgegriffen wurde.

Seit der Ankündigung der Version 1.0 damals im Mai 1991 ist viel passiert – Visual Basic hat die Welt der Windows-Programmierung so stark verändert wie keine andere Programmiersprache, auch wenn die großen Windows-Anwendungen damals wie heute in C++ programmiert werden. Genauso hat Visual Basic die Entwickler weltweit polarisiert – die einigen lieben die Sprachen und wollen sie gegen keine andere Sprache tauschen, die anderen lassen keine Gelegenheit aus sich nicht gerade positiv über „Vaubeh“ zu äußern. Die größten „Kritiker“ sind oft jene Entwickler, die die Sprache nur vom Hörensagen kennen. Dieses Element dürfte auch bei der aktuellen StackOverflow Survey eine Rolle gespielt haben, bei der VB mit großer Mehrheit zur unbeliebtesten Programmiersprache gekürt wurde (http://stackoverflow.com/research/developer-survey-2016).

Den „Todestoß“ hat dem ursprünglichen Visual Basic aber nicht die Abneigung anderer Entwickler versetzt, sondern leider Microsoft selber, in dem im Jahr 2000 ohne Not die Weiterenntwicklung von Visual Basic mit der Version 6.0 beendet wurde. Auch wenn der Nachfolger VB.NET intern die Versionsnummer 7.0 trug, war das nicht mehr das Visual Basic, das einst soviele Menschen begeistert hatte. Mit VB.NET war nichts mehr so wie es einmal war, sieht man von dem halbherzigen Versuch ab die Sprachsyntax zu erhalten. Im Laufe der Versionen, vor allem mit Visual Studio 2005, wurde es zwar dank My-Objekt, Edit and Continue und einer gut durchdachten Datenbindung bei Windows Forms etwas besser, die ursprüngliche Leichtigkeit bei der Programmierung kehrte nicht mehr zurück.

Eine sehr schöne Zusammenfassung der unterschiedlichen Ansichten zu Visual Basic als Programmiersprache und „Lebensgefühl“ fassen die Kommentare zu einem Blog-Eintrag im Microsoft Dotnet-Blog zusammen:

https://blogs.msdn.microsoft.com/dotnet/2016/05/20/happy-25th-birthday-vb/

Eine „Liebesklärung“ an VB an mir besonders gut gefallen:

Happy birthday VB,
You’re the best at productivity.
We’ll use you forever,
And love you unconditionall

Ich denke, dass es vor allem die Loyalität vieler solcher Entwickler war, die den zahlreichen Versuchen Visual Basic auf ein Abstellgleis zu schieben getrotzt hat. Ungeachtet aller „Kritik“, Visual Basic lebt, die Sprache wird nach wie vor eingesetzt und vor allem aktiv weiterentwickelt.

Einen kurzen Ausblick auf die Neuerungen der nächsten Visual Basic-Version, die Teil von VS 2015 ist, gibt ein relativ kurzes Video auf Channel 9, das während der letzten Ignite-Konferenz entstanden ist:

https://channel9.msdn.com/Events/Ignite/2015/C9-26?ocid=player

Die wichtigste Neuerung ist natürlich, dass win Refactoring endlich auch bei Visual Basic zur Verfügung steht. Der kurze Überblick endet mit einem vielversprechenden Satz „VB in Visual Studio 2015 is super cool“. Na, also,.

Ein exklusiver Blick in mein Buchregal und dem Originalhandbuch zu Visual Basic 1.0

Ein exklusiver Blick in mein Buchregal und dem Originalhandbuch zu Visual Basic 1.0

Damals eine absolute Rarität (heute auch noch) - eine VB 3.0-CD (leider nur auf Englisch)

Damals eine absolute Rarität (heute auch noch) – eine VB 3.0-CD (leider nur auf Englisch)

Die Zukunft von C# – und ein Seitenhieb auf Visual Basic

Ein Highlight einer jeden PDC und inzwischen der Build-Konferenz war die „Future of C#“-Session, in der es, der Titel legt es nahe, um die Zukunft von C# ging. Früher noch von dem Erfinder der Sprache, Anders Hejlsberg, durchgeführt, inzwischen beschäftigt sich Anders lieber mit TypeScript, so dass Mads Togersen diese Rolle übernommen hat. Auf der letzten Build 2016 gab es natürlich wieder einen „Future of C#“-Talk, in dem es bereits um das kommende C# 7.0 ging:

https://channel9.msdn.com/events/build/2016/b889

Bemewerkenswert, wenn auch nicht unbedingt im positiven Sinne, fand ich eine humorvoll gemeinte Einlage der beiden Sprecher, in der sie die jährlich auf Stackoverlow durchgeführte „Developer Survey“ zitierten, in der u.a. nach den beliebsten, aber auch nach den „most dreadful languages“ gefragt wurde. Zur Belustigung aller Anwesenden war ausgerechnet Visual Basic mit knapp 80% klarer Spitzenreiter in der zweiten Kategorie. Die sehr interessante Umfrage gibt es hier:

http://stackoverflow.com/research/developer-survey-2016

Tja, der typische Visual Basic-Entwickler nutzt halt kein StackOverflow, sondern kommt selber auf eine Lösung;)

Interessant fand ich auch, dass erst ab der Gruppe der 50 jährigen StarTrek beliebter als StarWars ist. Damit kann ich wiederum zu 100% identifizieren.

Visual Paradigm Community Edition – ein kostenloses Tool für das Erstellen von UML-Diagrammen

Wer als Entwickler auch konzeptionell tätig ist oder Projektleiter ist bzw. ein einfach nur Angebot erstellen muss, kommt um das Thema UML nicht herum. Sei es, um die Funktionalität einer geplanten Anwendung zumindestens grob als Anwendungsfalldiagramm zu beschreiben oder die Klassen der Anwendung als Klassendiagramm. Es gibt „tausende“ von Anwendungen, kostenlos, als Open Source oder kommerziell, mit deren Hilfe sich komfortabel alle denkbaren Sorten von UML-Diagrammen erstellen lassen – und inzwischen auch sehr gute Angebote im Web wie z.B. http://www.umlet.com/umletino oder http://sequencediagram.org, wenn es nur um Sequenzdiagramme geht, die für mich neben den obligatorischen Use Cases und den Klassendiagrammem am wichtigsten sind.

Meine persönliche Empfehlung ist Visual Paradigm, das es in der Community Edition kostenlos gibt. Ich habe mich mit dem Tool einige Tage beschäftigt und bin inzischen überaus positiv angetan von der Kombination aus Funktionalität und Benutzerfreundlichkeit. Von dem Umstand, dass es kostenlos erhältlich ist einmal abgesehen, wenngleich ich als Software-Entwickler, der (noch) nicht umsonst arbeitet natürlich auch bereit bin ein Produkt zu kaufen.

Weitere Infos gibt es unter https://www.visual-paradigm.com/

Was verdienen Entwickler?

Als freiberuflicher Entwickler denkt man beim Thema Bezahlung in der Regel in Tages- oder Stundensätzen, die meisten Entwickler, vor allem in DACH (Deutschland/Österreich und Schweiz) sind festangestellt. Vor kurzenm veröffentlichte die Bundesanstalt für Arbeit einen umfangreichen „Entgeltatlas“ für alle Berufsgruppen, die von der Anstalt betreut werden:

https://entgeltatlas.arbeitsagentur.de/entgeltatlas

Auch wenn die Zahlen aus dem Jahr 2014 stammen und nicht für jedes Bundesland ausreichende Daten vorliegen ist es doch interessant, einen Überblick über den durchschnittlichen Bruttolohn für Entwickler zu erhalten. Nicht überraschend ist das klare Ost-Süd-Gefälle.

Mole ist wieder da…

Ich hatte fast schon die Hoffnung aufgegeben. Nachdem die verantwortlichen Entwickler offenbar für eine Weile auf Tauchstation gegangen waren, meldete sich vor ein paar Tagen Karl Shifflet per Mail und teilte mit, dass Mole 2015 für alle kostenlos sei. Immerhin. Zwar sind meine 50 USD, die ich damals (vermutlich als einziger) für eine ältere Version bezahlt hatte, für die Katz, aber immerhin kann ich das Tool wieder benutzen (ich hatte nach einem Rechnerumzug den Lizenzschlüssel verloren und die Entwickler, wie erwähnt, nicht mehr erreichbar waren, konnte ich Mole nicht mehr starten.

Um was geht es eigentlich? Mole ist ein komfortabler Visualizer für Visual Studio, der beim Debuggen praktisch ist, da nicht nur die Inhalte von Collections etwas komfortabler angezeigt werden, sondern z.B. auch Visual und Logical Tree bei WPF.

Weitere Infos gibt es im Projektportal https://github.com/Oceanware/Mole2015 und in der Visual Studio Gallery https://visualstudiogallery.msdn.microsoft.com/1d05cb44-8686-496b-9af3-4ed3deed3596

Offenbar lässt sich die Version aber nicht in der Community Edition installieren was, wenn es dafür keine technische Erklärung gibt, wieder ein typischer fail wäre.