Seite 1 von 1

Philosophische Frage zum tidyverse

Verfasst: Sa Feb 08, 2020 5:10 pm
von ruedi_br
Hallo zusammen,
das tidyverse beinhaltet das Paket magrittr. Das bezieht sich auf das Bild des zugehörigen Malers "ceci n'est pas une pipe" - die gemalte Pfeife ist natürlich keine echte Pfeife. Ich würde allerdings die "pipe" als Schlauch oder Rohr (also klempnerisch) zwischen zwei Verarbeitungsschritten interpretieren. Wie sehen das die Fans des tidiverse?
Grüße
Ruedi

Re: Philosophische Frage zum tidyverse

Verfasst: Sa Feb 08, 2020 5:20 pm
von student
Hallo Ruedi,

m. E. ist das Pipe-Konzept der Linux-Umgebung entnommen. Z.B. wenn du eine Ausgabe nicht auf dem Bildschirm ausgeben sondern direkt als Datei speichern (umlenken) möchtest, machst Du das mit ">" (dem Pipe-Symbol). Ich bin aber ein Windows-Sklave und habe erst mit dem nVidia Jetson Nano mit Linux angefangen....

Re: Philosophische Frage zum tidyverse

Verfasst: Sa Feb 08, 2020 7:44 pm
von jogo
Der/die/das pipe stammt schon von UNIX und ist im Sinne von Pipeline zu verstehen - also Weiterleitung (Rohr/Schlauch).
In UNIX/Linux ist mit dem pipe der Begriff des Filters verbunden. Ein Filter ist ein Programm, welches stdin liest und stdout schreibt. Viele der Programme von z.B. BSD-UNIX sind Filter. Deshalb kann man viele kleine Programme per pipe koppeln, um komplexe Aufgaben zu lösen.
Schau Dir mal die utp- (Unix Text Processing) Tools an. Man kann wirklich nur staunen, wie universell das alles ausgelegt ist.

Nachtrag:
https://de.wikipedia.org/wiki/Pipeline_ ... Geschichte

Gruß, Jörg

Re: Philosophische Frage zum tidyverse

Verfasst: Di Feb 11, 2020 3:33 pm
von bigben
Der Begriff Pipe steht ganz klar nicht für eine Pfeife sondern für eine Leitung, eine Leitung für Daten. Als solcher ist er viel älter als magrittr. Die Namensgebung magrittr finde ich dennoch sehr gelungen. Ein bisschen ist das wie bei Stack-basierten Programmiersprachen, wo Daten auf den Stack gelegt werden. Man muss dann der Funktion keine Daten übergeben, sie nimmt sich die zuletzt auf den Stack gelegten Daten. Man legt natürlich nicht alle Daten auf den Stack sondern immer nur das erst Argument der Funktion.

In der Tat ist die Einschätzung der Pipe eine philosophische Frage. Dem Fan stackbasierter Sprachen wird das zuwenig Stack sein. Der Fan funktionaler Progammierparadigmen wird es schätzen, dass es nicht zu Ketten kommt, in denen demselben Variablennamen immer neue Zwischenergebnisse zugeordnet werden und der Vertreter von C-ähnlichen Sprachen wird sich fragen was das soll:

Einerseits soll die Pipe dem Unerfahrenen das Lesen leichter machen, andererseits wird der Unerfahrene am meisten dadurch verwirrt, dass R jetzt nicht mehr nur eine, sondern zwei Arten von Satzbau hat.

Das copy-pasten von Codeabschnitten wird m. E. etwas einfacher, weil man weniger Gehampel mit der richtigen Anzahl geschlossener Klammern hat, das Debuggen etwas schwieriger, weil Zwischenergebnisse keinen Namen mehr haben, unter dem man sie sich anschauen kann.

ggplot war etwas wirklich Neues. Seit es das gibt, kann man in R andere und schönere Grafiken machen als vorher. Das war ein substantieller Gewinn. Die Pipe bringt mehr syntaktische Möglichkeiten auf Kosten höherer Komplexität. Substanziell ändert sie nichts.

JMTC,
Bernhard

Re: Philosophische Frage zum tidyverse

Verfasst: Di Feb 11, 2020 9:56 pm
von EDi
Ich habe beruflich mit (R)Code von vielen unterschiedlichen Programmierern zu tun.
Habe auch viel UNIX und data.table Hintergrund.

Für mich ist Code im tidyverse gefühlt leichter zu reviewen bzw. verständlicher da expressiver. Vermutlich führt es auch zu weniger Spaghetti?

Wenn man aber in den Bereich "tidyevaluation" kommt, dann wirds nicht besser als data.table von der Verständlichkeit. tidyeval hat mich einiges an Zeit gekostet durchzusteigen :(

Die Pipe fühlt sich sehr gewohnt an wenn man von UNIX kommt. Aber manche Auswüchse (=komischer Code für eine simple Sache) finde ich schon komisch...

Re: Philosophische Frage zum tidyverse

Verfasst: Fr Mär 13, 2020 2:54 pm
von ruedi_br
Danke an Euch alle. Mit der Pipe hatte ich zu Unix-Zeiten auch schon zu tun (bzw. frühes MS-DOS) :)
Wahrscheinlich habe ich in den Namen des Pakets magrittr einfach zuviel hineingeheimnist.
Grüße
Ruedi