Archiv des Autors: PemoAdmin

Cmd, Bash oder Pwsh – noch etwas einfacher starten über eine Abkürzung, die mir bislang neu war

Ich finde es immer nett, wenn man doch noch etwas Neues lernt, ohne danach gesucht zu haben. Beim Betrachten eines Developer Videos von der letzten Build (2019) verriet der Sprecher gleich zu Beginn einen kleinen Trick, den ich auch nach 30+ Jahren Dasein als Windows User noch nicht kannte (es gibt ihn vermutlich auch erst seit kurzem): Gibt man die Adressleiste des Explorer cmd, bash oder pwsh ein, startet die entsprechende Shell (bei Bash und PowerShell natürlich nur dann, wenn das Windows Subsystem für Linux (WSL) bzw. PowerShell Core zuvor installiert wurden). Irgendwie nett.

Eine (beinahe?) vollständige Liste aller .NET-Programmiersprachen

Als das .NET Framework im Juli 2000 auf einer großen Entwicklerkonferenz in Orlando/Florida von Bill Gates zum ersten Mal der Öffentlichkeit vorgestellt wurde, legte man damals großen Wert darauf zu betonen, dass die CLR theoretisch für alle Programmiersprachen geeignet ist (warum das so wichtig sein sollte, habe ich nie verstanden – vermutlich der damals übliche Marketing-Hype, um sich von Java abzugrenzen). Richtig durchgesetzt hat sich (um es einmal vorsichtig zu formulieren) neben C# keine weitere Programmiersprache. Selbst F#, da damals mit viel Potential gestartet wurde, ist aus meiner Einschätzung über den Status „Geheimtipp“ nicht hinausgekommen. Trotzdem ist es faszinierend, welche Vielfalt an .NET-Programmiersprachen in den Folgejahren entstanden ist.

Eine gute (vermutlich aber nicht ganz aktuelle) Übersicht findet ihr unter der folgenden Adresse:

https://www.wikizero.com/de/Liste_von_.NET-Sprachen

Einige Namen sind vertraut, andere vermutlich neu. Ich wusste z.B. bislang nicht, dass es ein L# gibt, also eine Lisp-Implementierung für .NET.

Die Sprache Vulcan.Net (die .NET-Portierung des gerade bei uns in den 90er Jahren weit verbreiteten Visual Object, das wiederum über Clipper auf dBase zurückgeht) ist mir inzwischen sehr vertraut, da ich seit einiger Zeit an einem Softwareprojekt arbeite, bei dem der wirklich sehr gute Nachfolger X# zum Einsatz kommt.

Wer sich die damalige Keynote, in der Bill Gates das .NET Framework vorstellt, noch einmal anschauen möchte, auf Channel 9 gibt es die Aufzeichnung:

https://channel9.msdn.com/Events/PDC/PDC-2000

Das Video ist alleine schon während des kurzen Rückblicks am Anfang über die Geschichte des PCs sehenswert. Erstaunlich, was sich in knapp 2 Minuten zusammenfassen lässt.

Es geht originell weiter, da in einem genauso künstlichen wie albernem Video viel von dem beschrieben wird, was auf der letzten Build 2019 erneut als „Zukunftsvision“ verkauft wurde. Dieses Mal aber gewürzt mit KI und einer gigantischen Rechnerleistung, die damals noch nicht einmal in Sichtweite war. Mr. Gates, damals noch ca. 20 Jahre jünger, betritt erst ab Minute 15 die Bühne (und kurz danach ist auch Ralf Westphal bei einem Kameraschwenk über die ersten Reihen im Publikum zu sehen;)

Schöne Übersicht zu LINQ (Visual Lexicon of LINQ)

LINQ sollte inzwischen bei den meisten Entwicklern „angekommen“ sein, immerhin gibt es die Spracherweiterung bereits seit 2008 (wie schnell doch die Zeit vergeht).

Dennoch gibt es natürlich nach wie vor Entwickler, für die LINQ noch neu ist. Eine (wirklich) gelungene Übersicht gibt es im Rahmen der ebenfalls sehr gelungenen Simple Talk-Serie (die von der Firma RedGate gesponsert wird).

Und da wir gerade dabei sind: Ebenfalls genial ist nach wie vor LINQPad von Joseph Albahari: https://www.linqpad.net/ (absolute Kaufempfehlung, auch wenn es eine kostenlose Version gibt).

Die Zukunft von Visual Basic (Stand Mai 2019)

Diese Woche fand wieder einmal die Entwicklerkonferenz Build in Seattle statt. Nachdem ich zunächst eher desinteressiert war, musste ich beim Überfliegen der Konferenzthemen und dem Anschauen einiger Panel-Diskussionen (wieder einmal) feststellen, dass doch einige interessante Themen behandelt wurden. Die für uns Desktop-Entwickler interessanten Neuerungen werden allerdings nicht mehr in der Keynote angekündigt (hier geht es nahe ausschließlich um Azure, AI und wie Geschäftspartner wie Starbucks oder BMW die neusten Microsoft-Technologien in ihren Produkten einsetzen), sondern in den Sessions, die ja den eigentlichen Inhalt der Konferenz ausmachen.

Es ist bemerkenswert, dass das .NET Framework bei Microsoft wieder eine wichtige Rolle spielt bzw. es nicht komplett auf einem Abstellgleis abgeschoben oder gleich (wie z.B. Silverlight) eingestellt wurde. Es ist ein .NET 5 geplant, das .NET Framework, .Net Core und Mono auf eine gemeinsame Codebasis stellt (theoretisch wäre damit auch WinForms unter Linux und MacOS möglich, sofern es dafür tatsächlich einen Bedarf geben sollte).

Interessant war das Language Panel, in dem es u.a. auch um die Zukunft von Visual Basic ging. Das Fazit: Visual Basic lebt als Programmiersprache und es sind interessante Neuerungen geplant. Ein Beispiel ist ein Select Case, das mit regulären Ausdrücken arbeitet. Außerdem soll die VB-Laufzeit, sofern möglich, auf .NET Core portiert werden. Kathleen Dollard, die als PM seit vielen Jahren Mitglied des VB-Entwicklerteams ist, machte deutlich wie engagiert die VB-Community nach wie vor ist und warb für die Vorzüge der Visual Basic-Syntax, die es gerade als Programmiersprache für den Einstieg in die Programmierung empfiehlt (dafür sehe ich inzwischen aber Python als deutlich besser geeignete Alternative).

Alle Sessions der Build 2019-Konferenz kann man sich unter der folgenden Adresse anschauen:

https://mybuild.techcommunity.microsoft.com/sessions

Den Blog des VB-Teams findet man hier:

https://devblogs.microsoft.com/vbteam/

.Net-Anwendungen schützen mit .NET Reactor von Eziriz

Als .NET Framework 2002 offiziell auf der Bildfläche erschienen und sich Millionen Entwickler in der ganzen Welt auf einmal mit Schlagworten wie CLR, CTS, CLS, CAS, JIT, Fusion, Interop, IL und p/Invoke beschäftigen und sich mit völlig neuartigen Konzepten wie „Just in Time Compilierung“, Reflection, Boxing/Unboxing, evidenzbasierter Sicherheit und unsicheren Code auseinandersetzen mussten (abgesehen von der Frage was eigentlich ein Framework ist) kam schnell die Frage auf, wie sich vom .NET Compiler erzeugter Code vor neugierigen Blicken anderer Entwickler (aus fernen Ländern) und Reverse Engineering schützen lässt, denn dank Ildasm und etwas später dem Reflector (heute verwende ich durchgängig den sehr guten IL Spy) war es auch für absolute Laien problemlos möglich, den Quellcode einer Anwendung zu erhalten (natürlich ohne die Kommentare).

Dann wurde es ruhig um das Thema, der Trend zu Open Source mag dazu beigetragen haben (oder .NET wurde einfach für sicherheitskritischen Code nicht verwendet, wobei bei Java grundsätzlich dasselbe Problem existiert).

Per Zufall bin ich vor ein paar Tagen auf ein Tool mit dem Namen .NET Reactor (erinnert mich an ein Album von Neil Young, der dieses Jahr noch einmal auf Tour geht, u.a. in der Olympiahalle in München) gestoßen, das damals alle Wünsche erfüllt hätte:

https://www.eziriz.com/dotnet_reactor.htm

Die Funktionsbeschreibung klingt bei oberflächlichem Lesen bereits beeindruckend und mit 174 € für eine Entwicklerlizenz st das Tool auch relativ preiswert.

.NET Reactor schützt .NET Code und erledigt auch die Lizenzschlüsselverwaltung

StackOverflow im neuen Gewand – bunt ist nicht unbedingt besser

Was wäre das (Entwickler-) Leben ohne Stackoverflow? Nahezu unvorstellbar. Seit kurzem, genauer seit dem 1.4.2019, präsentiert sich das beliebte Portal im neuen Gewand. Mir ist die Optik etwas zu bunt, auf per Mauszeigerbewegung erzeugten „Pixie Dust“ kann ich gerne verzichten und eine Laufschrift (gab es das nicht schon einmal in der Anfangszeit des World Wide Web?) hätte es auch nicht unbedingt sein müssen. Der Informationsgehalt einer solchen Spielerei ist für mich gleich Null. Aber das scheint wohl der neue Trend zu schein. Na ja, modern ist für mich etwas anderes. Und 100% barrrierefrei ist das neue Layout mit Sicherheit auch nicht. Aber daran werden wir uns wohl in Zukunft gewöhnen müssen.

Das neue Layout von StackOverflow seit dem 1.4.2019 – vermutlich von einem Webdesigner im Mumbay entworfen

Mein Einstieg in das Thema Quantencomputer

Gleich vorweg, der folgende Beitrag ist alles andere als ein ernst zunehmender Beitrag zum Thema Quantencomputer. Ich habe von dem Thema ähnlich viel Ahnung wie etwa von der Herzchirurgie, dem Komponieren klassischer Musik (bzw. generell von Musik), dem Zubereiten von Sushi, dem Bergsteigen, dem Segeln usw. (die Liste ließe sich noch beliebig fortsetzen). Inspiriert hat mich der Beitrag von einem gut gemachten „Multimedia-Spezial“, das vor ein paar Tagen ausgerechnet im Handelsblatt zum Thema Quantencomputing erschienen ist:

https://www.handelsblatt.com/unternehmen/it-medien/sxsw-2019/sxsw-2019-auf-dem-weg-zum-schnellsten-computer-der-welt/24072690.html

Einer Meldung, dass IBM erstmals einen Quantencomputer als kommerzielle Dienstleistung anbietet bzw. anbieten wird (es gibt also bereits etwas, das funktioniert):

https://www.channelpartner.de/a/ibm-stellt-kommerziell-nutzbaren-quantencomputer-vor,3335033

Und hatte nicht auch Microsoft vor nicht allzu langer Zeit etwas angekündigt? Richtig, neben einer Programmiersprache mit dem vielversprechenden Namen Q# gibt es bereits seit vorletztem Jahr ein „Quantum Development Kit“ zum Download, das unter dem ebenfalls äußerst vielversprechenden Titel „Getting started with Quantum development“ zum Ausprobieren gerade zu einlädt:

https://www.microsoft.com/en-us/quantum/development-kit

Der Download, der lediglich das .NET Framework in einer aktuellen Version (4.7) voraussetzt, umfasst nicht nur einen Compiler für Q#, sondern auch eine Visual Studio-Vorlage (innerhalb von C#), so dass dem ersten Quantencomputer-Programm theoretisch nichts im Weg steht. Ausgeführt wird dieses Programm natürlich nicht auf einem echten Quantencomputer, sondern lediglich auf einem lokal installierten „Simulator“. Aber immhin. Auch Cloud-Programme müssen nicht unbedingt in der echten Cloud ausgeführt werden, auch dafür gibt es Simulatoren.

Abb. Zu der Fülle an Programmiersprachen, die Visual Studio unterstützt, ist mit Q# eine weitere Microsoft-Sprache hinzugekommen


Ich habe das „Hallo, Welt“-Programm, das innerhalb der Microsoft-Dokumentation Schritt für Schritt beschrieben wird, selber ausprobiert und war schon beeindruckt, auch wenn ich, das gebe ich gerne zu, keine Ahnung davon hatte was genau ich abgetippt und erfolgreich zur Ausführung gebracht hatte – aber das war bei einem meiner ersten Maschinensprachelistings, die ich Anfang der 80er Jahre abgetippt hatte, nicht anders.

Unter der folgenden Adresse kann jeder das Quickstart-Beispiel selber umsetzen

https://docs.microsoft.com/de-de/quantum/install-guide/?view=qsharp-preview

Der Umstand, dass Q# und das Kit bereits Teil der offiziellen Microsoft-Dokumentation sind suggeriert, dass das Ganze keine Eintagsfliege ist, sondern, dass in Zukunft noch einiges folgen könnte bzw. folgen wird. Es gibt noch andere Beispiele, die alle sehr faszinierend klingen. Unter anderem aus dem Bereich Chemie (was mich wiederum anspricht, da ich vor vielen, vielen Jahren auch einmal Chemie studiert hatte).

Hat Quantenprogrammierung Potential? Mit SIcherheit, wenngleich Experten zufolge die ersten praxistauglichen Quantencomputer nicht vor 2013 zur Verfügung stehen werden. Und dann auch nicht in der Form, dass man sich die Hardware in den Keller stellt und für eine Kühlung nahe dem absoluten Nullpunkt sorgt, sondern als gehostetes Angebot, etwa als weiterer Azure-Dienst.

Schreibe ich bereits an einem „Q# Kompendium“ oder einem „Jetzt lerne ich Q#“-Buch für Markt&Technik? Das mit Sicherheit nicht (wenn ich noch einmal ein Programmiersprachenbuch schreiben werde, dann eher zu Python oder X#). Aber es ist definitiv faszinierend, dass man innerhalb von wenigen Minuten aus dem Stand ein kleines Q#-Programm schreiben kann, das theoretisch auch auf einem echten Quantencomputer ausgeführt werden könnte. Die Zukunft hat (wieder einmal) begonnen.


Alles Gute für 2019

Optimistisch bleiben, den Augenblick genießen und einfach Spaß an den kleinen Dingen im Leben haben… (Bildnachweis: Damedeeso, Istockphoto)

Ich wünsche allen Lesern dieses Blogs ein frohes neues Jahr. Man darf gespannt sein, was ein Jahr 2019 bringen wird. Während die Aussichten für die Industrie und damit das Wachstum in Deutschland offenbar nicht ganz so rosig sind wie in den letzten Jahren, bin ich grundsätzlich wie immer optimistisch. Wer als Software-Entwickler tätig ist, dürfte sich über einen Mangel an Arbeit und damit hoffentlich auch an fair bezahlten Aufträgen nicht beklagen dürfen, trotz zunehmender Konkurrenz aus den „Billiglohnländern“.

Zu den Themen, die für mich 2019 ganz oben stehen, gehört natürlich das Auswerten von Daten in großem Stil. Dafür werden längst nicht mehr die traditionellen Programmiersprachen wie C++, Java oder C# verwendet, sondern „neumodische“ Programmiersprachen wie Python (stammt zwar bereits aus den 90er Jahren, hat für mich aber erst in den letzten Jahren enorm an Fahrt aufgenommen) und R.

Zu Python, meiner neuen „Lieblingsprogrammiersprache“, werde ich in naher Zukunft einiges an dieser Stelle schreiben. Wer sich als C#-Entwickler in die Sprache einarbeiten möchte, dem empfehle ich das sehr gute Buch „Python – der Grundkurs“ von Michael Kofler (Rheinwerk Verlag).

Wer sich für das Thema „Data Sciences“ interessiert, dem empfehle ich die folgende Webseite, auf der man u.a. (teilweise kostenlos) Online-Kurse zu diesem Thema belegen kann:

https://www.datacamp.com/

Noch eine Aufmunterung für alle, die bereits seit Jahren das Gefühl haben, dass sie der ganzen Entwicklung nicht mehr folgen können oder wollen und die bei Themen wie Container, Cloud oder dem neusten JavaScript-Framework der Woche nur genervt die Augen rollen. In „meinem“ Programmierprojekt, bei dem ich seit einigen Jahren als Entwickler involviert bin, geht es weder um JavaScript noch spielen irgendwelche „neumodischen“ Themen wie Microframeworks oder die ominösen Container eine Rolle. Es geht in erster Linie um die gute, alte Desktop-Entwicklung mit C# und mit einer relationalen Datenbank im Mittelpunkt. Wichtiger als ein breitgestreutes Wissen sind daher für mich nach wie vor solide Kenntnisse der Kernthemen (nach wie vor SQL) und so viel Praxis-Erfahrung wie möglich.

Chilkat – eine erstaunliche Library für „alles Mögliche“ rund um das Thema Internet

Chilkat ist ein Begriff, über den ich in den letzten Jahren bei endlosen Suchen nach einem Codebeispiel zum Thema Signierung oder Umgang mit Zertifikaten schon oft „gestolpert“ bin, ohne mich aber dann im Detail mit dem Thema zu beschäftigen.

Als vor ein paar Tagen die Anforderung aufpoppte, ein Word-Dokument per Programm zu signieren, war es wieder einmal soweit.

Chilkat ist eine klassische Programmierbibliothek, die eine Fülle an Funktionalitäten enthält, die alle mehr oder weniger direkt etwas mit dem Thema Internet-Programmierung zu tun haben. Neben den klassischen Themen (POP3, SMTP, SCP, SSH usw.) geht es natürlich auch um „moderne“ Themen wie JSON, AWS S3, Twitter und natürlich den Umgang mit Signaturen.

Faszinierend ist die Fülle an Programmiersprachen, für die funktionsfähige Beispiele angeboten werden.

Die Chilkat-Bibliothek ist nicht kostenlos, mit aktuell 289 USD (alle Preisangaben ohne Gewähr) aber in einer Preisregion, die eine Anschaffung möglich machen sollte. Vor allem angesichts des enormen Zeitgewinns, der mit den meisten Funktionen einhergeht.

Das PowerShell-Skript, das eine Pdf-Datei signiert, hatte nach kleinen Anpassungen (in erster Linie Pfade und Kennwort für den privaten Schlüssel) auch mit der 30-Tage-Testversion auf Anhieb funktioniert. Ich kann nur empfehlen, sich die Beispiele einmal anzuschauen. Danach sollte jedem Entwickler klar sein, welche enorme Funktionsfülle in einer einzigen Datei untergebracht ist.

Alles weitere unter http://www.chilkatsoft.com/

Lernen an Beispielen – programcreek.com zieht Beispiele aus OpenSourcen-Projekten

Auf diese Idee muss man auch erst einmal kommen. Das Portal programcreek.com (engl. creek =  „Bach“) zieht automatisiert Codesequenzen aus OpenSource-Projekten und stellt sie als Beispiele zur Verfügung, anhand der man die Funktion einer bestimmten Methode oder API lernen soll.

Grundsätzlich eine gute Idee, da das Lernen an Beispielen auch meine bevorzugte Methode ist (und das seit nun mehr über 40 Jahren;). Allerdings wirkt die Site auch etwas leblos. Kein Vergleich zu StackOverflow, bei dem viele solcher Beispiele eine lebhafte DIskussion auslösen würden.

Interessant ist das Projekt eines sich selbstständig aktualisierenden Know-how-Portals aber in jedem Fall: https://www.programcreek.com/