Uploaded avatar of iHiD

Es ist Analytical April!

@iHiD
vor Mehr als 3 jahre
Video

Hallo zusammen! Wir hatten den Functional February und den Mechanical March. Jetzt ist es Zeit für den Analytical April, in dem wir uns auf Sprachen konzentrieren, die sich hervorragend für Data Science eignen.

Wie du es von den letzten Monaten gewohnt bist, geben Erik und ich dir in diesem Video einen kurzen Überblick darüber, worum es in diesem Monat geht und welche Sprachen wir uns ansehen.

Wie üblich stellt Erik uns gleich die Sprachen genauer vor, aber ich fange mit ein paar praktischen Details des Monats an.

Zuerst also die vorgestellten Sprachen in diesem Monat. Diesmal sind es nur drei: Julia, Python und R. Jede dieser Sprachen ist ganz anders, und Python ist natürlich eine sehr vielseitige Sprache, aber wir möchten dich diesen Monat ermutigen, diese Sprachen mit einer Data-Science-Denkweise zu nutzen.

Um das Analytical-April-Badge zu bekommen, musst du fünf Übungen in einer dieser Sprachen lösen. Wir schauen uns die Unterschiede gleich genauer an, aber in Exercism-Begriffen: Unser Python-Track hat einen fantastischen Lehrplan, den kann ich dir wirklich empfehlen. Wir hoffen außerdem, dass im Laufe des Monats ein Julia-Lehrplan startet. Ein Großteil der Arbeit dafür ist schon erledigt, es fehlt nur noch der Feinschliff. R hat keinen Lehrplan, aber viele interessante Übungen, mit denen du spielen kannst.

Wir haben fünf vorgestellte Übungen zum Ausprobieren:

  • etl: hier kannst du erkunden, wie man Daten in ein anderes Format umformt
  • largest-series-product: hier übst du effiziente Wege, in einer Ziffernfolge nach Mustern zu suchen
  • saddle-points: hier arbeitest du mit mehrdimensionalen Arrays/Matrizen
  • sum-of-multiples: hier übst du das Filtern und Summieren einer Zahlenfolge
  • word-count: einen String in Wörter umwandeln und sie zählen

Zur Erinnerung: Neben dem Analytical-April-Badge gibt es ein ganzjähriges #12in23-Badge, das du bekommst, wenn du die verschiedenen vorgestellten Übungen irgendwann im Laufe des Jahres löst. Du musst also diese 5 Übungen irgendwann in diesem Jahr in Python, R oder Julia lösen, um das Badge zu bekommen! Die vollständige Liste der Übungen findest du in einem Forumsbeitrag, der von der Analytical-April-Seite aus verlinkt ist.

Und bevor wir in die Sprachen eintauchen, noch eine Erinnerung: Im März starten wir unseren neuen Discord-Server. Dort war schon richtig viel los, also schau unbedingt vorbei. Den Link findest du in der Beschreibung unten!

Gut, schauen wir uns die Sprachen an. Wir machen einen kurzen Überblick über jede Sprache und tauchen dann in ihre Features und Anwendungsfälle ein. Fangen wir mit Python an.

Python

  • Ende der 1980er Jahre von Guido van Rossum als Nachfolger der Programmiersprache ABC konzipiert und entwickelt. 1991 erstmals veröffentlicht.
  • Entwickelt in den Niederlanden am Centrum Wiskunde & Informatica (CWI) (berühmt als der Ort, an dem Edsger Dijkstra den Großteil seiner Arbeit gemacht hat), einem staatlich finanzierten Forschungsinstitut.
  • Guido programmierte mit C und Shell-Skripten, aber beide hatten Nachteile. Python will das Beste aus beiden Welten, ohne die Nachteile.
  • Verwaltet von der Python Software Foundation, und Änderungen an der Sprache laufen über Python Enhancement Proposals (PEPs) (ähnlich wie RFCs)

R

  • Erstellt von Ross Ihaka und Robert Gentleman an der University of Auckland. R kann als eine andere Implementierung der Sprache S betrachtet werden (mit relativ kleinen Unterschieden), auf die S-plus folgte, eine kommerzielle (nicht-offene) Implementierung von S. Während R die meiste Syntax mit S teilt, ist seine Semantik von Scheme inspiriert.
  • Ziel: eine Sprache zu schaffen, die besser für statistisches Rechnen und Grafik geeignet und einfacher zu benutzen war als vergleichbare Software, die von Informatikern entworfen wurde

Julia

  • Von Jeff Bezanson, Stefan Karpinski, Viral B. Shah und Alan Edelman offen entwickelt, hat derzeit mehr als tausend Mitwirkende
  • Ziel: eine freie High-Level-Sprache zu bauen, die die Geschwindigkeit von C, die Dynamik von Ruby, die Metaprogrammierung von LISP, die Vielseitigkeit von Python, die Statistikunterstützung von R, die Lineare-Algebra-Unterstützung von MatLab und die String-Verarbeitungsleistung von Perl hat, und dabei massiv parallele Ausführung unterstützt
  • Hervorragend für wissenschaftliches Rechnen, aber auch eine Allzwecksprache (Genie-Framework für Web-Apps)

Wie bei vielen Sprachen entstanden alle drei aus Unzufriedenheit :)

Okay, gut. Was die Anwendungsfälle angeht: Wann würdest du welche dieser Sprachen im Vergleich zu den anderen einsetzen?

Python

  • Echte Allzwecksprache (Websites, Skripte, wissenschaftliches Rechnen)
  • Kann für viele verschiedene Zwecke genutzt werden: KI (TensorFlow), wissenschaftliches Rechnen (NumPy), Skripte, Websites (Django), eingebettete Systeme (MicroPython), Anbindung an Hardware (z. B. Raspberry Pi), Spiele (EVE Online), und Python ist sogar zum Mars geflogen
  • Großartig, um Programmieren zu lernen: eine Fülle von Ressourcen und eine riesige Community. Viel Anleitung, wie man Pythonic Code schreibt (also idiomatischen Python-Code, mit Beispielen), etwa „Explizit ist besser als implizit“ und „Lesbarkeit zählt“. Viele Betriebssysteme haben es standardmäßig installiert
  • Eine der derzeit meistgenutzten Sprachen, also viel Dokumentation, viele Bibliotheken und eine große Community

R

  • R wird an den verschiedensten Stellen eingesetzt. Forschende analysieren damit Daten aus Experimenten, Universitäten bringen damit Statistik und Datenanalyse bei, im Finanzsektor ist Statistik entscheidend (z. B. für Versicherungen), ebenso im Einzelhandel (Amazon nutzt R für Datenanalyse) und in der Fertigung (John Deere schätzt, wie viele Ersatzteile produziert werden müssen). Der National Weather Service sagt damit Wetter und Katastrophen vorher, im Datenjournalismus werden reale Daten analysiert und verständlich gemacht, oft mit Visualisierung. Im Gesundheitswesen wird R stark genutzt, etwa um die Sicherheit eines Medikaments anhand von präklinischen Studien zu bestimmen

Julia:

  • Großartig für wissenschaftliches Rechnen, Data Mining, Machine Learning, Lineare Algebra und verteiltes Rechnen. Die Notation fühlt sich ähnlich an wie mathematische Notation, deshalb ist der Weg von der Gleichung zum Code relativ einfach
  • Verteiltes Rechnen: Tasks (= Koroutinen) und Channels erlauben es, Code parallel laufen zu lassen, der miteinander kommuniziert, Multi-Prozess-Unterstützung über Message Passing (großartig für High-Performance-Computing)
  • Genutzt im Celeste-Projekt (ein Supercomputer, auf dem Julia-Code läuft, um 178 Terabyte astronomischer Daten zu analysieren) (dadurch ist Julia Teil des Petaflop-Clubs, in dem damals nur C, C++ und Fortran waren; Julia ist die erste dynamische Sprache, eine Billiarde Gleitkommaoperationen pro Sekunde. 1 mit 15 Nullen), Clima (Climate Modeling Alliance) lässt Leute von Caltech, MIT und dem Jet Propulsion Laboratory der NASA ein Klimavorhersagemodell entwickeln, CERN, ASML

Und aus Programmierperspektive: Wie unterscheiden sie sich? Sind sie funktional, OOP usw.?

Python:

  • Dynamisch und stark typisiert
  • Multiparadigma: imperativ, funktional, aber eigentlich eine objektorientierte Sprache (alles ist ein Objekt)
  • Der Standard-Interpreter CPython kompiliert zu Bytecode, der dann in einer virtuellen Maschine interpretiert wird. PyPy ist ein Ersatz für CPython, der Just-in-Time zu Maschinencode kompiliert

R:

  • Dynamisch und stark typisiert
  • Multiparadigma, funktionaler Kern, unterstützt aber auch prozedurale oder objektorientierte Stile

Julia:

  • Dynamisch und stark typisiert, Just-in-Time kompiliert
  • Multiparadigma: imperativ, objektorientiert (Überladen über Multiple Dispatch), funktional (Funktionen höherer Ordnung, partielle Anwendung, Pipe-Operator)
  • Der Code wird zur Laufzeit Just-in-Time (Ahead-of-Time) kompiliert

Und schauen wir uns diese Sprachen weiter aus der Programmierperspektive an: Haben einige davon besondere herausstechende Features?

Python:

  • Angenehme Syntax: Die Empfindlichkeit gegenüber Leerzeichen macht den Gültigkeitsbereich leicht sichtbar. Code ist meist leicht zu lesen, z. B. menschenlesbare boolesche Bedingungen (and/or)
  • Ausdrucksstark: mit relativ wenig Code viel erreichen (List Comprehensions, Generatoren, Dekoratoren)
  • Eine riesige Fülle an Bibliotheken für die verschiedensten Zwecke
  • Wie schon erwähnt, ist es wirklich eine Allzwecksprache, weil sie in vielen verschiedenen Szenarien eingesetzt werden kann

Julia

  • Multiple Dispatch. Entscheide anhand der Typen aller Argumente, welche Funktion aufgerufen wird (wie beim Überladen von Funktionen)
  • Dynamisch, aber großartige Performance. Julias Performance kann mit der von Fortran konkurrieren und kommt an die von C heran. „Normaler“ Code ist oft performant (keine verrückten Hacks nötig, kleinere Funktionen werden sogar empfohlen). Bibliotheken, um Code auf der GPU laufen zu lassen
  • Verteiltes Rechnen: Tasks (= Koroutinen) und Channels erlauben es, Code parallel laufen zu lassen, der miteinander kommuniziert, Multi-Prozess-Unterstützung über Message Passing (großartig für High-Performance-Computing)
  • Großartig für wissenschaftliches Rechnen, Data Mining, Machine Learning, Lineare Algebra und verteiltes Rechnen. Die Notation fühlt sich ähnlich an wie mathematische Notation, deshalb ist der Weg von der Gleichung zum Code relativ einfach

R:

  • Flexible Datentypen: Der Vektor ist der zentrale Typ, selbst Skalare sind Vektoren. Vektoren können Metadaten tragen (z. B. die Namen ihrer Elemente). Listen sind heterogen (können Elemente mit unterschiedlichen Typen enthalten). Ein spezieller Dataframe-Typ für eine Sammlung von Vektoren (alle mit derselben Länge).
  • Vektorisierte Operationen erlauben ein prägnantes, effizientes und lesbares Aktualisieren von Vektoren
  • R ist eine integrierte Sammlung von Software-Einrichtungen für Datenmanipulation, Berechnung und grafische Darstellung. Einfaches Erkunden, Visualisieren und Manipulieren von Daten mit RStudio. Großartig für Data Mining
  • Großartige Community, freundlich und vielfältig. Die R for Data Science Online Learning Community ist eine Gemeinschaft von R-Lernenden auf allen Könnensstufen, die gemeinsam ihre Fähigkeiten verbessern. Es gibt eine offene Slack-Gruppe, in der sich die Mitglieder austauschen und sich gegenseitig bei Problemen helfen können.

Wenn jemand unsicher ist, was er im April ausprobieren soll, wie sollte er sich deiner Meinung nach entscheiden?

Wie alles in der IT: Es kommt darauf an! In diesem Fall würde ich sagen, es hängt vor allem von deinen Zielen und deiner persönlichen Erfahrung ab.

Wenn du relativ neu beim Programmieren bist, dich für KI oder Machine Learning interessierst oder eine Sprache lernen willst, die du für viele verschiedene Dinge nutzen kannst, würde ich dir wahrscheinlich empfehlen, mit Python anzufangen: Die Zahl der verfügbaren Ressourcen für Python ist gigantisch, darunter viele kostenlose Online-Kurse Python wird überall im Bereich KI und Machine Learning eingesetzt Python lässt sich für eine sehr große Zahl von Zwecken nutzen Der Python-Track hat den Lernmodus aktiviert, der dir auf spielerische Weise helfen kann, die Kernkonzepte der Sprache zu lernen

Wenn du an statistischer Arbeit interessiert bist, Daten erkunden und visualisieren willst oder neugierig auf eine andere Art bist, mit Daten zu arbeiten, ist R eine großartige Wahl: R's Datentypen basieren auf Datensammlungen (Vektoren/Listen), und Operationen lassen sich mühelos auf Sammlungen anwenden (keine Schleifen nötig) Die RStudio-IDE ist großartig zum Erkunden und Visualisieren von Daten R hat exzellente Unterstützung für statistische Analyse R erlaubt einfaches Plotten von Daten

Wenn du dich für wissenschaftliches Rechnen interessierst, Code nebenläufig ausführen willst, wirklich Wert auf Performance legst oder eine moderne, elegante Sprache lernen willst, die etwas anderes bietet als die meisten anderen Sprachen, würde ich dir Julia empfehlen:

  • Multiple Dispatch wird für viele neu sein und ist unglaublich mächtig
  • Julia ist großartig für wissenschaftliches Rechnen
  • Julias Typsystem ist flexibel und ausdrucksstark
  • Julia hat eine exzellente Performance
  • Julia ist großartig für nebenläufige Ausführung

Wenn du natürlich die Zeit hast, würde ich dir empfehlen, alle drei auszuprobieren! Du weißt nie wirklich, welche Sprache dir Spaß macht, wenn du sie nicht ausprobiert hast.

1. April 2023 · Fandest du ihn hilfreich?