(VB2010 Express wird mit Sicherheit ein Treffer;) Die neue Version von Visual Basic 2010 Express, die es aktuell nur auf Englisch gibt (Ende April soll die deutschsprachige Version zur Verfügung stehen), macht einen hervorragenden Eindruck: >Durch die Umstellung auf WPF wirkt die Schrift in der IDE deutlich konturenschärfer, was die Lesbarkeit erhöht >Insgesamt wird die IDE aufgeräumter und einladender >Der WPF-Editor wurde ein verbessert und bietet endlich Unterstützung für Datenbindung über das Property-Fenster, Intellisense für XAML-Attribute und die Möglichkeit, Brushes (also Farben und Muster) endlich komfortabel in einem Farbauswahlfenster einstellen zu können. >Der Code-Editor von VS 2010 wurde generell verbessert - ein paar der Neuerungen gibt es auch in den Express Editionen, wie z.B. der Umstand, dass wenn ein Bezeichner (Variable) selektiert wird, alle Stellen, an denen der Bezeichner im Quelltext vorkommt, ebenfalls hervorgehoben werden (sehr praktisch) oder die "Suchfunktion" bei Intellisense, die z.B. bei Eingabe von "Dim r As Reader" dazu führt, dass in der Auswahlliste alle Klassen angeboten werden, in denen "Reader" enthalten ist (bei VS 2008 waren es nur Klassen, die mit Reader begannen, was oft nichts brachte, da man sich bekanntlich nie merken kann, ob eine Klasse XmlReader oder XmlTextReader heißt - zu mindestens geht es mir immer so;)). Toll sind die "Multiline-Lambdas", durch die man z.B. schreiben kann: Dim P = Sub (Start, Ende) For n = Start To Ende Console.Writeline(n) Next End Sub P(1,10) Nicht, dass die Welt darauf gewartet hätte, eine Zählschleife so schreiben zu können, aber das kleine und harmlose Beispielchen zeigt trotzdem sehr schön, wie elegant sich Lambdas (anonyme Funktionen/Prozeduren) bei VB 10 schreiben lassen, die sich mit einem angehängten "AsParallel" theoretisch auch parallel ausführen lassen. Das kann leicht übersehen werden: Die Spracherweiterungen von VB 10 stehen auch dann zur Verfügung, wenn das "Ziel" z.B. .NET 2.0 ausgewählt wird (per Voreinstellung wird das neue .NET 4 Client Profile als Ziel ausgewählt). Das bedeutet, dass man sie auch für Anwendungen verwenden kann, die noch unter .NET 2.0 laufen. Covarianz und Contravarianz Covarianz und Contravarianz sind zwei Begriffe, mit denen ich mich nach wie vor etwas schwer tue (Oliver Sturm kann das sicher wunderbar auf seine unnachahmliche Weise erklären und Eric Lippert, der bei Microsoft für die Implementierung in C# 4.0 zuständig war, erklärt die Begriffe in einem Blog auch sehr klar und strukturiert). Also, hier ein weiterer Versuch. Die Begriffe Covarianz und Contravarianz beziehen sich auf den Umstand, wann für einen Typ T1 ein Typ T2 eingesetzt werden kann, der zu T1 in einer "ist abgeleitet von" oder "ist ein Basistyp von T1"-Beziehung steht. Wenn ich Eric Lippert richtig verstanden habe, dann ist nicht der Typ covariant/contravariant, sondern die Beziehung der Typen T1 und T2 untereinander ist es. Aus Gründen der sprachlichen Vereinfachung heißt es aber, dass ein Typ T in einer generischen Schnittstelle oder einem generischen Delegaten covariant/contravariant ist. Covarianz liegt vor, wenn für einen Typ T1 in einer generischen Schnittstelle oder bei einem generischen Delegaten ein von T1 abgeleiteter Typ eingesetzt werden kann (also ein speziellerer Typ). Kontravarianz, wenn für T1 ein Typ eingesetzt werden kann, von dem sich T1 ableitet (also ein "allgemeinerer" Typ als T1). Beide haben etwas mit dem Thema Typsicherheit zu tun und sollen verhindern, dass zur Laufzeit InvalidCastExceptions auftreten, weil die Typen nicht zueinander passen. Hier ein sehr einfaches Beispiel: Dim Worte As IEnumerable(Of Object) = New List(Of String) From {"Sonntag", "Montag", "Dienstag"} Unter .NET 3.5 führt die Zuweisung zu einer InvalidCastException, auch wenn sie "logisch" erscheint. Warum soll man einer Variablen vom Typ Object nicht einen String zuweisen können? Der folgende Befehl funktioniert doch auch: Dim o As Object = "123" Der Hintergrund ist, dass diese implizite Typenkonvertierung bei generischen Schnittstellen bislang nicht erlaubt war, da sie zu einer Typunsicherheit führen könnte. Wenn aber, wie es bei IEnumerable(Of T) der Fall ist, ohnehin nur Werte gelesen, aber keine hinzugefügt werden können, kann auch nichts schiefgehen, so dass die Regeln bei .NET 4.0 etwas gelockert wurden. Covarianz und Contravarianz sind Eigenschaften der .NET-Klassenbibliothek und dort konkret bei generischen Schnittstellen und generischen Delegaten. Mit .NET 4.0 wurden Schnittstellen wie IEnumerable(Of T) so erweitert, dass für T auch ein von T abgeleiteter Typ (Covarianz) eingesetzt werden kann. Die dafür eingeführten Schlüsselwörter In und Out, mit denen die Parameter der Schnittstelle bzw. des Delegaten, die covariant (out) und kontravariant (in) sein sollen, sind neu bei VB 10 (und C# 4.0). Hier am besten ein kleines Beispiel. Gegeben seien zwei Klassen Person und Autor, wobei sich Autor von Person ableitet, damit eine "Grö0er-Kleiner"-Beziehung besteht. Weiterhin gibt es eine Variable vom Typ IEnumerable(Of Person), der eine generische List(Of Autor)-Collection zugewiesen werden soll. Unter .NET 3.5 (und damit VB 2008) gibt es bei der Ausführung eine InvalidCastException, da die Autor-Collection nicht einer Variablen vom Typ IEnumerable(Of Person) zugewiesen werden kann. Unter VB 10 und .NET 4.0 ist die Zuweisung dagegen erlaubt, da der T-Parameter von IEnumerable(Of T) mit dem neuen Schlüsselwort Out erweitert wurde und damit covariant ist. Hier ist das komplette Beispiel, das nebenbei auch von den neuen Collection-Initialisierern und automatischen Properties Gebrauch macht. ' ---------------------------------------------------------------------------- ' Ein Beispiel für Covarianz bei Visual Basic 10 und .NET 4.0 ' ---------------------------------------------------------------------------- Module Module1 ' Generische Schnittstelle mit einem allgemeinen Typ Dim AutorenTeam As IEnumerable(Of Person) Sub Main() Console.Title = "Covarianz-Beispiel" Console.ForegroundColor = ConsoleColor.Green ' Zuweisung einer generischen Collection eines spezielleren Typs AutorenTeam = GetAutoren() Console.WriteLine("{0} Autoren im Team.", CType(AutorenTeam, List(Of Autor)).Count) Console.ReadLine() End Sub Function GetAutoren() As IEnumerable(Of Autor) Return New List(Of Autor) From { New Autor() With {.Name = "Albert", .GebDatum = "1.5.1955"}, New Autor() With {.Name = "Bert", .GebDatum = "2.6.1972"}} End Function End Module Class Person Property Name As String Property GebDatum As DateTime End Class Class Autor : Inherits Person End Class Vorläufiges Fazit: Die mit .NET 4.0 für eine Reihe von Schnittstellen eingeführte Covarianz und Contravarianz sind eine praktische Angelegenheit, da sie zu etwas mehr Flexibilität beim Umgang mit generischen Schnittstellen (und generischen Delegaten) führen. Die meisten Visual Basic-Programmierer werden vermutlich gar nicht ahnen, dass bei einer Zuweisung Covarianz bzw. Contravarianz im Spiel ist. Die neuen Schlüsselwörter In und Out spielen für die Praxis kaum eine Rolle und sind in erster Linie für Entwickler von Klassenbibliotheken interessant, die auf diese Weise den Einsatz ihrer Schnittstellen und Delegaten etwas flexibler gestalten können. Ich hoffe, die Erklärungen war halbwegs verständlich (die MSDN-Doku erklärt die Themen auch recht ausführlich, wenngleich ich mich mit maschinell erstellten Übersetzungen wie "Kovarianz erlaubt einer Methode, einen stärker abgeleiteten Rückgabetyp zu verwenden, als vom generischen Typparameter der Schnittstelle definiert wurde" - was heißt hier "stärker abgeleitet?" - "etwas" schwer tue. Ich hoffe vor allem, dass die Erläuterungen sachlich korrekt sind. Ansonsten würde ich mich über einen Hinweis freuen.
(wo bleibt VB?) Seit Mitte März gibt es bei Microsoft mit Visual Studio 2010 Express for Windows Phone die erste Vorabversion des neuen Entwicklungswerkzeugs für die neue Mobilplattform von Microsoft mit dem Namen Windows Phone 7 Series. Oder ein wenig weniger strategisch und diplomatisch formuliert. Microsoft startet einen neuen Anlauf den Markt für das mobile Internet (mit Handys, SmartPhones und dergleichen) und hat sich dabei "ein wenig" von Apple, dem iPhone und dem enormen Erfolg des App Stores "inspireren" lassen (das war jetzt doch wieder ein wenig zu diplomatisch). Entwickelt werden Apps für Windows Phone 7 Series-Geräte (die ersten Mobiltelefone soll es noch im Herbst geben) mit einer speziellen Variante von Visual Studio 2010 Express, die nur Projektvorlagen für Windows Phone und XNA Game Studio 4.0 anbietet. Diese Edition wird, der Name deutet es an, kostenlos sein. Die Phone-Apps basieren auf Silverlight 4, getestet werden die Apps mit Hilfe eines kleinen Emulators. Im Vergleich zum iPhone ist die App-Entwicklung deutlich einfacher. Ein "Hello, World"-App besteht wirklich nur aus einer Zeile Code und nicht aus etwa 80 wie bei einer iPhone-App (wobei Einfachheit nicht immer von Vorteil ist weil dann eine Menge schlecht designter Apps entstehen). So weit, so gut. Weniger gut ist der Umstand, dass es in der ersten Preview von Visual Studio 2010 Express for Windows Phone nur Vorlagen für C# gibt. Visual Basic bleibt, genau wie bei XNA Game Studio von Anfang an, außen vor. Sollte es dabei bleiben, bleibt VB-Entwicklern nichts anderes übrig als C# zu lernen,wenn sie Apps für das neue Windows-Phone entwickeln möchten. Ich kann im Moment nicht beurteilen, ob dies lediglich an begrenzten Ressourcen liegt (in der Doku müssten alle Beispiele auch in VB vorliegen), oder ob dies strategische Gründe hat. Bereits auf der PDC08 wurde bekanntgegeben, dass beide Sprachen in Zukunft gemeinsam "weiterentwickelt" werden und Spracheigenschaften, die in C# eingeführt werden auch in VB kommen werden, was man auch so verstehen kann, dass C# weiter entwickelt wird und man von Fall zu Fall entscheidet, welches der neuen Sprachelemente nach VB übernommen wird. Auf der PDC08 wurde aber auch versprochen, dass jedes künftige Framework sowohl mit C# als auch VB genutzt werden kann. Grundsätzlich ist die Programmierung von Phone 7-Apps auch mit VB möglich und natürlich bedeutet der Umstand, dass die erste Vorabversion von Visual studio 2010 Express for Windows Phone keine Vorlagen für VB enthält noch nicht das Ende von VB. Strategisch ergibt es auch keinen Sinn, eine so große Gruppe von Entwicklern von dem neuen Markt auszuschließen. Microsoft muss daran interessiert sein, möglichst viele Entwickler auf die neue Plattform zu holen. Tatsache ist aber auch, dass VB im aktuellen Phone 7-SDK keine Rolle spielt und wer sofort mit der Entwicklung beginnen möchte (und wer möchte das nicht?), dies mit C# zu tun muss. Einen netten Vortrag von Lucian Wischik, der bei Microsoft für die Weiterentwicklung von Visual Basic zuständig ist, von der PDC09, in dem er zeigt wie sich eine einfache Silverlight 4-App (die theoretisch 1:1 auf einem Phone 7-Gerät laufen sollte) mit VB 2010 entwickeln lässt, gibt es hier.
(Pi ist überall) Über Google erfährt man bekanntlich so manches, was man vorher nicht wusste. Zum Beispiel, dass der 14.3 der Pi-Tag ist (eigentlich auch logisch). Kann und sollte man für eine harmlose Zahl einen Gedenktag einrichten? Ich denke schon, da es kaum etwas gibt (was mir spontan einfallen würde), das in allen Kulturen gleichermaßen geschätzt wird, das von keiner Ideologie umklammert ist, und um das noch keine Kriege geführt wurden. Pi ist vor allem ein besonderer Tag für die sog. Nerds. Wie man als typischer Nerd (oder Geek, wobei ich den Unterschied zwischen den beiden soziologisch-kulturellen Minderheiten nicht in 1-2 Sätzen beschreiben könnte - ich vermute, Geeks pflegen häufiger soziale Kontakte) den "Pie-Day" am besten begehen kann erfährt man hier: http://www.wikihow.com/Celebrate-Pi-Day Da es in diesem Blog hin und wieder auch um Visual Basic gehen soll, im folgenden eine kleine Console-App, die die Kreiszahl über eine einfache Reihenentwicklung annähert(zur Abwechslung einmal ohne LINQ&Lambdas): ' Berechnet Pi über eine einfache Annäherung Module Module1
Private RecurseLimit As Byte = 60 Private PiOffiziell As String = "3.1415926535897932384626433832795028841971693993751"
Sub Main() Console.Title = "Anhäherung an Pi" Console.ForegroundColor = ConsoleColor.Green Dim PiZahl As Double = 2 * CalculatePI(1) Console.WriteLine("Die Annährung: {0:N20}", PiZahl) Console.WriteLine("Math.PI: {0:N20}", Math.PI) Console.WriteLine("Das Original: {0:N50}", PiOffiziell) Console.ReadLine() End Sub
Private Function CalculatePI(ByVal i As Integer) As Double If i > RecurseLimit Then Return i Else Return 1 + (i / (1 + (2 * i))) * CalculatePI(i + 1) End If End Function
End Module Im Rahmen der Double-Genauigkeit ist das Ergebnis nicht schlecht und entspricht ziemlich genau dem, was auch Math.Pi liefert. Natürlich ist es kein Vergleich zur offiziellen Zahl, die inzwischen auf etwa 2 Trillionen Ziffern genau berechnet wurde (bekanntlich ist Pi eine unendliche Zahl), oder zu jener Kurzvarianten, die man (als echter Geek bzw. Nerd) eigentlich auswendig aufsagen können sollte (der Weltrekord liegt laut Wikipedia bei 100.000 Stellen, aufgestellt von Akira Haraguchi, der für das Aufzählen einen Tag benötigte): 3.1415926535897932384626433832795028841971693993751 Wer viel Zeit hat und gerne einmal eine "State of the Art"-Variante kennenlernen möchte, sollte sich den folgenden Text zu Gemüte führen, der zeigt, wie sich Pi mit Hilfe der Grafikkarten-CPU (GPU) und F# berechnen lässt: http://tomasp.net/articles/accelerator-intro.aspx
(auf der Gegenfahrbahn den Stau überholen - die Maßnahme 'A' macht's möglich) Letzte Woche fand in Hannover traditionell wieder einmal die CeBit statt, die "weltgrößte Computermesse" (wie es in den Radionachrichten seit Jahren heißt und wo das Wort "Computer" mit der Betonung auf dem "u" immer so betont wird als wäre das noch ein exotisches Thema - dabei verfügt ein modernes Handy vermutlich über mehr Rechenleistung als die meisten Mainframes der 70er Jahre). Die Cebit ist auch keine Computermesse, sondern eher eine Bühne für die gesamte Palette an IT-Dienstleistungen, insbesondere deutscher Firmen. Wer die "neusten Modelle" sehen möchte wird vermutlich genauso enttäuscht sein wie jemand, der von den ganzen Thematik keine Ahnung hat und endlich einmal aus nächster Nähe erleben möchte, wie Computerfreaks, Programmierer oder Hacker aussehen. Die Cebit ist insgesamt eine relativ unspektakuläre Angelegenheit und man muss bereits genauer hinschauen und Hunderte von Metern durch die großen Hallen zurücklegen, um echte Innovationen zu erleben (aber es gibt sie natürlich). Aber die CeBit besitzt nach wie vor ihre speziellen Reize, für die es sich lohnt am Messebahnhof Laatzen auszusteigen (der Umstand, dass der ICE während der CeBit-Woche kurz vor Hannover einen Zwischenhalt einlegt macht die Messe gerade für Tagesbesucher leicht erreichbar). Branchengrößen wie Adobe oder Apple sind seit Jahre nicht mehr auf der CeBit vertreten (dafür war Dell nach Jahren der Abstinenz wieder mit einem eigenen Stand dabei) genauso wenig wie es den Flair der Anfangsjahre mit Firmen wie Commodore, Schneider, Micrografx oder Borland noch nicht. Dafür war Google erstmals (?) mit einem eigenen Stand vertreten, der aber lediglich aus einer schlichten Bühne bestand, auf dre drei StreetView-Cars platziert wurden mit denen Google die flächendeckende Erfassung von Straßen und Häusern durchführt (theoretisch soll jeder Quadratmeter in Deutschland erfasst werden, was enorme Eingriffe in die Privatsphäre zur Folge hat - in einer Image-Broschüre, die am Stand ausgelegt wurde, und in der sich das alles relativ harmlos anhört, findet man auch eine Hinweis darauf, dass theoretisch jeder Einspruch dagegen erheben kann, dass z.B. das eigene Haus "identifizierbar" wird (mehr dazu z.B. hier). Ein wenig seltsam war, dass sich scheinbar kein Google-Mitarbeiter am Stand aufhielt (oder ich war einfach am falschen Stand gewesen;). (demnächst womöglich vor Ihrer Haustür - ein StreetView-Car von Google) Die CeBit kommt in der Fachpresse seit Jahren eher schlecht weg, ganz zu Unrecht wie ich finde. Natürlich sind die Zeiten vorbei, in denen auf der CeBit irgendwelche bedeutenden "Ankündigungen" gemacht wurden. Auch der Umstand, dass viele wichtige Unternehmen nicht mehr dabei sind kann man der Firma mit dem wohlklingenden Namen "Deutsche Messe", die die CeBit seit Jahren nicht nur in Deutschland durchführt, nur indirekt vorwerfen. Die Branche, sofern man sie überhaupt noch als Ganzes erfassen kann, ist dazu einfach zu vielfältig geworden, als dass sich alles in einer Messe unterbringen ließe. Und: Innovationen, mit denen sich "Experten" beeindrucken ließen sind seltener geworden, da Quantensprünge nicht in Intervallen von Jahren, sondern Jahrzehnten stattfinden und es dann noch einmal ein "paar Jahre" dauert bis sie kommerziell eine Rolle spielen (die CeBit ist zudem keine Innovationsschau, sondern in erster Linie eine Produkt- und Handelsmesse). Man kann dem CeBit-Veranstalter auch nicht vorwerfen, sich nicht etwas einfallen lassen zu haben, um dem Besucherschwund entgegenzuwirken. Letztes Jahr erhielten eine Reihe von Open Source-Projekte (kostenlose) Standflächen, dieses Jahr wurde mit der CeBit Sounds und der Spielhalle mit den "Intel Extreme Masters" gezielt das jüngere Publikum angesprochen. Für Innovationen ist traditionell die Halle 9 mit ihrem "Future Parc" zuständig, in der sich (in Bundesländer unterteilt) Universitäten und Forschungseinrichtungen präsentieren, aber auch Firmen mit kommerziellen Produkten. Besonders beeindruckt hat mich der Eye-Tracking-Scanner der Firma Tobii, der auf die Pupillen-Bewegung reagiert und dadurch z.B. erkennen kann, wie lange der Betrachter auf bestimmten Stellen des Bildschirms verweilt. Ich habe es problemlos geschafft, einen Text mit dem zu scrollen, was ganz neue Möglichkeiten eröffnet wie sich z.B. eBooks lesen lassen. Natürlich gab es noch eine Reihe weiterer echter Innovationen bzw. interessanter Produkte - die folgende Aufstellung erhebt natürlich keinen Anspruch auf Vollständigkeit: - Das LTE-Connected Car bei Alcatel Lucent (LTE ist der "Nachfolger" von UTMS und verspricht DSL-Geschwindigkeit beim mobilen Internet-Zugang - ich fahre zwar relativ wenig Auto, doch zeigt die Entwicklung eindrucksvoll, dass Breitband in ein paar Jahren als gegeben vorausgesetzt werden kann).
- 3D HD-Beamer von LG (klingt im Moment noch etwas exotisch, wird in ein paar Jahren sicher Standard sein).
- Ein "Brain Computer-Interface", mit dem sich ein Computer durch Gehirnaktivitäten steuern lässt (so etwas kann natürlich nur aus Österreich kommen;)
- Eine vom Fraunhofer Institut in Erlangen entwickelte Software mit dem Namen Shore, die Mimik und Gemütszustand erkennen kann (und die es auch zum Download gibt).
- Ein schicker eBook-Reader von Asus
- 3D-Fernsehen in verschiedenen Ausprägungen
- Einige Computerbuchverlage (Pearson, Gallielo) sind wieder zurück (nicht erst seit diesem Jahr)
Einen unterhaltsamen Überblick vermittelt das c't-TV-Magazin mit Georg Schnurrer's Messerundgang: http://www.heise.de/ct-tv/artikel/Video-Was-gibt-s-denn-hier-zu-sehen-938339.html Auch Microsoft war natürlich wieder in Halle 4 mit einem bunten Themenmix vertreten bestehend aus Themen wie Cloud Computing (Frank Fischer hielt einen guten Vortrag, bei dem er den Übergang von der Anwendung, die auf eigenen Servern des Unternehmens läuft, auf das Hosting in der Cloud mit einem "jetzt machen wir das Kabel einfach etwas länger" umschrieb - eindrucksvoll war auch sein Zahlenvergleich - der größte Hoster in Europa hat nach seinen Worten ca. 25.000 Server "im Keller" stehen - "soviel bauen wir jeden Monat in unsere DataCenter ein"), Business Intelligence, Windows 7, das neue Arbeiten, Office 2010 oder das digitale Klassenzimmer. Entwicklerthemen spielen leider kaum noch eine Rolle und reduzieren sich im Wesentlichen auf Übersichtsvorträge im MSDN-Kino und einer unscheinbaren Informationstheke, an der man theoretisch Fragen stellen kann (Tobias Weltner war mit seinem beinahe schon traditionellen PowerShell-Vortrag dieses Jahr leider nicht dabei). Es gab genau einen PC, auf dem Visual 2010 Studio gezeigt wurde, allerdings war das ein Partnerstand. Für mich ganz klar die falsche Schwerpunktsetzung. Die Hotelpreise lagen auch 2010 deutlich über dem Durchschnitt (die astronomischen Preise, bei denen ein Hotelzimmer, das außerhalb der CeBit für 90€ zu haben ist, auf einmal 300 bis 400€ kostet, gab es auch dieses Jahr), aber es nicht mehr so, dass Hannover komplett ausgebucht wäre und es unmöglich wäre, kurzfristig ein (bezahlbares) Hotelzimmer zu finden (mein Tipp: das B&B-Hotel an der Autobahnraststätte Garbsen;). Auch die Maßnahme "A" (wie Anfahrt) wurde noch nicht abgeschafft. Sollte es sie eines Tages nicht mehr geben, würde ich mir über die Zukunft der CeBit ernsthaft Gedanken machen. (auch wenn es im Pressezentrum deutlich ruhiger zugeht als früher, die CeBit ist immer noch einen Besuch wert)
(es geht nichts über ein kleines Erfolgserlebnis) SharePoint ist ein interessantes Produkt auch wenn es praktisch ausschließlich bei größeren Organisationen ein Thema sein dürfte. Seit November gibt es die erste offizielle Beta von SharePoint 2010. Für Entwickler ist SharePoint insofern interessant, da das kommende VS 2010 endlich Vorlagen (insgesamt ein Dutzend) für die wichtigsten "SharePoint-Artefakte" wie WebParts oder Listendefinitionen oder Sitedefinitionen enthalten wird. Die SharePoint-Entwicklung wird damit auf eine einheitliche Grundlage gestellt. Interessant ist auch, dass man künftig SharePoint 2010 auch unter Vista und Windows 7 installieren kann, beide aber nur in der 64-Bit-Version. SharePoint 2010 auszuprobieren setzt daher den Umstieg auf 64-Bit voraus, was aber grundsätzlich kein Problem sein sollte, da die meisten modernen CPUs inzwischen 64-Bit-CPUs sind (mich wundert allerdings, warum das scheinbar nirgendwo explizit erwähnt wird). Die Installation von SharePoint 2010 ist relativ einfach - ich habe es vor kurzem unter Windows Server 2008 R2 probiert und bin, wie anscheinend viele andere auch, an einem lästigen Installationsbug hängen geblieben, der erst im Anschluss an die Installation beim Konfigurationsassistenten auftritt. Dort wiederum genau bei Schritt 5 und dort wiederum genau dann, wenn der Search-Dienst bereitgestellt werden soll - der Assistent wartet an dieser Stelle eine "halbe Ewigkeit" und bricht irgendwann die komplette Installation ab, was natürlich etwas frustrierend ist (vor allem, nachdem alles so verheißungsvoll begonnen hat). Die Lösung, die mir geholfen hat, bestand darin, während der Konfigurationsassistent auf irgendetwas scheinbar "ewig" wartet, über Start|Ausführen und Eingabe von "Services.msc" die Dienstekonsole zu starten, dort den "SharePoint Server Search 14"-Dienst zu lokalisieren und in seinen Eigenschaften im Register Anmelden bei Dieses Konto "Lokaler Dienst" einzutragen und den Dienst dann neu zu starten. Danach sollte der Konfigurationsassistent durchlaufen. Das Ganze wird hier beschrieben: http://social.technet.microsoft.com/Forums/en/sharepoint2010setup/thread/080317ee-c726-4b3a-b208-e7e5121bc395 Ein anderer Tipp besteht darin, einen bestimmten Registry-Key zu löschen, der ebenfalls etwas mit dem Search-Dienst zu tun hat: http://blog.davidyack.com/journal/2009/12/6/working-around-a-sharepoint-2010-install-bug.html Ich habe den Key zwar gelöscht, kann mir aber vorstellen, dass das nicht unbedingt notwendig war. Es werden in verschiedenen Blogs noch eine Reihe weiterer Tipps (wie die Installation eines Hotfixes für Windows Server 2008 R2 -danach ist ein Neustart erforderlich) empfohlen, die aber alle recht speziell zu sein scheinen als dass sie mit dem oben beschriebenen Problem etwas zu tun haben könnte. Am Montag (8.2) soll es übrigens den RC von Visual Studio 2010 geben.
(auch 2010 noch faszinierend - ein RayTracer, insbesondere, wenn er Parallel LINQ verwendet) Der parallelen Programmierung gehört die Zukunft. Wenn immer mehr PCs zwei oder mehr Kerne besitzen, kann man das Software-Entwickler nur schwerlich ignorieren (ein wenig erinnert mich das an die Zeit, wo PCs bereits 4 MByte Arbeitsspeicher besassen, DOS aber nur 640 KByte ansprechen konnte). Doch paralleler Programmierung haftet nicht zu unrecht der Ruf an, kompliziert zu sein. Als großer Anhänger der bewährten "Lernen an Beispielen"-Methode freut es mich daher, dass Microsoft schon vor einiger Zeit eine Sammlung von "Parallel Samples" für .NET und Visual Studio 2010 zusammengestellt. Einige der knapp über 20 Beispiele sind wirklich faszinierend, wie z.B. ein Ray Tracer oder ein paralleles Game of Life, das mit einem extrem großen Populationsfeld arbeitet. Die Beispiele laufen natürlich auch auf einem PC, dessen CPU nur einen Kern besitzt;) Die meisten Beispiele liegen zweisprachig vor, einige wenige gibt es nur in einer C#-Fassung und für ein Beispiel gibt es auch eine F#-Variante. Auch wer sich im Moment vielleicht noch nicht so sehr für parallele Programmierung interessiert, sollte sich die Beispiele herunterladen und sich mit ihnen eine Weile beschäftigen, da man nebenbei einiges über die moderne Programmierung mit C# und Visual Basic lernt. Die Beispiele gibt es hier.
(wieder einmal die Zukunft) Der guten Tradition halber an dieser Stelle ein paar (eher harmlose) Prognosen für das aktuelle Jahr, das immerhin den Beginn des zweiten Jahrzehnts des 21. Jahrhundert markiert (in diesem Jahr spielt bekanntlich der 2. Teil von Arthur C. Clarke's Odyssey im Weltraum - die Gegenwart hat die Zukunft wieder einmal überholt). 2010 wird, zu mindestens was das Thema Microsoft angeht, wieder einmal ein Jahr der großen Releases sein. In diesem Jahr kommen unter anderem: - Visual Studio 2010
- F# 1.0
- .NET Framework 4.0
- SharePoint 2010
- Office 2010
- Die Office WebApps
- Silverlight 4
- Windows Mobile 7.0
Eine beeindruckende Liste. Dennoch wird sich keines dieser Releases sehr stark auf aktuelle Projekte auswirken oder gar zu einem der vielzierten "Paradigmenwechsel" führen, da nüchtern betrachtet einige Neuerungen lediglich Antworten auf Fragen sind, die bislang nur wenige Entwickler gestellt haben. Das beste Beispiel ist für mich die Möglichkeit Programmcode parallel auszuführen zu können, die mit .NET 4.0 Realität werden wird. Diese Herausforderung existiert nicht erst seit dem es Multicore-CPUs bei Aldi&Co gibt, sondern (mindestens) bereits seit Mitte der Achtziger Jahre (Stichwort: Transputer und Occam). Theoretisch ist die parallele Ausführung aus Performance-Gründen eine wünschenswerte Verbesserung, für die Mehrheit der Anwendungen, die heutzutage unter .NET umgesetzt werden, dürfte dieser Aspekt aber noch keine Rolle spielen. Aus diesem Grund ist es zwar wichtig, dass es (endlich) eine entsprechende Unterstützung gibt, Code parallel auszuführen zu können, es wird aber Jahre dauern bis die Mehrheit der .NET-Entwickler das für ihre eigene Anwendungen nutzt (von der Möglichkeit, LINQ-Abfragen parallel auszuführen zu können einmal abgesehen). Cloud-Computing? Die Branche braucht bekanntlich ihre Buzz-Wörter. Aktuell ist Cloud-Computing Buzz-Wort Nr. 1. Am 1.1.2010 ging Microsoft Azure offiziell an den Start - die ersten 4 Wochen sind kostenlos, danach wird jeder CPU-Takt und jede Speicherzelle, die die eigene Anwendung in der Wolke verbrät, abgerechnet. Aber, Azure ist Realität und jeder kann seine Anwendung in der Wolke hosten. Wie es Don Box und Chris Anderson auf der PDC 09 in einer netten Demo (etwa ab 1:05:30 - ansonsten wird man noch mit Bob Muglia konfrontiert;) während der Keynote des 1. Tages gezeigt haben, kann dies sogar ein C++-Programm sein. PHP ist ebenfalls Willkommen. "Love all, serve all" ist das neue Motto bei Microsoft. Auch wenn Microsoft irrsinnige Summen in die Infrastruktur investiert (alleine das erste DataCenter in Chicago kann über 200.000 Server aufnehmen) wird sich das Thema nur langsam entwickeln, da es viele der Anwendungen noch gar nicht gibt, die von einer frei skalierbaren Rechenleistung profitieren können und der Sicherheitsaspekt gerade in Deutschland noch viele Verantwortliche davon abhält über diese Option überhaupt nachzudenken. 64 Bit? Wird 2010 das Jahr für den Wechsel auf 64 Bit? Sicher nicht. Es gab eine Zeit, da stand 16 Bit in der Computerszene für Fortschritt und Aufbruchstimmung, ähnlich Web 2.0 (es gab in den guten, alten 80ern sogar eine Band, die so hieß;). Heutzutage dürften selbst viele Entwickler nicht genau wissen, ob ihr PC über eine 32- oder 64-Bit-CPU verfügt. Dazu ein kurzer Exkurs. Der folgende PowerShell-Befehl findet es über eine WMI-Abfrage heraus: (Gwmi win32_processor | Select description) -match "x64" Diese Abfrage liefert auf meinem ThinkPad X300 übrigens ein $true, so dass ich offenbar ebenfalls glücklicher Besitzer einer 64-Bit-CPU bin. Zwar macht Microsoft mit seiner Ankündigung ernst, dass es künftige Server-Versionen nur als 64 Bit-Versionen geben wird (bzw. bereits gibt), doch solange es keine 64-Bit-Version von Visual Studio gibt, wird auch das Thema 32/64-Bit für Entwickler keine allzu große Rolle spielen. Touch und Surface? Während also im Bereich der (.NET-) Entwicklung in diesem Jahr vermutlich keine sensationellen neuen Trends entstehen werden, sieht es im Hardwarebereich ganz anders aus, wo nicht zuletzt dank Windows 7, aber auch der rasanten Entwicklung bei den mobilen Geräten wieder eine richtige Aufbruchstimmung zu spüren ist. 2010 könnte den Durchbruch für TouchDisplays bedeuten(natürlich ist auch diese Technik alles andere als neu, selbst für den legendären C64 gab es damals eine Art mit Sensoren ausgestattete Folie zu kaufen, die man auf den 12"-Bildschirm kleben musste). Mir gefällt die Auswahl per Fingerdruck und vor allem Fingerbewegung (etwa auf meinem iPod Touch) deutlich besser als die per Maus. Ich kann mir einige Anwendungen vorstellen, die sich mit den Fingern deutlich angenehmer bedienen lassen als mit der Maus. Wer einmal eine Weile mit einem Microsoft Surface-Gerät gespielt hat, sieht die Beschränkheiten der modernen Benutzeroberflächen auf einmal sehr klar und entdeckt völlig neue Möglichkeiten der Benutzerinteraktion. Da steckt großes Potential dahinter (sehr empfehlenswert ist ein Vortrag auf der PDC 09 zu diesem Thema - alleine wegen der Demo, wo jemand ein Glas auf eine Surface-Oberfläche stellt und das Programm erkennen kann, ob das Glas oder leer ist - was das alleine in der Gastronomie für Möglichkeiten eröffnet:). Programmiert werden Touch- und Surface-Oberflächen (natürlich) mit WPF. WPF! Alleine aus diesem Grund wird 2010 für mich das Jahr von WPF. WPF ist nicht ganz einfach zu erlernen und erfordert gerade für erfahrene WinForms-Entwickler eine gewisse "Leidensfähigkeit", da man sich so manches Mal fragt, ob das wirklich die Zukunft ist (ich sitze gerade an meinem Visual Basic 2010-Kompendium, in es natürlich zu 100% um WPF gehen wird, und habe entsprechende "Leidensstrecken" hinter mir und sicher noch etliche vor mir). Auch wenn WPF 4.0 gegenüber WPF 3.51 nicht allzu viel Neues bringt und viele Entwickler noch Vorbehalte haben dürften, hier gilt wieder einmal das Motto: Wer jetzt noch wartet, verliert ganz einfach kostbare Zeit. Dazu ein Tipp: Auf der Basta! Spring wird es auf den Visual Basic Days wieder ein paar sehr gute Vorträge zu diesem Thema geben. Insgesamt wird 2010 für die IT-Branche, insbesondere für Entwickler, ein gutes Jahr werden. Insbesondere für jene, die bereits vor 2-3 Jahren auf die richtigen Themen gesetzt haben. Vorauszuschauend zu planen ist daher meine Empfehlung nicht nur für dieses Jahr.
|