Vorteile von Python

Wasserhuhn schrieb:
Keine. Nur Nachteile.
Auch, wenn es weniger mit der Programmiersprache sondern mehr mit deren Verfügbarkeit zu tun hat:
hast Du man eine Link zu einem iOS/iPadOS C/C++ Interpreter/Compiler, der auf dem mobilden Device läuft und mit dem man direkt auf dem Gerät ohne Apple-Lizenz (und weitere 1000€ für einen Macbook) auch programmieren darf?

Also sowas wie Pythonista, aber halt in C/C++?

Ich kenne bisher sonst nur noch zusätzliche Virtualsierungs-/Emulationsschichten wie UTM oder iSH, auf denen man dann Linux und darin die Entwicklung laufen lassen könnte.

U.U. sollte ich mal nach einem Sharp PC-G850V Emulator suchen, der hätte einen C-Interpreter aber natürlich keinen Zugriff auf Daten oder das Display des Apple-Devices.
 
Von einer IDE unter iOS habe ich auch schon immer geträumt... nicht. Wenn ich schon unbedingt mit dem iPhone coden will, nutze ich termius, connecte mich zu ner kiste und benutze vim.
Ergänzung ()

blöderidiot schrieb:
das in Perl - @S = map 2*$_, grep $_**2>3, 0..100;
Es gibt auch in 2022 nichts schöneres als perl. Und das ist vollkommen ernst gemeint. 1999 damit angefangen und ich nutze es auch heute noch sehr gerne. Jedenfalls dann wenn keine Kollegen an dem Code arbeiten müssen.
 
  • Gefällt mir
Reaktionen: andy_m4 und Der Lord
Perl neigt aber scheinbar dazu einen Konstrukte entwickeln zu lassen die langsam sind. Nicht falsch verstehen, Perl ist so schnell oder schneller als Python in vielen Dingen, aber scheinbar hat es gewisse Limitierungen/Anreize gewisse Dinge auf eine bestimmte Art zu lösen die es langsam machen.

Kleines Beispiel. Kollege hat vor vielen vielen Jahren etwas in Perl gemacht das wir jetzt noch immer nutzen. Es hat sich aber gezeigt, dass das einfach zu langsam ist. Er hat es aber nicht schneller bekommen. Jetzt hat ein anderer Kollege sich das genommen und in Python gekippt und was war. Von 10Minuten+ Laufzeit auf ein paar Sekunden runter. Da fragt man sich schon warum. Ich bin leider nicht wirklich fit in Perl um das zu bewerten, sondern froh wenn ich den Perl Code halbwegs lesen und verstehen kann. Selbst groß was schreiben kann ich aber definitiv nicht in Perl...

Wasserhuhn schrieb:
Keine. Nur Nachteile
Stimmt nicht. Es ist ein riesen Vorteil von Python und jeder anderen Skript Sprache, dass der Quellcode direkt verfügbar ist und von jedem geändert werden kann. So lassen sich Sachen leicht anpassen und ein minimal value Pattern leicht fahren.

Und bezüglich kompilieren ist doch nichts aufwändiges. Bei uns schlagen sich die Leute oft Tage/Wochen Rum um Buildsysteme auf zu setzen. Klar für den kleinen Hobby Code ist das alles kein Ding, aber wenn du so Codemonster mit 10Mio+ Zeilen EIGENEN Code hast, dann wird es halt grausam. Und da rede ich jetzt noch nicht mal davon das cross compile fähig zu bekommen. Geschweige denn das auf ne andere Architektur zu portieren...

Ich erinnere mich da nur an ein Horrorprojekt von nem Kollegen. Compilezeit von >>24h...
 
C/C++ und Python sind halt zwei sehr verschiedene Sprachen.

Simpel (!) ausgedrückt:
  • C/C++: Schwierig zu lernen, schnell in der Ausführung
  • Python: Einfach zu lernen, langsam in der Ausführung

In Python ist der Einstieg halt sehr einfach. Man bekommt mit extrem wenig Overhead und durch die dynamische Typisierung sehr schnell etwas zum Laufen. Außerdem sind Syntax und Sprachfeatures auf gute Lesbarkeit ausgelegt. Viele beschweren sich zwar darüber, dass Whitespaces Teil der Syntax sind, aber das wird wohl eher nur eine laute Minderheit sein. Für die meisten dürften Whitespaces ein Teil der Syntax wie jedes andere Zeichen auch sein. Alle heiligen Zeiten vergisst man es halt mal (wie ein ";" oder "{" in C), stört aber nicht weiter.

Python war halt zur richtigen Zeit an richtigen Ort. Mit den Bibliotheken setzte dann ein gewisser Schneeballeffekt ein und es gilt wie so häufig in einer global vernetzten Welt: "The winner takes it all".
 
  • Gefällt mir
Reaktionen: mercury und Skysnake
Skysnake schrieb:
Stimmt nicht. Es ist ein riesen Vorteil von Python und jeder anderen Skript Sprache, dass der Quellcode direkt verfügbar ist und von jedem geändert werden kann. So lassen sich Sachen leicht anpassen und ein minimal value Pattern leicht fahren.

Das ist so nicht korrekt. Er fragt explizit nach anderen Sprachen wie C/++ und Java. In Java geht das auch.
Im Prinzip geht das mit allen Sprachen. Ob ich jetzt "run X" oder "make && run X" mache, ist scheißegal.
Ist alles eine Frage des Makros und ob ich den Quellcode bereitstellen will. Weil es eine Möglichkeit ist, die ich habe, aber mit Python so erstmal nicht.

feynman schrieb:
  • Python: Einfach zu lernen, langsam in der Ausführung

In Python ist der Einstieg halt sehr einfach. Man bekommt mit extrem wenig Overhead und durch die dynamische Typisierung sehr schnell etwas zum Laufen. Außerdem sind Syntax und Sprachfeatures auf gute Lesbarkeit ausgelegt.

Ich finde das genau gegenteilig.
Die Syntax ist komplett willkürlich und davon abhängig ist die Typisierung. Ein Tippfehler führt beim "Kompilieren"/direkt beim Ausführen (auch toll, es wird wortwörtlich JIT kompiliert, was heißt, dass nach dem Deployment 6 Monate später jemand kommen kann und merkt, dass mal wo eine Klammer zu viel gesetzt worden ist und erst dann zu einem Fehler im Sinne eines Programmabbruches führt), nicht zu einem Fehler, sondern zu unvorhersehbarem Verhalten, weil aus einem String plötzlich ein String Array wird. Und du weißt weder das, noch weißt du wo das passiert, wenn du überhaupt dahinter kommst. Sowas ist extrem schwierig nachvollziehbar für jemanden, der schon Erfahrung außerhalb von Python hat. Für einen Einsteiger ist das komplett willkürliches Verhalten.
Lesbarkeit ist nicht vorhanden.

Ich habe das Gefühl, dass die ganzen Scheinargumente für Python nur Bestand haben, weil man andere Sprachen einfach nicht beherrscht, oder beherrschen will, und/oder den modischen Scheinkonsens nachplappert.

Python ist eine Pfuschersprache um Flickenteppiche zu generieren. Ein kleines Skript hier, ein anderes da. Jetzt funktionieren zwei Schnittstellen im System miteinander. Was man früher mit Batch und Bash gemacht hat, kann man mit Python machen. Dafür ist es super. Denn die ersten beiden Optionen schaffen es noch grauenvoller zu sein. Das war's aber auch schon.
 
Zuletzt bearbeitet:
In meinen Augen ist python das was Javascript im Browser darstellt. Rapid ist man mit Python auch nur durch das riesige Ökosystem was sich im Laufe der Zeit gebildet hat (ähnlich wie bei Javascript).

Natürlich ist das bei anderen Sprachen ähnlich, bei python jedoch noch extremer. Und was eine Abhängigkeit von Fremdbibliotheken angeht hat die Vergangenheit zur genüge gezeigt, ich sag nur npm.
 
Wenn Python nicht vorher schon beliebt gewesen wäre, gäbe es das große Ökosystem nicht. Und der Vergleich mit Browser JS hinkt ohnehin, da es Browserseitig keine Alternativen gibt.
 
  • Gefällt mir
Reaktionen: andy_m4
foo_1337 schrieb:
Und der Vergleich mit Browser JS hinkt ohnehin, da es Browserseitig keine Alternativen gibt.
Gibt es wohl, nennt sich Typescript.
 
foo_1337 schrieb:
Wenn Python nicht vorher schon beliebt gewesen wäre

Schwierig. Klingt nach Post-hoc-Rationalisierung.
"Beliebtheit" heißt auch nicht zwangsläufig "Nutzung". Und keines davon heißt zwangsläufig "Qualität".
 
codengine schrieb:
Gibt es wohl, nennt sich Typescript.
srsly? Bist du dir sicher, dass du weißt was Typescript ist und wofür es gedacht ist? Und selbst wenn du diesen weg (aus welchem Grund auch immer) gehen möchtest, müsstest du Typescript in Javascript Transpilieren, damit es im Browser funktioniert. Denn keiner der großen Browser unterstützt TS nativ und es gibt auch keine Pläne dazu. Und jetzt rate mal, weshalb man Typescript so gut in JS transpilieren kann.
Und falls du das mit Polyfills erzielen möchtest, kann man wirklich die Frage stellen, wieso man das machen sollte.

Wasserhuhn schrieb:
"Beliebtheit" heißt auch nicht zwangsläufig "Nutzung". Und keines davon heißt zwangsläufig "Qualität".
Nun ist die häufige Nutzung von Python absolut unstrittig. Und Qualität geht in der Regel vom Code aus und nicht von der Sprache.
 
Dann verstehe ich die Argumentationskette nicht.
Geht es hier noch darum, dass Python (irgendwo) besser sei, oder geeignet?
 
Wasserhuhn schrieb:
Dann verstehe ich die Argumentationskette nicht.
Geht es hier noch darum, dass Python (irgendwo) besser sei, oder geeignet?
Die Argumentationskette war: User XY meint, dass Python so beliebt sei wegen des reichhaltigen Ökosystems. Ich sage: Python war schon vorher beliebt, denn sonst gäbe es dieses reichhaltige Ökosystem gar nicht.
Und was ist deine Argumentationskette außer
Wasserhuhn schrieb:
Keine. Nur Nachteile.
?
 
  • Gefällt mir
Reaktionen: Falc410
foo_1337 schrieb:
Die Argumentationskette war: User XY meint, dass Python so beliebt sei wegen des reichhaltigen Ökosystems. Ich sage: Python war schon vorher beliebt, denn sonst gäbe es dieses reichhaltige Ökosystem gar nicht.
Ah, okay. Ich wusste nicht, dass es lediglich um die Beliebtheit geht.
foo_1337 schrieb:
Und was ist deine Argumentationskette außer
Das habe ich wider Willen im Nachhinein mal angerissen.
 
Wasserhuhn schrieb:
Ich habe das Gefühl, dass die ganzen Scheinargumente für Python nur Bestand haben, weil man andere Sprachen einfach nicht beherrscht, oder beherrschen will, und/oder den modischen Scheinkonsens nachplappert.
Hmm warte mal ich kann

Bash
C/C++
CUDA
FORTRAN
Java
MPI
OpenCL
OpenMP
Python
Verilog-ams

Und ich kann mich in allen Sprachen auch in Millionen Zeilen Code Anwendungen recht schnell zurechtfinden und Anpassungen vornehmen. Ich würde also nicht sagen das ich keine anderen Sprachen beherrschen würde. Trotzdem mag ich Python, denn für viele Dinge ist es einfach ziemlich praktisch.

Wasserhuhn schrieb:
Python ist eine Pfuschersprache um Flickenteppiche zu generieren. Ein kleines Skript hier, ein anderes da. Jetzt funktionieren zwei Schnittstellen im System miteinander. Was man früher mit Batch und Bash gemacht hat, kann man mit Python machen. Dafür ist es super. Denn die ersten beiden Optionen schaffen es noch grauenvoller zu sein. Das war's aber auch schon.
Du nennst es pfuschen. Ich nenne es pragmatisch.

Wenn ich Problem XY habe und das lösen muss, dann ist es bei mir oft bash, weil es eben Probleme in der Bash sind.

Öfters werden die Probleme aber dann doch zu komplex für die Bash und Python ist dann ein guter nächster Schritt. Gerade auch wenn man Code reuse betreiben will sind Module was feines.

Das in C/C++ zu machen hat für mich keinerlei Mehrwert, sondern bedeutet nur mehr Aufwand.

Klar man könnte jetzt Go etc in den Raum werfen, steht auch ganz klar auf meiner todo, aber Zeit ist halt am Ende endlich
 
  • Gefällt mir
Reaktionen: Revan1710 und foo_1337
Naja, wir coden recht viel in golang. Aber niemand von uns würde auf die Idee kommen, z.B. monitoring checks in golang zu schreiben. Aber oftmals ist man ohnehin an diverse Dinge gebunden:
Will ich einen Prometheus exporter, nehmen ich golang
Will ich ein Ansible Modul schreiben, nehme ich python
Will ich ein Kernel Modul schreiben, nehme ich C

Wer sich heutzutage auf eine Sprache versteift hat, je nach job, ohnehin verloren. Und so gut wie jede Sprache hat seine Daseinsberechtigung. Wie sagt man so oft: Use the right tool for the job. Und so ist es halt auch beim coding.
 
  • Gefällt mir
Reaktionen: andy_m4, Revan1710 und Skysnake
Jup und so kam ich zu obiger Liste

Angefangen mit Java ist eine Insel um programmieren zu lernen.
Dann Privat und der Schule mit C angefangen
Dann Python in der Uni für die Algorithmen Vorlesung gelernt.
Für ne andere Vorlesung wieder Java rausgekramt
Parallel die ganze Zeit C/C++ privat gelernt und mich mit OpenCL angefangen zu beschäftigen.
Dann ein Praktikum in ner Arbeitsgruppe analysiert wie sich deren Problem auf OpenCL Mappen lassen würde (Bildverarbeitung/Analyse von Mikroskopbildern)
Dann C/C++, MPI und OpenMP für ne parallele Programmieren Vorlesung gemacht.
Cuda für GPU Computing Vorlesung vertieft. Da war der Schein easy going weil ich schon vorher mehr konnte.
Tja und dann Hardware designt mit Verilog-ams.
Nach dem Studium dann knapp 3 Jahre Bash, C/C++, CUDA, FORTRAN, OpenMP, MPI und Python nutzen müssen um große Prosuktionscodes zu optimieren. Da waren dann auch die 10Mio Zeilen C++ Monster dabei, denen CUDA auch noch hinzugefügt werden sollte...

Tja und dann jetzt seit einigen Jahren viel Management Software die quasi ausschließlich in Bash und Python realisiert ist, Teile aber auch in Perl und C/C++.

Vieles ist da einfach von außen getriggert und man hat gar keine Wahl, aber wenn ich die Wahl habe dann nutze ich auch die Bandbreite von dem was ich kenne voll aus soweit möglich. Man muss ja auch ans Team denken.

Ich finde es am Ende wie schon gesagt wurde wichtig, das man einen ganzen Werkzeugkasten hat mit dem man arbeiten kann. Das hilft auch ungemein die jeweiligen Schwächen und Stärken des Werkzeuges zu verstehen.
Ergänzung ()

Deswegen neues Sprache?

Ja her damit, dann muss ich mir die halt auch anschauen. Wenn man so viele Sprachen schon gelernt hat geht das meist recht fix sich auch in fremden Code zurecht zu finden.

Zum lernen finde ich Python aber gut. Gerade die Algorithmen Vorlesung hatte mir gezeigt das man sich so auf das wesentliche konzentrieren kann was den Blick auf viele Dinge schärft. Ich sag nur Komplexitätsanalyse
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: foo_1337
Python findet fast ausschließlich Einsatz auf (Linux) Servern und wird auch für Mathe Programme / Visualisierungne verwendet, da gibt es mächtige Libraries. Da kannst in 5 Minuten spektakuläres Zeug plotten, oder Daten massenweise konvertieren, Logs parsen usw. Es ist eine kompatke Skriptsprache die du einfach mal im Terminal / Shell benutzen kannst um irgendwas zu verarbeiten. Für Python wird auch nichts kompiliert, da führst die Datei direkt aus.

Mit Java oder C++ würde ich das nicht vergleichen, wenn dann JavaScript. Mit Java werden Anwendungen und auch Webapplikationen / Cloud Services umgesetzt oder Oberflächen für Geräte usw., mit C++ eher richtige Programme.

Java Programme müssen nicht auf Betriebssysteme portiert werden, die laufen überall. C++ ist da schon gebundener, dafür ist C++ auch performanter. Z.b. Minecraft war erst in Java, dann hat man diverse Dinge in C++ ausgelagert und es läuft nun Hybrid. Man kann auch mischen, indem das eine das andere aufruft und das Ergebnis nutzt.
 
Zuletzt bearbeitet:
Es nützt nichts, wenn man einen Schraubenzieher nimmt, um eine Mutter zu lösen :)
Nutzer Python sehr gerne um z. B. eine Kommunikation zwischen OPC UA und MSSQL zu machen. Keine zeitkritische Anwendung. Egal wenn langsam. Läuft auf einem OpenWRT Router.
Alles andere wird je nach Plattform in der besten Sprache geschrieben
 
RobZ- schrieb:
Es ist eine kompatke Skriptsprache
Kompakt ist Ansichtssache. Ich finde Python alles andere als kompakt. Kompakt ist eher bourne shell.

RobZ- schrieb:
Mit Java oder C++ würde ich das nicht vergleichen, wenn dann JavaScript. Mit Java werden Anwendungen und auch Webapplikationen / Cloud Services umgesetzt oder Oberflächen für Geräte usw., mit C++ eher richtige Programme.
Ich will deine Illusion ja nicht zerstören, aber es gibt mehr als genug große Webapplikationen, die mit Python (z.B. Instagram oder Youtube) oder Javascript (z.B. Paypal oder Netflix) umgesetzt sind. Insbesondere Javascript erfreut sich hier immer größerer Beliebtheit. Und auch bei "richtigen" Programmen ist Javascript dank Electron (leider, z.B. bei Teams oder Slack) sehr verbreitet.

RobZ- schrieb:
Java Programme müssen nicht auf Betriebssysteme portiert werden, die laufen überall.
Es gibt mehr Systeme mit Python Interpreter als mit JVM.
RobZ- schrieb:
dafür ist C++ auch performanter.
Das ist pauschal gesehen definitiv falsch.
RobZ- schrieb:
Z.b. Minecraft war erst in Java, dann hat man diverse Dinge in C++ ausgelagert und es läuft nun Hybrid.
Die (beliebtere) Java Edition beinhaltet nach wie vor keinen C++ Code. Die Bedrock Edition hingegen keinen Java Code. Letzteres war u.A. notwendig um es auf Systemen ohne JVM lauffähig zu haben.
Ergänzung ()

RobZ- schrieb:
Python findet fast ausschließlich Einsatz auf (Linux) Servern
Python wird auch massiv im Un*x Bereich auf Client Seite verwendet. Zudem wird es auch gerne auf (Enterprise) Routern und Switches (z.B. Arista) eingesetzt.
Und DEN Usecase schlechthin, ML, hast du schlicht unterschlagen ;) Dazu wird auch gerne zum Rapid Prototyping genutzt. Tesla z.B. hatte sein neuronales Netz zuerst in Python entwickelt und produktiv dann in C/C++ umgeschrieben, damit es performanter ist.
 
Zuletzt bearbeitet von einem Moderator:
  • Gefällt mir
Reaktionen: andy_m4 und Andi_bz
Zurück
Oben