Python - C++ Kooperation

Kritik und Vorschläge für dieses Board bitte hier rein.
Antworten
Benutzeravatar
Hannes-Spz
User
Beiträge: 123
Registriert: Sonntag 7. August 2005, 22:42

ich weiß, dass dies ein reines python-forum sein sollte und auch nicht sehr viele leute, die python kennen auch von cpp ne ahnung haben
UND natürlich, dass man zb. durch pypy es schaffen mag, GANZ ohne cpp auszukommen.

jedoch fände ich es zum beispiel interessant zu wissen, was nun schneller ist:
eine while - schleife oder eine for - schleife...
nein, in diesem beitrag geht es mir NICHT um ein solch triviales thema, sondern um den vorschlag eine art von ...
schnittstellenforum für c(pp) einzurichten, indem man auch meinetwegen auch erstmal ne linkseite entwickelt, damit dies nicht unter das gleichnamige forum für PYTHON fällt...

so können dann zb die hintergründe von einigen funktionen und anderen sachen geklärt(/analysiert) werden, was zum beispiel auch bei dem ausdruck:
for i in mein_array: ...
sinnvoll wäre, da es sowas in cpp nicht ohne weiteres gibt!
und wenn ihr es gleich mit den worten:
dafür gibts doch cpp - foren abtut, denkt bitte nochmal drüber nach, da ich selbst persönlich noch kein forum gefunden habe, was beide sachen abwickelt (py + c(pp))
und man muss es ja auch nicht auf alle weiteren sprache ausweiten, mit der begründung, dass py ja aus c/cpp kommt (wenn ich mich da grad nicht irre)

ok, also wie das forum sich auch schon genannt hat:
es ist nur ein (verbesserungs)vorschlag

liebe grüße und für alle schülerchen ncoh schöne 8 stunden ferien ;)
hannes
[size=85]"Unsere Situation ist immer die eines schwarzen Mannes der in einem schwarzen Keller einen schwarzen Hut sucht, den es vielleicht gar nicht gibt." Sir Karl R. Popper[/size]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hannes-Spz hat geschrieben:dass man zb. durch pypy es schaffen mag, GANZ ohne cpp auszukommen.
Ich komme auch mit CPython ganz ohne den C-Präprozessor aus. Und auch ohne C++ komme ich aus.
Hannes-Spz hat geschrieben:jedoch fände ich es zum beispiel interessant zu wissen, was nun schneller ist:
eine while - schleife oder eine for - schleife...
Das kannst du mit dem Modul timeit selbst messen.
Hannes-Spz hat geschrieben:vorschlag eine art von ... schnittstellenforum für c(pp) einzurichten
Was meinst du mit Schnittstelle? Die Python-C API? PyRex? boost.python? SWIG? Pyrr? Oder gar was ganz anderes?
Hannes-Spz hat geschrieben:so können dann zb die hintergründe von einigen funktionen und anderen sachen geklärt(/analysiert) werden, was zum beispiel auch bei dem ausdruck:
for i in mein_array: ...
sinnvoll wäre, da es sowas in cpp nicht ohne weiteres gibt!
Aber was hat das mit C++ zu tun? Die for-Schleife iteriert durch ein Objekt, welches die Methode __iter__ implementiert (so ganz grob). Willst du einen Code haben, wie man sowas in C++ realisiert?
Hannes-Spz hat geschrieben:dass py ja aus c/cpp kommt (wenn ich mich da grad nicht irre)
Python stammt in keinster Weise von C/C++ ab. Jediglich einer der Interpreter ist in C geschrieben. Python stammt von.. sagen wir mal von ABC ab.
Hannes-Spz hat geschrieben:es ist nur ein (verbesserungs)vorschlag
Okay... wenn mir einer sagt, was ich mir genauer unter so einem Forum vorstellen können sollte, dann können wir gerne darüber reden. Aber im Moment sehe ich den Sinn davon nicht so ganz.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Hannes-Spz
User
Beiträge: 123
Registriert: Sonntag 7. August 2005, 22:42

dass python von abc abstammt, wusste ich noch nicht,
man lernt halt immer wieder was neues :wink:

doch habe ich gerade noch mehr gelernt:
meine fragen/sätze besser zu formulieren... :?
Leonidas hat geschrieben:Hannes-Spz hat folgendes geschrieben:
jedoch fände ich es zum beispiel interessant zu wissen, was nun schneller ist:
eine while - schleife oder eine for - schleife...

Das kannst du mit dem Modul timeit selbst messen.
ich wollte zum beispiel nicht (unbedingt) die antwort auf das zeitproblem wissen, sondern mich gegen eine solche nutzung von zeitmessmethoden aussprechen...
die sache ist die:
wenn ich irgendetwas programmiere, danach aber NOCH ein script erstellen muss, um die zeit für mein erstes zu bestimmen, obwohl ich zum beispiel auch einfach in meinen quelltext schauen könnte und schlussfolgere, ob meine fkt1 oder fkt2 schneller ist:

Code: Alles auswählen

def fkt1():
    a="hi"
    b="ameise"
    c="rollo"
    d=a[0]+b[0]+[1:]
    return d.lower()
def fkt2():
    return 'lower'
ich weiß grade echt nicht, wie ihr das seht, aber für mich sieht die 2.fkt schneller aus...

wenn ich zb. mit einer programmiersprache eine neue entwickle, damit dann wieder eine und vl. das ganze nochmal, so kann ich ja wohl davon ausgehen, dass alles immer langsamer und fehlerhafter wird
(bei dem beispiel mit der zeitmessung wird der vgl. nun nicht gerade zutreffen, aber wenn halt mal die ausnahme kommt, so entwerfe ich immer mehr module/progs, die sich gegenseitig kontrollieren müssen, anstatt alles mit der ausgangssprache zu erledigen)
Leonidas hat geschrieben:Hannes-Spz hat folgendes geschrieben:
vorschlag eine art von ... schnittstellenforum für c(pp) einzurichten

Was meinst du mit Schnittstelle? Die Python-C API? PyRex? boost.python? SWIG? Pyrr? Oder gar was ganz anderes?
das war im übrigen nur mehr oder weniger scherzhaft gemeint. erkl.:
wenn ich an ein paar auswertungsdaten eines programmes ran muss, nutze ich eine schnittstelle um nachzusehen,
wenn ich den zusammenhang zw. py und c (auch wenn ich jetzt des besseren belehrt wurde) wissen mag, nutze ich eine "schnittstelle".
Leonidas hat geschrieben:Hannes-Spz hat folgendes geschrieben:
es ist nur ein (verbesserungs)vorschlag

Okay... wenn mir einer sagt, was ich mir genauer unter so einem Forum vorstellen können sollte, dann können wir gerne darüber reden. Aber im Moment sehe ich den Sinn davon nicht so ganz.
wie viele gui- oder tk - erweiterungen kennst du für python?
irgendwann im Tkinter-Forum hast du über 10 stück aufgezählt, als jemand wer meinte, er wolle sein prog. später noch graphisch erweitern
(ich glaube das war erst letzten monat ...)
wenn man sich mal alle erweiterungspacks anschaut, so fällt einem doch immer wieder was auf:
sie haben einen vorteil und einen nachteil.
(ich weiß, ich weiß: wenn ich an den packs was zu kritisieren habe, soll ich mir doch bitte ein projekt suchen und das dort bearbeitete objekt mit verbessern... :roll: )
zudem wurde immer wieder im Tkinter-Forum gefragt, wie man andere widgets bauen könne, was oft schon mit den sätzen beantwortet wurde:
"du kannst ja c/c++ lernen und selbst deine eigenen widgets HINZUfügen"

und sei es auch nur ein solch formales beispiel, wäre es doch schön, wenn man neben dem python-tk-forum auch noch ein Z.B. py-c-tk-forum hätte, indem man darüber spricht, wie man die toolkits erweitert auf (nahezu) grundliegender basis
[size=85]"Unsere Situation ist immer die eines schwarzen Mannes der in einem schwarzen Keller einen schwarzen Hut sucht, den es vielleicht gar nicht gibt." Sir Karl R. Popper[/size]
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Erm. Was willst du mir sagen? :shock:

Ich hab mir deine zwei Postings jetzt 3x durchgelesen und verstehe immer noch nicht, was da steht...
TUFKAB – the user formerly known as blackbird
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Wie Black Bird schon sagt, formulier doch mal ganz klar und deutlich was du möchtest! :wink:
mfg

Thomas :-)
Benutzeravatar
Hannes-Spz
User
Beiträge: 123
Registriert: Sonntag 7. August 2005, 22:42

*heul* :(
ok, so langsam fällt mir nix mehr ein, wie ich es sagen könnte...
aber ein letztes mal mag ich es noch versuchen:

im "allgemeine-themen" forum wird über kompiler-pobleme, installations-sachen und sowas gesprochen, was man keinem forum zuordnen kann, weil man noch nicht soviel weiß (zb. wie gebe ich einen wert aus einer fkt. zurück?...)

im "tkinter" forum wird über gui gesprochen und wie man sie innerhalb des pythoninterpreters einsetzt, aufruft, farbig gestaltet, was welche fehler heißen uvm.
unteranderem auch, wie man neue widgets aus alten macht

nun könnte also in dem neuen forumbereich stehen, wie ich die bibliothek der widgets mit c erweitern kann (vl. um es schneller zu machen oder um ein kreisförmiges tk-fenster zu erhalten, statt einem viereckigen, oder um statt den drei standart-schaltflächen oben rechts im fenster auf der leiste völlig ANDERE sachen stehen zu haben -
wenn man mal von den möglichkeiten der win32-version in python absieht :!: )
oder wie ich standartverhalten schon von vornherein verändern kann...

auch muss es nicht nur mit grafik zu tun haben, sondern auch mit trivialeren sachen:
irgendwann kam hier mal jemand an, der all seine cpp-projekte in sein python-proj. einbinden wollte
nehmen wir mal an, er hätte ein programm geschrieben, was von der aufwendigkeit dem linux-system gleicht (ANGENOMMEN!)
und nun sind aber sämtliche varianten, es in python einzubinden ineffizient, jedoch kann er wirklich ausgerechnet mal keine andere sprache nutzen, ...
was soll er tun? sein projekt nochmal abschreiben und voll auf python umlagern????
dann könnte er halt hier, in diesem forum nachfragen, wie man ihm helfen könne, weil vl. erst ein tag zuvor jemand etwas in einer zeitschrift als lösungsansatz gesehen hatte...

also praktisch ein forum, indas alles reinfällt, was mit c/cpp zu tun hat...

wenn auch dieser versuch meiner erklärung nun noch ZU disputabel ist, so frage ich hiermit den admin, ob er diesen beitrag nicht einfach löschen mag, da sonst wieder diskussionen entstehen könnten, die einfach VÖLLIG am thema vorbeigehen... ;) ich denke, ihr wisst, was ich mit dem letzten meinte!

ok, ansonsten nur noch: siehe signatur
[size=85]"Unsere Situation ist immer die eines schwarzen Mannes der in einem schwarzen Keller einen schwarzen Hut sucht, den es vielleicht gar nicht gibt." Sir Karl R. Popper[/size]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hannes-Spz hat geschrieben:also praktisch ein forum, indas alles reinfällt, was mit c/cpp zu tun hat...
Im Moment ist das Forum Allgemeine Fragen ja ein Forum, wo alles reinfällt, was nicht in die anderen Foren passt. Also warum nicht einfach dort posten?

Was ist aber mit Python-Haskell und OCaml-Python? SCNR

Was das erweitern von C-Modulen angeht ist das noch so eine Sache. Denn um C-Module zu erweitern muss man C schon können und das lerrnt man woanders (Bücher, andere Foren) usw. Wenn man nun, sagen wir mal an PyGTK mitarbeiten will, braucht man schon C-Wissen. Das benötigte Wissen wie man das mit Python nun verknüpft ist vergleichsweise klein.

Eine andere Sache ist, dass man einige Nachteile der GUIs nicht so einfach ausbügeln kann, weil das explizit so gemacht wurde. Zum Beispiel finde ich TreeViews in GTK etwas arg komplex, weil die darunter liegende Struktur das TreeModel sehr mächtig, aber auch sehr komplex ist. Was man aber machen kann, ist Wrapper zu schreiben, die das vereinfachen. Hat gerold ja schon getan.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Hannes-Spz
User
Beiträge: 123
Registriert: Sonntag 7. August 2005, 22:42

von den beiden anderen sachen hatte ich noch nie zuvor etwas gehört...
(manachmal frage ich mich, woher du das weißt. :cry: )
und wenn es so aussieht (...in das allg. forum posten...),
find ich es ok und ich verwerfe meine idee ganz schnell wieder :wink:
[size=85]"Unsere Situation ist immer die eines schwarzen Mannes der in einem schwarzen Keller einen schwarzen Hut sucht, den es vielleicht gar nicht gibt." Sir Karl R. Popper[/size]
BlackJack

Hannes-Spz hat geschrieben:
Leonidas hat geschrieben:Hannes-Spz hat folgendes geschrieben:
jedoch fände ich es zum beispiel interessant zu wissen, was nun schneller ist:
eine while - schleife oder eine for - schleife...

Das kannst du mit dem Modul timeit selbst messen.
ich wollte zum beispiel nicht (unbedingt) die antwort auf das zeitproblem wissen, sondern mich gegen eine solche nutzung von zeitmessmethoden aussprechen...
die sache ist die:
wenn ich irgendetwas programmiere, danach aber NOCH ein script erstellen muss, um die zeit für mein erstes zu bestimmen, obwohl ich zum beispiel auch einfach in meinen quelltext schauen könnte und schlussfolgere, ob meine fkt1 oder fkt2 schneller ist:

Code: Alles auswählen

def fkt1():
    a="hi"
    b="ameise"
    c="rollo"
    d=a[0]+b[0]+[1:]
    return d.lower()
def fkt2():
    return 'lower'
ich weiß grade echt nicht, wie ihr das seht, aber für mich sieht die 2.fkt schneller aus...
Und in wie vielen bzw. wenigen Fällen ist das so trivial? Wie sieht's denn hier aus?

Code: Alles auswählen

def spam(a, b, c):
    return dumdidum(a + c).frobtz(c)

def ham(a, b):
    for i in a:
        i.zap(b, 42)
Keine Zeitmessungen durchführen zu wollen und stattdessen nach Gefühl beim Anschauen des Quelltextes zu gehen ist ganz schlecht. Nicht nur bei Hochsprachen wie Python kann man da ziemlich daneben liegen.

Wenn man etwas schneller machen will, dann sollte man im konkreten Programm mit möglichst echten Eingabedaten die Geschwindigkeiten messen und sich dann dort die Flaschenhälse vornehmen, anstatt nach Gefühl oder Vermutung hier und da zu optimieren.

Wenn Du nicht vor- und nachher misst, wie willst Du dann wissen, ob die Änderung das Programm nicht langsamer anstatt schneller gemacht hat!? Oder ob Du nicht mit viel Mühe und Zeitaufwand an einer Stelle etwas um sagenhafte 500% schneller machst, was aber nur 0.001% zur Laufzeit beiträgt.

Und wenn schon ein neues Forum, dann bitte etwas allgemeiner als "Python und C++". Vielleicht "Anbindung an andere Programmiersprachen". Allerdings sehe ich nicht unbedingt genug Bedarf, weil solche Fragen auch im allgemeinen Forum gestellt werden können und dort ja auch beantwortet werden.
Benutzeravatar
Hannes-Spz
User
Beiträge: 123
Registriert: Sonntag 7. August 2005, 22:42

aber genau DAS meinte ich doch auch.
es kann nicht immer auf den ersten blick zu sehen sein, aber wenn man die hintergrundprozesse kennt, kann man (relativ zu sonstigen varianten) die geschwindigkeitsveränderung feststellen und sogar bedingt auch deren richtung bestimmen (ob es schneller wird o. nicht).
[size=85]"Unsere Situation ist immer die eines schwarzen Mannes der in einem schwarzen Keller einen schwarzen Hut sucht, den es vielleicht gar nicht gibt." Sir Karl R. Popper[/size]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hannes-Spz hat geschrieben:es kann nicht immer auf den ersten blick zu sehen sein, aber wenn man die hintergrundprozesse kennt, kann man (relativ zu sonstigen varianten) die geschwindigkeitsveränderung feststellen und sogar bedingt auch deren richtung bestimmen (ob es schneller wird o. nicht).
Das kann man durch nachmessen auch viel einfacher erreichen. Da muss man nicht überlegen, wie die Hintergrundprozesse laufen, welche Opcodes ausgeführt werden (habe ich schon erwähnt, dass die Hintergrundprozesse warscheinlich kehr kompliziert und komplex sind?), sondern mann kann einfach Daten eingeben und stoppen. Das ist nicht nur einfacher, sondern auch zuverlässiger, da man sich mit dem wissen um Hintergrundprozesse irren kann, bzw. sie werden in einer zukünftigen Python-Version komplett verändert.

Alles in allem, ist es doch eher unpraktisch, vorher optimieren zu wollen. Wenn etwas zu langsam ist, sollte man die verwendeten Algoritmen prüfen und/oder mit Psyco nachhelfen. Bottlenecks kann man mit dem profiler gut aufspüren und dort dann gezielt optimieren. Der Python-Profiler ist sogar angenehm zu benutzen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten