Vor- und Nachteile von Javascript und Python

  • Allgemein

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von newcat.

    Vor- und Nachteile von Javascript und Python

    Moin,

    mich würde mal Interessieren, was Vor- und Nachteile von Javascript und Python ist. Außerdem wäre es noch interessant, welche Möglichkeiten an Projekten man mit Javascript und Python jeweils hat.

    *Topic verschoben*
    Mit Freundlichen Grüßen
    AtomiX

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Früher war zu mindest JavaScript eine begleitende Scriptsprache für html. Heute kannst du denke ich ebenso gut Projekte mit JavaScript und Python umsetzen wie mit jeder anderen sprache aus. Es kommt eben darauf an, welche Projekte du damit umsetzen möchtest. Gibt immer pro und contras. Ich würde z.b. nie eine normale Window Application mit C++ umsetzen, da für mich der Aufwand zu hoch wäre. Machbar wäre es jedoch auch.
    Mir gefällt z.b. der Syntax und Aufbau von Python nicht, da ist C# oder Java wesentlich angenehmer, aber ich denke auch das ist Geschmacksache.
    Python wird, so weit mir bekannt, sehr gerne als Skriptsprache verwendet, und ist, warum auch immer, bei MachineLearning recht beliebt. Dies bedeutet jedoch nicht, dass man es nicht für andere Dinge einsetzen kann.

    JavaScript ist dank etlichen Frameworks und millionen von Packages, zu einem Alleskönner geworden. Du kannst damit Webseiten verschönern und reaktiver gestalten, du kannst damit GUI's von Hybrid-Anwendungen zu Funktionalität verhelfen, und du kannst damit auch Lücken wie Spectre und Meltdown ausnützen.

    Was Syntax, Performance usw. angeht, kann ich jedoch keine Aussagen treffen, hab mit noch keinen von beiden gearbeitet.
    Hier noch my 2 cents. Ich arbeite (mangels Alternativen, wie @eeranMalesi ja schon geschrieben hat) viel mit Python im Bereich Machine Learning und mit TypeScript für alles andere.

    Blocking IO vs Event Loop
    Das Grundprinzip von JavaScript ist non-blocking IO, d. h. IO Methoden blockieren nicht, sondern geben das Ergebnis über Callbacks zurück. Das hat in der Vergangenheit oft zur sogenannten Callback-Hell geführt, was aber mittlerweile durch Promises und async functions m. E. ganz gut gelöst wurde. Auch gibt es in Node mittlerweile tlw. blockierendes IO. Nichtsdestrotz würde ich sagen: für kleine Skripte, die ein paar Dateien auslesen/bearbeiten/whatever, ist Python definitiv einfacher und schneller zu schreiben. Geht es allerdings um Netzwerk, mehrere Clients, ... ist JS ganz klar im Vorteil.

    Typisierung
    Gerade bei großen Projekten finde ich Typisierung unumgänglich - das spart so viel Zeit, Geld und Nerven. Hier hat Python meiner Meinung nach die größte Schwachstelle; zwar gibt es mittlerweile die Möglichkeit, type annotations in Python zu benutzen, aber da nur wenige Libraries diese haben, bringt es im Endeffekt fast nix. Microsoft hat hier mit TypeScript dagegen einen wirklich guten Job gemacht, finde ich, und gerade C# Entwickler werden sehr viele Konzepte wiedererkennen. Auch gibt es für die meisten Libraries Typings - entweder direkt oder über das DefinetelyTyped Projekt. Wenn dir das wichtig ist (und wiegesagt, bei einem großen Projekt mMn unerlässlich) also ganz klar: TypeScript

    Multithreading
    Ganz ehrlich: Hier sind beide Sprachen scheiße. Keine Sprache kann multithreading sondern nur multiprocessing. In JS mit WebWorker, in Python mit der multiprocessing Library. Hier würde ich sagen, das Python einen Vorteil hat, weil die multiprocessing Library sehr einfach zu benutzen ist, vor allem im Vergleich zu WebWorkern. Aber wirklich gut ist es bei beiden nicht.

    Ökosystem
    In JS gibt es für ALLES eine Library. Wirklich. Python hat aber einen Vorteil bei wissenschaftlichen Anwendungen (Statistik, KI/ML, ...). Gibt sich glaube ich nicht viel.

    Grafische Oberfläche
    Hier gibt es für mich einen ganz klaren Gewinner: JS. Was man grafisch im Browser machen kann, und vor allem wie einfach, ist für mich jedes Mal aufs Neue beeindruckend. Und dazu auch noch plattformunabhängig. Das Thema UI war tatsächlich auch mit der Hauptgrund, warum ich vor ein paar Jahren von C# weg und hin zu JS/TS + HTML + CSS bin.

    Das war jetzt nur mal an der Oberfläche gekratzt. Bestimmt habe ich Sachen vergessen, wenn mir noch was einfällt, editiere ich es hier rein.

    Als Fazit würde ich sagen: Für kleine Sachen (paar Skripte) geben sich die Sprachen nicht viel. Für größere Projekte kann ich von Python aber nur abraten. Das Modulsystem ist furchtbar, keine gescheiten Typdefinitionen und insgesamt lädt die Sprache nicht gerade zu clean code und clean architecture ein.
    Twitch Viewer Display Chat-, Zuschauer- und Statistiktool für Streamer
    Ich kann eiglich nur erzählen, was ich gehört habe - was hier aber noch nicht erwähnt wurde:
    Javascript ist ein dinosaurier, immerhin objektorientiert (aber glaub keine generica - korrigiert mich bitte).
    python ist eine "funktionale" Sprache, das ist ein sehr neues Programmier-Paradigma, neuer noch als Objektorientierung und Generica.
    Das soll wohl ungemein pfiffige Lösungen ermöglichen.
    ich selbst hab vormals mit f# bisserl rumprobiert, als das rauskam - eine weitere funktionale Sprache.
    Bin aber nicht weit gekommen, weil mir eine GUI-Anbindung fehlte, das war mir lausig, da nur in der f#-Konsole rumzuknispeln.

    Jedenfalls die Syntax sehr fremdartig.

    ErfinderDesRades schrieb:

    Javascript ist ein dinosaurier, immerhin objektorientiert (aber glaub keine generica - korrigiert mich bitte).

    Tatsächlich ist JavaScript in der Reinform nicht mal Objektorientiert, sondern prototypenbasiert. Seit ECMAScript 2015 (es gibt mittlerweile jedes Jahr eine neue Version von JavaScript mit neuen Features) gibt es aber auch die Möglichkeit, Klassen ganz normal zu deklarieren, wie man es von C#, Java, etc. kennt. Generika gibt es in JavaScript als dynamisch typisierte Sprache nicht, allerdings gibt es sie in TypeScript.

    ErfinderDesRades schrieb:

    python ist eine "funktionale" Sprache, das ist ein sehr neues Programmier-Paradigma, neuer noch als Objektorientierung und Generica.

    Uff, mit der Aussage habe ich tatsächlich so meine Probleme. Funktionale Programmierung ist tatsächlich mit das älteste Paradigma das es gibt (siehe LISP). Zugegebenermaßen führt es ein ziemliches Nischendasein, hatte aber zusammen mit logischer Programmierung (Prolog) in den 80ern einen riesen Hype als KI Sprache (allerdings nicht für Machine Learning, was heute viel im Bereich KI gemacht wird, sondern eher für Expertensysteme o. ä.) und durch die einfache Umsetzung von Nebenläufigkeit in funktionalen Sprachen ist das Paradigma wieder am kommen (um die ganzen multi-core Prozessoren heutzutage auszunutzen)

    Und ja, Python hat funktionale Elemente (z. B. die funktionen map, len, max im global scope), aber die Unterstützung von Lambda-Ausdrücken, was für eine funktionale Sprache absolut essentiell ist, ist in Python miserabel. Zwar kann man sie deklarieren, aber aufgrund der syntaktischen Bedeutung von Einrückungen in Python kann man keine mehrzeiligen Lambda-Funktionen deklarieren! Damit ist man gezwungen, sehr un-funktionale Patterns zu benutzen. Und die Umsetzung von Objektorientierung in Python ist mMn noch schlimmer als in alten JavaScript Versionen. Deshalb auch mein Hinweis bezüglich clean code & clean architecture:

    newcat schrieb:

    insgesamt lädt die Sprache nicht gerade zu clean code und clean architecture ein

    Twitch Viewer Display Chat-, Zuschauer- und Statistiktool für Streamer