(VB 2010 - ein neues Logo gibt es auch) Seit Mitte Oktober steht die (lang erwartete) Beta 2 von VS 2010 und .NET Framework 4 als Download für alle zur Verfügung (nach der CTP-Preview und der Beta 1 ist dies die dritte Vorabverion, die Microsoft zur Verfügung stellt - am 22. März 2010 soll es angeblich die finale Version geben). Mit dabei ist auch die erste Vorabversion der Express Editionen zu C# und VB.NET (zu F# wird es dieses Mal noch keine Express Edition geben, was nicht bedeutet, dass man VS 2010 Professional kaufen muss, da man es in der "freien" VS 2008-Shell installieren kann und es mit Sharp Develop eine gute Alternative gibt). Nachdem ich in der Vergangenheit mit Vorabversionen von Visual Studio gemischte Erfahrungen gemacht hatte, war ich bei der Beta 2 entsprechend skeptisch. Um so erfreuter war ich daher, dass mein erster Eindruck von VB 2010 Express durchweg positiv ist (wenngleich ich nur die üblichen kleinen Beispielprojekt ausprobiert habe): >Die Installation verlief (unter Vista SP1) per Web-Installation angenehm schnell und problemlos. >Die IDE macht einen aufgeräumten und einladenden Eindruck. Die Umstellung auf WPF hat der IDE gut getan. Optisch wirkt alles ein wenig moderner, ansprechender und entspannter. Die Befehlsauswahllisten wurden gegenüber VS 2008 weiter verbessert, was sich beim Codieren angenehm bemerkbar macht. Ein Problem ist natürlich, dass WPF deutlich höhere Ansprüche an die Grafikhardware stellt (die "Horrorszenarien", über die einigen Blogs berichtet wurde, nach denen alles so langsam wird, dass der Mauszeiger praktisch einfriert, kan ich zum Glück nicht bestätigen). >Im Unterschied zu früheren Express Editionen sind die 2010er Expresss Editionen erweiterbar. Allerdings nicht über klassische Add-Ins, die Erweiterungen basieren auf einem neuen Erweiterungsmodell mit dem Namen "Managed Extensibility Framework" (MEF), mit dem vor allem der Code-Editor erweitert werden kann. >Die Funktionalität der IDE wurde ansonsten kaum erweitert, was ich eher für positiv halte (die zahlreichen Erweiterungen, die es für den Code-Editor bereits gibt und vor allem in Zukunft geben wird, werden zum Glück nicht automatisch geladen). Bei der Programmiersprache Visual Basic 10 gibt es nur wenige Neuerungen, was ich ebenfalls für positiv halte, da die Mehrheit der VB.NET-Entwickler noch ein gewisses Defizit besitzen dürfte was die mit Version 9.0 eingeführten Neuerungen (Stichwort: Lambdas) angeht. Dass sich Lambdas jetzt über mehrere Zeilen erstrecken und aus beliebigen Functions/Subs bestehen dürfen klingt zunächst unspektakulär, ist aber eine geniale Erweiterung in Richtung funktionaler Programmierung. Dass was bei C# 2.0 die anonymen Methoden sind, gibt es endlich auch bei VB.NET, aber in der Visual Basic typischen Syntax. Das folgende Beispiel zeigt eine einfache Methode zur Berechnung der Primzahlen: Dim AnzahlPrims = 0 Dim Prims = Enumerable.Range(3, 100).Where(Function(x) For n = 2 To Math.Sqrt(x) If x Mod n = 0 Then Return False End If Next AnzahlPrims += 1 Return True End Function) ' Wird erst mit dem For Each ausgeführt ' Console.WriteLine("{0} Prims gefunden...", AnzahlPrims) For Each z In Prims Console.WriteLine(z) Next Console.WriteLine("{0} Prims gefunden...", AnzahlPrims) Es ist wirklich toll, dass der Where-Methode eine mehrzeilige Inline-Funktion übergeben werden kann (der Zeilenfortführungsoperator ist ebenfalls nicht mehr erforderlich). Eine Kleinigkeit kann man ebenfalls schnell übersehen, Collections besitzen ab .NET 4.0 eine AsParallel-Erweiterung, durch die Abfragen gegen die Collection "parallel" (also auf die zur Verfügung stehende Kerne verteilt) ausgeführt wird. Insgesamt macht die Beta von VB 2010 einen guten Eindruck. VB.NET 10 rundet die mit der Version 9.0 eingeführten Spracherweiterungen sinnvoll ab. Gegenüber C# hat VB.NET was die Attraktivität der Sprache angeht aufgeholt, was nicht unbedingt zu erwarten gewesen wäre. Wer was die moderne VB-Programmierung angeht auf dem Laufenden bleiben möchte und mit funktionaler Programmierung oder gar paralleler Programmierung beginnen möchte, sollte gleich mit der Beta 2 loslegen.
Ich weiß nicht, ob es irgendwo einen Wettbewerb gibt, aber eventuell könnte ich eine weitere ausgefallene Variante einreichen, die wieder einmal die Primzahlen (allerdings nur in den alleruntersten Regionen) "berechnet". Das Besondere dabei, ich habe sie vollständig mit LINQ umgesetzt: int Obergrenze = 200; var prims = from z in Enumerable.Range(2, Obergrenze-1) let c = (from z1 in Enumerable.Range(2, Convert.ToInt32(Math.Sqrt(z))) where z % z1 == 0 select z1).Count() where c == 0 select z; Console.WriteLine("Anzahl Prims: {0}", prims.Count()); Es kann sein, dass es noch elegantere Varianten gibt (es gibt mit Sicherheit einfachere), aber es ist schon faszinierend, dass dieses kleine Beispiel ohne die übliche for-Schleife und if-Entscheidung auskommt (zugegeben, es lässt sich ein wenig schwerer debuggen und man tüffelt im Allgemeinen eine Weile bis es wirklich funktioniert). Die VB.NET-Variante unterscheidet sich nur geringfügig. Die folgende Variante stammt übrigens aus einem der zahlreichen C#->VB.NET-Konverter, die man im Web findet: Dim Obergrenze As Integer = 200 Dim prims = From z In Enumerable.Range(2, Obergrenze - 1) _ Let c = (From z1 In Enumerable.Range(2, Convert.ToInt32(Math.Sqrt(z))) Where z Mod z1 = 0 Select z1).Count() _ Where c = 0 Select z Die Konvertierung ging sehr schnell, nur kam der Converter nicht damit klar, dass sich die LINQ-Anweisung über mehrere Zeile erstreckt, so dass noch ein wenig Nachbearbeitung erforderlich war. Mit SharpDevelop wäre das nicht passiert, der wirklich geniale Codekonventierer fügt z.B. auch die erforderlichen Zeilenumbruchzeichen ein. LINQ ist eine tolle Sache, funktionale Programmierung auch, wenngleich sie nicht für alles eingesetzt werden kann und sollte (man gelangt ansonsten schnell zu einem Punkt, wo man bereits einen if-Befehl als"unanständig" empfindet, was natürlich nicht die richtige Einstellung ist). Da ich mich gerade ein wenig mit F# beschäftige (Oliver Sturms Vortrag auf der letzten Basta! hatte mich dazu inspiriert - Oliver ist nach Oliver Pocher sicher der meistge - und besuchte Mann im Web, auf seiner Homepage hat er die Vortragsfolien zu seinem F#-Vortrag leider nicht versteckt), habe ich mich noch an einer F#-Varianten versucht. Hier ist das Ergebnis. Zuerst "konventionell": let mutable IsNoPrim = false let mutable j = 2 for i = 2 to 100 do j <- 2 while j < i do if i % j = 0 then IsNoPrim <- true j <- j + 1 if not IsNoPrim then printfn "<%i>" i IsNoPrim <- false Diese Variante enthält zwar zu 100% syntaktisch korrekten F#-Code, hat aber mit funktionaler Programmierung nichts zu tun und würde in C# und VB-.NET praktisch in identischer Form umgesetzt werden. Lediglich das "mutable"-Schlüsselwort wäre dort ein wenig ungewöhnlich, denn weder der C#- noch der VB.NET-Compiler haben etwas dagegen, einer Variablen einen neuen Wert zuzuweisen. Bei folgender typischen F#-Varianten geht es bereit ein wenig mehr "ab": let Obergrenze = 100 let Zahlen = [1..Obergrenze] let MaxTestwert = System.Convert.ToInt32(System.Math.Sqrt(System.Convert.ToDouble(Obergrenze))) let CheckPrim n = not ( {2 .. MaxTestwert} |> Seq.filter (fun d -> n % d = 0) |> Seq.nonempty ) let prims = [2 .. 25] |> List.filter CheckPrim printfn "%A" prims F# kennt einige Sprachelemente, die ich vorher schon der PowerShell kannte - etwa den Bereichsoperator ([1..Obergrenze] und natürlich die Argumentpipeline (|>), durch die z.B. ein komplettes Array einer Filterfunktion zugeführt werden kann. Warum es funktioniert, habe ich zwar noch nicht zu 100% verstanden, aber es funktioniert. Seq.nonempty stammt aus der FSharp.PowerPack.dll, auf die noch ein Verweis gesetzt werden muss. F# ist mit Sicherheit eine faszinierende Sprache, aber nicht leicht zu lernen. Aber ich empfehle es jedem Entwickler im .NET-Bereich, der Zeit und die erforderliche innere Ruhe hat. Bereits das kleine "Tutorial", das als Projektvorlage angeboten wird, gibt einen guten Überblick. Es gibt ein gutes Wikibook und natürlich jede Menge Beispiele und Tutorials bei MSDN. Wer einen gründlichen Überblick wünscht, lädt sich die knapp 200 Seiten starke "Language Specification" herunter. F# gibt es für VS 2005/2008 und ist fester Bestandteil von VS 2010. Und es gibt sogar eine Version für Mono. Den Download für VS 2008 (May 2009 CTP) gibt es hier. Wer nur die Express Editionen besitzt, lädt sich die "freie" VS 2008 Shell herunter, zu der F# ebenfalls nachträglich dazu installiert werden kann. Auch SharpDevelop besitzt eine F#-Projektvorlage, aber keine Intellise-Unterstützung (auf die man aber auch verzichten kann). Ich bin gespannt, ob es ein F# Express geben (ich gehe einmal davon aus) - wenn in knapp 2 Wochen die Beta 2 freigegeben wird, wissen wir unter Umständen mehr. PS: Die Slides von Oliver Sturms F#-Vorträgen gibt es doch (man muss nur danach suchen) - hier ist der Link http://www.sturmnet.org/blog/2009/09/22/slides-and-samples-from-basta-2009
(auf dem Weg zur VIP Reception - die auf dem Bild zu erkennenden Personen sind dem Autor persönlich bekannt) Die Basta! 2009 (21. bis 25. September) ist noch keine 4 Wochen vorbei (unter www.basta.net wird bereits die Basta! 2010 Spring angekündigt!), doch es kommt mir wieder einmal vor wie eine halbe Ewigkeit (was natürlich auch daran lag, dass es bei mir nach der Konferenz gleich mit diversen Terminen weiterging, u.a. mit der Adobe Max Konferenz). Insgesamt war es wieder einmal eine sehr nette und von den Themen interessante Konferenz (viele neue Gesichter bei den Teilnehmern - es ist für mich immer wieder erstaunlich, wieviele Teilnehmer zum ersten Mal bei der Basta! dabei sind, was zeigt, dass auch große Konferenzen nur einen kleinen Teil ihrer "Zielgruppe" erreichen können). Es ist vor allem nett, viele Kollegen wieder zutreffen. Dazu bot die"VIP Reception" am ersten Abend, die dieses Mal auf der gegenüberliegenden Rheinseite in der "Bastion von Schönborn" (einem kleinen Restaurant mit Biergarten direkt am Rhein) stattfand, und natürlich ganz ungezwungen bei einem Bier vor der Rheingold-Halle, die anscheinend endlich fertig umgebaut ist, den passeden Rahmen. Auch das Wetter spielte mit (insbesondere der Montagabend war ein sehr schöner Spätsommerabend), so dass es alles in allem wieder Spaß gemacht hat dabei zu sein (Kritikpunkte fallen mir spontan keine ein, zumal ich die Mittagessen habe ausfallen lassen;) Von meinen vier für die VB Days am Mittwoch und Donnerstag geplanten Vorträgen habe ich nur zwei gehalten: 1) Moderne Visual Basic Programmierung Die Vortragsfolien gibt es hier. Die Beispiele gibt es hier. 2) Moderne XML-Programmierung mit Visual Basic. Die Vortragsfolien gibt es hier. Die Beispiele gibt es hier. Meinen Vortrag "Von Windows Forms nach WPF" hatte Benjanim Gopp übernommen, dafür noch einmal vielen Dank. Unseren gemeinsamen Vortrag "Oracle mit VB" hatte Markus am späten Donnerstagnachmittag alleine gehalten (oder halten müssen;) (wie ich gehört habe, hat er das auch ganz gut gemacht - keine seiner Pemos ist abgestürzt). Ich weiß leider nicht genau, ob er die Vortragsfolien direkt zur Verfügung stellt - es lohnt sich auf alle Fälle, einen Blick darauf zu werfen, da es keinen besseren Überblick über den Stand der Oracle DB-Entwicklung mit .NET geben dürfte. Bei meinem Vortrag Moderne VB-Programmierung fiel mir einmal mehr auf, dass nicht jeder VB-Programmierer mit den neusten Sprachelementen vertraut ist. Insbesondere in Richtung "funktionale Programmierung" (Delegaten, typisierte Delegaten, Lambdas, Funktionsausdrücke, Expression Trees usw.) stelle ich teilweise große Defizite fest, dabei bilden sie das Fundament der modernen Anwendungsentwicklung (Stichwort: LINQ). Ich kann schlecht beurteilen, ob das nur der natürliche Filter ist (ich nehme nur das wahr, was für meine Arbeit/Projekt von unmittelbarer Bedeutung ist), auf chronischem Zeitmangel (gerade VB-Entwickler sind überdurchschnittlich mit dem Warten ihrer Anwendungen beschäftigt, was nicht automatisch bedeutet, dass sie schlecht/schlampig programmiert wurden, sondern weil sich in einem Umfeld bewegen, in dem offenbar viele Kunden/Anwenderwünsche kontinuierlich in kleinen Portionen an sie herangetragen werden, so dass es praktisch immer etwas zu tun gibt) zurückzuführen ist, oder ob auch eine gewisse Übersättigung/Reizüberflutung Schuld sein könnte. Natürlich ist keiner verpflichtet sich kontinuierlich mit dem zu beschäftigen, was sich ein paar Programm Manager in Redmond ausdenken, aber ganz den Anschluss verlieren sollte man auch nicht. Ich behaupte, dass der durchschnittliche (deutsche?) Entwickler 3-5 Jahre hinter der aktuellen Version (was ihre Kernneuerungen angeht) zurückliegt. Eine Maßnahme daran etwas zu ändern bieten natürlich Vorträge auf Konferenzen, aber auch natürlich auch Trainings. Speziell für VB-Entwickler, die sich in einer angenehmen Atmosphäre mit der modernen VB-Anwendungsentwicklung vertraut machen möchte, führe ich zusammen mit John Martin im November einen fünftägigen VB-Kompaktkurs in Bad Ems (an der Lahn) durch - weitere Infos gibt es hier.
Zu den sicheren Mitteln, sich den Tag (oder zumindestens einen Teil davon) zu verderben gehört die automatische Update-Einstellung bei Windows Vista, die meines Wissens voreingestellt ist. Sie hatte neulich zur Folge, dass meine komplette Arbeitsumgebung bestehend aus zwei virtuellen Maschinen, verschiedenen Browserfenstern, mehreren Visual Studio-Umgebungen und diversen anderen Dingen, an denen ich die letzten Stunden gesessen hatte, einfach verschwunden war nachdem ich kurz den Schreibtisch verlassen hatte nur weil Vista der Meinung war, dass es Zeit für einen Neustart sei. Klar, man kann sich alles wieder zusammenbauen, doch dass mir jemand einfach den Rechner neu bootet wenn ich ihn ein paar Minuten alleine lasse kommt in Zukunft nicht mehr vor. Ab jetzt fragt mich Vista jedes Mal, ob es neue Updates installieren darf. Für die Zukunft ist allerdings eine Lösung in Sicht. Im Spiegel (bekanntes Wochenmagazin) war vor ein paar Monaten zu lesen, dass Computer neuerdings in der Lage sind, selbständig physikalische Gesetze zu entdecken. Windows 7 unterstützt bekanntlich Bewegungssensoren. Wenn ich beim nächsten automatischen Update mit anschließendem ungefragtem Reboot meinem Windows 7-Computer einen Tritt versetze, müsste er doch eigentlich daraus folgern, dass diese Aktion den Unmut seines "Herren und Meisters" zur Folge hatte. Das wäre mal eine nette Abwechslung.
(Speaker = Sprecher) Pünktlich zum Herbstbeginn findet auch dieses Jahr wieder die Basta!-Entwicklerkonferenz statt (es müsste die 15te inzwischen sein, dies nachzuzählen ist ähnlich schwierig wie die wahre Versionsnummer von Windows 7 zu ermitteln - hätte man von Windows 1.0 beginnend eine vernünftige Zählweise beibehalten, wäre man inzwischen auch in etwa bei 15 angekommen). Das Programm steht bereits seit Wochen fest und macht auch einen thematisch sehr interessanten Eindruck. Wie üblich sind alle wichtigen Themen vertreten (und von den üblichen Experten der Branche dürfte kaum jemand fehlen, was für die Konferenz spricht). Mit Jeffrey Richter wurde sogar eine regelrechte Windows Entwickler-Legende für die Keynote gewonnen. Ich war als "Track Chair" für die inhaltliche Gestaltung der (beiden) Visual Basic Days vom 23. bis 24. zuständig, mein Dank an dieser Stelle für die Unterstützung durch Alex Bierhaus, Benjamin Gopp und Jörg Neumann, die mit ihren Vorträgen dem Ganzen Qualität und Praxis-Know-how verleihen (es ist außerdem sehr nett von den Veranstaltern, dass "wir" dieses Mal nicht zeitgleich zu den C# Days antreten müssen - man kann also zuerst dem 1. Teil es C# Day beiwohnen, feststellen, dass das alles nichts ist und dann beruhigt am nächsten Tag zur Kenntnis nehmen, dass es mit Visual Basic .NET eine hervorragende Alternative gibt ). Ich werde auf den Visual Basic Days am Mittwoch und Donnerstag folgende Vorträge halten: > Moderne Visual Basic-Programmierung In Visual Basic programmiert "man" nicht mehr so wie es früher (bis zur Version 6.0) der Fall war. Damit ist weniger der Umstand gemeint, dass mit .NET alles ein Objekt ist, sondern dass mit .NET 3.5 und VB 9.0 erste Ansätze einer funktionalen Herangehensweise erkennbar sind, dass mit LINQ eine vollkommen neue Art mit (beliebigen) Daten umzugehen zur Verfügung steht, und dass es praktisch Pflicht ist sich mit Themen wie Entwurfsmuster, Test-Verfahren (Stichwort: Unit-Testing) und was den Entwurf der Oberfläche angeht mit dem zentralen Modell View Controller Pattern (MVC) auszukennen. Auch wenn ein Vortrag über 75 Minuten keine seit Jahre schlummernden Defizite beheben kann, kann er ein paar Denkanstöße geben. Er soll vor allem das Bild der modernen Visual Basic-Programmierung zurecht rücken. Die Visual Basic-Programmierung ist kein "Biotop", in dem die Zeit stehen geblieben ist. Auch, oder vor allem, Visual Basic-Programmierer sollten das Potential, das Ihnen Sprache und Framework (nicht erst seit gestern) bieten, voll ausschöpfen. > Moderner Umgang mit XML System.Xml war gestern, seit .NET 3.5 gibt es mit System.Xml.Linq einen deutlich programmiererfreundlicheren Satz von Klassen für das Auswerten und Erstellen von XML-Dokumenten, der in Hinblick auf LINQ "optimiert" wurde. Zusätzlich bietet VB 2008 SP1 die Möglichkeit, aus einem beliebigen XML-Fragment eines oder mehrere Schema abzuleiten, so dass z.B. im Rahmen einer LINQ-Abfrage Intellisense angeboten werden kann. In dem Vortrag zeige ich, was die Klassen in System.Xml.Linq zu bieten haben und wie sich XML-Daten, die z.B. von irgend woher aus dem Web kommen können, elegant und typisiert weiterverarbeiten lassen. > Von Windows Forms nach WPF Für alle, die es noch nicht mitbekommen haben, spätestens seit .NET 3.5 SP1 (offiziell natürlich bereit seit .NET 3.0) steht für mich fest, dass WPF der rechtmäßige Nachfolger von Windows Forms ist. WPF bietet viele Vorteile und einen Nachteil: Es stellt ein komplett neues Programmiermodell dar, bei dem teilweise andere Regeln gelten als beim eher "gemütlichen" Windows Forms. Der Lern- und Einarbeitungsaufwand darf nicht unterschätzt werden (ein bekannter WPF-Experte sagte, dass es Jahre dauern kann bis das man alles verstanden hat). Dennoch, an WPF geht kein Weg vorbei. Früher ist daher besser als später, auch wenn die Versuchung groß ist, beim nächsten Projekt wieder auf das vertraute Windows Forms zu setzen (meine Windows Forms-Bücher habe ich vor ein paar Monaten recycelt - mein nächstes Visual Basic-Kompendium wird natürlich auf WPF aufsetzen). In meinem Vortrag stelle ich WPF Windows Forms gegenüber und gehe vor allem auf das wichtige Thema "Data Binding" ein. > VB 10 oder lieber gleich C#? (der Termin verschiebt sich möglicherweise noch) Visual Basic ist zwar besser als sein Ruf, aber eventuell liebäugelt doch mancher mit einem Wechsel zu C# (alleine, um sich von seinen Kollegen beim Mittagessen nicht immer dieselben Kommentare anhören zu müssen). C# ist leichter als sein Ruf und hat eindeutig seine Reize. In meinem Vortrag stelle ich beide Sprachen gegenüber und gebe einen kurzen Überblick über die Syntax, nicht ohne aber auf die Vorzüge von Visual Basic an passender Stelle hinzuweisen (falls sich jemand am Ende gar nicht entscheiden kann, es gibt sehr leistungsfähige Code-Konverter in beide Richtungen, z.B. in Sharp Develop, einer IDE, die ich sehr schätze und gegenüber den Express Editionen vorziehe). Neben meinen Vorträgen gibt es natürlich noch mit Sicherheit tolle Visual Basic-Vorträge von Alex Bierhaus, Benjamin Gopp, Jörg Neumann usw. (es kann durchaus sein, dass es weitere VB-Vorträge gibt, die aus welchen Gründen auch immer nicht bei den VB Days angesiedelt wurden). Alles Weitere zu den Vorträgen nicht nur der Visual Basic Days findet man im Zeitplaner der Konferenz. Es wird also wieder einmal einiges geboten auf der Basta! (das darf man schließlich auch erwarten). Eigentlich hatte ich noch gehofft, Daniel Walzenbach als Speaker gewinnen zu können (der in Redmond angeblich an einem "supergeheimen" Projekt arbeitet, dass die Welt der Visual Basic-Programmierung revolutionieren soll), doch Daniel hat sich nach seiner "Zusage" nicht mehr gemeldet (Daniel, wenn Du das hier liest, bitte melde Dich mal...;). Und da wäre noch... Als weiteres Highlight für Entwickler findet auch in diesem Jahr eine Microsoft PDC statt (vom 17. bis 19. November wie üblich im Los Angeles Convention Center, direkt neben dem Staples Center in Downtown L.A.), wobei ich mir im Moment aber noch nicht sicher bin, was ich davon halten soll. Nicht nur, dass die Konferenz mit 3 Tagen recht kurz ist (ok, es ist ein Pre-Conference-Day dabei, aber im Allgemeinen geht die Konferenz am letzten Tag nur bis zum Nachmittag), etwas mehr "Sorgen" bereitet mir die im Moment noch recht diffuse Themenzusammenstellung und der Umstand, dass es "außer" Azure 1.0 und "Silverlight 4" nicht viel Neues zu geben scheint (.NET 4 und VS 2010 sind im Herbst keine Neuigkeiten mehr, zumal sie schon auf der letzten PDC angekündigt wurden). Sollte bei Microsoft was die Technologie-Themen angeht im Moment ein wenig die Luft raus sein? Schlecht wäre eine solche "Pause" nicht, denn mit .NET 4 (Stichwort: Parallele Programmierung, WPF usw.) stehen genug Themen an, mit denen sich die Entwickler in den nächsten 1-2 Jahren intensiv beschäftigen müssen.
(noch ein paar Meter in die Arena, wo 70.000 auf den Auftritt von U2 warten) Ausnahmsweise ein Thema, das nichts mit Programmierung zu tun hat. Anlass ist das wirklich gigantische Konzert von U2 anlässlich ihrer aktuellen 360 Grad Tour, das diese Woche in Gelsenkirchen stattfand, und der Umstand, dass U2 öfter von Musikjournalisten als die "letzte große Rockband" bezeichnet werden (die Rolling Stones zählen nicht, da sie in ihrer eigenen Altersliga spielen), die die Stadien der Welt füllt, was aus meiner Sicht nicht ganz stimmt, da es da noch Bruce Springsteen mit seiner E-Street Band gibt. Auch wenn ein Vergleich Bruce vs Bono ähnlich seriös und sinnvoll ist, als würde man Beethoven mit Mozart vergleichen wollen, ist es trotzdem interessant Gemeinsamkeiten und Unterschiede der beiden Bands gegenüberzustellen, denn nach ihnen wird mit Sicherheit nichts mehr kommen, was ähnliche Dimensionen annimmt. Musikalisch liegt zwischen dem Karrierebeginn von Bruce (sein Debüt-Album Greetings from Ashbury Park erschien bereits 1973 - damals lag mein Musikgeschmack irgendwo zwischen Sweet, Suzi Quatro und Bata Illic - 1974 starteten Abba mit Waterloo ihre Karriere) und dem von U2 (das Debüt-Album Boy erschien 1980) zwar fast ein Jahrzehnt, doch gehen die Ursprünge beider Bands auf die 70er Jahre zurück. Die Musiker stammen aus dem Arbeitermillieu (einmal Dublin, einmal New Yersey), was aber für die damalige Zeit praktisch Voraussetzung war, überhaupt Musik machen zu wollen - von Level 42 einmal abgesehen. Beide Bands wurden zu Beginn ihrer großen Karriere in den 80ern mit Superlativen bedacht - "die Zukunft des Rockn' Roll" (Zitat vom Musikjournalist John Landau, das sowohl in Newswek als auch im Time Magazine nahezu zeitlich erschien, der kurz nach der Manager von Bruce Springsteen wurde) - und "the only band that matters" (das Musikmagazin Rolling Stone). Beide dominierten die 80er Jahre musikalisch und prägten sie musikalisch mit. Beide entwickelten sich in den 90er Jahren weiter (wenngleich Bruce mit der Devils & Dust Tour und vor allem mit der einzigartigen Seeger Session Tour deutlich experimentierfreudiger war, allerdings auch Anfang der 90er Jahre eine Art künstlerische Krise (fristlose Kündigung der E-Street-Band, Human Touch-Album mit gleichnamiger Tour, die viele Bruce-Fans nach wie vor zwanghaft verdrängen) durchlebte. Und beide sind 2009(also mehr als 30 Jahre später) immer noch auf dem Höhepunkt ihrer musikalischen Schaffenskraft und Kreativität und lassen (zum Glück) noch keine Ermüdungserscheinungen erkennen. Beide Bands verfügen über hervorragende Individualmusiker (etwa Nils Lofgren und Clarence Clemons in der E-Street-Band) und natürlich The Edge bei U2 ("even his mama calls him The Edge"), wobei bei Bruce Springsteen und der E-Street-Band er, der Boss, klar dominiert und seinen Musikern pro Konzert maximal ein kleines Solo lässt (etwa für Nils bei Because the night), während The Edge und Adam Clayton bei U2 stark stilprägend sind bzw. das musikalische Zentrum bilden. Nicht nur Bono ist politisch (hyper-) aktiv, wenngleich sich keiner gekonnter dabei in Szene setzen kann, auch Bruce wurde mit den 80er Jahren zu einem politisch denkenden Musiker (Engagement für die Food Bank in den USA, Amnesty International, aktive Unterstützung im US-Wahlkampf sowohl für John Kerry, leider vergeblich, als auch für Obama). Während bei U2 das politische Element bei den Konzerten nach wie vor eine Rolle spielt (etwa durch die Unterstützung für Aung San Suu Kyi aus Burma, eine Referenz an die iranische Opposition während Sunday, Bloody Sunday oder durch eine Video-Ansprache von Bischof Tutu aus Südafrika zum Ende des Konzerts), hat Bruce "politische Anspielungen" bei seinen Konzerten komplett herausgenommen (im Moment gäbe es auch nicht viel zu kritisieren bzw. da es natürlich immer etwas zu kritisieren gibt, würde eine Kritik etwa am Afghanistan Einsatz oder der Bankenkrise etwas deplaziert wirken). Sowohl U2 als auch Bruce haben sich eine treue Fanbasis erarbeitet, die fast alle Altersgruppen umfasst, und die kaum Kosten und Mühen scheuen, um bei den Konzerten dabei zu sein (insgesamt scheinen mir die Bruce-Fans etwas fanatischer zu sein, insbesondere die Italienischen - wer würde schon U2 durch ganz Europa folgen und versuchen bei jedem Konzert in der ersten Reihe zu stehen?). Musikalisch wie inhaltlich unterscheiden sich die Konzerte von Bruce Springsteen und der E-Street-Band und U2 trotz gemeinsamer musikalischer Wurzeln in den frühen 80ern doch relativ stark. Bei U2 dominieren auf einem Konzert die brandaktuellen Stücke und die großen Hymnen wie Pride, Sunday Bloody Sunday und natürlich With or Without you, bei Bruce die "Kracher" aus den späten 70ern und frühen 80ern wie Badlands, The River, Atlantic City, Rosalita, No Surrender, Dancing in the dark und natürlich Born to Run, ergänzt mit den relativ jungen Stücken, etwa aus dem Rising Album. Die topaktuellen Stücke werden gespielt, besitzen aber nicht den Stellenwert wie bei U2 die neuen Stücke aus No Line on the Horizon, die das Publikum fast schon mitsingen kann. U2 hat über die Jahre mit verschiedenen Musikern im Studio zusammengearbeitet, Bruce war musikalischen Einflüssen (etwa aus der Rubrik Blues und Soul), sieht man von der Folk-Legende Pete Seeger ab, weniger offen. Beide Bands könnten locker doppelt und dreimal solange Konzert geben, ohne dass es langweilig werden würde. Während Bruce mit seiner E-Street-Band früher (in den späten 70ern bis Mitte der 80er Jahre) ohne Pause über 4 Stunden durchspielte und dann immer noch 5 Zugaben gab, sind es heute relativ gut getimte 3:13 Minuten (plus minus ein paar Minuten), U2 bringen es auf knapp 2 Stunden, was für die Fans mehr als ausreichend ist. Anders als man es vermuten könnte, sind Bruce Springsteen-Konzerte keine "Greatest Hits"-Konzerte. Viele kommerziell erfolgreiche oder zumindestens (gerade bei weiblichen Fans) bekannte Stücke wie Streets of Philadelphia, Secret Garden und erstaunlicherweise auch Born in the USA (sein größter kommerzieller Erfolg) spielt er überhaupt nicht (von Ausnahmen einmal abgesehen). Den größten Unterschied gibt es bei der Bühnenschau. Während es bei Bruce betont schlicht und bodenständig zugeht (ein paar bunte Lampen gehen im Rythmus der Musik an und aus - dafür ist der HD-Großbildschirm nach wie vor State of the Art, auch wenn er bereits seit der Rising Tour 2003 im Einsatz ist), setzen U2 mit der aktuellen 360 Grad-Tour was die Bühnengigantonomie angeht erneut Maßstäbe, die andere Musiker kaum erreichen werden (oder können oder auch wollen). Es lohnt sich wirklich die Tourfotos anzuschauen, auch wenn diese das Live-Erlebnis nur andeuten können. Bruce tritt mit oder ohne E-Street-Band grundsätzlich ohne Vorgruppe auf (an einem "Wie war die Vorgruppe?" erkennt man zu 100% den Ahnungslosen was Bruce Springsteen angeht), wenngleich er jüngst erstmalig bei verschiedenen Festivals gespielt hat, eine bedenkliche Entwicklung, bei U2 variiert die Vorgruppe je nachdem, was gerade aktuell ist und/oder thematisch zum Konzert passt und man nimmt sie als Konzertbesucher als unvermeidbar in Kauf (absolut "grausam" weil einfach nur laut war die Punk-Vorgruppe auf der Zoo-Tour und der DJ bei der Popmart-Tour, der vor Konzertbeginn elektronische Klangschleifen durch Publikum wabern ließ und am Ende unter Applaus des Publikums samt Mischpult von der Bühne geschoben wurde, war auch nicht gerade ein Genuss), Dafür gibt es bei Bruce deutlich mehr Abwechslung was die Songauswahl angeht. Man weiß bei ihm nie, was einem bezüglich der Setlist bei einem Konzert erwartet, wenngleich es natürlich einen Kernn gibt, der immer dabei ist (auf der aktuellen Tour können die Fans in den ersten Reihen ihre Musikwünsche auf selbst beschriebene Pappkartons, aufblasbare Plastiktorten oder andere mit Filzstift beschreibbare Utensilien beim Boss während des Konzerts "einreichen" - mehr Zuschauerintegration geht nicht). U2 scheint wohl erst auf ihrer aktuellen Tournee den Mittelteil stärker zu variieren. Sowohl Bruce als auch Bono sind hundertprozentige Bühnenpersönlichkeiten mit starkem Charisma, wenngleich Bono der etwas größere "Darsteller" ist. Doch während Bono im Allgemeinen unerreichbar für die Fans über die Bühne fetzt, gibt sich Bruce seit der Magic-Tour extrem publikumsnah und als "Star zum Anfassen" (im wörtlichen Sinne), was nicht nur weibliche Fans an den beiden ins Publikum reichenden Laufstegen während des Konzerts ein paar Mal in Ekstase versetzt. Sowohl bei U2 als auch bei Bruce halten sich die Preis für Konzertkarten noch in halbwegs erschwinglichen Regionen (Innenraum bei U2 70€, bei Bruce ca. 85€ - eine Menge Geld natürlich, doch kein Vergleich zu den "Irrsinnspreisen", die z.B. von Madonna verlangt werden (allerdings sind sowohl U2 als auch Madonna bei Live Nation unter Vertrag). Sowohl U2 als auch Bruce mit seiner Band dürften pro Konzert 1-2 Millionen verdienen (75.000 x 90 = ???) und gehören zu den Einkommensmillionären der Branche. Bruce Springsteen hat mit der E-Street-Band und solo bis heute auf 16 Alben herausgebracht, U2 kommen auf 13. Seit The Joshua Tree kam jedes U2-Album in Deutschland auf Platz 1 der Charts, bei Bruce war dies "nur" bei Born in the USA, The Rising, Devils&Dust (ohne E-Street Band) und dem aktuellen Working on a Dream der Fall, was insofern bemerkenswert ist, da sie sich musikalisch teilweise recht stark unterscheiden. U2 hat die deutlich moderne Website. Bei Bruce (bzw. Sony Music) wirkt alles noch ein wenig hausbacken, aber auch etwas sympathischer. Bruce hat sich (bislang jedenfalls) weder an Apple noch an einen anderen Hauptsponsor "verkauft". U2 ist in dieser Beziehung etwas flexibler, spricht aber auch eine um einige Jahre jüngere Fanbase an. Uff, das war ein längerer Eintrag, der absolut nichts mit Programmierung zu tun hatte (zum Musikjournalisten reicht es sicher noch nicht ganz), den ich aber einmal "los werden" wollte. Einen kleinen "Programmieraufhänger" gibt es aber dennoch zum Schluss. Auf der Basta! im September (mehr dazu in Kürze) werde ich meine Bruce-Konzertdatenbank mit ein paar LINQ-Beispielen vorstellen. Wie wäre es mit einem "From K In Konzerte Where K.Jahr >= 2003 From S in Songs Where S.Titel = "Born in the USA" Select K" oder so ähnllich, um alle Konzerte herauszubekommen, in denen der Top-Hit aus dem Jahr 1984 gespielt wurde?
VS2008ImageLibary.zip ist bekanntlich die "Image Library" von Visual Studio, die eine Vielzahl ganz netter, aber nicht unbedingt ausgefallener Icons für Symbol- und Menüleisten enthält. In meinem Visual Basic 2008-Kompendium erwähne ich sie auf Seite 65, da eine Bitmap aus dem Archiv in dem Beispielprogramm verwendet wird. Leider gibt es VS2008ImageLibary.zip nicht bei Visual Basic 2008 Express Edition (sie sollte sich im Ordner %ProgramFiles%\Microsoft Visual Studio 9.0\Common7 befinden). Ich habe diese "Kleinigkeit" leider übersehen, da ich beim Schreiben des Buches sowohl die Express als auch die Pro Version installiert hatte. Nicht nur für die Leser, die nur über die Express Edition verfügen, ist das ein wenig ärgerlich, zumal es keinen direkten Ersatz gibt. Ich habe mir vor einigen Monaten die wirklich gute Icon-Library Krypton Icon Pack gekauft (89 US$), da ich es leid war, im Internet immer wieder nach denselben Icons zu suchen, die eigentlich bei Visual Studio/Visual Basic fest dabei sein sollten, doch kommt diese Option sicher nicht für jeden in Frage (es gibt natürlich viele andere vergleichbare Icon-Libraries). Auch wenn ich es wirklich schade finde, dass die ImageLibrary bei den Express Editionen nicht dabei ist (gerade "Hobby-Programmierer" haben Zeit und im Allgemeinen auch Spaß daran, sich mit den optischen Details ihrer Anwendungen zu beschäftigen), muss man leider damit leben. Es gibt (mind.) 3 Alternativen: 1) Man besorgt sich VS2008ImageLibary.zip "irgendwo". Diese Variante zähle ich lediglich der Vollständigkeit halber auf und empfehle sie nicht, da es "lizenzrechtlich" nicht ganz sauber sein dürfte. 2) Man installiert die für 90 Tage gültige Testversion von VS 2008 Pro (bei VS 2005 sind sie unter dem Namen VS2005ImageLibrary.zip auch dabei). Bei der Installation kann die Grafikbibliothek explizit ausgewählt werden (die Option sollte gesetzt sein - auch bei dieser Variante sollte man die Lizenzbedingungen lesen). 3) Man begibt sich auf die "Jagd" nach kostenlosen Icons, was viel Ausdauer und sicher auch einen aktuellen Virenscanner und Popup-Blocker erfordert. Auch Microsoft offeriert ein paar kostenlose Icons (als "Dankeschön" für die Registrierung der Express Edition), die aber keinen allzu praxistauglichen Eindruck machen. Das "FreeIcon"-Angebot von FamFamFam macht einen ganz guten Eindruck. Also, mein Wunsch Nr. 1 für die nächste Version von Visual Basic Express sind natürlich eine umfangreiche Icon-Sammlung (neben einem "Ribbon-Designer", den es eventuell geben könnte, da die Multifunktionsleisten praktisch ein fester Teil von Windows 7 sein werden). Sollte jemand eine freie Icon-Library kennen, würde ich mich natürlich über einen Hinweis freuen.
Bei manchen Dingen erwartet man einfach, dass sie funktionieren. Oder andersherum: Wenn sich ein Programm wie der PowerPoint 2007-Viewer unter Windows Server 2008 (das vor ein paar Tagen frisch installiert wurde) nicht starten lässt, ist das ein wenig "seltsam". Nun, es kam vor und zunächst war ich ratlos bis ich in einem Forum die Lösung fand: 1) In %program files%\Microsoft Office\Office 12 einen Unterordner "1033" anlegen (die Zahl steht bekanntlich für LCID für Englisch(USA)) 2) Die Datei Ppvwintl.dll aus dem Unterordner 1031 in den neuen Ordner kopieren (der "Country Code" für Germany). Danach lässt sich der PowerPoint-Viewer starten. Welche dreistelligen Millionenbeträge für den Support Microsoft wohl jedes Jahr durch die Mitwirkung seiner Anwender in den unzähligen Foren einspart? PS: Eine Liste aller "Country Codes" findet man übrigens hier.
(neulich vor dem Apollo Hammersmith in London - Motörhead spielen hier in Kürze auch wieder) Vor kurzem wurde Silverlight 3 von Microsoft offiziell freigegeben und seit kurzem gibt es für VS 2008 SP1 und VS WebDeveloper Express SP1 die Silverlight 3 Tools, die aus Vorlagen, der Silverlight-Runtime und dem Silverlight SDK bestehen. Neben der Möglichkeit gestreamtes HD-Video ruckelfrei und, sofern wie Grafikkarte mitspielt, in voller Bildschirmauflösung darstellen zu können (wer sich davon überzeugen möchte, wie "Web-TV" in naher Zukunft aussehen könnte bzw. im Grunde schon aussieht, muss sich nur die Wimbledon 2009-Übertragungen im Fullscreen-Mode anschauen, die mit einer Kombination aus Silverlight 3-Client und IIS Stream Media Services realisiert wurden - wenn man lang genug durchhält, kann man auch die Kommentare von Boris Becker als Co-Kommentar in erstaunlich gutem Englisch genießen, wenngleich er einmal versehentlich "club" wie "cloub" aussprach, sich aber sofort selber korrigierte;) - Flash kann das im Prinzip auch, aber vermutlich nicht ganz so elegant) wurde vor allem etwas für die Anbindung von Datenbankinhalten über eine recht komfortable Datenbindung, ein leicht verbessertes DataGrid (das eine Gruppierung von Datensätzen bietet) und vor allem das neue DataForm-Control getan. So weit, so schön, doch wer als hoffnungsvoller Entwickler die "Zukunft" des SmartClient selber kennenlernen und seine erste Silverlight 3-Anwendung mit Datenbindung umsetzen möchte, wird vor unerwartete Probleme gestellt und man fragt sich irgendwann, ob es sich wirklich lohnt, dafür seine Zeit zu ver(sch)wenden. Um es kurz zu machen (das Ganze hat mich einen "halben Tag" gekostet), meine Erfahrung in Stichworten: >Fast alle Blog-Einträge, Tutorials, vor allem aber die "How to Videos" von Microsoft, die unmittelbar nach der Mix09 erschienen sind, basieren noch auf der ersten Beta. Im Vergleich zur finalen Version hat sich was die Datenbindung angeht praktisch "alles" geändert, so dass diese Videos und leider auch ein ansonsten sehr gut gemachter Artikel zum Thema DataForm, der vor kurzem im dot.net-Magazin erschien, unter diesem Hintergrund für einen Einsteiger relativ wertlos ist (die Betonung liegt auf relativ). >Die größte Änderung ist, dass das DataForm-Control nicht mehr Teil der Silverlight 3-Runtime ist, sondern in das Silverlight 3 Toolkit ausgelagert wurde, das einen separaten Download darstellt. Auch einige Schnittstellen (etwa IBindable) gibt es nicht mehr, genau wie die Assembly System.ComponentModel.dll, die man in einigen Tutorials erst einmal einbinden soll, die aus der Runtime wieder herausgenommen wurde. >Ich kann mir zwar keinen (vernünftigen) Grund vorstellen, warum ein Unternehmen mit soviel Erfahrung wie Microsoft so viele Änderungen noch in letzter Minute durchführt, aber irgendwelche Gründe wird es sicher geben und es ist auch alles haarklein in einem "Breaking Changes"-Dokument beschrieben, das mit den Silverlight 3 Tools daherkommt (und dass man unbedingt ausführlich lesen sollte). >Sehr viel ärgerlicher ist es, dass das alles anscheinend nur mit einem englischen VS 2008 SP1 funktioniert. Bei einem "deutschen" VS 2008 SP1 lassen sich die Silverlight 3 Tools nicht installieren bzw. es erscheinen keine Projektvorlagen, bei einem "Mix" (erst die deutschsprachige Version, dann die englische Version "drüberinstalliert", so dass man zwischen den Sprachen umschalten kann) funktioniert es nur scheinbar. Die Vorlagen werden angeboten, doch VS 2008 stürzt nach dem zweiten oder dritten Start der Anwendung schneller ab als man "so ein Sch..." aussprechen kann. Es ist richtig, dass in den Installationsvoraussetzungen der Silverlight 3 Tools angegeben wird, dass die VS-Sprachversion "ENU" sein muss, doch a) wer liest das so genau und b) warum muss es überhaupt so sein, zumal die Silverlight 3 Tools keine Beta oder CTP mehr sind, wo man das noch halbwegs nachvollziehen kann (bzw. wo es einfach so ist). Es wird wirklich Zeit, dass Microsoft seine "internationalen Kunden" etwas ernster nimmt und dafür sorgt, dass sich offizielle VS-Erweiterungen unter jeder Landessprache installieren lassen (mag sein, dass es noch kommt, denn neben der Englischen wird auch eine Japanische Version des Toolkits angeboten). Gerade als Buchautor kann und möchte ich mir nicht die englische Version installieren, zumal das Problem zu lösen wirklich nicht so schwer sein kann. Wer diese Hürde erfolgreich genommen hat (bei mir bedeutete es, zuerst VS 2008 DE komplett zu deinstallieren, um danach VS 2008 Pro ENU und danach VS 2008 SP1 ENU zu installieren - was unter Windows Server 2008, das bei mir in der wirklich sehr guten VirtualBox von Sun läuft, erstaunlich schnell ging), läuft alles ohne Probleme. Es ist wirklich beeindruckend, welche Möglichkeiten bei Silverlight 3 z.B. durch das DataForm-Control (das wie erwähnt inzwischen Teil der Silverlight Toolkits ist) zur Verfügung stehen, um "Geschäftsdaten" einzubinden. Richtig interessant wird es im Zusammenspiel mit den neuen .NET RIA Services, die aktuell noch als CTP vorliegen. Die .NET RIA Services verbinden einen (Silverlight-) Client mit einem (ASP.NET-) Backend und generieren Proxy-Klassen, die der Client benutzt, um über Funktionsaufrufe in der Anwendungslogik domainspezifische Operationen für Daten(bank)-abrufe und –Aktualisierungen und andere Service-Operationen durchzuführen und eine Datenbindung nutzen zu können, die nicht jedes Mal erneut implementiert werden müssen. Das erspart einem nicht nur das Hantieren mit WCF-Services oder ADO.NET Data Services, sondern auch das Schreiben des immer wieder gleichen Zugriffs- und Validierungscodes. Wer mehr über den Umgang mit den .NET RIA Services erfahren möchte, sollte das Walkthrough "Creating your first .NET RIA Services Application" durcharbeiten (ein Erfolgserlebnis ist hier praktisch garantiert) und nicht vergessen bei allen anderen Tutorials darauf zu achten, ob sie sich noch auf die Beta beziehen. PS: Wie man die Silverlight 3 Tools eventuell doch auf einem deutschen VS 2008 SP1 installieren könnte, beschreibt ein gewisser Florian Mätschke in seinem Blog (ich habe es nicht probiert und der Hinweis bezieht sich auch noch auf die Beta-Version).
|