Sprachen & Umgebungen

Programmiersprachen lernen, Software

Programmiersprachen

Programmiersprachen sind essentielle Werkzeuge für die Neurowissenschaftliche Forschung. Wir werden uns zuerst einen kurzen Überblick über häufig verwendete Programmiersprachen verschaffen und kurz deren Verwendungszwecke und Vor- und Nachteile diskutieren.

Matlab ist ein Software für numerische Anwendung, welche in den Ingenieurwissenschaften, Naturwissenschaften und der Mathematik weit verbreitet ist.

👍🏼 Stärken:

  • Leistungsstarke Matrix- und Vektoroperationen, gut geeignet für Matrix-basierte Operationen, die in der Neurowissenschaftlichen Forschung häufig vorkommen.
  • Umfangreiche Bibliothek von integrierten Funktionen für wissenschaftliches Rechnen.

👎🏼 Schwächen:

  • Teuer
  • Weniger flexibel als Python oder R in Bezug auf Datenarten und Strukturen.
  • Matlab is kommerziell und proprietär. Dies bedeutet man muss teuere Lizenzen kaufen, und der Source Code der Software ist nicht offen.

Typische Anwendung:

  • Datenverarbeitung und -analyse
  • Visualisierung
  • Viele fMRI Forscher arbeiten mit Matlab, da es dafür eine spezielle Toolbox gibt: SPM
  • Experimente programmieren, z.B. mit Psychtoolbox

Beispielcode:

load('data.mat')
fs = 1000;
t = (0:numel(data)-1)/fs;
plot(t, data)

Python ist eine allgemeine (general purpose) Programmiersprache, die in vielen verschiedenen Bereichen wie wissenschaftlichem Rechnen, Datenanalyse und maschinellem Lernen weit verbreitet ist.

👍🏼 Stärken:

  • Eine Vielzahl von Bibliotheken und Modulen wie NumPy, SciPy und Pandas, die leistungsstarke Werkzeuge für wissenschaftliches Rechnen und Datenanalyse bieten.
  • Datenanalysewerkzeuge wie Pandas-Dataframes, die Seaborn-Visualisierungsbibliothek, und Jupyter Notebooks.
  • Open-source und kostenlos

👎🏼 Schwächen:

  • Kann in einigen numerischen Berechnungen langsamer sein als Matlab.
  • Da Python eine allgemeine Sprache ist, muss man für numerische Anwendungen immer verschiedene Packages importieren (z.B.) numpy, wenn man damit rechnen will. Dies führt zu weniger gut lesbarem Code.

Typische Anwendung:

  • Datenverarbeitung und -analyse,
  • Visualisierung
  • Machine learning und Künstliche Intelligenz
  • Experimente programmieren, z.B. mit PsychoPy

Beispielcode:

import pandas as pd
import seaborn as sns
data = pd.read_csv('data.csv')
sns.lineplot(data=data, x='time', y='voltage')

R ist eine Programmiersprache für statistisches Rechnen und Grafiken.

👍🏼 Stärken:

  • Entwickelt von Statistikern für statistisches Rechnen und Grafiken.
  • Eine große Bibliothek von statistischen Werkzeugen und Paketen, einschliesslich Visualisierungspackages (grammar of graphics).
  • Open-source und kostenlos
  • tidyverse Packages für Data Wrangling (sehr elegante Syntax, um mit Daten zu arbeiten).

👎🏼 Schwächen:

  • Steilere Lernkurve als Python.
  • Kann in einigen numerischen Berechnungen langsamer sein als Matlab oder Python.
  • Entwickelt von Statistiker (nicht von Software Designers). R gilt als sehr idiosynkratisch.

Typische Anwendung:

  • Statistische Analyse
  • Datenvisualisierung. R hat eine sehr gute Bibliothek für Grafiken, die ggplot2 Bibliothek. Diese Bibliothek verwendet die sogenannte grammar of graphics (GoG) - eine Methode, um Daten in Grafiken zu visualisieren. Die GoG ist eine sehr elegante und effiziente Methode, um Daten zu visualisieren.

Beispielcode:

library(tidyverse)
data <- read.csv('data.csv')
ggplot(data, aes(x=time, y=voltage)) + geom_line()

Julia ist eine allgemeine (general purpose) Programmierspache, die vor allem für numerisches und wissenschaftliches Rechnen entwickelt wurde.

👍🏼 Stärken:

  • Entwickelt von Mathematikern für scientific computing
  • Leistungsstark und schnell
  • Open-source und kostenlos

👎🏼 Schwächen:

  • wenig verbreitet

Typische Anwendung:

  • Datenverarbeitung und -analyse,
  • Signalverarbeitung
  • Visualisierung
  • Machine learning und Künstliche Intelligenz

Beispielcode:

using CSV, DataFrames, AlgebraOfGraphics, CairoMakie
dat = CSV.read('data.csv', DataFrame)
data(dat) * visual(Lines) * mapping(:time, :voltage) |> draw()

Bash ist eine Mensch-Maschine-Schnittstelle und dient als Grundlage unixbasierter Betriebssysteme (Linux, macOS). Mit Bash-Skripts können repetitive Aufgaben automatisiert werden, was Fehler vermeidet und komplexe Aufgaben vereinfacht.

👍🏼 Stärken:

  • Einfaches Konzept und Verwendung
  • Bereits instaliert (nicht auf Windows)

👎🏼 Schwächen:

  • Steile Lernkurve
  • Umstellung notwendig von GUI

Typische Anwendung:

Beispielcode:

#!/bin/bash
echo "Enter Your Name"
read name
printf "\n Welcome $name \n\n"

Fazit

Diese Sprachen sind leistungsstarke Werkzeuge für die neurowissenschaftliche Forschung. Die Wahl der Sprache hängt unter anderem von der spezifischen Aufgabe ab. Weitere Faktoren ist Tradition: bestimmte Gruppen bevorzugen eher eine Sprache als andere. So ist Matlab unter Ingenieuren weit verbreiten und R unter Statistikern. Python ist im Bereich Künstliche Intelligenz und Machine Learning die beliebteste Sprache. Eine neuere Sprache ist Julia - diese vereint die Vorteile aller oben genannten Sprachen (ohne viele deren Nachteile), ist aber weniger weit verbreitet.

Um mehr zu erfahren, erkunden Sie die umfangreichen Online-Ressourcen und Dokumentationen für jede Sprache.

Programmierumgebungen

Eine IDE kombiniert häufig verwendete Entwicklertools in einer grafischen Benutzeroberfläche. Typischerweise handelt es sich dabei um Funktionen wie Softwarebearbeitung, Erstellung und Testen von Code.

In diesem Kurs werden wir RStudio verwenden.

Reuse

Citation

BibTeX citation:
@online{fitze,
  author = {Fitze, Daniel and Ellis, Andrew and Wyssen, Gerda},
  title = {Sprachen \& {Umgebungen}},
  url = {https://kogpsy.github.io/neuroscicomplabFS24//pages/chapters/programmieren_1.html},
  langid = {en}
}
For attribution, please cite this work as:
Fitze, Daniel, Andrew Ellis, and Gerda Wyssen. n.d. “Sprachen & Umgebungen.” https://kogpsy.github.io/neuroscicomplabFS24//pages/chapters/programmieren_1.html.