Archiv der Kategorie: Visual Basic

Bye, bye LightSwitch – ein paar Alternativen (to be continued)

LightSwitch war eine gute Idee, die leider nicht gut genug umgesetzt wurde und am Ende aus mehreren Gründen scheiterte. An der Nachfrage kann es nicht gelegen haben. Im Gegenteil. Wenn ein Entwicklerwerkzeug von Microsoft kommt, besitzt es automatisch einen höheren Stellenwert als wenn der Hersteller eine unbekannte Softwarefirma ist. Es wird automatisch darüber auf allen Kanälen berichtet, Buchverlage kündigen Bücher an bevor das Produkt offiziell erhältlich ist, es gibt Schulungen, es gibt die ersten MPVs, es ist ein Thema auf Konferenzen – kurz, es gibt jede Menge kostenloser Werbung.

Eine Erfolgsgarantie geht damit aber nicht automatisch einher (wer erinnert sich noch an Quick Pascal, mit Microsoft Ende der 80er Jahre für eine kurze Zeit versuchte Turbo Pascal ein wenig Konkurrenz zu machen).

LightSwitch war bis VS 2015 noch ein offizieller Bestandteil von Visual Studio. Sogar als Teil der Community Edition. Beim aktuellen VS 2017 ist es leider nicht mehr dabei.

Kurzer Exkurs: Das Attribut „tot“ besitzt in der Softwarebranche bekanntlich eine eigene Bedeutung. Ich habe des Öfteren die Erfahrung gemacht, dass „tot“ gesagte Produkte eine eigene Dynamik entwickeln (der Brotkasten C64 ist das beste Beispiel. Erst nachdem die Produktion offiziell eingestellt wurde, ging es erst richtig los in der Zubehörszene).

LightSwitch kann also nach wie vor für die Entwicklung von Anwendung verwendet werden, man benötigt aber VS 2015. Wie es mit der kostenlosen Community Editon funktioniert beschreibt (Ex-) LightSwitch-Guru Michael Washington auf seiner Webseite:

http://lightswitchhelpwebsite.com/Blog/tabid/61/EntryId/3286/How-To-Get-Visual-Studio-LightSwitch-For-Free.aspx

Ein Heise-News-Beitrag von Alexander Neumann beschreibt zwar, dass Microsoft die Entwicklung von LightSwitch eingestellt hat, ich konnte aber bei Microsoft selber nichts finden:

https://www.heise.de/developer/meldung/Microsoft-beerdigt-Visual-Studio-LightSwitch-3354139.html

Schade, denn LightSwitch hatte Potential. Gerade für Entwickler. Ich habe sogar zwei (?) Schulungen zu LightSwitch durchgeführt und ein kleines Programmierprojekt umgesetzt. Bei diesem Projekt wurden mir aber auch die Grenzen des Tools deutlich vor Augen geführt oder es lag an mir, dass ich mir einiges vielleicht zu einfach vorgestellt hatte (auch wenn es vielleicht so aussah als müssen man sich nur durch einen Assistenten hindurchklicken, die Umsetzung von m:n-Beziehungen sollte man in einer GUI abbilden können).

Da der Bedarf nach einem RAD-Tool unter Windows immer noch groß sein dürfte, werde ich in diesem Blog-Eintrag verschiedene Alternativen vorstellen, auf die ich oft nur durch Zufall stoße, da sie von kleinen Firmen stammen, die man leicht übersehen kann. Der Blog-Eintrag wird über die kommenden Monate immer mal wieder aktualisiert.

Gleich vorweg: Den 1:1 Ersatz für LightSwitch gibt es nicht. Das ist aber auch nicht weiter tragisch, da der von LightSwitch am Anfang verfolge Ansatz ohne eine Zeile Code zu einer fertigen Anwendung zu kommen ohnehin nur für einen kleinen Teil der LightSwitch-Anwender attraktiv war.

Keine der Alternativen ist kostenlos was ebenfalls positiv ist. Kostenlose Community Editions anzubieten, in der alle Features enthalten sind, kann sich nur ein Konzern mit einem üppig gefüllten Bankkonto leisten.

Xojo


Umfangreiches RAD-Tool mit einer an Visual Basic angelehnten Programmiersprache. Das Tool startete eins unter dem Namen RealBasic und wurde im Laufe seiner Geschichte ein paar Mal umbenannt.

https://www.xojo.com/

RadZen


Interessantes Werkzeug, das auf dem JavaScript-Framework Angular basiert. Auch Michael Washington (der erwähnte LightSwitch-Experte) ist von dem Tool sehr angetan, so dass ich es mir in naher Zukunft einmal anschauen werde:

https://www.radzen.com

Moderne VB-Programmierung – Teil 3 (String-Interpolation)

Eine praktische Neuerung ist die String-Interpolation. Sie ermöglicht es, in eine Zeichenkette einen beliebigen Ausdruck einzusetzen, dessen Wert bei der Ausgabe der Zeichenkette eingesetzt wird. Die Zeichenkette muss dazu lediglich mit einem $ eingeleitet werden, der Ausdruck wird in geschweifte Klammern gesetzt. String-Interpolation erspart den Aufruf der Format-Methode der String-Klasse und macht den Quelltext etwas besser lesbar.

Hier ein kleines Beispiel, bei dem zwei Eigenschaften eines Document-Objekts ausgegeben werden.

Mit Visual Basic und .NET Core 2.0 zu neuen Ufern aufbrechen – leider nur begrenzt

Mit .NET Core, der Open Source-Implementierung des .NET Framework, ist ab der aktuellen Version 2.0 auch Visual Basic dabei. Damit laufen VB-Programme unter allen Plattformen, auf denen .NET Core 2.0 installiert werden kann. Neben den wichtigsten Linux-Distributionen ist dies Mac OS. Auch ein Raspian Pi-Kleincomputer mit Raspian Linux als Betriebssystem gehört inzwischen dazu: https://blogs.msdn.microsoft.com/david/2017/07/20/setting_up_raspian_and_dotnet_core_2_0_on_a_raspberry_pi/.

Leider wird die theoretisch grenzenlose Freiheit für VB durch die Entwickler bei Microsoft künstlich eingeschränkt, denn es stehen nur Vorlangen für Konsolenprogramme und Klassenbibliotheken zur Verfügung. Die strategische Überlegung dahinter ist, dass damit das Auslagern von VB-Code aus einer WinForms- oder WPF-Anwendung in eine .NET-Standard-Klassenbibliothek ermöglicht wird. Die Klassenbibliotheken können dann z.B. in eine Universal Windows Platform-Appp eingebaut werden, so dass die die „Geschäftslogik“ einer VB-Anwendung ohne sie in C# neu schreiben zu müssen übernommen werden kann.

Theoretisch lassen sich auch ASP.NET-Core-Anwendungen in VB programmieren, doch ohne Vorlagen und „Tooling“ in Visual Studio 2017 wird das Ganze unnötig mühsam.

Schade, ich finde ein Open Source-Projekt wie .NET Core sollte nicht zu stark durch strategische Überlegungen eines Herstellers eingeschränkt werden (auch wenn dieser das Projekt komplett finanziert). Allerdings gibt es offenbar auch sehr wenige Aktivitäten in der VB-Community. Anders als bei F#.

Dennoch gibt es auch für VB-Entwickler einen direkten Draht zu Microsoft in Gestalt des UserVoice-Forums zu Visual Studio:

https://visualstudio.uservoice.com/forums/121579-visual-studio-ide

Hier wird u.a. bereits gefordert, VB.NET in V# umzubenennen oder den Quellcode von VB6 Open Source zu machen. Jeder kann Vorschläge einreichen und über vorhandene Vorschläge abstimmen.

Moderne VB-Programmierung – Teil 2 (Tuples)

In diesem Teil meiner kleinen Einführungsserie zum Thema „Moderne VB-Programmierung“ geht es um die mit der Version 15.0 (VB 2017) eingeführten Tuples.

Tuples werden im neuen Microsoft-Dokumentationsportal docs.microsoft.com hier ausführlich vorgestellt:

https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/data-types/tuples

Eigentlich könnte ich mir weitere Erläuterungen sparen, da der Hilfetext alles sehr schön beschreibt. Die folgende Erklärungen sind daher eher für jene Entwickler, die aus Prinzip keine Dokumentation lesen;)

Es gibt Doubles, Triples und Quadruples und es gibt Tuples, die eine beliebige Anzahl an Elementen in einer Menge zusammenfassen. In der Programmierung ist ein Tuple eine bequeme Alternative zu einer Liste, die das Zusammenfassen mehrerer Werte sehr einfach macht.

Die Ausgangssituation für das folgende Beispiel ist eine Liste mit Documents-Objekten:

Bislang alles ganz einfach und überschaubar. Jetzt wird eine Function gesucht, die ein Document-Objekt anhand seiner Id zurückgibt:

Auch das ist alles nichts Neues. Übersehen wir außerdem für einen Moment, dass es kein guter Stil ist, aus einer Function auf eine Variable zuzugreifen, die auf Modul- bzw. Klassenebene definiert ist (und natürlich, dass die Function selber komplett überflüssig ist, da es dafür LINQ gibt).

Jetzt kommt der Entwickler auf die Idee, neben dem Document-Objekt einen Boolean-Wert mitzuliefern, der True ist, wenn ein Document-Objekt gefunden wurde, ansonsten False. Früher hätte der Entwickler dazu per Structure-Befehl einen neuen Typ anlegen und diesen zurückgegeben müssen. Etwa so:

Keine Frage, nicht besonders elegant. Dank den neuen Tuples sparen wir uns die Structure:

Ein Tuple wird nicht deklariert, sondern einfach als Klammerausdruck hingeschrieben. Die einzelnen Elemente werden über die Standardnamen Item1, Item2 usw. angesprochen. Da das natürlich nicht ganz optimal ist, gibt es die Möglichkeit, jedem Tuple-Element einen Namen zu geben. Dieser wird bei einer Function beim Rückgabewert angegeben – beim zurückgegebenen Wert ändert sich nichts.

Fazit: Tuples sind eine praktische Erweiterung, die sich in vielen Situationen einsetzen lässt. Sie sind immer dann praktisch, wenn mehrere Werte zusammengefasst und als „namensloses“ Ganzes weitergegeben werden sollen.

Moderne VB-Programmierung – Teil 1 (Überblick)

Mit diesem Blog-Eintrag starte ich eine kleine Serie von Artikeln, in denen ich die Neuerungen vorstelle, die bei der Programmiersprache Visual Basic mit den letzten beiden Versionen 14.0 (VS 2015) und 15.0 (VS 2017) eingeführt wurden. Den Anfang machen die Tuples.

Alle Beispiele könnt ihr mit Visual Studio oder Visual Code sowohl unter Windows als auch Linux, Mac OS usw. umsetzen. Die Umsetzung unter einem anderen Betriebssystem außer Windows geht nur mit Visual Studio Code, da Visual Studio nach wie vor nur Windows läuft. Daran wird sich auch trotz aller Open Source-Euphorie bei Microsoft nichts ändern.

Eine gute Übersicht über alle Neuerungen der Versionen 14.0 und 15.0 geben drei Artikel von Anthony D. Green und Lucian Wischik (beide VB-Team bei Microsoft) und Klaus Löffelmann (MVP zu VB):

New Language Features in Visual Basic 14

https://msdn.microsoft.com/en-us/magazine/dn890368.aspx

What’s New in Visual Basic 2017

Auch die neue Microsoft-Dokumentation docs.microsoft.com stellt die wichtigsten Neuerungen der einzelnen VB.NET-Versionen übersichtlich zusammen:

Da viele Übersichten für meinen Geschmack etwas zu ausführlich sind, habe ich im Folgenden die wichtigsten Neuerungen der Versionen 14.0 und 15.0 in einer kompakten Übersicht zusammengestellt. Im Moment erhebt die Übersicht noch keinen Anspruch auf Vollständigkeit. Auch stimmt die Zuordnung zu den einzelnen Versionen noch nicht.

NeuerungVersionWas steckt dahinter?
Tuples15.0Zusammen mehrerer Werte, z.B. als Rückgabewert einer Function
String-Interpolation14.0Einsetzen eines Ausdrucks in eine Zeichenkette ohne String.Format()
Null-Abfrageoperator .?14.0Ein Operator übernimmt die Abfrage einer Variablen auf Nothing (Null) zur Vermeidung einer NullReferenceException-
Mehrzeilige LINQ-Abfragen mit Kommentaren14.0In einer mehrzeiligen LINQ-Abfrage kann jeder Zeile mit einem Kommentar ausgestattet werden
Datums-Literale15.0Ein Datums-Zeit-Wert kann direkt durch Voranstellen von # angegeben werden.
NameOf-Operator14.0Über NameOf lässt sich der Name eines Bezeichners als String einsetzen.
Binärzahlen angeben14.0Neben Oktal- und Hex-Zahlen können damit auch Binärzahlen direkt im Quellcode angegeben werden.