Forum: PC-Programmierung Python für wissenschaftliche Projekte?


von Dirk (Gast)


Lesenswert?

Hallo, auf mehreren Seiten wird Phyton empfohlen für wissenschaftliche 
Projekte wie z.B. Machine Learning, aber wenn ich mir die Benchmarks 
zwischen Phyton und C++ anschaue, dann würde ich doch eher zu C++ 
tendieren.

Weiss jemand den Grund für Python für wissenschaftliche Projekte?

https://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=python3&lang2=gpp

: Bearbeitet durch Admin
von Toni Tester (Gast)


Lesenswert?

Dirk schrieb:
> auf mehreren Seiten wird Phyton empfohlen für wissenschaftliche
> Projekte wie z.B. Machine Learning

Wer sind diese "mehreren Seiten"?
Welche Gründe/Motive haben diese, überhaupt eine spezielle Sprache zu 
empfehlen - mit anderen Worten, worin besteht für diese "Seiten" der 
Profit durch eine solche Empfehlung?
Was sind diese "wissenschaftlichen Projekte"; wie sind diese definiert?

Dirk schrieb:
> aber wenn ich mir die Benchmarks
> zwischen Phyton und C++ anschaue, dann würde ich doch eher zu C++
> tendieren.

Überraschung (naja, eher nicht - zumindest für jeden, der sich halbwegs 
mit "Programmiersprachen" auskennt): Eine interpretierte Skriptsprache 
läuft deutlich langsamer als nativ compilierter Maschinencode aus (hier 
beispielhaft) C++.

=> Was genau soll erreicht werden - geht es um ein "wissenschaftliches 
Projekt" im Sinne von Uni, Abschlussarbeit usw. (d. h. Augenmerk auf 
Funktionsnachweis eines Algorithmusses, Lesbarkeit des Codes etc.), oder 
um eine Serienentwicklung (d. h. Fokus auf möglichst hoher 
Ressourceneffizienz)?

von Jim M. (turboj)


Lesenswert?

Dirk schrieb:
> Weiss jemand den Grund für Python für wissenschaftliche Projekte?

Ease of use.

Außerdem wird dort alles was nicht Spielzeuggröße hat dann eh' mit 
dicken Tools wie Tensorflow auf der GPU berechnet. Und für das reine 
Datenhandling zur Graka ist Python schnell genug.

von Kolja L. (kolja82)


Lesenswert?

Leichter Einstieg
Läuft auf jedem Rechner
Große Community

von Vancouver (Gast)


Lesenswert?

Bei wissenschaftlichen Arbeiten geht es im Allgemeinen nicht um 
Performance, sondern um die Entwicklung von Algorithmen und Verfahren 
oder Umsetzung von mathematischen Verfahren. Das geht in Python (Matlab, 
Scilab,...) deutlich einfacher als in C++.
Wenn das Verfahren dann funktioniert, wird es manchmal in C/C++ 
umgesetzt, aber die wissenschaftliche Arbeit ist dann meistens schon 
beendet.

von imonbln (Gast)


Lesenswert?

Dirk schrieb:
> Phyton und C++ anschaue, dann würde ich doch eher zu C++
> tendieren.

Dafür bekommst du bei Python, lesbaren Code, die möglichkeit "schnell 
mal was zu änderen" und wirklich viele Biblotheken. Geschwindigkeit ist 
nicht alles und bei vielen Aufgaben, reicht das was Python mitbringt, 
vollig aus.

Ein Bespiel wäre Schrifterkennung mit KI, die wird mit der Grafikkarte 
brechnet, aber warum hierfür ein C++ Programm Coden wenn es reicht 2 
Handvoll Pythoncode zu schreiben, die Berchnung findet so wie so wo 
anders statt.

Oder das Entwicklen eines Exploit, auch hier macht es mehr Sinn schnell 
was am Code ändern zu können als jedesmal den Edit/Compile/Test Zyklus 
anstoßen zu müssen. In Beiden fällen kann man "später" immernoch, das 
mit Python erlangte Wissen in C/C++ transformieren.

von Dr. X (Gast)


Lesenswert?

Ist eben ein bischen so wie Arduino bei Mikrocontrollern ("welche 
Bibliotheken muss ich zusammenstöpseln?").

von Markus (Gast)


Lesenswert?

Frag mal Andreas: Neue Algorithmen für Video- und Audiocodes werden zwar 
in C/C++ implementiert, aber größtenteils von ET-Ingenieuren ;-) 
Entsprechend sieht der Code aus. Erst im nachhinein wird dieser von 
Informatikern auf Effizienz optimiert.
So ähnlich wird es sich mit Python verhalten.

von Schreiber (Gast)


Lesenswert?

Dirk schrieb:
> Weiss jemand den Grund für Python für wissenschaftliche Projekte?

1. relativ einfach zu lernen, gut lesbarer Code

2. andere haben es auch schon so gemacht => viele Biblitheken und 
Tutorials

3. Geschwindigkeit ist meist "egal"

Früher hat man halt "alles" in Fortran (Großrechner) oder Basic 
(Taschenrechner und Computer) programmiert.

von Arno (Gast)


Lesenswert?

Typischerweise ist Python-Code (übrigens: Python, nicht, Phyton) vor 
allem von Programmier-Anfängern deutlich besser zu warten und auch drei 
Jahre später vom Nachfolger noch zu verstehen als C-Code. C++ dürfte 
irgendwo dazwischen, aber (vor allem bei Programmier-Anfängern) näher an 
C liegen.

Und Python nimmt dem Physiker, der Biologin, dem Bauingenieur, der 
Chemieingenieurin und auch dem theoretischen Informatiker eine ganze 
Menge Dinge ab, die diese vor Beginn der Arbeit meistens nicht können. 
Zum Beispiel Speicherverwaltung, Exception handling, Matrizenrechnung...

Das führt idealerweise dazu, dass die Arbeit sich mehr um das zu lösende 
Problem als um das Werkzeug dreht. Und damit eine bessere Lösung für das 
Problem liefert.

MfG, Arno

von Yalu X. (yalu) (Moderator)


Lesenswert?

Python wird oft als einfach zu benutzendes High-Level-Frontend für
verschiedene Bibliotheken genutzt¹, in denen die eigentliche
Rechenarbeit getan wird. TensorFLow wurde schon genannt, weitere sind
bspw. Numpy und OpenCV. Auf diese Weise können mit sehr geringem
Entwicklungsaufwand Anwendungen realisiert werden, die in ihrer
Ausführungsgeschwindigkeit reinen C++Implementationen kaum nachstehen.

An Grenzen stößt man immer dann, wenn eine benötigte rechenintensive
Basisfunktion nicht in den verwendeten Bibliotheken enthalten ist. In
diesem Fall kann man die benötigte Funktion in C++ schreiben, sie in
Python einbinden und dann wieder mit Python weitermachen.

—————————————
¹) Auch Matlab ist auf diese Weise entstanden, nämlich als Frontend für
   die Bibliotheken LINPACK und EISPACK

: Bearbeitet durch Moderator
von Dirk (Gast)


Lesenswert?

Danke, Teile die hier benannt wurden hatte ich vermutet, aber war mir 
unsicher.

von Hans (Gast)


Lesenswert?

Dirk schrieb:
> Weiss jemand den Grund für Python für wissenschaftliche Projekte?

weil es gerade "cool" ist!

Ich mache für meine Diss alles in C++.

Grund: Ich kann so gut C++, dass ich damit gleich schnell bin wie jemand 
anderes in Python.

Vor Pyhton war Matlab das Mittel der Wahl...

Ich bastle beruflich öfter kleine "Numeric-Tools".. also so 2d Finite 
Differenzen Solver udgl. ... neuerdings in Javascript im Browser :)

Ich postuliere daher, dass bald komplett Browser basierte Lösungen hipp 
sein werden.

Es ist richtig faszinierend zu sehen wie schnell Javascript in einem 
modernen Browser läuft (dank JIT eigentlich kein wunder)... mit etwas 
d3.js gewürzt sind da 10MB Rohdaten in 0,nix verarbeitet und 
visualisiert.

73

von Sven B. (scummos)


Lesenswert?

Hans schrieb:
> Dirk schrieb:
>> Weiss jemand den Grund für Python für wissenschaftliche Projekte?
>
> weil es gerade "cool" ist!
>
> Ich mache für meine Diss alles in C++.
>
> Grund: Ich kann so gut C++, dass ich damit gleich schnell bin wie jemand
> anderes in Python.

Sorry, aber das ist Unfug. Das Problem ist hier auch gar nicht die 
Sprache, sondern dass die Bibliotheken im Vergleich zu C++ sehr 
einheitlich, sehr gut verfügbar, sehr gut dokumentiert und sehr 
umfangreich sind. Wenn du in C++ ein CSV lesen und die Daten 
spaltenweise fouriertransformieren willst, wie lange bist du 
beschäftigt? Ich wette mit dir, du schaffst das nicht unter 10-15 
Minuten, selbst wenn du sehr viel Übung im Umgang mit den geeigneten 
Tools hast. Den Anfänger kann das auch leicht mal 2-3 Tage kosten. In 
Python kannst du das live in die Shell tippen und bist in < 30 Sekunden 
fertig. Wenn du es dann auch noch in ein PDF plotten willst, wird das 
alles noch viel extremer. Bonus: langsamer ist die Python-Lösung in dem 
Fall auch nicht wirklich.

Im Ernst: wieviele verschiedene Bibliotheken muss ich mir 
zusammensammeln, damit ich in C++ zumindest
 * Plots
 * FFT
 * File I/O in sinnvollen Formaten (ok, das kann man notfalls selber 
bauen)
 * Fit-Routinen (LM, ...)
 * Matrixoperationen
habe? Ich denke, mindestens so 4 ...

Ich glaube nicht, dass Python als Sprache wahnsinnig viel damit zu tun 
hat; das Ökosystem ist halt einfach in einem sehr guten Zustand für 
diesen Anwendungszweck, und das genügt für die "kritische Masse".

: Bearbeitet durch User
von ZF (Gast)


Lesenswert?

Python ist vor allem bei den Wissenschaftlern beliebt, für die 
Programmierung nur ein Werkzeug ist, um ihre Fragestellungen zu lösen. 
Bibliotheken wie Scipy und Numpy liefern wichtige Funktionen für 
Berechnungen, andere Bibliotheken wie Matplotlib und Bokeh helfen die 
Ergebnisse ansehnlich zu präsentieren. Alles ist frei ohne 
Lizenzgedödelse.

von mh (Gast)


Lesenswert?

Sven B. schrieb:
> PDF plotten

Das K.O. Argument gegen C++ in der Wissenschaft (zumindest für mich und 
alle die ich in der Wissenschaft kenne). Es gibt keine brauchbare 
Bibliothek für die Darstellung wissenschaftlicher Daten. Für Dinge, die 
man in Python 5 Minuten mit matplotlib benötigt braucht man in C++ (oder 
C macht in diesem Fall keinen Unterschied, da es eh fast nur C 
Bibliotheken gibt) mindestens mehrere Stunden.

von Sven B. (scummos)


Lesenswert?

Ich finde es kommt halt auch drauf an. Anwendung zum langfristigen 
Betrieb eines wissenschaftlichen Geräts, dafür kann C++ gut sein. 
Labor-Messdaten auswerten -- bestimmt nicht.

von Sheeva P. (sheevaplug)


Lesenswert?

Dirk schrieb:
> Hallo, auf mehreren Seiten wird Phyton empfohlen für wissenschaftliche
> Projekte wie z.B. Machine Learning, aber wenn ich mir die Benchmarks
> zwischen Phyton und C++ anschaue, dann würde ich doch eher zu C++
> tendieren.
>
> Weiss jemand den Grund für Python für wissenschaftliche Projekte?
>
> https://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=python3&lang2=gpp

Es heißt Python. Wie die Schlange.

Wer Benchmarks liest, sollte sicherstellen, sie auch zu verstehen.

Aber kommen wir zu den Punkten, weshalb Python in der wissenschaftlichen 
Community so beliebt ist: Zunächst ist es einfach zu erlernen und 
nutzen, überaus stabil, und für eine Skriptsprache auch sehr performant.

Python wird häufig als Glue-Language verwendet; etliche Bibliotheken und 
Pakete in Wirklichkeit kompilierter Maschinencode und deswegen genauso 
schnell wie kompilierter Code nun einmal ist. Mit Nuitka und ähnlichen 
Werkzeugen kann aus Python-Code im Bedarfsfall C- oder C++-Code erzeugt 
und dieser dann nativ übersetzt werden. Es gibt zudem eine Reihe von 
JIT-Compilern sowie einen JIT-Compiler namens Numba für 
array-orientierten, rechenintensiven Code. Und wer seinen C- oder 
C++-Code in Python nutzen möchte, hat es mit Cython und Boost::Python 
sehr leicht.

Frameworks aus dem Distributed Computing wie Apache Spark, Apache Storm, 
Gearpump, Heron und Tensorflow haben Schnittstellen, um Python-Code auf 
verteilten Clustern zu benutzen. Dadurch können Datensätze verarbeitet 
werden, für die einzelne Maschinen nicht mehr ausreichen.

Python hat eine unglaublich große und vielfältige Infrastruktur, es gibt 
etliche fertige Bibliotheken aus dem numerischen Computing wie numpy, 
wissenschaftliche Werkzeuge wie Pandas, scipy und die daran gekoppelten 
SciKit-Module, und sehr leistungsfähige Werkzeuge zur Visualisierung wie 
Bokeh, Holoviews, Datashader und die gute alte Matplotlib.

Und dann bietet Python obendrein noch Schnittstellen zu Software, die in 
der wissenschaftlichen Community ebenfalls manchmal benutzt wird, wie 
zum Beispiel die Desktop Environments KDE und GNOME oder die 
Office-Suiten OpenOffice und LibreOffice, alle verbreiteten Datenbanken 
und Volltext-Suchcluster wie Elasticsearch und Apache Solr.

Und das Beste: die Python-Distribution Anaconda bringt das alles (bis 
auf die DC-Frameworks, Datenbanken etc.) fertig mit -- und noch viel 
mehr, das ich hier vergessen habe.

von Sheeva P. (sheevaplug)


Lesenswert?

Hans schrieb:
> Dirk schrieb:
>> Weiss jemand den Grund für Python für wissenschaftliche Projekte?
>
> weil es gerade "cool" ist!

Und das ist es geworden, weil? Genau: weil es so gut ist.

> Ich mache für meine Diss alles in C++.
>
> Grund: Ich kann so gut C++, dass ich damit gleich schnell bin wie jemand
> anderes in Python.

Das ist bestenfalls naiv.

> Ich postuliere daher, dass bald komplett Browser basierte Lösungen hipp
> sein werden.

Lustig: mit iPython und Jupyter gibt es interaktive, browserbasierte 
Visualisierungs- und Entwicklungswerkzeuge.

von A. S. (Gast)


Lesenswert?

Dirk schrieb:
> auf mehreren Seiten wird Phyton empfohlen für wissenschaftliche
> Projekte wie z.B. Machine Learning, aber wenn ich mir die Benchmarks
> zwischen Phyton und C++ anschaue, dann würde ich doch eher zu C++
> tendieren.

Wissenschaftliche Arbeit heisst doch nicht, einen schnellen Algorithmus 
zu entwickeln, sondern einen Algorithmus schnell (weiter) zu entwickeln. 
Optimieren (in C/C++, Assembler, VHDL, ...) können Ingenieure, 
Programmierer, spätere Generationen.

Fürs Forschen ist vor allem eine maximale Ausdruckskraft wichtig, und 
die ist z.B. mit umfangreichen Bibliotheken gegeben, die intuitiv und 
nicht kryptisch genutzt werden können.

von A.. P. (arnonym)


Lesenswert?

Kolja L. schrieb:
> Läuft auf jedem Rechner

Nicht auf meinem Casio fx-991 :/

von C++Daddy (Gast)


Lesenswert?

Mit QT hat man in C++ alle Möglichkeiten um wissenschaftliche Daten zu 
visualisieren. Das Geschwindigkeit keine Rolle spielt halte ich für ein 
Gerücht. Die Argumentation das KI sowieso auf GPUs läuft ist auch ein 
verbreiteter Irrtum, viele Algos sind über GPUs gar nicht skalierbar und 
laufen auf CPUs schneller.

Natürlich ist Python bei einfacheren Dingen der Weg des geringeren 
Widerstandes, kann aber je nach Anwendungsfall viel zu langsam sein.
Für meine Diss. nutze ich C++ mit QT, alles andere wäre für meine 
Anwendung viel zu langsam.

Es kommt meiner Meinung nach daher zu 100% auf den genauen 
Anwendungsfall an welche Sprache man wählt.

von Schreiber (Gast)


Lesenswert?

C++Daddy schrieb:
> Das Geschwindigkeit keine Rolle spielt halte ich für ein
> Gerücht.

In vielen Fällen ist die Geschwindigkeit, in Grenzen, weitestgehend 
egal. Es geht erstmal darum die Funktionsfähigkeit zu demonstrieren und 
den Algoritmus praktisch einsetzbar zu machen. Ob man jetzt 100€ mehr 
oder weniger für Rechenzeit ausgeben muss, ist erstmal egal.

Wenn er sich bewährt hat, wird sich irgendwann jemand daransetzen und 
ihn sauber und performanceorientiert implementieren. Sofern überhaupt 
Bedarf nach einer schnelleren Implementierung besteht.

von Vincent H. (vinci)


Lesenswert?

C++Daddy schrieb:
> Mit QT hat man in C++ alle Möglichkeiten um wissenschaftliche Daten zu
> visualisieren. Das Geschwindigkeit keine Rolle spielt halte ich für ein
> Gerücht. Die Argumentation das KI sowieso auf GPUs läuft ist auch ein
> verbreiteter Irrtum, viele Algos sind über GPUs gar nicht skalierbar und
> laufen auf CPUs schneller.
>
> Natürlich ist Python bei einfacheren Dingen der Weg des geringeren
> Widerstandes, kann aber je nach Anwendungsfall viel zu langsam sein.
> Für meine Diss. nutze ich C++ mit QT, alles andere wäre für meine
> Anwendung viel zu langsam.
>
> Es kommt meiner Meinung nach daher zu 100% auf den genauen
> Anwendungsfall an welche Sprache man wählt.


Und wie oft läuft der Code einer Dissertation im Normalfall nachdem der 
Verfasser die Uni verlässt? Nie wieder...

von mh (Gast)


Lesenswert?

C++Daddy schrieb:
> Mit QT hat man in C++ alle Möglichkeiten um wissenschaftliche Daten zu
> visualisieren.

Ja! Auch mit MS Paint ist das möglich. Aber wie lange braucht man dafür, 
wenn man alles von hand selbst malen muss (bei QT fast alles)?

von Sven B. (scummos)


Lesenswert?

C++Daddy schrieb:
> Mit QT hat man in C++ alle Möglichkeiten um wissenschaftliche Daten zu
> visualisieren.

Du hast auch mit C und Xlib alle Möglichkeiten, Daten zu visualisieren. 
Die Frage ist ja wieviel Aufwand das ist. Es gibt für Qt meines Wissens 
keine Bibliothek, die in vergleichbarer Flexibilität und Qualität 
Diagramme erstellt wie matplotlib, nicht mal näherungsweise. QtCharts 
ist jedenfalls ein totaler Witz, was das angeht. Das schafft es nicht 
mal selbst, sinnvolle Ticks an die Achsen zu schreiben.

P.S.: Das Framework heißt "Qt".

von Hans (Gast)


Lesenswert?

Sven B. schrieb:
> Im Ernst: wieviele verschiedene Bibliotheken muss ich mir
> zusammensammeln, damit ich in C++ zumindest
>  * Plots
>  * FFT
>  * File I/O in sinnvollen Formaten (ok, das kann man notfalls selber
> bauen)
>  * Fit-Routinen (LM, ...)
>  * Matrixoperationen
> habe? Ich denke, mindestens so 4 ...

und sind's in Python weniger??? Nein!

Plots, File-IO usw würde ich sagen Qt... die bringt auch gleich eine 
nette IDE + compiler mit... seit einiger Zeit gibts QtCharts gratis... 
auch sehr brauchbar.

Für den Rest könnte man die Math-Library von Intel nehmen...
https://software.intel.com/en-us/mkl-developer-reference-c

Also 2 libs to rule them all :)

Da hat man dann auch gleich NL Optimizer, Neurale Netze,... dabei.

Grafiken für wissenschaftliche Publikationen lässt man IMHO am besten 
latex zeichnen...pgfplots sei dank :)


C++Daddy schrieb:
> Natürlich ist Python bei einfacheren Dingen der Weg des geringeren
> Widerstandes, kann aber je nach Anwendungsfall viel zu langsam sein.
> Für meine Diss. nutze ich C++ mit QT, alles andere wäre für meine
> Anwendung viel zu langsam.

full ACK!

Schreiber schrieb:
> Es geht erstmal darum die Funktionsfähigkeit zu demonstrieren und
> den Algoritmus praktisch einsetzbar zu machen. Ob man jetzt 100€ mehr
> oder weniger für Rechenzeit ausgeben muss, ist erstmal egal.

Naja, wenn du benchmarken willst, dann musst du im normalfall gegen eine 
optimierte Referenz bestehen... und die ist entweder Fortran oder C(++).

Für jedes Problem gibt's das richtige Werkzeug... maxima, gnuplot, 
scilab und c++ sind meine bevorzugten.

Dann wäre da noch http://toem.de/index.php/projects/impulse für VCD 
daten und https://labplot.kde.org/ für's "schnelle analysieren" von 
anderem zeugs

Python sehe ich als Leatherman an... versucht alles zu können und ist 
überall schlechter wie das wirklich passende Werkzeug.

Möglicherweise brauche ich ein paar Minuten länger in C++ weil ich ein 
paar Variablen deklarieren ein paar Klammern mehr braucht.

Zur Problemlösung in openCV, fftw,... sind alle schritte ident... sind 
ja auch im hintergrund die selben Libraries!

Für nicht triviale Probleme ist das Debuggen und verifizieren der wahre 
Zeitfresser... nicht das Kodieren!


73

von Hans (Gast)


Lesenswert?

Ich vergaß noch was zum Thema Grafiken plotten...

Qwt und VTK sollten alle Bedürftnisse erfüllen um in einem Programm 
etwas anzuzeigen.

73

von Schreiber (Gast)


Lesenswert?

Hans schrieb:
> Schreiber schrieb:
>> Es geht erstmal darum die Funktionsfähigkeit zu demonstrieren und
>> den Algoritmus praktisch einsetzbar zu machen. Ob man jetzt 100€ mehr
>> oder weniger für Rechenzeit ausgeben muss, ist erstmal egal.
>
> Naja, wenn du benchmarken willst, dann musst du im normalfall gegen eine
> optimierte Referenz bestehen... und die ist entweder Fortran oder C(++).

Benchmarken muss man erst, NACHDEM man praktisch demonstriert hat, dass
1. der Algoritmus zumindest in der Theorie funktioniert
2. dieser lauffähig implementiert wurde
3. die Implementierung plausible Ergebnisse liefert
4. das ganze dokumentiert und nutzbar ist
5. es einen Algoritmus gibt, mit dem man die Performance vergleichen 
kann

Optimiert wird oft erst dann, wenn das auch ökonomisch sinnvoll ist. 
Also wenn die Arbeitszeit durch geringere Kosten für Rechenzeit 
aufgewogen wird. Wenn das Programm zu langsam läuft, kann man sich 
einfach einen schnelleren Computer hinstellen oder bei Amazon AWS mehr 
Rechenleistung mieten.

von Schreiber (Gast)


Lesenswert?

Hans schrieb:
> Python sehe ich als Leatherman an... versucht alles zu können und ist
> überall schlechter wie das wirklich passende Werkzeug.

...und ist ein halbwegs brauchbarer ersatz für eine kleine 
Werkzeugkiste. Man muss erst was besseres griffbereit zur Hand haben, 
bevor man anfängt zu meckern oder vergleichen.
Es geht in beiden Fällen nicht um die beste, sondern um die beste 
verfügbare Lösung. Wenn der betreffende Wissenschaftler nicht viel 
Erfahrung mit C++ hat, dafür aber mit Python in erträglicher Zeit "was 
lauffähiges" hinbekommt, dann nimmt er halt das.

Matlab ist auch extrem beliebt, obwohl es teilweise unvorstellbar 
langsam ist. Aber es ist halt benutzerfreundlich, relativ einfach zu 
benutzen und verfügbar.

von Sven B. (scummos)


Lesenswert?

Hans schrieb:
> und sind's in Python weniger??? Nein!
Doch. numpy und matplotlib sind totale Standard-Libs, die immer überall 
leicht verfügbar sind. Bis du hingegen allein deinem Build-System 
beigebracht hast, fftw so zu linken dass es danach geht, bist du in 
Python für einen großen Teil der Aufgaben schon fertig.

> Plots, File-IO usw würde ich sagen Qt... die bringt auch gleich eine
> nette IDE + compiler mit... seit einiger Zeit gibts QtCharts gratis...
> auch sehr brauchbar.
Sorry, ne, ist es nicht. QtCharts ist nett, wenn du irgendwie eine bunte 
Linie flackern lassen willst in deiner Hipster-App, aber um -- wie in 
Matplotlib -- publikationswürdige Grafiken mit annehmbarem Aufwand zu 
erstellen ist es völlig ungeeignet. Allein der Line-Graph hat null 
Features, und die Wahl für z.B. Ticks und Labels die es automatisch 
macht ist völlig unansehlich (keine runden Zahlen auf den Ticks, etc). 
Qwt ist wohl ganz gut, aber kompliziert und auch eher für 
Echtzeit-Darstellung gedacht als zum Produzieren von vorzeigbaren PDFs.

Ich denke ich kann das ganz gut beurteilen, weil ich beides viel mache. 
Ich schreibe oft Prototypen für Datenauswertung in Python, und muss das 
dann später in C++ nachbauen, weil es als Teil einer C++-Anwendung 
benötigt wird. Die C++-Variante zu schreiben kostet immer mindestens 
zehnmal so viel Zeit, und besonders die Visualisierung ist immer sehr 
schmerzhaft, und ich habe in meinem Leben schon erheblich mehr mit 
C++/Qt gearbeitet als mit Python.

> Also 2 libs to rule them all :)
Auf dem Papier, ja. Hast du das in der Praxis schonmal so angewendet? 
Auf die Featureliste auf der Webseite verweisen und die praktischen 
Hürden überwinden sind zwei sehr verschiedene Dinge.

> C++Daddy schrieb:
>> Natürlich ist Python bei einfacheren Dingen der Weg des geringeren
>> Widerstandes, kann aber je nach Anwendungsfall viel zu langsam sein.
>> Für meine Diss. nutze ich C++ mit QT, alles andere wäre für meine
>> Anwendung viel zu langsam.
>
> full ACK!
Aha, und das ohne dass du irgendeine Idee hast, was die Anwendung 
überhaupt ist?

> Zur Problemlösung in openCV, fftw,... sind alle schritte ident... sind
> ja auch im hintergrund die selben Libraries!
Ok, ich schreibe mal den Python-Code auf, um ein CSV zu lesen und das 
Spektrum in ein PDF zu plotten, und du darfst mal den C++-Code (mit 
Build-System und allem) aufmalen um dasselbe zu tun:
1
import numpy as np
2
import matplotlib.pyplot as plt
3
s = np.abs(np.fft.rfft(np.loadtxt("test.csv").T))
4
plt.plot(np.fft.rfftfreq(s.shape[0]), s)
5
plt.savefig("test.pdf")

Das sind in C++ mindestens 40-60 Zeilen plus eine Viertelstunde 
rumgefrickel bis alle Header da sind wo der Compiler sie sucht und alle 
Libs gelinkt werden. Besonders unter Windows. Das liegt wie gesagt 
weniger an der Sprache, und mehr am Zustand des Ökosystems für diese 
Anwendung.

> Für nicht triviale Probleme ist das Debuggen und verifizieren der wahre
> Zeitfresser... nicht das Kodieren!
Debuggen ist aber bei diesem Task hauptsächlich "jetzt bräuchte ich mal 
schnell das gegen das geplottet".

von Oliver S. (oliverso)


Lesenswert?

Sven B. schrieb:
> Es gibt für Qt meines Wissens
> keine Bibliothek, die in vergleichbarer Flexibilität vund Qualität
> Diagramme erstellt wie matplotlib, nicht mal näherungsweise.

Aber sicher, du musst nur PyQt verwenden ;)

Oliver

von Hans (Gast)


Lesenswert?

Schreiber schrieb:
> NACHDEM man praktisch demonstriert hat

naja und auch hier bringt dir python keine vorteile... richtig zeit 
rinnt ins debuggen und verifizieren, nicht ins kodieren!

und wenn ich zuerst in python zeige, dass es geht und danach alles in 
fortran oder c(++) neu mache um schneller zu werden, dann mache ich doch 
den algorithmus gleich in einer compiler sprache!

Wie gesagt, gestern Matlab - heute Python.

73

von Sven B. (scummos)


Lesenswert?

Oliver S. schrieb:
> Sven B. schrieb:
>> Es gibt für Qt meines Wissens
>> keine Bibliothek, die in vergleichbarer Flexibilität vund Qualität
>> Diagramme erstellt wie matplotlib, nicht mal näherungsweise.
>
> Aber sicher, du musst nur PyQt verwenden ;)

Hä, wovon redest du? PyQt ist eine Python-Schnittstelle für die 
C++-Bibliothek Qt. Das ist völlig orthogonal zum Thema ...

> naja und auch hier bringt dir python keine vorteile... richtig zeit
> rinnt ins debuggen und verifizieren, nicht ins kodieren!

Richtig Zeit geht bei wissenschaftlichen Anwendungen in's nachdenken 
darüber was man eigentlich machen will. Und dafür ist Python besser, 
weil es weniger im Weg steht und viel schneller Feedback bietet (z.B. 
interaktive Notebooks etc).

von mh (Gast)


Lesenswert?

Hans schrieb:
> Ich vergaß noch was zum Thema Grafiken plotten...
>
> Qwt und VTK sollten alle Bedürftnisse erfüllen um in einem Programm
> etwas anzuzeigen.
Bei wissenschaftlichen Projekten geht es nicht darum etwas in einem 
Programm anzuzeigen, sonder in einer peerreviewten Publikation zu 
veröffentlichen.
Und nein, Qwt ist dafür genauso wenig geeignet wie Excel Plots.

Um nochmal auf deinem früheren Beitrag zurückzukommen:
Hans schrieb:
> Es ist richtig faszinierend zu sehen wie schnell Javascript in einem
> modernen Browser läuft (dank JIT eigentlich kein wunder)... mit etwas
> d3.js gewürzt sind da 10MB Rohdaten in 0,nix verarbeitet und
> visualisiert.
Funktioniert das System auch noch, wenn man es mit 10 oder 100GB zu tun 
hat? Funkionieren bedeutet in diesem Fall, dass ich in maximal 20 
Sekunden den fertigen Plot habe. Wenn nicht, ist es nutzlos, weil ich 
dann wieder 2 Systeme brauche.

von Hans (Gast)


Lesenswert?

Sven B. schrieb:
> Das sind in C++ mindestens 40-60 Zeilen plus eine Viertelstunde
> rumgefrickel bis alle Header da sind wo der Compiler sie sucht und alle
> Libs gelinkt werden. Besonders unter Windows. Das liegt wie gesagt
> weniger an der Sprache, und mehr am Zustand des Ökosystems für diese
> Anwendung.

Dann verwendst du schlicht eine ungeeignete Entwicklungsumgebung! (Und 
damit ist nicht nur die IDE gemeint!)

"qt csv files" gegooglet und 1. Hit von Stack-Exchange: 
https://stackoverflow.com/questions/27318631/parsing-through-a-csv-file-in-qt

Zwar nur CSV parsen, aber nicht ineffizient.

Dein beschriebenes Beispiel wäre in Matlab/Scilab ein 2-Zeiler... Ist 
damit Python jetzt automatisch schlechter???

Was habt ihr eigentlich mit eurem "in ein pdf plotten"... Mit dem Latex 
IEEE Template und TikZ/pgfplots braucht einem sowas doch überhaupt nicht 
zu kümmern!

Btw: Ja fftw, mkl, petsc und konsorten habe ich am laufen. Und ums 
Speicher Alignment kümmere ich auch teilweise auch per Hand. Cachelines 
wollen richtig gefüllt werden!

von Oliver S. (oliverso)


Lesenswert?

Sven B. schrieb:
> Hä, wovon redest du? PyQt ist eine Python-Schnittstelle für die
> C++-Bibliothek Qt. Das ist völlig orthogonal zum Thema ...

Ok, für dich noch extra die anscheinend fehlende Info:

[Ironie]...[/Ironie]

Qt ist immerhin so toll, daß sich jemand die Mühe gemacht hat, dafür 
eine Python-Schnistelle zu schreiben.

Oliver

von Hans (Gast)


Lesenswert?

mh schrieb:
> Bei wissenschaftlichen Projekten geht es nicht darum etwas in einem
> Programm anzuzeigen, sonder in einer peerreviewten Publikation zu
> veröffentlichen.
> Und nein, Qwt ist dafür genauso wenig geeignet wie Excel Plots.

Hans schrieb:
> Qwt und VTK sollten alle Bedürftnisse erfüllen um in einem Programm
> etwas anzuzeigen.


Ähm... geht's jetz um Plots zur Laufzeit oder für Publikationen?

Wie gesagt, publizieren tut man mit dem Tex-Template des jeweiligen 
Journals... und pgfplots macht dir dann genau dem template entsprechende 
Grafiken.

Als nächstest kommt noch jemand und zeichnet Flussdiagramme öä. in Visio 
oder so... dafür gibts tikz.

Beides ist dank der riesigen Anzahl an Beispielen ziemlich einfach zu 
nutzen.


73

von Sven B. (scummos)


Lesenswert?

Hans schrieb:
> Sven B. schrieb:
>> Das sind in C++ mindestens 40-60 Zeilen plus eine Viertelstunde
>> rumgefrickel bis alle Header da sind wo der Compiler sie sucht und alle
>> Libs gelinkt werden. Besonders unter Windows. Das liegt wie gesagt
>> weniger an der Sprache, und mehr am Zustand des Ökosystems für diese
>> Anwendung.
>
> Dann verwendst du schlicht eine ungeeignete Entwicklungsumgebung! (Und
> damit ist nicht nur die IDE gemeint!)
>
> "qt csv files" gegooglet und 1. Hit von Stack-Exchange:
> https://stackoverflow.com/questions/27318631/parsing-through-a-csv-file-in-qt
>
> Zwar nur CSV parsen, aber nicht ineffizient.

Ich verstehe wirklich nicht, wovon du redest. Das sind doch schon deine 
60 Zeilen, und du hast nur das "np.loadtxt(test.csv)" ersetzt. Von 
FFT, Plot oder Export ist da noch gar nichts. Und im Satz davor wirfst 
du mir vor, dass ich nur alles falsch mache. Hä??

> Dein beschriebenes Beispiel wäre in Matlab/Scilab ein 2-Zeiler... Ist
> damit Python jetzt automatisch schlechter???

Ob es 2 oder 4 Zeilen sind, ist egal, aber ob es 4 oder 60 sind eher 
nicht so.

> Was habt ihr eigentlich mit eurem "in ein pdf plotten"... Mit dem Latex
> IEEE Template und TikZ/pgfplots braucht einem sowas doch überhaupt nicht
> zu kümmern!

Auch hier kapiere ich überhaupt nicht, wovon du (und andere) reden. Es 
geht doch nicht um eine API, mit der ich eine rote Linie malen kann! Es 
geht darum, dass ich sagen kann "ich will das gegen das geplottet haben 
mit Titel X und Achsenbeschriftung Y und logarithmischen Achsen und Grid 
und jetzt bitte hierhin exportieren" und fertig, und du das nicht selber 
schreiben musst. Die Grafik-API, die aus dieser Logik der 
Plot-Bibliothek dann Linien in ein PDF oder PNG oder auf den Bildschirm 
malt, hast du natürlich überall, aber die Logik der Plot-Bibliothek eben 
nicht.

> Btw: Ja fftw, mkl, petsc und konsorten habe ich am laufen. Und ums
> Speicher Alignment kümmere ich auch teilweise auch per Hand. Cachelines
> wollen richtig gefüllt werden!

Wenn das in C++ nicht aufwändiger ist als mein Beispiel, dann kannst du 
es ja einfach mal hinschreiben. Ich hab's in Python hingeschrieben, hat 
30 Sekunden gekostet. Entweder du kannst es in 30 Sekunden in C++ 
machen, oder du stimmst zu dass es in C++ länger dauert, oder ich 
verstehe überhaupt nicht worüber wir eigentlich diskutieren.

: Bearbeitet durch User
von Dirk (Gast)


Lesenswert?

Warum nutzt man den kein C# mit .Net Core? Es ist doch laut diesen 
Benchmarks schneller und läuft auch auf Linux. Mit den richtigen 
Controls lassen sich auch sehr schöne Graphen erstellen.

http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=csharpcore&lang2=python3

von mh (Gast)


Lesenswert?

Hans schrieb:
> Ähm... geht's jetz um Plots zur Laufzeit oder für Publikationen?
Bei mir gehts um beides, und bei mir sind die zu 90% identisch.

> Wie gesagt, publizieren tut man mit dem Tex-Template des jeweiligen
> Journals... und pgfplots macht dir dann genau dem template entsprechende
> Grafiken.
Also brauche ich 2 verschiedene Systeme. Eins um mir zur Laufzeit meine 
Daten anzuschauen und eins fürs Publizieren.

Wie verhält sich pgfplots, wenn ich 10GB an Daten habe? Was mache ich, 
wenn ich ein 2D Datensatz habe und ihn auf ein Karte mit Umrissen der 
Kontinente darstellen will? Was muss ich machen, wenn ich die Projektion 
ändern will? Was mache ich, wenn ich von einem Kollegen einen Datensatz 
bekomme "zum schnellen Vergleich" und die sind jetzt im netCDF Format 
oder hdf5 statt in einer ".dat"? ...

von C++Daddy (Gast)


Lesenswert?

Da es noch nicht erwähnt wurde, mit QT meine ich natürlich auch unter 
anderem die Nutzung von qcustomplot: http://www.qcustomplot.com/

Hab bisher nur positive Erfahrung damit gemacht und es ist nicht 
wirklich kompliziert, es gibt viele Beispiele, User interactions, etc.

Aber wie gesagt alles Wohlfühlfaktor des jeweiligen Coders, ich denke es 
kommt immer auf den individuellen Usecase an, bei mir sind es eben 
globale Optimierungen extrem aufwendiger Funktionen daher kommt nur C++ 
in Frage weil ich sonst bei einem Durchlauf eine Woche auf das Ergebnis 
warten muss. Daher, sollte Performance eine Rolle spielen, dann kann ich 
nur für C++ die Lanze brechen und sagen mit QT und qcustomplot ist es 
kein großes Ding Daten gut und vor allem sehr hübsch darzustellen. 
Vorausgesetzt man fühlt sich ohnehin in C++ sehr wohl wie ich ;-)

von Der Andere (Gast)


Lesenswert?

Hans, du musst mal ein bischen über deinen Teller-(oder Rechner)rand 
hinausschauen.
Ein Pytonscript kann ich nehmen und auf einem Rechner oder einem 
virtuellen Cloudrechner ausführen, völlig problemlos.

Dein toller C Code muss ich erst mal compilieren, dann muss ich die 
passenden binären 3rd party libs auftreiben usw bis ich das alles 
vieleicht irgendwann zusammengelinkt und ans Laufen kriege.
Mit Sprachen wie Phyton oder Java nehme ich den Sourcetopf und habe den 
Kram in Nullkommanix am Laufen egal auf welcher Plattform.

Und genau das macht den Vorteil aus.

von Horst (Gast)


Lesenswert?

Dirk schrieb:
> Warum nutzt man den kein C# mit .Net Core?

Weil die Leute ernsthaft arbeiten wollen!?

von Hans (Gast)


Lesenswert?

Sorry, ihr seid alle weltfremd!

10Gig Daten in ein PDF plotten ???

Meine FEM Rechnungen ergeben schon Rohdaten in der Größenordnung, aber 
ich plotte doch nicht jeden einzelnen Vector!

Da ist noch einiges an post-processing dazwischen. Dann kommen einige 
100 Datenpunkte raus die dann eine schöne Kurve ergeben.

Und ganz ehlich, wenn ich publiziere, dann sind das normalerweise 
Vergleiche mit anderen Rechnungen.

Also z.B wie genau bin ich im Vergleich zur analytischen Lösung, oder 
wie schnell konvergiere ich im Vergleich zu einem anderen 
preconditioner.

In der Anwendung interessiert mich ganz was anderes... normalerweise das 
transiente Ergebnis!

IMHO habe nicht ich die Scheuklappen auf, sondern 90% der 
mitkommentierenden. Wie oben beschrieben nutze ich viele 
unterschiedliche Tools.

Außerdem gibt's neben Python noch ganz andere Frameworks. wie z.B. R...

Mir ist bewusst, das es für Python sogar Module für algebraisches 
Rechnen gibt. Trotzdem nutze ich für diese Dinge Maxima, da das einfach 
weniger Einschränkungen hat (und weil ich mich damit auskenne).

Bei Scilab/Octave/Matlab gilt ähnliches. Labplot finde ich fürs 
Visualisieren auch unschlagbar.

Python ist kein Allerheilmittel. Auch hier brauchst du binäre libs im 
Hintergrund! fftw, opencv,... das sind alles native-libs mit python 
bindings. hast du die nicht auf deinem super cloud-rechner zur 
Verfügung, dann hilft dir der Python Interpreter auch nicht!

Vergleicht doch einmal die C++ und Python Examples von OpenCV. Der 
Unterschied im Codeumfang ist oft minimal!

Sicher kann ich auch mit einem Hammer eine Schraube ins Holz bringen... 
nur wieso sollte ich das wenn ich einen Akkuschrauber habe.

Mal heißt der Akkuschrauber bash, dann c++ und im nächsten Fall ist's 
das Microwave Studio von CST :)

Es mag sogar sein, dass der Akkuschrauber für manche Personen in manchen 
Aufgabenstellungen python heißt.

Ich für meinen Teil finde jedenfalls die Sprache nicht "schön" und auch 
nicht gut lesbar.

Aber für gewöhnlich gibt's im Baumarkt mehrere Typen Akkuschrauber.. man 
muss einfach nur einen in der Werkzeugkiste haben!

mh schrieb:
> Wie verhält sich pgfplots, wenn ich 10GB an Daten habe? Was mache ich,
> wenn ich ein 2D Datensatz habe und ihn auf ein Karte mit Umrissen der
> Kontinente darstellen will? Was muss ich machen, wenn ich die Projektion
> ändern will? Was mache ich, wenn ich von einem Kollegen einen Datensatz
> bekomme "zum schnellen Vergleich" und die sind jetzt im netCDF Format
> oder hdf5 statt in einer ".dat"? ..

Das ist schon ein nettes Beispiel. Schon mal geschaut was gnuplot und 
labplot so können?

zumindest hast du dir nicht angesehen was pgfplots ist!


C++Daddy schrieb:
> Da es noch nicht erwähnt wurde, mit QT meine ich natürlich auch unter
> anderem die Nutzung von qcustomplot: http://www.qcustomplot.com/
>
> Hab bisher nur positive Erfahrung damit gemacht und es ist nicht
> wirklich kompliziert, es gibt viele Beispiele, User interactions, etc.
>
> Aber wie gesagt alles Wohlfühlfaktor des jeweiligen Coders, ich denke es
> kommt immer auf den individuellen Usecase an, bei mir sind es eben
> globale Optimierungen extrem aufwendiger Funktionen daher kommt nur C++
> in Frage weil ich sonst bei einem Durchlauf eine Woche auf das Ergebnis
> warten muss. Daher, sollte Performance eine Rolle spielen, dann kann ich
> nur für C++ die Lanze brechen und sagen mit QT und qcustomplot ist es
> kein großes Ding Daten gut und vor allem sehr hübsch darzustellen.
> Vorausgesetzt man fühlt sich ohnehin in C++ sehr wohl wie ich ;-)

So sehe ich das auch!

Irgendwie spannend... wenn man Arduino und Python als nicht 
uneingeschränkt wunderbar bezeichnet ist sofort die Hölle los.

Btw: 16 Zeilen C++ Code sind notwendig um ein CSV in ein PDF zu 
verwandeln.
Ich würde das so aber nicht verwenden... QtCharts ist in erster Linie 
dazu da auf der GUI was anzuzeigen.

73

1
    QFile file("foo.csv");
2
    QTextStream stream(&file);
3
4
    QChart *chart = new QChart();
5
    QChartView view(chart);
6
7
    file.open(QIODevice::ReadOnly);
8
9
    while (!stream.atEnd()) {
10
        QStringList parts = stream.readLine().split(QRegExp("\\s+"), QString::SkipEmptyParts);
11
        series->append(parts[0].toDouble(), parts[1].toDouble());
12
    }
13
14
    chart->addSeries(series);
15
    chart->createDefaultAxes();
16
    chart->setTitle("Simple line chart example");
17
    QPdfWriter writer("bar.pdf");
18
    QPainter painter(&writer);
19
    view.render(&painter);
20
    painter.end();

von mh (Gast)


Lesenswert?

Hans schrieb:
> Sorry, ihr seid alle weltfremd!
Vllt. beschäftigen wir uns einfach mit Dinge die sich nicht vergleichen 
lassen.
Ich habe mal hervorgehoben:
Hans schrieb:
> MEINE FEM Rechnungen ergeben schon Rohdaten in der Größenordnung, aber
> ICH plotte doch nicht jeden einzelnen Vector!

> Da ist noch einiges an post-processing dazwischen. Dann kommen einige
> 100 Datenpunkte raus die dann eine schöne Kurve ergeben.
Aus meinen Daten sind häufig Karten zu erstellen. Die Bilder sind am 
Ende natürlich nicht 10GB groß, aber warum sollte ich die Daten selbst 
interpolieren? Das mach matplotlib für mich.

Hans schrieb:
> Das ist schon ein nettes Beispiel. Schon mal geschaut was gnuplot und
> labplot so können?

Mit gnuplot habe ich viele Jahre gearbeitet. Das ist die beste 
Alternative, die du bis jetzt genannt hast. Aber ich möchte nie wieder 
zurück, nachdem ich matplotlib kenne.

labplot? Meinst du das: https://labplot.kde.org/documentation/ ?


Wenn etwas wie matplotlib für C++ existieren würde, ich würde es sofort 
nutzen. Gibt es aber leider nicht.

von Hans (Gast)


Lesenswert?

mh schrieb:
> Hans schrieb:
>> Sorry, ihr seid alle weltfremd!
> Vllt. beschäftigen wir uns einfach mit Dinge die sich nicht vergleichen
> lassen.

das will ich auch hoffen! sonst hätte einer von uns beiden am ende 
problem mit plagiatsvorwürfen :)


mh schrieb:
> labplot? Meinst du das: https://labplot.kde.org/documentation/ ?

Ja, meine ich.

Ok, online-doku gibt's nicht... aber es kommt eine offline-hilfe mit:
https://docs.kde.org/trunk4/en/extragear-edu/labplot2/labplot2.pdf

Youtube wäre auch noch eine Quelle

"leider" KDE only... aber nachdem das mein default-desktop ist, für mich 
kein Problem...

Wie oben erwähnt wäre dann da noch Impulse:
http://toem.de/index.php/projects/impulse

Das ist ein Eclipse Plugin... damit lassen sich äußerst interessante 
dinge anstellen.

Richtig gut zum Debuggen!
Ich schreibe zu jedem Zeitschritt allerhand debug-werte in ein VCD file 
(Value Change Dump). Damit bekomme ich dann zu jedem Simulationsmodell 
hiarchisch alle Statevariablen zur Auswahl und kann beliebig 
gegeneinander plotten.

z.B. State-Änderung in der Statemachine im Hysteresemodell gegenüber 
anzahl der verworfenen Steps... alles easy :)

73

73

von Sven B. (scummos)


Lesenswert?

Hans schrieb:
> Btw: 16 Zeilen C++ Code sind notwendig um ein CSV in ein PDF zu
> verwandeln.
Jetzt fehlt nur noch die FFT, dann haben wir schon fast einen Vergleich. 
Außer, dass hier natürlich das komplette drumrum fehlt, sprich Includes, 
Main-Funktion, Build-System, ...

> Ich würde das so aber nicht verwenden... QtCharts ist in erster Linie
> dazu da auf der GUI was anzuzeigen.

Und, hast du mal ein PDF da was dieser Code für einen Sinus produziert? 
Dann kann ich ja mal eins mit matplotlib generieren, und wir vergleichen 
mal die Qualität der Diagramme ...


>     while (!stream.atEnd()) {
>         QStringList parts = stream.readLine().split(QRegExp("\\s+"),
> QString::SkipEmptyParts);
>         series->append(parts[0].toDouble(), parts[1].toDouble());
>     }

Das ist fürchterlicher Code, weil:
 - crasht wenn eine Zeile leer ist oder nur einen Wert enthält (bestimmt 
80% der CSVs die ich so sehe haben am Ende der letzten Zeile ein \n -> 
Crash)
 - 6 (!) Memory Allocations, um zwei Zahlen zu lesen: QListData, 
QRegExpPrivate, QStringData für das Argument vom RegExp ("\\s+"), 
QStringData für die ganze Zeile, und zwei QStringData für die zwei 
Listen-Elemente -- plus natürlich das eventuelle realloc für die Daten 
von der Series. Nötig sind genau null.
 - regulärer Ausdruck ist hier Overkill, aber wenn schon, dann 
wenigstens QRegularExpression und nicht das veraltete QRegExp und 
außerhalb der Schleife initialisieren
 - besser: QString::section() verwenden oder noch besser, 
QTextStream::operator>>(double) -- wozu hat man sonst den Text Stream :D

Von Fehlerbehandlung fangen wir gar nicht an -- gut, das kann man sich 
in dem Kontext tatsächlich oft sparen, das gebe ich zu. Ist aber 
trotzdem nett, wenn es da ist.

Ich würde quasi wetten, dass die Python-Version hier auch nicht 
signifikant langsamer ist. Die kompilieren wenigstens ihren RegExp 
vorher, wenn man einen kurzen Blick in die Implementierung wirft. So 
kannst du dir das mit C++ aus Performance-Gründen auch sparen ...

: Bearbeitet durch User
von C++Daddy (Gast)


Lesenswert?

Python und C++ sind so unterschiedlich. Entweder man macht 
zeiteffektives Scripting für eine virtuelle Maschine oder man will 
hocheffizienten Maschinencode und keine Grenzen und nimmt dafür 
vielleicht ein wenig mehr Aufwand in Kauf.
Den Aufwand hat man aber meiner Meinung nach sowieso nur 1x denn nach 
einiger Zeit hat jeder sowieso eine Sammlung mit Klassen für alles 
Nötige und benutzt sie ein Leben lang.

Die meisten Sprachen haben ihre Daseinsberechtigung, am Ende hängt es 
davon ab worauf der Fokus liegen soll und das wurde bisher noch nicht 
gesagt.

von Sheeva P. (sheevaplug)


Lesenswert?

C++Daddy schrieb:
> Mit QT hat man in C++ alle Möglichkeiten um wissenschaftliche Daten zu
> visualisieren.

Das geht mit Python natürlich auch: mit PyQt und und PySide gibt es 
sogar gleich zwei Bibliotheken, die Python und Qt verbinden.

> Natürlich ist Python bei einfacheren Dingen der Weg des geringeren
> Widerstandes, kann aber je nach Anwendungsfall viel zu langsam sein.
> Für meine Diss. nutze ich C++ mit QT, alles andere wäre für meine
> Anwendung viel zu langsam.

Ich vermute, Du hast es nicht einmal versucht, denn wenn Du Python 
kennen würdest, dann hättest Du von den Qt-Bindings gewußt. Insofern ist 
Deine Aussage eine reine Behauptung, die nur auf Vermutungen basiert.

von Sven B. (scummos)


Lesenswert?

C++Daddy schrieb:
> Den Aufwand hat man aber meiner Meinung nach sowieso nur 1x denn nach
> einiger Zeit hat jeder sowieso eine Sammlung mit Klassen für alles
> Nötige und benutzt sie ein Leben lang.

Das sehe ich anders. In Scipy kann ich auch mal eben schnell einen 
Wavelet-Filter auf meine Daten anwenden, und schauen ob das für meinen 
Anwendungsfall hilfreich ist. Dauert wenige Minuten. Dann kann ich 
vielleicht feststellen es ist gar nicht so gut, und was anderes machen. 
Ich muss eben nicht 10 Tage investieren, um die blöden Wavelets zu 
implementieren. Und Algorithmen dieser Art gibt es sehr viele, die 
eigentlich in keiner gängigen C++-Bibliothek so richtig verfügbar sind. 
Bestenfalls findet man noch Codeschnipsel auf github, die vielleicht 
funktionieren und vielleicht sogar das richtige Ergebnis berechnen.

Performance-Diskussionen führen ohne konkretes Beispiel eigentlich nie 
zu irgendwas; ordentlicher numpy-Code kann in vielen Fällen relativ 
schnell sein, bzw. einfach "schnell genug". Ich stelle mal in den Raum, 
dass viele der Menschen, die nur mit C++ arbeiten, auch gar nicht wissen 
wie man Python-Code mit numpy so schreibt, dass er nicht langsam ist, 
weil es da ein relativ eigenes Set von Tricks gibt.

von Karl (Gast)


Lesenswert?

Auch wenn ich Python so gar nicht mag, einen großen Vorteil sehe ich für 
Leute, die es einfach nur als Werkzeug nutzen: Es ist universell 
einsetzbar. So wie man damit seine Daten verarbeiten kann, kann man 
damit Makros in LibreOffice schreiben, Geräte steuern oder in Minecraft 
rumprogrammieren...

von Sheeva P. (sheevaplug)


Lesenswert?

C++Daddy schrieb:
> Aber wie gesagt alles Wohlfühlfaktor des jeweiligen Coders, ich denke es
> kommt immer auf den individuellen Usecase an, bei mir sind es eben
> globale Optimierungen extrem aufwendiger Funktionen daher kommt nur C++
> in Frage weil ich sonst bei einem Durchlauf eine Woche auf das Ergebnis
> warten muss. Daher, sollte Performance eine Rolle spielen, dann kann ich
> nur für C++ die Lanze brechen und sagen mit QT und qcustomplot ist es
> kein großes Ding Daten gut und vor allem sehr hübsch darzustellen.
> Vorausgesetzt man fühlt sich ohnehin in C++ sehr wohl wie ich ;-)

Lustigerweise bin ich selbst ein großer Freund von C++, in anderen 
Threads hier wurde mir sogar schon vorgeworfen, ich sei ein "Fänboi". 
;-)

Aber hier liegst Du, gemeinsam mit Hans, leider vollkommen daneben. Wenn 
Ihr ein bisschen Ahnung nicht nur von C++, sondern eben auch von Python 
hättet -- und dadurch also überhaupt erst für den Vergleich zwischen den 
beiden, oder auch nur für Aussagen über Python qualifiziert wärt -- dann 
wüsstet Ihr, daß es gar nicht um eine Frage des "entweder oder", sondern 
stattdessen vielmehr um ein "entweder und" geht.

Du kannst also die "globalen Optimierungen extrem aufwändiger 
Funktionen" problemlos in C++ machen, das dank Boost.Python ganz einfach 
in Python einbinden und das Datenhandling, die Vor- und Nachbearbeitung, 
sowie die Visualisierung trotzdem mit Python und seinen leistungsfähigen 
Libraries machen. Vorteil: der schnelle Code läuft weiterhin nativ auf 
CPU oder GPU und ist daher genau so schnell wie Deine C++-Binaries, aber 
dafür hast Du all die vielen flexiblen, leistungsfähigen Libraries von 
Python für die weniger performancekritischen Dinge zur Verfügung.

Leider fürchte ich allerdings, daß Du und der liebe Hans hier wie die 
Blinden von den Farben redet, weil Ihr beide Python nicht kennt und auch 
nicht für Eure Anwendungsfälle ausprobiert habt. Stattdessen behauptet 
Ihr einfach mal ins Blaue hinein, ausgerechnet für Eure Anwendungsfälle 
sei Python nicht geeignet, und faselt dann auch noch von 
"wissenschaftlichem Arbeiten". Wissenschaftliches Arbeiten funktioniert 
allerdings nicht auf Basis von Behauptungen oder Vermutungen, sondern 
so, daß man zuerst eine Hypothese aufstellt und sie dann verifiziert.

Ihr hingegen spart Euch den Schritt der Verifikation gleich ganz, 
sondern stellt Eure Hypothesen gleich als Tatsachen dar. Das erinnert 
mich leider viel mehr an die Geschichte von "für den, der nur einen 
Hammer hat, sieht jedes Problem wie ein Nagel aus" als an 
wissenschaftliches Arbeiten. Und als jemand, der beruflich seit Jahren 
mit der Analyse und Visualisierung großer und größter Datenmengen 
(mehrere 100 GB sind da keine Seltenheit) beschäftigt ist und dabei 
sowohl Python als auch C++ und sie gern oft in Kombination benutzt, 
stelle ich jetzt mal zwei Gegenhypothesen auf: Wenn Ihr Python einmal 
für Eure Anwendungsfälle ausprobiert hättet, wärt Ihr erstens erstaunt, 
wie performant es in Wirklichkeit ist, und Ihr könntet zweitens auch 
etwas Sachkompetenz in diese Diskussion einbringen.

An Ende ist es bei Einzelentwicklungen ja so: bis ich aus den Daten eine 
Erkenntnis gewonnen habe, kostet das die Summe aus der Entwicklungs- und 
der Laufzeit meines Programms. Ob ich da eine halbe Stunde Entwicklungs- 
und zwei Stunden Laufzeit oder zwei Stunden Entwicklungs- und eine halbe 
Stunde Laufzeit summiere: das Ergebnis ist am Ende dasselbe. Da 
reduziert sich die große Frage nur noch auf auf meine persönliche 
Vorliebe, ob ich lieber selbst arbeite, oder ob ich lieber den Rechner 
schwitzen lasse und währenddessen mit der netten Kollegin einen Kaffee 
trinken gehe. ;-)

von Hans (Gast)


Lesenswert?

Sven B. schrieb:
> Und, hast du mal ein PDF da was dieser Code für einen Sinus produziert?

Du hast es immer noch nicht kapiert!

Wenn ich einen hochqualitativen Plot brauche mache ich sowas z.b. in 
gnuplot:
    plot [-10:10] sin(x),atan(x),cos(atan(x))

Implementiere ich einen Algorithmus ist es ziemlich egal in welcher 
Sprache ich arbeite!

rosetta code bietet da viele Beispiele:
1
double *cholesky(double *A, int n) {
2
    double *L = (double*)calloc(n * n, sizeof(double));
3
    if (L == NULL)
4
        exit(EXIT_FAILURE);
5
 
6
    for (int i = 0; i < n; i++)
7
        for (int j = 0; j < (i+1); j++) {
8
            double s = 0;
9
            for (int k = 0; k < j; k++)
10
                s += L[i * n + k] * L[j * n + k];
11
            L[i * n + j] = (i == j) ?
12
                           sqrt(A[i * n + i] - s) :
13
                           (1.0 / L[j * n + j] * (A[i * n + j] - s));
14
        }
15
 
16
    return L;
7 echte Statements
1
def cholesky(A):
2
    L = [[0.0] * len(A) for _ in range(len(A))]
3
    for i, (Ai, Li) in enumerate(zip(A, L)):
4
        for j, Lj in enumerate(L[:i+1]):
5
            s = sum(Li[k] * Lj[k] for k in range(j))
6
            Li[j] = sqrt(Ai[i] - s) if (i == j) else \
7
                      (1.0 / Lj[j] * (Ai[j] - s))
8
    return L

6 statements.

fft?? ok:
1
def fft(x):
2
    N = len(x)
3
    if N <= 1: return x
4
    even = fft(x[0::2])
5
    odd =  fft(x[1::2])
6
    T= [exp(-2j*pi*k/N)*odd[k] for k in range(N//2)]
7
    return [even[k] + T[k] for k in range(N//2)] + \
8
           [even[k] - T[k] for k in range(N//2)]
1
void fft(CArray& x)
2
{
3
    const size_t N = x.size();
4
    if (N <= 1) return;
5
 
6
    // divide
7
    CArray even = x[std::slice(0, N/2, 2)];
8
    CArray  odd = x[std::slice(1, N/2, 2)];
9
 
10
    // conquer
11
    fft(even);
12
    fft(odd);
13
 
14
    // combine
15
    for (size_t k = 0; k < N/2; ++k)
16
    {
17
        Complex t = std::polar(1.0, -2 * PI * k / N) * odd[k];
18
        x[k    ] = even[k] + t;
19
        x[k+N/2] = even[k] - t;
20
    }
21
}

6 zu 10 statements... wieder kein Beinbruch!

du willst numpy verwenden? OK!
1
>>> from numpy.fft import fft
2
>>> from numpy import array
3
>>> a = array([1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0])
4
>>> print( ' '.join("%5.3f" % abs(f) for f in fft(a))

mit der fftw:
1
#include <fftw.h>
2
...
3
{
4
     fftw_complex in[N], out[N];
5
     fftw_plan p;
6
     ...
7
     p = fftw_create_plan(N, FFTW_FORWARD, FFTW_ESTIMATE);
8
     ...
9
     fftw_one(p, in, out);
10
     ...
11
     fftw_destroy_plan(p);  
12
}
4 zu 5 statements... zugegeben, die daten müssen in c noch befüllt und 
ausgegeben werden...

So und jetzt machen wir das noch in einer anwendungsspezifischen 
sprache:

cholesky-decomposition:

1ne zeile in scilab
1
[R]=chol(X)

fft:
1ne zeile in scilab
1
X=fft(A [,sign] [,option])

plot:
1ne zeile in scilab
1
plot(x,y,<LineSpec>,<GlobalProperty>)


Es mag schon sein, dass DU mit python alleine auskommst, ich tue es 
nicht und will es auch nicht!


Mein Simulator hat nicht einmal eine GUI! Da geht die 
Problembeschreibung als javascript-code rein und verlässt die simulation 
als VCD file.

Wieso? Weil ich automatisieren will und muss!
ich generiere z.B. 100 JS files in bash (ja, bash!), und niete dann 
meine CPU mit parallel (gnu parallel meine ich ) nieder... auch wieder 
aus einem bash script.

Selbiges trifft zu für meine FEM Rechnungen.

Übrigens läuft da javascript weil die V8-engine wesentlich schneller ist 
als ein python interpreter.

Wenn ich die Daten mir ansehen will nutze ich Impulse oder gtkwave (zwar 
nur in zwangslagen... hin und wieder kommt man aber nicht aus).
Das ist für sowas gemacht!

Schau dir an was zu data-cursors in der doku zu deiner geliebten 
matplotlib steht:
https://matplotlib.org/examples/pylab_examples/cursor_demo.html

Übersetzt: In dem Fall schlägst die Schraube mit dem Hammer ein!

Ich gebe gerne zu, dass C++ eine gewaltige Einstiegshürde sein kann weil 
es eben eine komplexe Sprache ist.
Python ist einfacher gestrickt (das bitte nicht negativ verstehen!) und 
daher einfacher zu erlernen.
Das macht es sicher für viele attraktiv... immerhin willst du an deinem 
wissenschaftlichen Problem arbeiten und nicht C++ lernen.

Ich kann C++ ausreichend gut (ich werde seit 17 Jahren dafür bezahlt!).
Ich habe eine für mich effiziente Entwicklungsumgebung gefunden 
(Slackware, Qt5, Impulse, LaTex, gnuplot, Maxima,...).
Ich beschäftige mich mit Algorithmen und nicht mit plotten.
Daher habe ich postuliert, dass ich in C++ nicht langsamer bin als 
jemand anderes in Python.

Und es finden sich im Netz genügend beispiele die das bestätigen.
z.B. Cukoo-search

https://github.com/Ashwin-Surana/cuckoo-search/blob/master/cuckoonew.py
https://github.com/cuckoo-search/IASVP-cpp/blob/master/includes/CuckooSearch.h

python etwa 100 zeilen; c++ knapp drüber...

Mir gefällt die python als Sprache schon nicht. warum soll ich mich 
damit quälen?


Sven B. schrieb:
> C++Daddy schrieb:
>> Den Aufwand hat man aber meiner Meinung nach sowieso nur 1x denn nach
>> einiger Zeit hat jeder sowieso eine Sammlung mit Klassen für alles
>> Nötige und benutzt sie ein Leben lang.
>
> Das sehe ich anders. In Scipy kann ich auch mal eben schnell einen
> Wavelet-Filter auf meine Daten anwenden, und schauen ob das für meinen
> Anwendungsfall hilfreich ist. Dauert wenige Minuten. Dann kann ich
> vielleicht feststellen es ist gar nicht so gut, und was anderes machen.
> Ich muss eben nicht 10 Tage investieren, um die blöden Wavelets zu
> implementieren. Und Algorithmen dieser Art gibt es sehr viele, die
> eigentlich in keiner gängigen C++-Bibliothek so richtig verfügbar sind.
> Bestenfalls findet man noch Codeschnipsel auf github, die vielleicht
> funktionieren und vielleicht sogar das richtige Ergebnis berechnen.

Wie gesagt, man muss nur für jedes Problem seine Tools haben...
für den Fall wäre es bei mir Scilab oder Octave.

Mein Bruder bevorzugt R ... und? wo ist das Problem???

Sven B. schrieb:
> Ich stelle mal in den Raum,
> dass viele der Menschen, die nur mit C++ arbeiten, auch gar nicht wissen
> wie man Python-Code mit numpy so schreibt, dass er nicht langsam ist,
> weil es da ein relativ eigenes Set von Tricks gibt.

Ich stelle in den Raum, dass das generell so ist und kein Problem, das 
python/numpy für sich gepachtet hat.

Man kann durchaus in C++ auch sehr langsamen Code produzieren.

Und nochmal, wenn man ein Problem hat, bei dem man große Teile der 
Algorithmen selbst machen muss, dann ist es scheiß egal ob man Python 
oder C/C++ nimmt.

Libraries gibt's für beide Sprachen wie Sand am Meer.

die GSL (gnu scientific library... für die, die sie nicht kennen) 
beinhaltet laut header z.B. seit 14 Jahren die wavelets die einem in 
C/C++ angeblich 10 Tage...

Beispielcode hist hier:
https://www.gnu.org/software/gsl/doc/html/dwt.html

Ansonsten beinhaltet die Armadillo Library auch einiges an 
funktionalität.

Und nein, um schnell mal Daten durch den Wolf zu jagen nehme ich für 
gewöhnlich nicht C/C++ sondern andere tools!


73

von Sheeva P. (sheevaplug)


Lesenswert?

Hans schrieb:
> Sorry, ihr seid alle weltfremd!

Das mag für Dich so aussehen, weil wir im Gegensatz zu Dir eine Ahnung 
davon haben, worüber wir reden.

> Meine FEM Rechnungen ergeben schon Rohdaten in der Größenordnung, aber
> ich plotte doch nicht jeden einzelnen Vector!

https://fenicsproject.org/

> Mir ist bewusst, das es für Python sogar Module für algebraisches
> Rechnen gibt. Trotzdem nutze ich für diese Dinge Maxima, da das einfach
> weniger Einschränkungen hat (und weil ich mich damit auskenne).

Genau, weil DU Dich damit auskennst. Für den, der nur einen Hammer hat, 
sieht jedes Problem wie ein Nagel aus...

> Python ist kein Allerheilmittel. Auch hier brauchst du binäre libs im
> Hintergrund! fftw, opencv,... das sind alles native-libs mit python
> bindings. hast du die nicht auf deinem super cloud-rechner zur
> Verfügung, dann hilft dir der Python Interpreter auch nicht!

Aber ja doch hilft der mir, dank des mitgelieferten Paketmanagers pip. 
Da mache ich in meiner Entwicklungsumgebung -- welche gerne auch ein 
Virtual Environment (virtualenv) sein kann -- ein "pip freeze > 
requirements.txt" und in meiner Laufzeitumgebung dann ein "pip install 
-r requirements.txt" und schon sind alle Bibliotheken installiert. 
Knorke, wa? ;-)

Schau, wenn Du irgendwo qualifiziert mitreden treffen willst, solltest 
Du schon ein bisschen Ahnung von dem haben, worüber geredet wird. Von 
Python hast Du jedenfalls ganz offensichtlich keine. Bleib' doch einfach 
bei dem Zoo an unterschiedlichsten Programmen, die Du kennst, aber 
versuch lieber nicht, Leuten, die Python kennen, etwas darüber zu 
erzählen.

> Es mag sogar sein, dass der Akkuschrauber für manche Personen in manchen
> Aufgabenstellungen python heißt.

Tja, nur daß Python eben kein einfacher Akkuschrauber ist, sondern eine 
ganze Werkstatt auf Anabolika und Steroiden! ;-)

von vn nn (Gast)


Lesenswert?

Dirk schrieb:
> Weiss jemand den Grund für Python für wissenschaftliche Projekte?

Ein Mathematiker, Physiker, Chemiker, Etechniker abseits von Embedded 
(wo C/C++ zum Einmaleins gehört) z.B. Energietechniker, will einen 
möglichst vollständigen Werkzeugkasten mit dem er möglichst intuitiv und 
schnell ein Programm basteln kann, in das er oben seine Rohdaten 
reinkippen kann und unten Ergebnisse rauskriegt, ohne erst Programmieren 
auf hohem Niveau lernen zu müssen. Performance ist da zweitrangig.
Diser Werkzeugkasten kann Pyhton, Matlab, SciLab, R, etc. cc. sein.

von Hans (Gast)


Lesenswert?

Sheeva P. schrieb:
> An Ende ist es bei Einzelentwicklungen ja so: bis ich aus den Daten eine
> Erkenntnis gewonnen habe, kostet das die Summe aus der Entwicklungs- und
> der Laufzeit meines Programms. Ob ich da eine halbe Stunde Entwicklungs-
> und zwei Stunden Laufzeit oder zwei Stunden Entwicklungs- und eine halbe
> Stunde Laufzeit summiere: das Ergebnis ist am Ende dasselbe. Da
> reduziert sich die große Frage nur noch auf auf meine persönliche
> Vorliebe, ob ich lieber selbst arbeite, oder ob ich lieber den Rechner
> schwitzen lasse und währenddessen mit der netten Kollegin einen Kaffee
> trinken gehe. ;-)

Das sehe ich doch genau so!

Nur sehe ich Python nicht als diese Wunderwaffe.

C++ ist auch auch "nur" eine general purpose sprache.

Mir ist eben z.B. scilab lieber als Python für numerisches.
oder maxima für algebra,...

Bin ich jetzt ein schlechterer Mensch???


Sheeva P. schrieb:
> Aber hier liegst Du, gemeinsam mit Hans, leider vollkommen daneben. Wenn
> Ihr ein bisschen Ahnung nicht nur von C++, sondern eben auch von Python
> hättet -- und dadurch also überhaupt erst für den Vergleich zwischen den
> beiden, oder auch nur für Aussagen über Python qualifiziert wärt -- dann
> wüsstet Ihr, daß es gar nicht um eine Frage des "entweder oder", sondern
> stattdessen vielmehr um ein "entweder und" geht.

Das stimmt so nicht!

Sven B. schrieb:
> Im Ernst: wieviele verschiedene Bibliotheken muss ich mir
> zusammensammeln, damit ich in C++ zumindest
>  * Plots
>  * FFT
>  * File I/O in sinnvollen Formaten (ok, das kann man notfalls selber
> bauen)
>  * Fit-Routinen (LM, ...)
>  * Matrixoperationen
> habe? Ich denke, mindestens so 4 ...

Es ging darum, dass python die eierlegende Wollmilchsau sei!

Ich für meinen Teil bin jetzt raus... sollen die Python Jünger bei 
Python bleiben... ich nutze je nach Problem die Tools die ich für 
richtig halte.

Auch gerne in Kombination!

73

von Sheeva P. (sheevaplug)


Lesenswert?

C++Daddy schrieb:
> Python und C++ sind so unterschiedlich. Entweder man macht
> zeiteffektives Scripting für eine virtuelle Maschine oder man will
> hocheffizienten Maschinencode und keine Grenzen und nimmt dafür
> vielleicht ein wenig mehr Aufwand in Kauf.

Du hast das, was ich oben über Transpiler, Compiler und JIT-Compiler 
geschrieben hatte, aber gelesen und verstanden?

von Sven B. (scummos)


Lesenswert?

Hans schrieb:
> Wenn ich einen hochqualitativen Plot brauche mache ich sowas z.b. in
> gnuplot:
>     plot [-10:10] sin(x),atan(x),cos(atan(x))

Naja, hochqualitativ sei mal dahingestellt, aber kann man machen, ja.

> Implementiere ich einen Algorithmus ist es ziemlich egal in welcher
> Sprache ich arbeite!

Dem habe ich nie widersprochen! Aber: alle aufgelisteten Algorithmen 
gibt es in scipy schon, und zwar in guter Qualität (getestet, halbwegs 
optimiert, und mit Fehlerbehandlung). Wie ich oben kommentiert habe, ist 
das bei deinen zusammengehackten kurzen C++-Implementierungen eben eher 
nicht der Fall. Natürlich kann man das in C++ auch ordentlich schreiben, 
ich glaube dir auch dass du das kannst, aber es ist völlig fraglos dass 
das vom Aufwand her nicht konkurrenzfähig ist damit die fertige 
Implementierung aufzurufen.

> 4 zu 5 statements... zugegeben, die daten müssen in c noch befüllt und
> ausgegeben werden...

Das ist halt alles total geschummelt, weil du in Python den kompletten 
Overhead dazunimmst, und ihn in C weglässt wo er viel größer ist. Der 
tatsächliche Code ist in Python "fft(x)", fertig. Die restlichen Zeilen 
sind in deiner C-Variante auch nicht enthalten. Ich glaube nicht dass 
wir das diskutieren müssen, das weißt du selber. Der faire Vergleich 
wäre ein vollständiges, kompilierbares C++-Programm, was irgendsowas 
macht, mit halbwegs realitätsnahem I/O etc. Ich sehe ein, dass du keine 
Lust hast das hier aufzuschreiben, aber das ist ja genau mein Punkt :D

> Schau dir an was zu data-cursors in der doku zu deiner geliebten
> matplotlib steht:
> https://matplotlib.org/examples/pylab_examples/cursor_demo.html
>
> Übersetzt: In dem Fall schlägst die Schraube mit dem Hammer ein!

Jo, für interaktive Darstellungen ist Matplotlib ungeeignet. Ist so.

> Ich gebe gerne zu, dass C++ eine gewaltige Einstiegshürde sein kann weil
> es eben eine komplexe Sprache ist.
> Python ist einfacher gestrickt (das bitte nicht negativ verstehen!) und
> daher einfacher zu erlernen.
> Das macht es sicher für viele attraktiv... immerhin willst du an deinem
> wissenschaftlichen Problem arbeiten und nicht C++ lernen.

Ich kann C++, besser als Python. Ich verwende trotzdem Python für diesen 
Zweck.

> Mir gefällt die python als Sprache schon nicht. warum soll ich mich
> damit quälen?

Ist ja ok. Ich glaube dir auch, dass deine Entwicklungsumgebung für 
deinen Anwendungsfall effizient ist. Aber hör auf zu behaupten, dass das 
nur verwendet wird, "weil es gerade cool ist".

> Man kann durchaus in C++ auch sehr langsamen Code produzieren.

Siehe oben. scnr

> Und nein, um schnell mal Daten durch den Wolf zu jagen nehme ich für
> gewöhnlich nicht C/C++ sondern andere tools!

Vermutlich irgendwas, was ungefähr die gleiche API implementiert wie 
Matlab / numpy.

von Argus Augus (Gast)


Lesenswert?

Toni Tester schrieb:
> Überraschung (naja, eher nicht - zumindest für jeden, der sich halbwegs
> mit "Programmiersprachen" auskennt): Eine interpretierte Skriptsprache
> läuft deutlich langsamer als nativ compilierter Maschinencode aus (hier
> beispielhaft) C++.

Ja, in der Tat überraschend. Der Autor hat nicht verstanden, wozu Python 
nötig und sinnvoll ist. Nämlich binnen Minuten fertige mathematische 
Konstrukte zu nutzen, statt sie sich mit C++ binnen Tagen 
zusammenzustricken.

von Sheeva P. (sheevaplug)


Lesenswert?

Hans schrieb:
> Mir gefällt die python als Sprache schon nicht. warum soll ich mich
> damit quälen?

Weder hat jemand verlangt oder auch nur erwartet, daß Dir Python 
gefällt, noch, daß Du Dich damit "quälst". All das findet nur in Deinem 
Kopf statt.

von Sheeva P. (sheevaplug)


Lesenswert?

Hans schrieb:
> Sheeva P. schrieb:
>> An Ende ist es bei Einzelentwicklungen ja so: bis ich aus den Daten eine
>> Erkenntnis gewonnen habe, kostet das die Summe aus der Entwicklungs- und
>> der Laufzeit meines Programms. Ob ich da eine halbe Stunde Entwicklungs-
>> und zwei Stunden Laufzeit oder zwei Stunden Entwicklungs- und eine halbe
>> Stunde Laufzeit summiere: das Ergebnis ist am Ende dasselbe. Da
>> reduziert sich die große Frage nur noch auf auf meine persönliche
>> Vorliebe, ob ich lieber selbst arbeite, oder ob ich lieber den Rechner
>> schwitzen lasse und währenddessen mit der netten Kollegin einen Kaffee
>> trinken gehe. ;-)
>
> Das sehe ich doch genau so!

Davon lese ich in Deinen Ausführungen allerdings nicht viel.

> Nur sehe ich Python nicht als diese Wunderwaffe.

Aber genau das ist es, und zwar nicht zuletzt auch...

> C++ ist auch auch "nur" eine general purpose sprache.

...weil sich Python für performancekritische Stellen ganz einfach um 
nativen C- und C++-Code erweitern läßt.

> Mir ist eben z.B. scilab lieber als Python für numerisches.
> oder maxima für algebra,...

Ja dann benutz' das doch, hindert Dich ja keiner dran.

> Bin ich jetzt ein schlechterer Mensch???

Abgesehen von meinen grundsätzlichen Schwierigkeiten damit, Menschen in 
Kategorien wie "besser" oder "schlechter" einteilen zu wollen, macht es 
jedenfalls nicht unbedingt den Eindruck eines besonders klugen Menschen, 
daß Du immer wieder inkompetenten Unsinn über Python schreibst, ohne es 
auch nur ansatzweise zu kennen.

> Ich für meinen Teil bin jetzt raus... sollen die Python Jünger bei
> Python bleiben... ich nutze je nach Problem die Tools die ich für
> richtig halte.

...und jetzt stellst Du sogar eine religiöse Konnotation her. Oh Mann.

von C++Daddy (Gast)


Lesenswert?

vn nn schrieb:
> Ein Mathematiker, Physiker, Chemiker, Etechniker abseits von Embedded
> (wo C/C++ zum Einmaleins gehört) z.B. Energietechniker,...

Das bringt es doch prima auf den Punkt, es hängt eben individuell von 
den Programmierkenntnissen ab.
Das ein Chemiker mit Python schneller am Ziel ist als mit C,C++,Fortran 
oder Brainfuck sollte klar sein.

Wenn aber jemand sowieso hauptsächlich in C++ unterwegs ist und dort 
längst ein fertiger Workflow mit allen Wünschen existiert, wieso sollte 
man auf eine Skriptsprache wechseln oder gar Sprachen anfangen zu 
vermischen, aus dieser Sicht ist es ein Umweg, für mich wäre es ganz 
simpel unnötiger Aufwand.

Gehört der Threadersteller zu zB der Gruppe Chemiker usw ist natürlich 
klar das dann wiederum aus dieser Sicht Python besser passt.
Beide Sprachen sind in ihrem Bereich sehr gute Sprachen mit jeweiligen 
Stärken.
Und um ein paar CSV-Spalten darzustellen oder für simple Berechnungen 
reicht auch Excel.

Solang man nichts über den Hintergrund und die Absichten des 
Threaderstellers kennt, lässt sich sowieso nichts sagen. Da im ersten 
Beitrag "Machine Learning" genannt wurde, wäre erstmal zu klären ob es 
um bildverarbeitende Dinge geht oder nicht. Dann könnte man sehen ob es 
in Richtung GPU geht oder in Richtung CPU. Und dann erst kann man sich 
unterhalten welche Sprache, Frameworks, Libs usw für die gewollten Dinge 
Sinn machen.

von Sheeva P. (sheevaplug)


Lesenswert?

C++Daddy schrieb:
> Wenn aber jemand sowieso hauptsächlich in C++ unterwegs ist und dort
> längst ein fertiger Workflow mit allen Wünschen existiert,

...ist ein seriöser Vergleich mit einer Umgebung, in der all dieses noch 
nicht vorhanden ist, nicht möglich.

> wieso sollte
> man auf eine Skriptsprache wechseln oder gar Sprachen anfangen zu
> vermischen, aus dieser Sicht ist es ein Umweg, für mich wäre es ganz
> simpel unnötiger Aufwand.

Just das ist eine äußerst spannende Frage. Wenn Du durch den Erwerb und 
die Nutzung der Skriptsprache deutlich an Entwicklungszeit sparen 
könntest oder wenn Deine Kollegen alle mit Python arbeiten und kein C++ 
beherrschen, dann wäre dieser Umweg trotzdem zumindest langfristig ein 
lohnender Aufwand.

von vn nn (Gast)


Lesenswert?

C++Daddy schrieb:
> Wenn aber jemand sowieso hauptsächlich in C++ unterwegs ist und dort
> längst ein fertiger Workflow mit allen Wünschen existiert, wieso sollte
> man auf eine Skriptsprache wechseln oder gar Sprachen anfangen zu
> vermischen, aus dieser Sicht ist es ein Umweg, für mich wäre es ganz
> simpel unnötiger Aufwand.

Ich bin auch in C unterwegs, trotzdem ist Python oder eine andere 
Scriptsprache super, um mal schnell was zum probieren zusammenzuhacken 
(neudeutsch rapid prototyping). Wenn ich nur mal sehen will, ob eine 
Idee wirklich funktioniert, ein Algorithmus wirklich das macht, was ich 
will, ist das einfachste, ein paar Werkzeuge aus dem riesigen 
Pyhton-Werkzeugkasten zusammenzustöpseln, anstatt alles aufwenig in C zu 
implementieren und dann draufzukommen, dass irgendeine Grundannahme 
falsch war.

C++Daddy schrieb:
> Und um ein paar CSV-Spalten darzustellen oder für simple Berechnungen
> reicht auch Excel.

Warum sollte ich mir Excel antun, wenn ich Python hab?

von Claidhem (Gast)


Lesenswert?

Hans schrieb:
> Ich kann C++ ausreichend gut (ich werde seit 17 Jahren dafür bezahlt!).
> Ich habe eine für mich effiziente Entwicklungsumgebung gefunden
> (Slackware, Qt5, Impulse, LaTex, gnuplot, Maxima,...).
> Ich beschäftige mich mit Algorithmen und nicht mit plotten.
> Daher habe ich postuliert, dass ich in C++ nicht langsamer bin als
> jemand anderes in Python.

Oder anders gesagt: Jemand mit viel weniger Erfahrung kann in der 
gleichen Zeit dasselbe erreichen, nur durch Verwendung eines anderen 
Tools.

Und von jemand anders ist deine Lösung dann auch nicht wartbar, weil nur 
du die Tools beherrscht. Als Bastelei für Privatzwecke okay, als 
professionelle Lösung eigentlich unbrauchbar (auch wenn mir klar ist 
dass viele Buden unprofessionelles Vorgehen dulden).

von Hans (Gast)


Lesenswert?

Claidhem schrieb:
> Oder anders gesagt: Jemand mit viel weniger Erfahrung kann in der
> gleichen Zeit dasselbe erreichen, nur durch Verwendung eines anderen
> Tools.
>
> Und von jemand anders ist deine Lösung dann auch nicht wartbar, weil nur
> du die Tools beherrscht. Als Bastelei für Privatzwecke okay, als
> professionelle Lösung eigentlich unbrauchbar (auch wenn mir klar ist
> dass viele Buden unprofessionelles Vorgehen dulden).

Behauptest du jetzt allen ernstes, ich würde absichtlich möglichst 
aufwendige und unprofessionelle Problemlösungen entwickeln die nicht 
wartbar sind und die von einem dressiertem Affen in der halben Zeit 
machbar gewesen wären ???
Und/oder, dass ich Leute von python abhalten will um meine Inkompetenz 
zu verschleiern???




Sheeva P. schrieb:
> Davon lese ich in Deinen Ausführungen allerdings nicht viel.

Dann lies genauer!

Als Beispiel:

Hans schrieb:
> Dann wäre da noch http://toem.de/index.php/projects/impulse für VCD
> daten und https://labplot.kde.org/ für's "schnelle analysieren" von
> anderem zeugs

Und das wurde auch bestätigt...

Sven B. schrieb:
> Jo, für interaktive Darstellungen ist Matplotlib ungeeignet. Ist so.


Und? Ist das schlecht??? Nein.

Ich bin mir sicher, für interaktive Dinge gibt's auch unter python was 
geeigneteres...
und wenn es nur die Qt über die python bindings ist.

Aber wenn ich diese Funktionalität brauche, dann bin ich schneller beim 
Kaffee!

Oder auch hier:

Hans schrieb:
> Es mag sogar sein, dass der Akkuschrauber für manche Personen in manchen
> Aufgabenstellungen python heißt.
>
> Ich für meinen Teil finde jedenfalls die Sprache nicht "schön" und auch
> nicht gut lesbar.
>
> Aber für gewöhnlich gibt's im Baumarkt mehrere Typen Akkuschrauber.. man
> muss einfach nur einen in der Werkzeugkiste haben!

Brauch ich schnell einen plot einer FFT, dann mach ich das mit scilab.
Du in python.
unterschied? .... 0!

sogar das scaling der fft ist ident...

ich nehme an, da in beiden Fällen im Hintergrund die fftw verwendet 
wird.

=> gleichzeitig beim Kaffee!

Ich hoffe wir sind uns einig, dass man die Wurzel aus zwölfzig auch 
nicht in der python shell rechnet, sonder mit dem TI30 neben der 
Tastatur. (Ausnahme wäre, die shell ist gerade offen... dann wär mir 
aber auch ein Klick aus einem offenen Excel Fenster raus zu blöd...)


>
>> Nur sehe ich Python nicht als diese Wunderwaffe.
>
> Aber genau das ist es, und zwar nicht zuletzt auch...
>
>> C++ ist auch auch "nur" eine general purpose sprache.
>
> ...weil sich Python für performancekritische Stellen ganz einfach um
> nativen C- und C++-Code erweitern läßt.

kann ich mit einem mex-file unter matlab/octave auch.

Hat aber auch seine Probleme... Wird zumindest in Sonderfällen in python 
nicht anders sein.

>
>> Mir ist eben z.B. scilab lieber als Python für numerisches.
>> oder maxima für algebra,...
>
> Ja dann benutz' das doch, hindert Dich ja keiner dran.
>
>> Bin ich jetzt ein schlechterer Mensch???
>
> Abgesehen von meinen grundsätzlichen Schwierigkeiten damit, Menschen in
> Kategorien wie "besser" oder "schlechter" einteilen zu wollen, macht es
> jedenfalls nicht unbedingt den Eindruck eines besonders klugen Menschen,
> daß Du immer wieder inkompetenten Unsinn über Python schreibst, ohne es
> auch nur ansatzweise zu kennen.

Wo habe ich mich bitte inkompetent über Python ausgelassen???

Inkompetent ist zu sagen Python kann alles und das out of the box.
Möglicherweise ist es als Distribution für dich Mittel der Wahl.

Möglicherweise kannst du mit pip "schnell mal" module nachladen.

Aber wenn's das gesuchte nicht gibt???

Genau, dann musst du das selbst implementieren!

Und wie viel schneller bist du mit Algorithmus nachschlagen, eintippen 
und debuggen???? Wieder richtig, gleich schnell!

Aus meiner Erfahrung dauert der 1. und letzte Schritt am längsten....
Also Paper rauskramen, verstehen, und mit Test-Daten verifizieren.
Auf genau diesen Fall bezog sich mein "gleich schnell in C++"

Tut mir leid das in meinem 1. Post nicht so deutlich geschrieben zu 
haben!



Als kleines Beispiel zu einem Algorithmus, den es mit an Sicherheit 
grenzender Wahrscheinlichkeit als Python-Code nicht geben wird:

Ich schreibe gerade an einem Hysterese Modell das mit der T(x) Funktion 
arbeitet und in einem transienten Netzwerksolver läuft.

Der Netzwerksolver war ursprünglich SPICE... nach und nach habe ich das 
in modernem C++ nachimplementiert.

Das eigentlich nur um allerhand Details zu verstehen... also Schritt für 
Schritt zum Thema passende Literatur gewälzt, Teile ausgetauscht und 
Ergebnisse nachvollzogen. Am Schluss war nicht mehr viel übrig vom 
solver.

Ja, um zu zeigen, dass Modelle mit Hilfe der T-funktion sehr genau sein 
können, das könnte man mit Python sicher gut machen. Aber dazu kann ich 
dir auch ISBNs liefern...

Btw.: Wie oben auch oft angedeutet mache ich mein rapid prototyping zu 
90% nicht in C/C++!




Mein Statement, Python wäre gerade Hip und "cool" war doch auch nicht 
rein negativ oder abwertend!

Solltest du das so sehen, dann tut mir das Leid! Tatsache!

Fakt ist nunmal, dass es je nach Forschungsfeld/Anwendungsfall 
unterschiedliche "Lieblingsframeworks" gibt.

Statistiker mögen gerne R, andere Maple oder Mathematica und dann gibt's 
eben noch Python.

Ich war auch nie beleidigend wie im Posting das ich hier am Anfang 
zitiert habe... oder dieses:

Sven B. schrieb:
>> Plots, File-IO usw würde ich sagen Qt... die bringt auch gleich eine
>> nette IDE + compiler mit... seit einiger Zeit gibts QtCharts gratis...
>> auch sehr brauchbar.
> Sorry, ne, ist es nicht. QtCharts ist nett, wenn du irgendwie eine bunte
> Linie flackern lassen willst in deiner Hipster-App,


Irgend etwas passt einfach nicht... Arduino und Python Nutzer tendieren 
sofort auf die Barrikaden zu gehen wenn man nicht sofort ein Loblied 
anstimmt.

Aber wer weiß, Julia wird eine sehr große Zukunft vorhergesagt... dann 
könnte ich sagen "nach Matlab kam Python und jetzt Julia"

Hoffentlich ist dann die "neue große Community" dann weniger verbohrt.

73

von Sven B. (scummos)


Lesenswert?

> Mein Statement, Python wäre gerade Hip und "cool" war doch
> auch nicht negativ oder abwertend!

Dann solltest du an der Ausdruckskraft deiner Formulierungen arbeiten, 
weil so kam es m.E. nämlich rüber, und das hat die ganze Diskussion 
gestartet. Die Frage war "warum Python" und deine Antwort war "weil es 
gerade hip ist". Natürlich klingt das abwertend.
Hättest du sowas gesagt wie "es ist nützlich, ein Prototyping-Tool 
dieser Art zu haben, es gibt allerdings auch einen Haufen andere als 
Python die ähnlich funktionieren, aber Python ist wohl das hipste am 
Markt" (was ja, wenn ich jetzt deine neueren Posts lese, eher deiner 
Auffassung entspricht) hätte ich dir direkt zugestimmt.

Den Satz mit dem Loblied kapiere ich nicht. Wunderst du dich darüber, 
dass Menschen die gern Python benutzen sich kritisch über die 
Nützlichkeit von Frameworks äußern können, oder was? Ich bleibe übrigens 
dabei, an Qualität des Ergebnisses, welches sich mit tragbarem Aufwand 
erzielen lässt, hinkt gnuplot der matplotlib um einen Faktor hinterher, 
und QtCharts gnuplot nochmal um denselben Faktor.

: Bearbeitet durch User
von Sheeva P. (sheevaplug)


Lesenswert?

Hans schrieb:
> Behauptest du jetzt allen ernstes, ich würde absichtlich möglichst
> aufwendige und unprofessionelle Problemlösungen entwickeln die nicht
> wartbar sind und die von einem dressiertem Affen in der halben Zeit
> machbar gewesen wären ???
> Und/oder, dass ich Leute von python abhalten will um meine Inkompetenz
> zu verschleiern???

Ständig liest Du Dinge, die niemand gesagt oder auch nur angedeutet hat. 
Bitte tu' Dir dringend den Gefallen und arbeite daran, diese 
merkwürdigen Einbildungen in Deinem Kopf wieder ins Lot zu bringen.

> Sheeva P. schrieb:
> Ich hoffe wir sind uns einig, dass man die Wurzel aus zwölfzig auch
> nicht in der python shell rechnet, sonder mit dem TI30 neben der
> Tastatur.

Ich habe keinen TI-30 und auch nie einen gehabt. Und warum ich mir einen 
Taschenrechner auf den Schreibtisch legen soll, obwohl ich eine geradezu 
gigantische Rechenleistung darunter stehen hab, erschließt sich mir auch 
nicht wirklich. Ich nehme die Hand schon ungern von der Tastatur weg, um 
zur Maus zu greifen, und habe auf der fetten Rechenmaschine Kcalc, 
bc(1), sowie natürlich Python zur Verfügung...

>> ...weil sich Python für performancekritische Stellen ganz einfach um
>> nativen C- und C++-Code erweitern läßt.
>
> kann ich mit einem mex-file unter matlab/octave auch.

Du verstehst aber schon, daß es darum gar nicht geht, oder? Und wenn ich 
mir Deinen Zoo an Programmen und Bibliotheken anschaue, die Du angeblich 
beherrschst: Python hättest Du in einem Bruchteil der Zeit gelernt und 
könntest Deine Probleme mindestens ebenso gut, vermutlich sogar deutlich 
flexibler und wiederverwendbarer lösen.

> Hat aber auch seine Probleme... Wird zumindest in Sonderfällen in python
> nicht anders sein.

Schon wieder hast Du kein Wissen, ja sogar noch nicht einmal eine 
Ahnung, sondern nur Deine Vermutungen.

> Wo habe ich mich bitte inkompetent über Python ausgelassen???

Vielleicht magst Du Deine "Beiträge" noch einmal lesen und Dir ernsthaft 
die Frage stellen, welche Deiner Äußerungen über Python tatsächlich auf 
Kenntnissen basieren -- siehe mein vorheriger Absatz.

> Inkompetent ist zu sagen Python kann alles und das out of the box.

Das wäre tatsächlich inkompetent, hat aber außer Dir gerade niemand hier 
auch nur angedeutet -- geschweige denn, behauptet. Obwohl, auch das ist 
ja nicht ganz richtig: die hier erwähnten Bibliotheken und Werkzeuge hat 
die Anaconda-Distribution bereits alle dabei, "out of the box".

> Möglicherweise ist es als Distribution für dich Mittel der Wahl.

...was Dich so sehr zu stören scheint, daß Du unfaßbar viel Energie 
darauf aufwendest, um mir und anderen erklären zu wollen,

- wie falsch das alles sei,
- wie imperformant das alles sei,
- daß Du in einer kompilierten, typsicheren Sprache ohne automatisches
  Speichermanagement und mit einem riesigen Zoo an Drittwerkzeugen und
  -Bibliotheken mindestens genau so schnell seist.

> Möglicherweise kannst du mit pip "schnell mal" module nachladen.

Nix "möglicherweise". Ganz sicher kann ich das.

> Aber wenn's das gesuchte nicht gibt???
>
> Genau, dann musst du das selbst implementieren!

Ja, das ist das Schicksal des Entwicklers: Funktionen, die es noch nicht 
gibt, muß der Ärmste selbst entwickeln.

> Und wie viel schneller bist du mit Algorithmus nachschlagen, eintippen
> und debuggen???? Wieder richtig, gleich schnell!

Ach, die meisten üblichen Algorithmen bringen die Python-Libraries schon 
fertig debuggt und getestet mit.

> Aus meiner Erfahrung dauert der 1. und letzte Schritt am längsten....
> Also Paper rauskramen, verstehen, und mit Test-Daten verifizieren.
> Auf genau diesen Fall bezog sich mein "gleich schnell in C++"

Und dann schreibst Du Dir noch ein weiteres C++-Programm, um die Ist- 
gegen die Soll-Ergebnisse zu verifizieren? Wow... Da bin ich mit meiner 
netten Kollegin schon beim dritten Kaffee und beim Du.

> Als kleines Beispiel zu einem Algorithmus, den es mit an Sicherheit
> grenzender Wahrscheinlichkeit als Python-Code nicht geben wird:
> [...]
> Ja, um zu zeigen, dass Modelle mit Hilfe der T-funktion sehr genau sein
> können, das könnte man mit Python sicher gut machen. Aber dazu kann ich
> dir auch ISBNs liefern...

Danke, ich hab' selbst genug ISBNs... Du scheinst da einem fundamentalen 
Irrtum aufzusitzen: ursprünglich wollte ich hier nur die Frage des TO 
beantworten, warum Python oft und gerne für wissenschaftliche Projekte 
eingesetzt wird.

Plötzlich sind dann ein Haufen C++-Missionare wie Du aufgetreten, um zu 
erklären, daß Python eh nur benutzt würde, weil es so "hip und cool" 
sei, sie selbst hingegen als Superelite der wissenschaftlichen 
Datenanalyse natürlich nur C++ nutzen würden, was sie, ganz Superelite, 
natürlich so übernatürlich gut können, daß sie damit genauso schnell 
seien wie mit Python seien. Nee, ist klar. Diesen Quatsch wollte ich 
jedenfalls nicht unwidersprochen stehen lassen, immerhin lesen hier auch 
Kinder mit und könnten versucht sein, den Quatsch zu glauben.

> Mein Statement, Python wäre gerade Hip und "cool" war doch auch nicht
> rein negativ oder abwertend!

Ach hör' doch auf, natürlich war es das, und es war auch ganz genau so 
gemeint, gedacht, und formuliert.

> Fakt ist nunmal, dass es je nach Forschungsfeld/Anwendungsfall
> unterschiedliche "Lieblingsframeworks" gibt.

Ein "Lieblingsframework" ist schon vom Wortsinn her keines, das sich an 
einem Forschungsfeld oder Anwendungsfall orientiert, sondern stattdessen 
eines, das sich nach den Vorlieben des Nutzers richtet.

> Ich war auch nie beleidigend wie im Posting das ich hier am Anfang
> zitiert habe... oder dieses:

Deine Einlassung, der zufolge Python nur benutzt werde, weil es "hip und 
cool" sei, war allerdings durchaus herabwürdigend. Und bitte erzähl mir 
jetzt nicht, daß das nicht auch genau so gemeint gewesen sei.

> Irgend etwas passt einfach nicht... Arduino und Python Nutzer tendieren
> sofort auf die Barrikaden zu gehen wenn man nicht sofort ein Loblied
> anstimmt.

Da kann ich nur für mich sprechen, aber ich widerspreche eben, wenn 
jemand gequirlten Unsinn erzählt. Wenn Du das vermeiden möchtest, dann 
red' halt keinen Unsinn über Dinge, von denen Du nichts verstehst. 
Eigentlich ganz einfach, findest Du nicht?

> Aber wer weiß, Julia wird eine sehr große Zukunft vorhergesagt... dann
> könnte ich sagen "nach Matlab kam Python und jetzt Julia"
>
> Hoffentlich ist dann die "neue große Community" dann weniger verbohrt.

Diese Community wird Dir sicherlich genauso widersprechen wie wir, wenn 
Du über Julia ähnlichen Unfug erzählst wie über Python. Aber schön, daß 
gerad Du Dich schon wieder so herablassend äußerst wie in Deinem 
Eingangspost -- und bezüglich "verbohrt": wer im Glashaus sitzt, sollte 
im Keller schmusen.

von Sheeva P. (sheevaplug)


Lesenswert?

Sven B. schrieb:
> Ich bleibe übrigens
> dabei, an Qualität des Ergebnisses, welches sich mit tragbarem Aufwand
> erzielen lässt, hinkt gnuplot der matplotlib um einen Faktor hinterher,
> und QtCharts gnuplot nochmal um denselben Faktor.

Damit es hier auch noch was Konstruktives zu Lesen gibt: wenn Du gerne 
interaktive und gut aussehende Plots haben willst, lohnt sich häufig ein 
kleiner Webservice zum Beispiel mit Flask, bei dem das Plotten mit einem 
JavaScript-Plotter wie flot [1] oder jqPlot [2] gemacht wird, und für 
noch weitergehende Anforderungen sind D3 [3] und Plot.ly [4] schick.

[1] https://www.flotcharts.org/
[2] http://www.jqplot.com/
[3] https://d3js.org/
[4] https://plot.ly/

von Yalu X. (yalu) (Moderator)


Lesenswert?

Hans schrieb:
> Ich hoffe wir sind uns einig, dass man die Wurzel aus zwölfzig auch
> nicht in der python shell rechnet, sonder mit dem TI30 neben der
> Tastatur.

Ich hasse zwar Uneinigkeit, aber wenn bei mir der PC an ist, ist der
Taschenrechner aus. Beides zusammen braucht mir zuviel Strom und
Schreibtischfläche.

> (Ausnahme wäre, die shell ist gerade offen...

Bei mir ist praktisch immer ein Python-Fenster offen. Wenn nicht, öffne
ich eines – so schnell kannst du gar nicht die Augen zu deinem TI-30
hinüberdrehen – mit einem extra dafür eingerichteten Hotkey :)

von Hans (Gast)


Lesenswert?

Sheeva P. schrieb:
>> Hat aber auch seine Probleme... Wird zumindest in Sonderfällen in python
>> nicht anders sein.
>
> Schon wieder hast Du kein Wissen, ja sogar noch nicht einmal eine
> Ahnung, sondern nur Deine Vermutungen.

Nein, habe ich in der Boost.python Doku nachgelesen! Function Pointer 
zurück in den Python Interpreter geht nicht. Die einleuchtende 
Begründung ließ bitte selber nach.


Sheeva P. schrieb:
>> Inkompetent ist zu sagen Python kann alles und das out of the box.
>
> Das wäre tatsächlich inkompetent, hat aber außer Dir gerade niemand hier
> auch nur angedeutet -- geschweige denn, behauptet. Obwohl, auch das ist
> ja nicht ganz richtig: die hier erwähnten Bibliotheken und Werkzeuge hat
> die Anaconda-Distribution bereits alle dabei, "out of the box".

Aha und was war das???

Hans schrieb:
>> Nur sehe ich Python nicht als diese Wunderwaffe.
> Aber genau das ist es, und zwar nicht zuletzt auch...



Sheeva P. schrieb:
> lohnt sich häufig ein kleiner Webservice zum Beispiel mit Flask

Standalone reicht oft schon ... Die D3 ist wirklich nett...

Btw, couchdb schonmal verwendet?
Das kann die Daten verwalten und wenn's sein muss die Website hosten!

73

von Sheeva P. (sheevaplug)


Lesenswert?

Hans schrieb:
> Sheeva P. schrieb:
> Nein, habe ich in der Boost.python Doku nachgelesen! Function Pointer
> zurück in den Python Interpreter geht nicht. Die einleuchtende
> Begründung ließ bitte selber nach.

Meine Güte, jetzt hast Du Dir aber ein Szenario ausgedacht... Langsam 
werden Deine "Argumente" wirklich mehr als haarsträubend. Andererseits 
lassen sich alle Anwendungsfälle, in denen man so etwas brauchen könnte, 
vermutlich dadurch abfackeln, indem man wiederum einen 
Python-Interpreter in das von Boost.Python erzeugte Shared Object 
einbaut.

> Sheeva P. schrieb:
>>> Inkompetent ist zu sagen Python kann alles und das out of the box.
>>
>> Das wäre tatsächlich inkompetent, hat aber außer Dir gerade niemand hier
>> auch nur angedeutet -- geschweige denn, behauptet. Obwohl, auch das ist
>> ja nicht ganz richtig: die hier erwähnten Bibliotheken und Werkzeuge hat
>> die Anaconda-Distribution bereits alle dabei, "out of the box".
>
> Aha und was war das???

Das ist die Feststellung, daß die Python-Distribution Anaconda alle hier 
angesprochenen Module bereits fertig und out-of-the-box mitbringt. Diese 
Feststellung paßt hier sogar ganz besonders gut in den Thread, weil 
diese Distribution sich insbesondere an Datenwissenschaftler richtet...

> Hans schrieb:
>>> Nur sehe ich Python nicht als diese Wunderwaffe.
>> Aber genau das ist es, und zwar nicht zuletzt auch...

Daß eine Standard-Distribution von Python nicht alles sofort 
out-of-the-box kann, ändert nichts daran, daß Python eine Wunderwaffe 
ist und ganz alleine vermutlich Deinen ganzen Zoo ersetzen könnte. Daß 
man dafür eine erweiterte Python-Distribution wie Anaconda benutzen, 
oder mithilfe des mitgelieferten Werkzeugs pip einige Bibliotheken aus 
dem zentralen Bibliotheksverzeichnis installieren müßte, ändert daran 
ebensowenig.

Vor allem im Vergleich mit C++ kann ich mir aber jetzt mein fieses 
Grinsen nicht verkneifen -- das kann out of the box ja nichtmal 
handelsübliche und weit verbreitete Formate wie CSV, XML, YAML oder JSON 
lesen, mit Datum und Zeit rechnen oder ähnliche Basics.

> Sheeva P. schrieb:
>> lohnt sich häufig ein kleiner Webservice zum Beispiel mit Flask
>
> Standalone reicht oft schon ... Die D3 ist wirklich nett...

Erfreulicherweise bringt Flask bereits einen eigenen Entwicklungsserver 
mit und ist daher für soetwas genau das: standalone. Kurz gesagt, 
sieht eine minimale Flask-Applikation etwa so aus:
1
#!/usr/bin/env python
2
from flask import Flask
3
4
app = Flask(__name__)
5
6
@app.route('/')
7
def index():
8
    return '<h1>Tja</h1>Da kiekste, wa?'
9
10
if __name__ == '__main__':
11
    app.run()

Zeig' das doch bitte mal in C++.

> Btw, couchdb schonmal verwendet?

Natürlich, aber hier geht es meist entweder um schnelle 
Key-Value-Stores, dann paßt Redis in der Regel besser, oder um starke 
Suchmöglichkeiten und Datenanalysefähigkeiten, dann passen eher 
Elasticsearch und Kibana. Bisher hab ich noch keine praktischen 
Anwendungsfälle gehabt, bei denen Couchdb oder Mongodb besser gepaßt 
hätten.

> Das kann die Daten verwalten und wenn's sein muss die Website hosten!

Ach Gottchen, ja, Futon... aber das ist wohl eher ein Admin-Interface 
als eine brauchbare Datenvisualisierung, da bleib' ich dann doch lieber 
bei Elasticsearch und Kibana. Kann Futon denn mitterweile plotten?

von Hans (Gast)


Lesenswert?

Sheeva P. schrieb:
> Meine Güte, jetzt hast Du Dir aber ein Szenario ausgedacht...

Nein, du hast vermutet ich würde ahnungslos daherplappern.
Ich habe so ziemlich jeden vermeintlichen Tipp mir rausgesucht und werde 
ihn im Fall des Falles auch beherzigen!

Sheeva P. schrieb:
> Daß eine Standard-Distribution von Python nicht alles sofort
> out-of-the-box kann, ändert nichts daran, daß Python eine Wunderwaffe
> ist und ganz alleine vermutlich Deinen ganzen Zoo ersetzen könnte.

Ersetzen, mag sein. Aber ist es in jedem Fall besser???
Bezweifle ich!


Sheeva P. schrieb:
> Erfreulicherweise bringt Flask bereits einen eigenen Entwicklungsserver
> mit und ist daher für soetwas genau das: standalone. Kurz gesagt, sieht
> eine minimale Flask-Applikation etwa so aus:

Ich meinte pures html5... Kann erstaunliches... Dein flask Beispiel wäre 
mit HTML,head und Body tags dann ein 7 Zeiler bei minimalem Aufwand.

Sheeva P. schrieb:
> Bisher hab ich noch keine praktischen Anwendungsfälle gehabt, bei denen
> Couchdb oder Mongodb besser gepaßt hätten.

Json rein -> map-reduce -> json raus und in d3 angezeigt.. Anwendung 
nicht ausgedacht, läuft als eine Art datalogger... Couchdb lief schon, 
also mittel der Wahl.


Um auf das ursprüngliche Thema zurückzukommen. Wenn du mir vohältst, ich 
hätte eine verschrobene Auffassung, dann lass dir sagen, dass du auch 
nicht besser bist.

Ich habe geschrieben, dass in meinem Anwendungsfall c++ aus mehreren 
Gründen nicht wesentlich aufwendiger ist.

Ich habe geschrieben, dass ich für viele Dinge (für mich) sehr 
effiziente Tools gefunden habe.

Ich habe nie behauptet, ich würde alles nur in c++ machen!
Ich habe nur festgestellt, dass es mehr als nur ein einziges "richtiges" 
Werkzeug gibt!

Alles andere entspringt deiner Fantasie!

Sheeva P. schrieb:
> Anwendungsfälle, in denen man so etwas brauchen könnte, vermutlich
> dadurch abfackeln, indem man wiederum einen Python-Interpreter in das
> von Boost.Python erzeugte Shared Object einbaut

Sorry, aber genau um das geht's.

 Viele Wege führen nach Rom!
Und Python löst nicht alle Problem.

Möglicherweise aber für dich...


73

von Vancouver (Gast)


Lesenswert?

Und nun liebe Kinder hört ihr wieder eine Folge aus der Serie "Meine 
Lieblingssprache ist viel besser als Deine Lieblingssprache. "

Eigentlich wollte de TO nur wissen, welche Vorteile Python gegenüber C++ 
hat und warum die Leute es benutzen. Eine legitime Frage. Jetzt sind wir 
bei HTML5 und Javascript im Browser. Jetzt muss noch jemand Perl ins 
Spiel bringen, damit ein abgerundeter Eindruck entsteht.

Mal ehrlich: manche Dinge gehen besser in Python, andere in C++. Das 
hängt alles von den Requirements ab. Sogar Brainfuck ist angeblich für 
bestimmte Probleme besser geeignet als jede andere Sprache. "Ich mache 
alles in X, weil ich das so gut kann, dass ich damit schneller bin als 
ihr in Y" ist mit Abstand die dämlichste Begründung, die man sich 
ausdenken kann. Ich schneide mein Rumpsteak mit der Kettensäge, weil ich 
damit viel schneller bin als Du mit Deinem Messer.

Wer ein gewisses Spektrum von Sprachen beherrscht (oder willens ist, sie 
zu lernen) und in der Lage ist, für ein gegebenes Problem die geeignete 
auszuwählen, findet bessere Lösungen als ein inselbegabter C++-Guru mit 
einem Compiler im Kopf (ersetze C++ durch was immer Du willst). The 
right tool at the right time.

von Hans (Gast)


Lesenswert?

Vancouver schrieb:
> Und nun liebe Kinder hört ihr wieder eine Folge aus der Serie "Meine
> Lieblingssprache ist viel besser als Deine Lieblingssprache. "

Dazu macht es Sheeva Plug es gerade!

Vancouver schrieb:
> Mal ehrlich: manche Dinge gehen besser in Python, andere in C++. Das
> hängt alles von den Requirements ab.

Nichts, aber auch gar nichts anderes habe ich behauptet!

Mein 2. Post:

Hans schrieb:
> Grafiken für wissenschaftliche Publikationen lässt man IMHO am besten
> latex zeichnen...pgfplots sei dank :)
>
> C++Daddy schrieb:
>> Natürlich ist Python bei einfacheren Dingen der Weg des geringeren
>> Widerstandes, kann aber je nach Anwendungsfall viel zu langsam sein.
>> Für meine Diss. nutze ich C++ mit QT, alles andere wäre für meine
>> Anwendung viel zu langsam.
>
> full ACK!
>
> Schreiber schrieb:
>> Es geht erstmal darum die Funktionsfähigkeit zu demonstrieren und
>> den Algoritmus praktisch einsetzbar zu machen. Ob man jetzt 100€ mehr
>> oder weniger für Rechenzeit ausgeben muss, ist erstmal egal.
>
> Naja, wenn du benchmarken willst, dann musst du im normalfall gegen eine
> optimierte Referenz bestehen... und die ist entweder Fortran oder C(++).

Oder auch später:

Hans schrieb:
> IMHO habe nicht ich die Scheuklappen auf, sondern 90% der
> mitkommentierenden. Wie oben beschrieben nutze ich viele
> unterschiedliche Tools.
>
> Außerdem gibt's neben Python noch ganz andere Frameworks. wie z.B. R...
>
> Mir ist bewusst, das es für Python sogar Module für algebraisches
> Rechnen gibt. Trotzdem nutze ich für diese Dinge Maxima, da das einfach
> weniger Einschränkungen hat (und weil ich mich damit auskenne).

Ich habe nie gesagt meiner ist Größer, sondern ich nutze in 
definierten Fällen was anderes weil es mich_ bei _meinen 
Aufgabenstellungen schnell(er) ans Ziel bring.

Jede Library, jede Sprache und eigentlich sogar jedes Ding auf diesem 
Planeten ist für manche Aufgaben geeigneter als für andere.

Oben habe ich gezeigt, dass eine cholesky zerlegung, eine fft oder auch 
ein simpler plot z.B. in scilab ähnlich wenig aufwand bedeuten.

Und wenn ich diese Algorithmen in C++ oder python implementieren müsste, 
dann wäre der Aufwand ähnlich.

Einen Parser schreibe ich auch nicht in C++... auch wenn es 
Bison,Flex&Co gibt. Für meine Anwendung (Problembeschreibung) ist die V8 
für mich das Mittel der Wahl gewesen. Python war da im Rennen, genau so 
wie Lua.

C++ ist es geworden weil ich eben vom SPICE Quellcode gestartet bin.
Die Qt ist es geworden weil viele dumme Tasks sich damit ausreichend 
einfach umsetzen lassen.
Die V8 hat sich am schönsten ins Meta-Objekt-System eingefügt (also 
eigentlich die QJSEngine).

Sicher, alles in python wäre auch gegangen... aber genau so in brainfuck 
oder Ook!


Vancouver schrieb:
> Wer ein gewisses Spektrum von Sprachen beherrscht (oder willens ist, sie
> zu lernen) und in der Lage ist, für ein gegebenes Problem die geeignete
> auszuwählen, findet bessere Lösungen als ein inselbegabter C++-Guru mit
> einem Compiler im Kopf (ersetze C++ durch was immer Du willst). The
> right tool at the right time.

Dem kann ich nur beipflichten.

Manchmal ist es mein TI30-XA Solar, manchmal lokales HTML5 mit JS, dann 
C++ und wenn's sein muss kämpfe ich mich auch wieder in eine 
Matlab-Toolbox rein damit später jemand anders damit weiterarbeiten 
kann.

Das habe ich sogar im 1. Post schon angedeutet!

Nur noch mal der Vollständigkeit halber:
1
„Hip“ wird heute überwiegend in Bedeutungen etwa von „angesagt“[3], „schick“, zeitgenössisch, „trendy“[4] genutzt.
1
cool
2
...
3
BEDEUTUNGEN, BEISPIELE UND WENDUNGEN  
4
...
5
3. keinen, kaum Anlass zur Klage gebend, durchaus annehmbar, in Ordnung
6
4. in hohem Maße gefallend, der Idealvorstellung entsprechend

Sven B. schrieb:
>> Mein Statement, Python wäre gerade Hip und "cool" war doch
>> auch nicht negativ oder abwertend!
>
> Dann solltest du an der Ausdruckskraft deiner Formulierungen arbeiten,
> weil so kam es m.E. nämlich rüber, und das hat die ganze Diskussion
> gestartet. Die Frage war "warum Python" und deine Antwort war "weil es
> gerade hip ist". Natürlich klingt das abwertend.

Also wenn ich sage, dass etwas angesagt ist und jetzt gerade den 
Idealvorstellungen entspricht, dann tut es mir wirklich sehr leid wenn 
das jemand als zu tiefst negativ auffasst!

Vancouver schrieb:
> "Ich mache
> alles in X, weil ich das so gut kann, dass ich damit schneller bin als
> ihr in Y" ist mit Abstand die dämlichste Begründung, die man sich
> ausdenken kann. Ich schneide mein Rumpsteak mit der Kettensäge, weil ich
> damit viel schneller bin als Du mit Deinem Messer.

Und das ist jetzt anders als mit aussagen wie "mit matplotlib kommt man 
aber immer schneller zu einem fancy bildchen"???

Für meine (anscheinend zu trivialen, gut, lass' ich mir einreden) 
Probleme war bisher gnuplot oder pgfplots genau das richtige.

Falls jemand lieber zuerst python anwirft, eine csv-file läd und dann 
mit matplotlib sich den pgfplots code erzeugt, der dann von Latex in ein 
schönes pdf verwandeld wird - bitte, tut es!

z.B. hier https://www.latex-tutorial.com/tutorials/pgfplots/ sieht man 
den aufwand der nötig ist falls in einem csv schon die daten in 
passender Form liegen... das kommt vor!

ICH habe keine 10Gig Rohdaten auf Landkarten abzubilden!

Das habe ich auch nicht behauptet!

Ich habe wenn dann einige GB Rohdaten von irgendwelchen Vektorfeldern.

Das muss ich postprocessen... teilweise reicht dazu aber schon das aus, 
was das Simulationspackage hergibt. (CST habe ich angesprochen, Onelab 
verwende ich in manchen Situationen auch).


Übrigens danke für den Tipp mit FEniCS Project....

Dennoch lese ich lieber zuerst nach ob/mit welchem Aufwand ich z.B. 
entlang eines Pfades integrieren kann, oder ob ich über externe Tools 
einfacher mein Ergebnis erhalte.


73

von Vancouver (Gast)


Lesenswert?

@Hans

"Ich habe nie gesagt meiner ist Größer, sondern ich nutze in
definierten Fällen was anderes weil es mich_ bei _meinen
Aufgabenstellungen schnell(er) ans Ziel bring."


"Ich mache für meine Diss alles in C++. Ich kann so gut C++, dass ich 
damit gleich schnell bin wie jemand anderes in Python."

Sehe nur ich da einen Widerspruch?

von Claidhem (Gast)


Lesenswert?

Hans schrieb:
> Behauptest du jetzt allen ernstes, ich würde absichtlich möglichst
> aufwendige und unprofessionelle Problemlösungen entwickeln die nicht
> wartbar sind und die von einem dressiertem Affen in der halben Zeit
> machbar gewesen wären ???

Nein. Ich sage nur, dass es unprofessionell ist, ein Werkzeug aufgrund 
der persönlichen Vorlieben zu wählen, wenn das Arbeitsergebnis für 
andere deutlich schwerer zu warten ist.

Ob das in deinem Fall zutrifft und ob du das absichtlich oder 
unwissentlich machst musst du schon selbst bewerten. Nur die Aussage in 
die Richtung "ich mit meinen 17 Jahren Erfahrung mit C++ schaffe es 
gerade so, eine Aufgabe genauso schnell zu lösen wie jemand anders mit 
Python" deutet schon sehr darauf hin, dass deine Arbeitsergebnisse für 
andere schwer zu verwenden sind.

von Hans (Gast)


Lesenswert?

Ja, bei dieser_ _einen Aufgabe!


Dagegen finde ich , zwanghaft allem Python überstülpen zu wollen eher 
einen Widerspruch zu ...
Vancouver schrieb:
> The
> right tool at the right time.

Ich nutze auch noch Papier und Bleistift! Nicht nur einen 
Taschenrechner!!!

DAMIT kann man Algorithmen entwicklen!!!


Ein paar Absätze darunter spreche ich davon, dass ich auch Javascript 
nutze wenn es passt!

Auf "ich postuliere eine reine browser lösung" kam Jupyter.

Schön, kenne ich!

aber das ist keine reine javascript-browser lösung die ich postuliert 
habe, sondern ein Frontend für python!

Mir würde etwas in Richtung  Propel oder http://mathnotepad.com/ 
vorschweben... nur eben mit den üblichen mathematischen 
"standart"-tools.

Kann ich etwas mit 3 python libs erschlagen, stehen die chancen gut, 
dass ich mit einer verfügbaren scilab, matlab oder octave toolbox gleich 
gute oder auch idente ergebnisse erhalte (weil ohnehin im hintergrund 
z.b. opencv, fftw,... angewendet wird)!

Zu einer schönen Puplikation gehören für mich z.B grafiken, die den 
selben Font aufgreifen wie das restliche Dokument.

Latex mit pgfplots ermöglicht mir das in sehr vielen fällen.

In wenigen Fällen nutze ich gnuplot dazu ein pdf+tex file zu erstellen.

Auch hier bringt mir python keine benefits zu meinen bisherigen tools. 
sorry, ist so!

Wenn DU deine komplette Arbeit in einem Stück in python abliefern 
kannst, dann tu es doch bitte! Wenn ich eine Möglichkeit sehen würde, 
wär meine Faulheit garantiert stärker wie meine Syntaxabneigung!

Aber 2/3tel vom Gesamtcode in wrapper-objekte zu stecken und dann noch 
einen python interpreter einzubinden nur damit ich python verwendet 
habe- sorry, da sehe ich wirklich keinen Vorteil!

Ich hatte ein C gerüst. Dazu habe eine mächtige Library (Qt) ausgesucht 
die mir einen "Parser" (zufällig Javascript, hätte auch python, lua oder 
sonst was sein können!) mitbringt und dazugelinkt.

Das ist sicher keine typische Rapid Prototyping Fragestellung, aber 
das war/ist meine Problemstellung.

Und das Debuggen von den laufende Javascript-Problembeschreibungen, 
läuft komplett transparent im QtCreator neben der debuggerei von den 
C-Modellen.
Suppi, oder? Ich nehme an, das geht mit dem gdb und python auch 
problemlos, aber beide Lösungen nehmen sich hier nichts!

Wenn du dir über andere Probleme Gedanken machen darfst, freu dich doch!

Mir würde python bei meinen Problemen mit effizienter Cachline-Nutzung 
NICHTS bringen!

Ich brauche_ in _dieser fragestellung kein scipy, numpy, matplotlib 
udgl.!

Es wird auch Gründe geben, warum TensorFlow neben Python auch C++, Java, 
Go und JavaScript bindings hat!

Zumindest gibt es offensichtlich leute die eine dieser Sprache für 
IHRE Anwendung bevorzugen.


Und dann kommt noch die oben bereits kommentierte Unterstellung:

Claidhem schrieb:
> Hans schrieb:
>> Ich kann C++ ausreichend gut (ich werde seit 17 Jahren dafür bezahlt!).
>> Ich habe eine für mich effiziente Entwicklungsumgebung gefunden
>> (Slackware, Qt5, Impulse, LaTex, gnuplot, Maxima,...).
>> Ich beschäftige mich mit Algorithmen und nicht mit plotten.
>> Daher habe ich postuliert, dass ich in C++ nicht langsamer bin als
>> jemand anderes in Python.
>
> Oder anders gesagt: Jemand mit viel weniger Erfahrung kann in der
> gleichen Zeit dasselbe erreichen, nur durch Verwendung eines anderen
> Tools.
>
> Und von jemand anders ist deine Lösung dann auch nicht wartbar, weil nur
> du die Tools beherrscht. Als Bastelei für Privatzwecke okay, als
> professionelle Lösung eigentlich unbrauchbar (auch wenn mir klar ist
> dass viele Buden unprofessionelles Vorgehen dulden).

Sorry, warum soll eine Pyton Lösung professioneller sein als die 
Anwendung einer Matlab Toolbox die 100% der Anforderungen erfüllt???

Selbst irgend ein Labview Ding kann eine Aufgabe perfekt erfüllen!

Zu sagen, "das ist aber nicht python, das mache ich jetzt grundlos neu", 
das wäre wirklich unprofessionel!

Auf die anderen Unterstellungen will ich garnicht mehr eingehen.

73

von Hans (Gast)


Lesenswert?

Claidhem schrieb:
> Nein. Ich sage nur, dass es unprofessionell ist, ein Werkzeug aufgrund
> der persönlichen Vorlieben zu wählen, wenn das Arbeitsergebnis für
> andere deutlich schwerer zu warten ist.

Aha...

TIOBE Index for April 2018
Apr 2018   Apr 2017   Change   Programming Language   Ratings   Change
1  1    Java  15.777%  +0.21%
2  2    C  13.589%  +6.62%
3  3    C++  7.218%  +2.66%
4  5  change  Python  5.803%  +2.35%

C/C++ kann keiner Warten... i.O.

und auf welche wundersame Weise löst Python alle Wartbarkeitsprobleme 
dieser Welt???

In selber weise, wieso in aller Welt setzt du einen Algorithmus in 
Python schneller um als jemand in einer beliebigen anderen Sprache ???



73

von Claidhem (Gast)


Lesenswert?

Hans schrieb:
> Schön, kenne ich!
>
> aber das ist keine reine javascript-browser lösung die ich postuliert
> habe, sondern ein Frontend für python!

Dash, Bokeh.

Hans schrieb:
> Auch hier bringt mir python keine benefits zu meinen bisherigen tools.
> sorry, ist so!

Aber auch kein Nachteil, außer dass du es nicht magst.

Hans schrieb:
> Ich hatte ein C gerüst. Dazu habe eine mächtige Library (Qt) ausgesucht
> die mir einen "Parser" (zufällig Javascript, hätte auch python, lua oder
> sonst was sein können!) mitbringt und dazugelinkt.

Wie gesagt, bei Profis geht es nicht darum, was du gerade zur Verfügung 
hast. Sondern darum, was andere nutzen können.

Wenn du nur fröhlich Lösungen für dich daher bastelst, kannst du 
natürlich immer nehmen was du willst.

Hans schrieb:
> Sorry, warum soll eine Pyton Lösung professioneller sein als die
> Anwendung einer Matlab Toolbox die 100% der Anforderungen erfüllt???

Muss es nicht sein. Es ging nur um die Behauptung, dass deine selbst 
zusammengestrickte C++-Umgebung genauso gut handhabbar sei als eine 
Python-Umgebung. Und das stimmt im professionellen Umfeld eben nicht.

Hans schrieb:
> C/C++ kann keiner Warten... i.O.

Du hast es nicht kapiert, worum es hier geht. Für normale Anwendungen 
und Embedded ist C/C++ eine feine Sache. Aber nicht für die hier 
diskutierten Anwendungen.

Hans schrieb:
> In selber weise, wieso in aller Welt setzt du einen Algorithmus in
> Python schneller um als jemand in einer beliebigen anderen Sprache ???

Deine Behauptung war es, dass du in C++ gerade mal so schnell bist wie 
jeder andere in Python.

von ~Mercedes~ (Gast)


Lesenswert?

Hört auf zu streiten, nehmt Purebasic.
Dessen Kompilate sind absolut schnell und klein.
"Hallo Welt" ist zum Beispiel schlappe 3 KB groß.

Schaut Euch Borland C++ an. 300 KB! ;-O
Oder Python, wo ja der ganze "Interpreter" mitgeschleppt
werden muß! ;-O

Naja, ich würde für wissenschaftiche Arbeit Python UND C++
nehmen.
Ja, man kann mit Python auch Spiele schreiben.
Oder Programme, um die DNA zu simulieren, wie meine
Tutorin.

Aber eine vernünftige Wrapper Schnittstelle zu C++ Bibliotheken
ist dabei Pflicht!
Bedenkt bitte auch, das bei diesem Konzept Eure Arbeit praktisch
Opensource wird, da Python eine "Interpretersprache" ist!

mfg

von Hans (Gast)


Lesenswert?

Claidhem schrieb:
> Du hast es nicht kapiert, worum es hier geht. Für normale Anwendungen
> und Embedded ist C/C++ eine feine Sache. Aber nicht für die hier
> diskutierten Anwendungen.

habe ich ein einziges mal von embedded anwendungen gesprochen???

Und von "normalen Anwendungen" wird hier auch selten gesprochen...




Claidhem schrieb:
> Hans schrieb:
>> Auch hier bringt mir python keine benefits zu meinen bisherigen tools.
>> sorry, ist so!
>
> Aber auch kein Nachteil, außer dass du es nicht magst.

Genau! Habe ich auch nicht behauptet.

Ich habe folgendes geschrieben:

Hans schrieb:
> Ich mache für meine Diss alles in C++.
>
> Grund: Ich kann so gut C++, dass ich damit gleich schnell bin wie jemand
> anderes in Python.

Und wieder fasse ich zusammen:

Wirklich Zeit rennt in andere Dinge als Kodierung.
Da hatte ich gott sei dank schon teilweise Zustimmung erhalten.

Und unterstellt habe ich nur, dass mir_ für _meine Aufgabe Python 
keinen Vorteil bietet hinsichtlich Umsetzungszeit! Ich sagte, ich sei 
bei meinem Problem gleich schnell da ich die Sprache gut kenne.

Ich habe auch schon einige, bisher nicht widerlegte Begründungen dazu 
gegeben!

Corner cases.. zugegeben... aber vieles in der Wissenschaft ist ein 
corner-case und trotzdem interessieren sich Menschen genau für dieses 
Detail!


Claidhem schrieb:
> Hans schrieb:
>> Sorry, warum soll eine Pyton Lösung professioneller sein als die
>> Anwendung einer Matlab Toolbox die 100% der Anforderungen erfüllt???
>
> Muss es nicht sein.

Danke!




Claidhem schrieb:
> Wie gesagt, bei Profis geht es nicht darum, was du gerade zur Verfügung
> hast. Sondern darum, was andere nutzen können.

Siehe oben. Ist doch scheiß egal in welcher Sprache etwas geschrieben 
ist!
Pflichte ich dir total bei!

Der JS solver von dem ich in meinem 1.  posting geschrieben habe geht 
mit ein paar schiebereglern im HTML als ZIP an eine Behörde.
Nach Rücksprache war das die einfachste Methode denen  "nutzbare 
Programme" einfach so zur Verfügung zu stellen.
Dieses Detail kann auch  "Nutzbarkeit" bedeuten.

gut, corner-case...ok!

Wartbar/Nutzbar wirds in vielen Fällen aber auch durch ausreichende 
Dokumentation (und die kann auch unterschiedlichst ausfallen).

Das nimmt dir keine Sprache ab. Nichtmal  UML kommt meiner erfahrung 
nach ohne zusätzlicher doku aus. vllt. habe ich das bisher auch nie 
richtig gemacht oder auch nie richtig gemacht gesehen... ist ja auch 
wieder "corner-case"

Manche Dinge sind aber schon durch die Unit-Tests ausreichend erklärt... 
hängt vom Problem ab das man löst.


Hans schrieb:
> Claidhem schrieb:
>> Nein. Ich sage nur, dass es unprofessionell ist, ein Werkzeug aufgrund
>> der persönlichen Vorlieben zu wählen, wenn das Arbeitsergebnis für
>> andere deutlich schwerer zu warten ist.


Bei der Umsetzung wird man immer den einen oder anderen Kompromiss 
eingehen müssen. Ich bin mir sicher, python bietet wesentlich mehr 
Packages für lineare Algebra an als nur numpy und tensor flow (wenn man 
das als solches bezeichnen will).

wenn ich jetzt code für die eine lib schreibe und meine kollegen 
mehrheitlich die andere nutzen (oder sich diese Vorlieben verschieben... 
warum auch immer...), dann ist das auch semi-optimal.

Wie kommst du jetzt darauf python würde daran was ändern???



Ich habe tatsächlich eine Zeit lang c in einem embedded umfeld 
programmiert.
Da hatten wir einen Styleguide der gewisse Konstrukte/Sprachelemente 
verbot.

Hauptgrund dafür war meist die Lesbarkeit.

Dafür war die klammersetzung und so völlig wurscht!
Wir hatten definiert in welche Form  der pretty-printer im commit hook 
den code bringen soll.

Dazu war definiert was in einem design-dokument stehen muss und wer in 
welchem "subsystem" der "architekt" war.

DAS erzeugte Wartbarkeit.

statt c hätten wir auch ada verwenden können ...


73

von Sheeva P. (sheevaplug)


Lesenswert?

Hans schrieb:
> Nein, du hast vermutet ich würde ahnungslos daherplappern.

Da Du bereits mehrfach erwähnt hast, daß Du in die Dokumentation 
geschaut hast, ist das ja wohl auch zumindest anfangs so gewesen -- Du 
weißt schon, als Du noch erzählt hast, Python werde nur genutzt, weil es 
so cool sei.

> Sheeva P. schrieb:
>> Daß eine Standard-Distribution von Python nicht alles sofort
>> out-of-the-box kann, ändert nichts daran, daß Python eine Wunderwaffe
>> ist und ganz alleine vermutlich Deinen ganzen Zoo ersetzen könnte.
>
> Ersetzen, mag sein. Aber ist es in jedem Fall besser???

Hat das denn jemand behauptet? Nö. Vergiß' nicht: es warst Du, der mit 
der oben erwähnten steilen Behauptung in diesen Thread eingestiegen ist.

> Bezweifel ich.

Das kannst Du meinetwegen halten, wie Du magst. Ich habe kein Interesse 
daran, missionarisch tätig zu sein oder zu werden. Allerdings möchte ich 
auch nicht als blöder Hipster abqualifiziert werden, weil ich auch eine 
Skriptsprache nutze, welche sich in der Datenwissenschaft und in vielen 
anderen Bereichen größter Beliebtheit erfreut.

Daß Python so beliebt, und in manchen Kreisen meinetwegen auch cool ist, 
dafür gibt es gute Gründe. Leistungsfähigkeit, Performanz, Flexibilität, 
eine herausragende Infrastruktur, ein besonders einfacher Zugang und die 
Plattformunabhängigkeit wurden bereits genannt. Noch nicht genannt wurde 
die Integration in andere Ökosysteme wie Java und .NET und noch so viele 
andere Fähigkeiten, daß es fast eine eigene ISBN dafür braucht. ;-)

Letzten Endes hast Du das Pferd also ganz grundsätzlich von der falschen 
Seite aus aufgezäumt: Python wird nicht deswegen so gern benutzt, weil 
es cool ist, sondern es ist so beliebt und, meinetwegen, cool geworden, 
weil es so vielseitig und so mächtig ist. Du verwechselst Ursache und 
Wirkung.

> Sheeva P. schrieb:
>> Erfreulicherweise bringt Flask bereits einen eigenen Entwicklungsserver
>> mit und ist daher für soetwas genau das: standalone. Kurz gesagt, sieht
>> eine minimale Flask-Applikation etwa so aus:
>
> Ich meinte pures html5... Kann erstaunliches... Dein flask Beispiel wäre
> mit HTML,head und Body tags dann ein 7 Zeiler bei minimalem Aufwand.

Na wenn das so einfach ist, dann zeig diesen 7-Zeiler doch einfach. Dann 
können wir uns mal gemeinsam anschauen, ob da eine Routing-Engine, eine 
Template-Engine, ein Debuggingwerkzeug und auch nur ein Bruchteil jener 
vielen nützlichen Werkzeuge enthalten ist, die Flask mitbringt. Wenn wir 
schon dabei sind, können wir gleich auch nochmal schauen, ob sich damit 
ebenso einfach beliebige Datastore-Frameworks und diverse Erweiterungen 
verwenden lassen, wie das bei Flask der Fall ist. ;-)

> Ich habe geschrieben, dass in meinem Anwendungsfall c++ aus mehreren
> Gründen nicht wesentlich aufwendiger ist.
>
> Ich habe geschrieben, dass ich für viele Dinge (für mich) sehr
> effiziente Tools gefunden habe.

Dabei vergißt Du natürlich den Aufwand, diese Vielzahl an Werkzeugen und 
Bibliotheken zu suchen, zu lernen, und zu evaluieren, und nennst das 
dann einen seriösen Vergleich? Genau darin liegt eine der wesentlichen 
Stärken von Python, nämlich in der bereits erwähnten, sehr starken 
Infrastruktur, die eine enorm große Bandbreite von Anwendungsfällen 
abdeckt und dennoch konsistent, stabil und sehr leicht nutzbar ist, 
namentlich über den oben bereits erwähnten Paketmanager pip.

> Ich habe nie behauptet, ich würde alles nur in c++ machen!

Aus mir unerfindlichen Gründen hatte ich Deinen ersten Beitrag in diesem 
Thread allerdings ganz anders verstanden:

Hans schrieb:
> Dirk schrieb:
>> Weiss jemand den Grund für Python für wissenschaftliche Projekte?
>
> weil es gerade "cool" ist!
>
> Ich mache für meine Diss alles in C++.
>
> Grund: Ich kann so gut C++, dass ich damit gleich schnell bin wie jemand
> anderes in Python.

Es warst doch Du, der das geschrieben hat, oder? Wie sonst wolltest Du 
das verstanden wissen als, frei übersetzt: "Python ist was für blöde 
Hipster, nur C++ ist gut genug für richtige Profis"? Von jemandem, der 
gerade seine Dissertation verfaßt und somit wohl kurz vor dem Ende einer 
akademischen Ausbildung steht, kann man doch wohl erwarten, daß er weiß, 
was er sagt, und versteht, welche Hybris aus solchen Aussagen spricht.

Wenn nicht, solltest Du es sehr dringend lernen, sonst wirst Du damit im 
Berufsleben noch böse auf die Nase fallen. Ich jedenfalls habe ein paar 
Kollegen, die ziemlich allergisch darauf reagieren würden, wenn ihnen 
ein frisch aus der Uni gepurzelter Jüngling irgendwelchen Bullshit über 
ihre Werkzeuge erzählen und ihnen die Professionalität absprechen 
wollte. ;-)

> Ich habe nur festgestellt, dass es mehr als nur ein einziges "richtiges"
> Werkzeug gibt!

Auch das hatte ich bei Deinem ersten Beitrag ganz anders verstanden.

> Sheeva P. schrieb:
>> Anwendungsfälle, in denen man so etwas brauchen könnte, vermutlich
>> dadurch abfackeln, indem man wiederum einen Python-Interpreter in das
>> von Boost.Python erzeugte Shared Object einbaut
>
> Sorry, aber genau um das geht's.
>
> Viele Wege führen nach Rom!

Mag sein, daß es dir mittlerweile darum geht. Mir hingegen ging es 
zunächst darum, die Frage des TO zu beantworten, warum Python in der 
Wissenschaft so beliebt ist. Und nachdem ich diese Frage dann 
beantwortet hatte und Du mit Deinen steilen Thesen aus dem zitierten 
Eingangsbeitrag auftratest, wollte ich diesen Unsinn nicht 
unwidersprochen stehen lassen.

> Und Python löst nicht alle Problem.

Das hat doch auch niemand behauptet, und es stimmt natürlich: Python 
kann ganz sicher nicht alle Probleme lösen, die die Welt immer noch mit 
Krieg, Hunger und Armut hat. Es wäre aber auch ein bisschen vermessen, 
das von einer Programmiersprache zu erwarten. Für die meisten 
softwaretechnischen Probleme hingegen ist es ziemlich gut geeignet, 
solange es nicht gerade um spezielle Nischenthemen wie Embedded-, 
Kernel- und Treiberentwicklung oder hartes Numbercrunching unter 
Echtzeitbedingungen geht. Wobei auch das noch nicht ganz den Tatsachen 
entspricht: Im Embedded-Bereich soll Micropython auf besseren 
Mikrocontrollern gut funktionieren, höre ich. ;-)

> Möglicherweise aber für dich...

Nein, stell' Dir vor: sogar bei mir gibt es regelmäßig Dinge, für die 
ich andere Werkzeuge anstelle Pythons benutze. Triggerfunktionen in 
PostgreSQL zum Beispiel könnte ich zwar in Python schreiben, mach das 
aber nur in sehr wenigen Ausnahmefällen, weil PL/PGSQL direkt auf dem 
PostgreSQL-Core läuft.

Für andere Programme benutze ich hingegen regelmäßig C++, mal 
eingebettet in Python und ein andermal auch standalone. Und dann benutze 
ich auch immer mal wieder die Bash, GNU Make, Java, ECMAScript und Perl 
-- nämlich immer genau dann, wenn das sinnvoll, also für den jeweligen 
Anwendungsfall die einfachste, schnellste, wartbarste, kurz: die 
langfristig effizienteste sowie natürlich eine hinreichende Lösung 
bietet.

Der Punkt ist nämlich, daß Python zwar ein hervorragender Allrounder 
ist, trotzdem aber manchmal andere Werkzeuge besser zum Anwendungsfall 
passen. Ein Profi versteift sich dann nicht auf ein bestimmtes Werkzeug 
wie Du in Deinem Eingangsposting, sondern greift in eine (idealerweise) 
gut gefüllte Werkzeugkiste und wählt daraus ein möglichst gut passendes 
Werkzeug.

von Karl (Gast)


Lesenswert?

~Mercedes~ schrieb:
> Hört auf zu streiten, nehmt Purebasic.
> Dessen Kompilate sind absolut schnell und klein.

Das stimmt, aber leider läuft Purebasic nicht auf dem Raspberry und es 
wird wohl nie einen Port geben.

von Sheeva P. (sheevaplug)


Lesenswert?

Hans schrieb:
> Vancouver schrieb:
>> Und nun liebe Kinder hört ihr wieder eine Folge aus der Serie "Meine
>> Lieblingssprache ist viel besser als Deine Lieblingssprache. "
>
> Dazu macht es Sheeva Plug es gerade!

Nein, Du hast es dazu gemacht. Siehe dazu meinen gerade geposteten 
Beitrag mit einem Zitat Deines Eingangspostings.

> Vancouver schrieb:
>> Mal ehrlich: manche Dinge gehen besser in Python, andere in C++. Das
>> hängt alles von den Requirements ab.
>
> Nichts, aber auch gar nichts anderes habe ich behauptet!

Aber ja doch, siehe Dein Eingangsposting.

> Mein 2. Post:
> Hans schrieb:
>> Grafiken für wissenschaftliche Publikationen lässt man IMHO am besten
>> latex zeichnen...pgfplots sei dank :)

Da warst Du immerhin schon klug genug, das mit dem "IMHO" nur als eine 
persönliche Meinungsäußerung zu entschärfen. Aber klar, wer braucht 
schon sowas wie Interaktion, Zoomen, Ein- und Ausblenden, ... sowas 
brauchen ja nur Weltfremde mit Scheuklappen, wer sonst?

> Hans schrieb:
>> IMHO habe nicht ich die Scheuklappen auf, sondern 90% der
>> mitkommentierenden. Wie oben beschrieben nutze ich viele
>> unterschiedliche Tools.

Du benutzt einen Haufen Drittwerkzeuge und kaprizierst Dich ansonsten 
auf genau eine Programmiersprache -- während die, welchen Du 
"Scheuklappen" aufzuhaben vorwirfst, jeder neben Python auch noch andere 
Sprachen kennen und nutzen. Ausgerechnet Du, der Du Python "schon als 
Sprache" nicht magst und darum nicht lernen magst (Spitzenbegründung: 
der grüne Akkuschrauber gefällt mir nicht, darum drehe ich meine 
Schrauben lieber von Hand ein), und bisher nicht mehr vorzuweisen hast 
als eine akademische Ausbildung, wirfst berufserfahrenen Profis vor, sie 
hätten "Scheuklappen" auf, seien "weltfremd" und im Grunde nur Fänbois 
eines Hype?

Respekt, mein Junge, darauf muß man erstmal kommen. ;-)

Beitrag #5387488 wurde von einem Moderator gelöscht.
von Sheeva P. (sheevaplug)


Lesenswert?

~Mercedes~ schrieb:
> Aber eine vernünftige Wrapper Schnittstelle zu C++ Bibliotheken
> ist dabei Pflicht!

Check.

> Bedenkt bitte auch, das bei diesem Konzept Eure Arbeit praktisch
> Opensource wird, da Python eine "Interpretersprache" ist!

Man kann Python-Code auch in Python-Bytecode, Java-Bytecode, oder erst 
in C++-Code und dann in nativen Binärcode übersetzen.

von Sheeva P. (sheevaplug)


Lesenswert?

Hans schrieb:
> Claidhem schrieb:
>> Hans schrieb:
>>> Auch hier bringt mir python keine benefits zu meinen bisherigen tools.
>>> sorry, ist so!
>>
>> Aber auch kein Nachteil, außer dass du es nicht magst.
>
> Genau! Habe ich auch nicht behauptet.

Doch.

> Wirklich Zeit rennt in andere Dinge als Kodierung.

Ja:
1. Entwurf,
2. Planung,
3. Prototyping
4. Evaluieren,
5. Coding,
6. Debugging,
7. Performanceoptimierung,
8. Deployment,
9. Pflege.

Zumindest für die Schritte 3 bis 9 bieten Python (und übrigens je nach 
Anwendungsgebiet und -Fall auch andere Skriptsprachen) klare Vorteile.

> Da hatte ich gott sei dank schon teilweise Zustimmung erhalten.

So ein Argumentum ad populum ist ja auch immer wieder lustig.

> Und unterstellt habe ich nur, dass mir_ für _meine Aufgabe Python
> keinen Vorteil bietet hinsichtlich Umsetzungszeit! Ich sagte, ich sei
> bei meinem Problem gleich schnell da ich die Sprache gut kenne.

Nichtmal Bjarne Stroustrup, Herb Sutter, Nikolai Josuttis, Bruce Eckel, 
Rainer Grimm oder Scott Meyers schaffen das. Trust me on this one.

von Hans (Gast)


Lesenswert?

Sheeva P. schrieb:
>> Und Python löst nicht alle Problem.
>
> Das hat doch auch niemand behauptet

doch wurde es, mehrfach!

beispielsweise hier:
Sheeva P. schrieb:
>> Nur sehe ich Python nicht als diese Wunderwaffe.
>
> Aber genau das ist es, und zwar nicht zuletzt auch...
>

Und komm mir jetzt bitte jetzt nicht wieder mit "es gibt aber noch 
Möglichkeit C um das mit python zu tun".

Wie z.B. hier:
Sheeva P. schrieb:
>> Sheeva P. schrieb:
>>> lohnt sich häufig ein kleiner Webservice zum Beispiel mit Flask
>>
>> Standalone reicht oft schon ... Die D3 ist wirklich nett...
>
> Erfreulicherweise bringt Flask bereits einen eigenen Entwicklungsserver
> mit und ist daher für soetwas genau das: standalone.

Sheeva P. schrieb:
>> Ich meinte pures html5... Kann erstaunliches... Dein flask Beispiel wäre
>> mit HTML,head und Body tags dann ein 7 Zeiler bei minimalem Aufwand.


Ich meinte was ich schrieb. HTML+JS+CSS-Files die ich als zip einem 
anwender schicken kann.
Und nein, nicht jeder kann sich schnell mal python installieren, da es 
sicherheitsrichtlinien gibt, die das in der heutigen IT verbieten 
können.

Wenn du auf jedes x-beliebige problem mit kanonen schießt... gern! mach!

Aber erkläre mich nicht für ignorant!

Ich habe leider im Tagesgeschäft sehr oft solche fälle!



Problem A ist vllt. mit Werkzeug X und Y gut zu lösen aber wenn jemand 
den masochistischen drag verspürt Problem C im 68000 assembler zu 
implementiern wird er schon wissen warum!



Sheeva P. schrieb:
> ür andere Programme benutze ich hingegen regelmäßig C++, mal
> eingebettet in Python und ein andermal auch standalone. Und dann benutze
> ich auch immer mal wieder die Bash, GNU Make, Java, ECMAScript und Perl
> -- nämlich immer genau dann, wenn das sinnvoll, also für den jeweligen
> Anwendungsfall die einfachste, schnellste, wartbarste, kurz: die
> langfristig effizienteste sowie natürlich eine hinreichende Lösung
> bietet.

na, schau... tatsächlich... ähnlich wie bei mir...



Sheeva P. schrieb:
> Allerdings möchte ich
> auch nicht als blöder Hipster abqualifiziert werden, weil ich auch eine
> Skriptsprache nutze, welche sich in der Datenwissenschaft und in vielen
> anderen Bereichen größter Beliebtheit erfreut.
>

Das habe ich nicht!

ICH wurde mit einer "Hipster-App" in verbindung gebracht!!!!


Jedenfalls will ich nicht als irgnorrant hingestellt werden weil ich an 
anderen Problemen_ arbeite die _andere Werkzeuge erfordern!

Oder das ich nur zu dumm/einfältig/ignorrant/... bin das "richtige" tool 
zu verwenden.... so stand es oben mehrfach.

Du fühlst dich als "profi" anscheinend gekränkt weil ich behaupte 
meine Aufgabenstellungen ohne Python genau so gut erledigen zu können 
wie mit.

Aber ich habe eine verschrobene Auffassung und verschleiere meine 
inkompetenz. (steht so von andern personen oben geschrieben)



hast du schonmal überlegt was ich mit 17 jahren berufserfahung alles 
ausprobiert haben könnte????

Ja, Python war dabei! Vielleicht nicht in ausreichender Tiefe damit sich 
mir alle dir wichtigen vorteile erschließen, aber bei dem Ausmaß an 
Beleidigungen die diese nutzergemeine hier so von sich gibt...naja



C/C++ sind die einzigen compilersprachen die ich regelmäßig verwende. 
Da mache ich keinen hehl darum.

Mit octave, scilab und matlab fahre ich sehr gut.
90% der aufgaben die ich damit bearbeite laufen auf eingebaute 
funktionalitäten raus. also bei _mir, jetz gerade_ kein bedarf hier 
nachzujustieren.
1
import numpy as np
2
import matplotlib.pyplot as plt
3
s = np.abs(np.fft.rfft(np.loadtxt("test.csv").T))
4
plt.plot(np.fft.rfftfreq(s.shape[0]), s)
5
plt.savefig("test.pdf")

kann ich in scilab  mit
1
plot2d(abs(fft(csvRead("test.csv"))));
2
xs2pdf(gcf(),filename);

Und??? Ich bin mir sicher, wir wären gleichzeitig am ziel gewesen!



Und bei meinem Dissertationsvorhaben spielen dinge die ich in c++ machen 
kann eine große rolle!
Ich habe oben genau beschrieben was meine beweggründe waren!

Dagegen sind z.B. "das KO für C++", nämlich plots, nicht mein 
Hauptproblem.



Sheeva P. schrieb:
> Hans schrieb:
>> Claidhem schrieb:
>>> Hans schrieb:
>>>> Auch hier bringt mir python keine benefits zu meinen bisherigen tools.
>>>> sorry, ist so!
>>>
>>> Aber auch kein Nachteil, außer dass du es nicht magst.
>>
>> Genau! Habe ich auch nicht behauptet.
>
> Doch.

Wo??? Zeig!




Sheeva P. schrieb:
>> Und unterstellt habe ich nur, dass mir_ für _meine Aufgabe Python
>> keinen Vorteil bietet hinsichtlich Umsetzungszeit! Ich sagte, ich sei
>> bei meinem Problem gleich schnell da ich die Sprache gut kenne.
>
> Nichtmal Bjarne Stroustrup, Herb Sutter, Nikolai Josuttis, Bruce Eckel,
> Rainer Grimm oder Scott Meyers schaffen das. Trust me on this one.

Echt? Begründe es jetzt endlich!

Vor allem weil du ja gar noch nicht weißt was ich treibe.
Ich weiß es von dir auch nicht!





Sheeva P. schrieb:
>> Wirklich Zeit rennt in andere Dinge als Kodierung.
>
> Ja:
> 1. Entwurf,
> 2. Planung,
> 3. Prototyping
> 4. Evaluieren,
> 5. Coding,
> 6. Debugging,
> 7. Performanceoptimierung,
> 8. Deployment,
> 9. Pflege.
>
> Zumindest für die Schritte 3 bis 9 bieten Python (und übrigens je nach
> Anwendungsgebiet und -Fall auch andere Skriptsprachen) klare Vorteile.

benenne sie jetzt! bitte!!!!

Warum codierst du in python schneller???
wieso optimierst du in python schneller???
warum soll die pflege mit python einfacher sein???
warum ist bei dir das deployment einfacher????

zum 9. sage ich jetzt nochwas:

es gibt winqtdeploy und die windows zip-möglichkeit.

Deployment KANN heißen: schicke ein standalone laufendes paket in form 
einer zip-file an den benutzer.

In dem Fall bringt dir python keinen vorteil.

jaja, corner-cases...

alle deine "kunden" sind in der lage pip auf der command-line zu nutzen.
alle deine cloud server sind entsprechend gemanaged und überhaupt,
python kannst du auch zu einem binary kompilieren.

Gut, ich hab verstanden!


Aber wundere dich bitte nicht von anderen als Fänboi hingestellt zu 
werden!
Ich habe das wohlgemerkt nicht getan und werde es nicht tun.



Schließe bitte nicht von deinen Anforderungen auf die allumfassende 
Eignung von Python...

Du hast sogar geschrieben, du nutzt je nach Eignung auch andere Dinge!

Jetzt mach bitte kein Drama wenn ich sage, dass ich für meine 
Aufgabenstellung keine Vorteile aus Python ziehen kann.


Vom Ton angreifend wurde ich erst nach solchen dummheiten:

Der Andere schrieb:
> Hans, du musst mal ein bischen über deinen Teller-(oder Rechner)rand
> hinausschauen.
> Ein Pytonscript kann ich nehmen und auf einem Rechner oder einem
> virtuellen Cloudrechner ausführen, völlig problemlos.
>
> Dein toller C Code muss ich erst mal compilieren, dann muss ich die
> passenden binären 3rd party libs auftreiben usw bis ich das alles
> vieleicht irgendwann zusammengelinkt und ans Laufen kriege.
> Mit Sprachen wie Phyton oder Java nehme ich den Sourcetopf und habe den
> Kram in Nullkommanix am Laufen egal auf welcher Plattform.
>
> Und genau das macht den Vorteil aus.

Wenn ich numpy kein schnelles BLAS findet, dann verwendet es das auch 
nicht.
Wenn ich das aber am cloud-rechner haben will, dann muss ich die 
"passende binäre 3rd party lib" auftreiben. Ja, es mag vllt. auch so 
rennen. Aber völlig problemlos würde ich das nicht nennen!

Java ist im allgemeinen genau so wenig "Nullkommanix" kompiliert wie C.

Und jede Plattform hat ihre Eigenheiten.

Scheiße, üblicherweise hängts sogar ab wie die platte formatiert ist ob 
z.B. Groß/Klein im Filenamen eine rolle spielt oder nicht.
Von unterschiedlichen Fähigkeiten in der Gui ganz zu schweigen.

Kann die Plattform kein OpenGL, wird PyQt sich genau so schwer tun wie 
Qt unter C++ oder Qt mit QML das zu nutzen!

Sheeva P. schrieb:
> (Spitzenbegründung:
> der grüne Akkuschrauber gefällt mir nicht, darum drehe ich meine
> Schrauben lieber von Hand ein)

Hör auf mir sachen anzudichten!

Hans schrieb:
> Aber für gewöhnlich gibt's im Baumarkt mehrere Typen Akkuschrauber.. man
> muss einfach nur einen in der Werkzeugkiste haben!

73

von Borislav B. (boris_b)


Lesenswert?

So, hier ein kurzer Zwischenstand:

[Hans]
Beiträge in diesem Thread:    18
Getippte Zeichen:             34888
Verschwendete Lebenszeit [1]: 174 Minuten

[Sheeva Plug]
Beiträge in diesem Thread:    17
Getippte Zeichen:             23232
Verschwendete Lebenszeit [1]: 116 Minuten

[Sven B.]
Beiträge in diesem Thread:    10
Getippte Zeichen:             11530
Verschwendete Lebenszeit [1]: 58 Minuten

[C++Daddy]
Beiträge in diesem Thread:    4
Getippte Zeichen:             3392
Verschwendete Lebenszeit [1]: 17 Minuten

[Claidhem]
Beiträge in diesem Thread:    3
Getippte Zeichen:             1797
Verschwendete Lebenszeit [1]: 9 Minuten


[1]: Bei einer Durchschnittlichen Tippgeschwindigkeit von 200 zeichen 
pro Minute.
PS: Das verwendete wissenschaftliche Auswerteskript wurde natürlich in 
C# geschrieben :-)

: Bearbeitet durch User
von Hans (Gast)


Lesenswert?

Besten Dank für diesen Hinweis...

Wie wär's wenn ein Mod den Thread komplett schließt??? Kommt doch so 
oder so nix raus.

73

von Egon N. (egon2321)


Lesenswert?

Python hat den Vorteil dass es fast alles fertig gibt. Möchte man die 
Messdaten vom Oszi aufbereiten? Einfach fertiges CSV Import Beispiel als 
Vorlage nehmen, Export entsprechend formatieren, fertig ist das Programm 
in weniger als 20 Minuten. Fällt mir auf dass ich etwas ändern muss 
ändere ich das schnell, muss nix neu kompilieren, fertig aus.

Für mich fast das Arduino der PC Welt. ;)

Wenn es performant sein soll ist C++17 mitsamt boost, parallel mode 
libstdc++ und z.B. gmplib natürlich auch interessant.

FORTRAN soll auch nett sein wenn man auf fertige Bibliotheken 
zurückgreifen möchte.

Processing wird für Einsteiger übrigens auch gerne für 
Videoerkennungskram genutzt, basiert auf der Arduino IDE. Kann man sehr 
leicht an z.B. reactivision anbinden, wobei die Performanz nicht 
sonderlich überragend ist...

Beitrag #5388039 wurde von einem Moderator gelöscht.
Beitrag #5388138 wurde von einem Moderator gelöscht.
Beitrag #5388150 wurde von einem Moderator gelöscht.
Beitrag #5388730 wurde von einem Moderator gelöscht.
von Sheeva P. (sheevaplug)


Lesenswert?

Hans schrieb im Beitrag #5388138:
> Ihm ist einfach kein Argument mehr eingefallen warum die matplotlib
> (oder irgend ein anderes Python-Modul) für mich  besser wäre!

Wie kommst Du bloß darauf, daß es mir darum ginge? Ich widerspreche nur 
Deinem Python-Bashing, mit dem Du uns Python-Entwicklern pauschal die 
Professionalität und Rationalität bei der Auswahl unserer Werkzeuge für 
unsere Anwendungsfälle absprichst. Was Du tust und welche Werkzeuge Du 
benutzt, ist mir erstens egal und zweitens auch nicht mein Thema.

von Horst (Gast)


Lesenswert?

Mir scheint, wir nähern uns wieder mal dem "Peak of inflated 
expectations" ...

https://en.wikipedia.org/wiki/Hype_cycle

Was ist eigentlich mit Java los? Das ist doch plattformunabhängig (und 
damit besser). Und mit dem brandneuen Jazelle Befehlssatz sogar 
zukünftig auf allen Mikrocontrollern. C wird man dann nur noch brauchen 
um für Demonstrationszwecke Wild-pointer und Memory-Leaks zu 
produzieren. Außerdem gibt es in Java kein Goto. Die Embedded 
Entwicklung auf 8-Bit MCUs passiert morgen überwiegend in Java (habe ich 
erwähnt, das ist plattformunahängig).

Die Konfiguration mache ich dazu immer in XML - wegen guten Lesbarkeit. 
Selbst mit 1000 Zeilen einfach und intuitiv verständlich, kann jede 
Friseuse.

Dazu noch ein UML Diagramm zur Dokumentation. Alle anderen grafischen 
Veranschaulichungen versteht keine Sau. Ich erstelle Software immer so, 
dass ich mir erstmal für 20T Euro ein IBM Produkt kaufe und die 
blinkende LED dann mit 20 Seiten verschiedener UML Diagrammen entwerfe. 
Da UML, versteht jeder die blinkende LED sofort, was mich ohne UML 
Wochen gekostet hätte.

In der Zukunft wird Software ohnehin nur noch modellbasiert entwickelt. 
Die Zukunft wird so aussehen, dass man nur noch einen LED Baustein auf 
einen Timerbaustein ziehen muss und dann auf Play klickt. Die Hälfte der 
Entwicklungsabteilung kann man auch entlassen, da mit 
Produktivitätstools wie DOORS und Rhapsody nur noch die Hälfte an Leuten 
notwendig sind. Round-trip engineering ist dabei unnötig und diff ist 
von gestern und überbewertet. Ein textuelles diff ist außerdem schwer 
verständlich, das versteht eh keine Sau, weswegen es besser ist, farbige 
Ausdrucke in Leinwandgröße auf dem Boden liegend auf Änderungen hin zu 
begutachten.

von ~Mercedes~ (Gast)


Lesenswert?

Horst meinte:

> In der Zukunft wird Software ohnehin nur noch modellbasiert entwickelt.
> Die Zukunft wird so aussehen, dass man nur noch einen LED Baustein auf
> einen Timerbaustein ziehen muss und dann auf Play klickt.

So funktioniert der Embarcadero C++ Builder schon heute,
wenn man da die VCL oder Firemonkey benutzt.
Trotzdem ist noch ne Menge "Glue - Code" zwischen den
Komponenten nötig.

Auch Together, die Rose oder Telelogic Tau bauen ja nur Rahmen.
Meinst Du wirklich das sich dies in absehbare Zeit wirklich
radikal ändern wird?

mfg

von Horst (Gast)


Lesenswert?

~Mercedes~ schrieb:
> Horst meinte:
>
>> In der Zukunft wird Software ohnehin nur noch modellbasiert entwickelt.
>> Die Zukunft wird so aussehen, dass man nur noch einen LED Baustein auf
>> einen Timerbaustein ziehen muss und dann auf Play klickt.
>
> So funktioniert der Embarcadero C++ Builder schon heute,
> wenn man da die VCL oder Firemonkey benutzt.
> Trotzdem ist noch ne Menge "Glue - Code" zwischen den
> Komponenten nötig.
>
> Auch Together, die Rose oder Telelogic Tau bauen ja nur Rahmen.
> Meinst Du wirklich das sich dies in absehbare Zeit wirklich
> radikal ändern wird?
>
> mfg

Dass Du den vor Ironie triefenden Beitrag scheinbar nicht als solchen 
erkannt hast, bereitet mir ernsthafte Sorgen...

Die kurze Übersetzung ins Nicht-ironische ist: Das waren alles "inflated 
expectations" auf dem Höhepunkt des jeweiligen Hype Cycles.

von ~Mercedes~ (Gast)


Lesenswert?

Horst meinte:

> Dass Du den vor Ironie triefenden Beitrag scheinbar nicht als solchen
> erkannt hast, bereitet mir ernsthafte Sorgen...


:--P

Natürlich habe ich ihn erkannt, Horst.
Trotzdem ich erst Mitte diesen Jahres 16 Jahre werde,
hab ich den ganzen Kram bereits ausprobiert.

Am Besten gefällt mir deshalb der Embarcadero C++ Builder.
Nicht nur, das damit in der Firma meines Vaters geproggt wird,
nein auch die Programmgröße hält sich in annehmbaren Grenzen.
Und, es hat einen weiteren Grund.

Schade, das es Borland nicht mehr gibt.
Borland hat uns Ossis unsere Raubkopien von C++ und
Turbo - Pascal nach der "Wende" kostenlos legalisiert.
Das vergessen wir Borland nicht.

mfg

von A.. P. (arnonym)


Lesenswert?

Borislav B. schrieb:
> [1]: Bei einer Durchschnittlichen Tippgeschwindigkeit von 200 zeichen
> pro Minute.

Wenn der ganze Ramsch in einem Lauf runtergetippt wurde...

Bedenkt man aber noch die Zeiten, um sich den Text auszudenken und 
eventuelle Tippfehler zu korrigieren, das Gesagte des Gegners zu 
kopieren und zu zerreißen das ein oder andere nochmal umzuformulieren, 
dann ist eher ein Wert von 50 Zeichen pro Minute realistischer. Dann hat 
man schon einen ehrlicheren Wert, wie viel Lebenszeit da wirklich 
vergeudet wurde (zumindest bei den Spitzenreitern :D)

von Windstark (Gast)


Lesenswert?

SciPy, Anaconda, Jupyter... und hunderte andere science Bibliotheken mit 
einer einfach zugänglichen aber mächtigen Programmiersprache. Und man 
sollte nicht vergessen das man Programmteile die in C oder C++ 
geschrieben wurden sehr leicht in Python einbinden kann. Wenn es mal 
also doch schnell sein soll muss man nicht komplett zu C/C++ wechseln.

Das ganze wird durch durch die Tatsache abgerundet dass es freie 
Software ist. Man muss für diverse Erweiterungen und weitere 
Bibliotheken keine Lizenzgebühren an ein Unternehmen abdrücken.

von Windstark (Gast)


Lesenswert?

Dr. X schrieb:
> Ist eben ein bischen so wie Arduino bei Mikrocontrollern ("welche
> Bibliotheken muss ich zusammenstöpseln?").

Ich will nicht wissen wie viel Lebenszeit du schon mit der Einstellung 
verschwendet hast und wie viel Pfuscharbeit dabei raus kam weil du 
meinst alles selber machen zu müssen.
Schon mal von Spezialisierung gehört?

Und der Vergleich mit Arduino hinkt massiv. Python Bibliotheken sind das 
selbe wie C++ Bibliotheken, etwa Boost.

von Sven B. (scummos)


Lesenswert?

Windstark schrieb:
> Und der Vergleich mit Arduino hinkt massiv. Python Bibliotheken sind das
> selbe wie C++ Bibliotheken, etwa Boost.

Nur dass ihre Anwendung gelegentlich in lesbarem Code resultiert. scnr

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.