programmierer-nachrichten.de
Startseite Podcast RSS Impressum

Podcast Folge 7


Wie versprochen der wöchentliche Podcast!

Dieses Mal Folge 7! Und trotz Ausrufezeichen gab es gar nicht so viele spannende Neuigkeiten! :D! Aber für C++17, Unix v8, 9 und 10 hat es dann doch gereicht. Im letzten Moment habe ich einige weiteren Themen nachgereicht, aber Schwerpunkt war dieses Mal Unix. Alcatel hat den Quellcode von v8, 9 und 10 veröffentlicht.

Anschalten, hinlegen und vielleicht etwas später auch einschlafen :D!


Microsoft macht CodePlex dicht


CodePlex war für viele Programmierer in der Vergangenheit das, was GitHub für viele heute ist. Eine Plattform, auf der man seine OpenSource Projekte hosten konnte. Bereitgestellt wurde kostenloses SVN, und andere Tools, um ein Projekt erfolgreich im Internet zu präsentieren; eben wie GitHub; nur älter. Und eben ein Produkt von Microsoft.

Microsoft selbst hat die meisten ihrer Projekte bereits zu Github migriert oder erst gar nicht bei CodePlex etabliert. Microsoft ist sich aber bewusst, dass viele Projekte die Dienste von CodePlex nutzen und hat deswegen in Zusammenarbeit mit GitHub einen Migrationsprozess geschaffen, der es erlauben soll seine Projekte ohne größere Probleme von CodePlex zu Github zu migrieren.

Und nein, das ist kein vorgezogener Aprilscherz von Microsoft.


Google entfernt modale Dialoge in Chrome


Google ist der Meinung, dass "alert()", "confirm()" und "prompt()" nur genutzt werden, wenn sie den User nerven wollen. Diese Dialoge haben eine Gemeinsamkeit; sie sind modal! Das ist in einem GUI vermutlich das dümmste Antipattern, welches man sich vorstellen kann. Modal bedeutet, dass man dann in der Anwendung nichts anderes machen kann als diesem modalen Fenster Aufmerksamkeit zu schenken. Man ist gezwungen dieses Fenster auf die eine oder andere Weise zu schließen. Um das zu erreichen muss man aber den Text durchlesen und auch verstehen; wenn dann noch die Buttons zu der, im Text gestellten, Frage passen, ist die Wahrscheinlichkeit hoch, dass man die richtige Wahl trifft.

Pauschalisieren kann man es natürlich nicht; es gibt Anwendungsfälle, bei denen modale Fenster sinnvoll sind, aber wenn man sich die Frage stellt, ob man ein Fenster modal anzeigen soll, so ist die Antwort in 99,8% der Fälle "nein" :)!

Google will "alert()", "confirm()" und "prompt()" aber nicht ganz abschaffen. Wenn eine Website mittels JavaScript diese Fenster auslöst, dann soll ein Wechsel zu einem anderen Tab dieses, ehemals modale, Fenster schließen. In Firefox gibt es diese Funktionalität zwar schon seit vielen Jahren. Gut, dass nun auch Google Chrome diese Funktionalität übernimmt.


Alcatel veröffentlicht den Quellcode von Unix Edition 8, 9 und 10


Am heutigen Tag wurde der Quellcode der Edition 8, 9 und 10 des Research Unix von Alcatel freigegeben. Der Quellcode ist offen, aber weder frei noch OpenSource im Sinne der OSI. Man kann den Quellcode aber runterladen, ihn studieren und für nicht kommerzielle Dinge nutzen.

Die meisten Programmierer sind ja mittlerweile mehr oder weniger mit Linux oder vielleicht auch mit FreeBSD, NetBSD, oder OpenBSD in Kontakt gekommen. Die wenigsten aber kennen Unix, einfach, weil das aus einer Zeit stammt, die schon lange vorbei ist. Viele stellen Linux auf eine Ebene mit Unix und denken auch, dass es davon abstammt, aber das stimmt natürlich nicht. Linux ist etwas völlig Eigenständiges.

Die ganzen BSD-Varianten, FreeBSD, OpenBSD, NetBSD, und DragonflyBSD stammen von Unix Edition 5 ab. Diese Abspaltung ist aber schon Ende der 70er Jahre passiert. Heute sind diese Betriebssysteme deutlich fortschrittlicher und eigenständiger. Wenn also jemand sagt, dass *BSD ein Unix ist, dann ist das nur historisch relevant. Aus technischer Sicht ist das nicht sehr gehaltvoll. Aus heutiger Sicht sind sogar Free- und OpenBSD technologisch sehr unterschiedlich. Im Grunde sind sie aber ähnlich zu bedienen; das alleine sagt aber nicht viel aus. Bei FreeBSD gibt es ZFS; bei OpenBSD nicht.

Moderne und tatsächlich auf dem ursprünglichen Unix basierte Systeme gibt es weiterhin. Da gibt es HP-UX von HP, AIX von IBM und Solaris von Sun und jetzt Oracle. Wobei das auch nur die halbe Wahrheit ist. Bei AIX gibt es auch Einflüsse aus BSD. Aber auch hier ist das technisch nicht sehr gehaltvoll. Die Systeme sind so unterschiedlich, dass man jedes System einzeln neu lernen muss. Viele Dinge wird man einfach adaptieren können, vieles aber auch nicht.

Man sagt, dass Unix Version 7 das letzte "echte" Unix war. Ab Edition/Version 8 hatte man starke Einflüsse von BSD. Und ja, BSD basiert auf Unix 5. Das ist alles sehr konfus, aber so ist Geschichte nun mal :)! In Unix Version 7 war das erste Mal "bash" enthalten. Das, was viele heute unter Linux als Shell benutzen.

Wenn man Lust hat, kann man Unix mit Hilfe des Emulators "SIMH" ausprobieren und quasi live erleben. Auf moderner Hardware funktioniert das historische Unix leider nicht mehr; deswegen die Notwendigkeit eines Emulators, der die alte Hardware "von damals" emuliert. Ganz nebenbei gibt es auch den Quellcode von Version 7 und früher zum Download. Für Version 7 gibt es für SIMH gute Anleitungen, um es lauffähig zu bekommen.


C++ 17 ist fertig


C++ ist eine Programmiersprache, die andauernd erweitert und verbessert wird. Aktuell hat man sich auf die neue Version 17 geeinigt. Ich beschreibe nun kurz die, aus meiner Sicht, interessanten Neuerungen.

Man kann in C++17 nun verschachtelte Namespace Definitionen in einer einzigen Zeile abbilden.

Aus:

namespace A {
    namespace B {
        namespace C {

        }
    }
}
wird:
namespace A::B::C {

}

In C++ kann man auch Daten destrukturieren. Ich hatte dieses Feature in meinem Text zu ECMAScript 2015 bereits erläutert. In C++ ist es ähnlich. Im Grunde können so gut wie alle modernen Programmier- und Skriptsprachen Daten destrukturieren. In C++17 wurde nun aber die Deklaration von Variablen im Kontext einer Datendestrukturierung vereinfacht. Vor C++17 konnte man "std::tie" benutzen, um Daten zu destrukturieren und Variablen zuzuweisen. Man musste für "std::tie" die Variablen vorher definieren. Das entfällt nun mit C++17.

Vor C++17:

std::tie(a, b, c) = tuple;
Mit C++17:
auto [ a, b, c ] = tuple;

Außerdem wurden Trigrafen in C++17 entfernt. Trigrafen sind eine Folge von drei Buchstaben, die einen Laut repräsentieren. In C++ werden 2 Fragezeichen mit anschließendem Zeichen entsprechend interpretiert und dargestellt. Aus "??=" wird beispielsweise "#". Aus "??(" wird "[", aus "??)" wird "]" usw...

In alten C++ Versionen würde also folgender Code:

printf("Wie bitte??!");
...folgende Ausgabe erzeugen:
Wie bitte|
erzeugen.

Natürlich gibt es viel mehr Neuerungen, aber das meiste davon sind Kleinigkeiten und Dinge, die mir nichts sagen. Wenn du mehr über alle Neuerungen nachlesen möchtest, so suche bei GitHub einfach nach "cpp17features" und du findest ein Repository, wo alle Neuerungen von C++17 aufgelistet und erklärt werden. Ich habe diese Quelle als Basis meines kurzen Artikels benutzt. Vielen Dank also an Bartłomiej Filipek für die außerordentlich umfangreiche Beschreibung der C++17 Neuerungen. Bartłomiej Filipek ist ein polnischer C++ Programmierer und er schreibt auch Artikel über C++ in seinem Blog (in englischer Sprache).

Es wird natürlich eine Zeit lang dauern, bis alle C++ Compiler alle neuen Features untersützen, aber schon jetzt sind viele Neuerungen in GCC, Clang und Microsofts C++ Compiler (MSVC) implementiert und benutzbar.

Es ist gut zu sehen, dass C++ sich immer weiter entwickelt. Es hat mittlerweile einen Status erreicht, der vermutlich einige Anfänger wieder dazu bringen wird C++ als erste Sprache zu lernen. C++ wirkt mittlerweile fast modern.


Archiv nach Kalenderwochen


2017/KW24, 2017/KW23, 2017/KW22, 2017/KW21, 2017/KW20, 2017/KW19, 2017/KW18, 2017/KW17, 2017/KW16, 2017/KW15, 2017/KW14, 2017/KW13, 2017/KW12, 2017/KW11, 2017/KW10, 2017/KW9, 2017/KW8, 2017/KW7


Startseite Podcast RSS Impressum