C/C++ vs Python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Donnerstag 9. März 2006, 19:42

Clython hat geschrieben:1. Ein Standard, der auf jeder Maschine laufen sollte, was man von C++ nicht gerade behaupten kann
C++ wurde inzwischen auch standardisiert (ISO C++).

Und C++ gibt es eigentlich für alle moderenen Systeme.
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Freitag 10. März 2006, 08:13

Ich denke es war so gemeint, das C++ Programme nicht direkt unter Windows und Linux läuft, so wie es bei Python der Fall ist :D

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Buell
User
Beiträge: 90
Registriert: Samstag 29. Oktober 2005, 14:17

Beitragvon Buell » Freitag 10. März 2006, 08:26

Also zu dem Thema muss ich auch mal meinen Senf loswerden.

1. Python ist eine Scriptsprache und überhaupt nicht mit C++ vergleichbar.
2. Python ist eine sehr gute Möglichkeit etwas schnell zu entwickeln, aber die Umsetzung erfolgt dann eben doch in C++ oder Java - warum wohl...
3. Ich habe hier des öfteren gelesen, dass Python alles kann was C oder C++ auch kann, halte ich für absolut falsch. Das Eventhandling und MessageSending zwischen verschiedenen Threads ist in Python fast unmöglich, wenn dies auch noch zwischen mehreren Modulen geschehen soll.
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Freitag 10. März 2006, 08:37

Buell hat geschrieben:2. Python ist eine sehr gute Möglichkeit etwas schnell zu entwickeln, aber die Umsetzung erfolgt dann eben doch in C++ oder Java - warum wohl...

Du hast wohl http://www.python-forum.de/viewtopic.php?p=32500#32500 nicht gelesen, oder?

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Beitragvon modelnine » Freitag 10. März 2006, 10:01

Ich habe hier des öfteren gelesen, dass Python alles kann was C oder C++ auch kann, halte ich für absolut falsch. Das Eventhandling und MessageSending zwischen verschiedenen Threads ist in Python fast unmöglich, wenn dies auch noch zwischen mehreren Modulen geschehen soll.


Huh? Programmierst Du Python? Wenn ja, dann weißt Du eigentlich dass es eine ganze Menge Datentypen gibt die in Python hierfür geeignet sind...

Bevor Du solche inflammatorischen Aussagen machst ist es vielleicht einfach am besten wenn Du ganz explizit sagst dass Du Python nicht als vollwertige Sprache siehst, dann weiß jeder was von Deiner Meinung zu halten ist im Vergleich mit seiner (nämlich wenn er eben Python auch nicht als Vollwertige Sprache sieht, oder es eben doch tut).

Und nein, das letzte ist nicht böse gemeint.
--- Heiko.
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Beitragvon Python 47 » Freitag 10. März 2006, 14:16

Meinst du mit dem "er" zufällig mich?????

Wenn ja dann kann ich nur folgendes sagen:

Natürlich sehe ich Python als eine vollwertige Sprache an!Und es macht auch richtig spaß in Python zu programmieren, aber ich denke, dass es nicht schaden kann, wenn man mehr als eine Sprache kann!Du kannst ja auch viel
mehr Sprachen als Python!Auch wenn ich C/C++ kann, werde ich hauptsächlich noch in Python programmieren!
mfg

Thomas :-)
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Beitragvon rayo » Freitag 10. März 2006, 14:25

Hi

Fühl dich nicht immer angesprochen, ich glaube er bezieht sich einfach auf die Allgemeinheit und nicht eine bestimmte Person :)

Gruss
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Freitag 10. März 2006, 14:33

Und ich glaube Buell war gemeint :wink:

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Beitragvon modelnine » Freitag 10. März 2006, 15:05

Und ich glaube Buell war gemeint


Jo, allerdings. Zumal ich in meinem Post keinerlei Bezug auf einen "er" genommen habe, sondern nur auf das Zitat.

Es ging mir schlicht und ergreifend darum dass man sehr mit Vorsicht genießen muß wenn jemand sowas sagt wie Buell in

Ich habe hier des öfteren gelesen, dass Python alles kann was C oder C++ auch kann, halte ich für absolut falsch.


Das ist nämlich, egal aus welcher Sicht gesehen, eine Aussage die in dieser Form

    1) In Ihrer Allgemeinheit nicht stimmt
    2) Völlig unzureichend begründet ist
    3) Sehr inflammatorisch geschrieben, also eher einem Troll zuzuordnen als einem Menschen der jemanden anderes über die Vorzüge oder Nachteile einer Programmiersprache (besser gesagt, ihrer Implementierung) geben will


Darum gings mir im Endeffekt. Wenn jemand genau wie Buell der Meinung ist dass Python eine Sprache (nur) für das Prototyping ist, und eben nicht die "Vollständigkeit" hat die eine Programmiersprache (in der Allgemeinheit) seiner Meinung nach auszeichnet, ist es besser, wenn er genau diese Tatsache (nämlich dass es seine Meinung, und im besonderen seine Erfahrung, bzw. seine fehlende Erfahrung in der Python-Programmierung) zusammen mit seinem Post schreibt, so dass jeder weiß, was er von dieser Meinung zu halten hat. Zum Beispiel hätte es genügt wenn er anstatt seines Posts geschrieben hätte: "Ich habe in Python bisher zum Beispiel vergeblich probiert direktes Message-Passing zu benutzen wie man es in C++ meißtens mit Threads benutzt, aber ich weiß dass es auch andere Datentypen für den Austausch von Nachrichten zwischen Threads gibt, nur will ich die hier nicht verwenden, weil für mich blöd." Oder so was. Es ist nicht okay, wenn er eben eine solche Allgemeinaussage trifft, dann aber eben seinen Rahmen nicht einschränkt.

Das war im Endeffekt was ich mit der Aussage sagen wollte. Und warum das "nicht böse gemeint?" Buell hat in gewissen Dingen recht, nämlich gibts ja in Python das GIL, was einen anderen Programmierstil verlangt/benötigt als wenn ich in C/C++ mit Threads arbeite, das bedeutet eben auch soviel wie dass eben die Thread-Programmierung mit ganz anderen primitives auskommt als das zum Beispiel in C/C++ der Fall ist (nämlich zum Beispiel Queues zum Message-Passing zwischen Threads). Welches der beiden Modelle "toller" oder "besser", oder sogar nur "leicher zu verstehen" ist, ist eine philosophische Frage: in Python gibts aber sehr wohl ein Modell um das zu machen was Buell will, auch wenn's eben nicht direkt Nachrichten zwischen Threads sind sondern eine etwas allgemeinere Form des Datenaustauschs über einen geteilten Speicherbereich, nämlich die Queue.

Und: "Python Master 47," fühl Dich nicht angegriffen wegen etwas was ich erstens nicht zu Dir, und zweitens auch gar nicht mehr so wirklich im Rahmen dieses Threads gesagt habe. ;-)
--- Heiko.
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Beitragvon Python 47 » Freitag 10. März 2006, 15:18

modelnine hat geschrieben:Und: "Python Master 47," fühl Dich nicht angegriffen wegen etwas was ich erstens nicht zu Dir, und zweitens auch gar nicht mehr so wirklich im Rahmen dieses Threads gesagt habe. ;-)


Ok werd es mir merken! :wink:
mfg



Thomas :-)
Buell
User
Beiträge: 90
Registriert: Samstag 29. Oktober 2005, 14:17

Beitragvon Buell » Freitag 10. März 2006, 20:34

@modelnine:

Vielleicht solltest du mal etwas genauer lesen bevor du hier anfängst andere Leute (mich) zu beleidigen. Wenn ich die Aussage, dass Python genauso viel kann wie C++ für absolut falsch HALTE ist das wohl meine Meinung die mir zusteht. Ob sie dir gefällt oder nicht ist mir da total egal. Ich lasse mir bestimmt nicht von dir vorschreiben wie ich hier was zu schreiben habe.

Fakt ist, dass ich mit Python NICHT alles machen kann was ich auch in C++ tun kann, was allein schon daran scheitert, dass Python eine SCRIPTSPRACHE ist. Du hast doch selbst geschrieben, dass das Message Handling zwischen Threads in Python eher umständlich ist. Mit anderen Worten es geht nicht so wie in C++! Sicher kann man alles irgendwie hinbekommen, aber manchmal gibt es einfach Grenzen an die Python stößt.

Beispiele? BITTE:
- registrierte COM Schnittstelle in Windows (die also aus der Registry gestartet wird) unmöglich!
- zugriff auf Sapi4 - unmöglich! (Auch ein Jahr Forschung hat da nichts anderes ergeben. Es wird immer eine dll benötigt.)
- gleichzeitig Thread, Klassen und Dateiübergreifendes Eventhandling, wenn überhaupt möglich, extrem kompliziert.
- schon mal was von Assembler Programmierung mit Python gehört? - ich nicht!
- usw usw usw

Ich will hier Python nicht schlecht reden, das liegt mir fern. ich bin begeistert von Python, da dadurch die Entwicklung wesentlich schneller geht. Aber meiner Meinung nach ist es halt einfach nicht richtig, dass in Python alles geht. Lasse mich da gern vom Gegenteil überzeugen, nur beleidigen lasse ich mich nicht so gern!

Ach so, da du Modelnine dich ja selbst als der Messias in Python darstellst beantworte mir doch einfach mal ein paar meiner Python Fragen die mir hier im Forum komischerweise niemand beantworten kann, wie zB:

http://www.python-forum.de/viewtopic.php?p=32878#32878
http://www.python-forum.de/viewtopic.php?t=4590&highlight= <-- hat sich erledigt
http://www.python-forum.de/viewtopic.php?t=4347&highlight=

Das ist sicherlich sinnvoller als deine unglaubliche Intelligenz mit solchen Nichtigkeiten zu belasten wie dir möglichst kreative Beleidigungen auszudenken.

Aber schön, dass mein Statement solch eine Diskussion auslöst, das ist ja wohl auch der Sinn eines Forums. Jeder kann seine Meinung äußern!
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Beitragvon modelnine » Freitag 10. März 2006, 20:53

Vielleicht solltest du mal etwas genauer lesen bevor du hier anfängst andere Leute (mich) zu beleidigen. Wenn ich die Aussage, dass Python genauso viel kann wie C++ für absolut falsch HALTE ist das wohl meine Meinung die mir zusteht. Ob sie dir gefällt oder nicht ist mir da total egal. Ich lasse mir bestimmt nicht von dir vorschreiben wie ich hier was zu schreiben habe.


Reg Dich ab! Ich hab in meinem ersten Post gesagt dass ich Dich einfach nur darum bitten würde zu sagen dass Du momentan keinen Weg siehst das in Python zu machen, bevor Du hier rumgehst und erzählst dass es in Python oder mit (was für mich auch dazugehört, und ich dachte Diskussionsgrundlage dieses Threads gewesen wäre) Python nicht möglich ist.

Um danz kurz darauf bezug zu nehmen was Du geschrieben hast:

registrierte COM Schnittstelle in Windows (die also aus der Registry gestartet wird) unmöglich!


Da ich selbst kein Windows-Programmierer (und das früher nur relativ unregelmäßig gemacht habe) bin kann ich dazu wenig sagen. Ich hab allerdings schon von Leuten rund um das Py2Exe-Projekt gehört, die genau das hinbekommen haben mittels py2exe. Sprich: ich würd auf der entsprechenden Mailingliste mal nachfragen gehen was sich in die Richtung tut, und man wird Dir sicherlich helfen können, oder aber auch sagen können dass das allgemein nicht geht, oder wie auch immer. Nur: bevor Du einfach sagst, das geht mit Python nicht, guck erst mal nach ob es Erweiterungen gibt die das vielleicht bewerkstelligen können.

zugriff auf Sapi4 - unmöglich! (Auch ein Jahr Forschung hat da nichts anderes ergeben. Es wird immer eine dll benötigt.)


Es gibt für Python ctypes (wir reden von Windows?), was genau das macht: nämlich eine DLL an Python anzubinden. Sprich: wenn Du einfach mit ctypes einen Wrapper (in Python!) schreibst, dann kannst Du das SAPI ganz normal auch von Python ansprechen. Nur weil eine solche Bibliothek nicht in den Batteries-Included ist heißt das noch lange nicht dass es nicht mit Python geht, zum Beispiel eben über ctypes.

gleichzeitig Thread, Klassen und Dateiübergreifendes Eventhandling, wenn überhaupt möglich, extrem kompliziert.


Da ich erstens nicht so ganz verstehe was Du machen willst, da die Termini in der Kombination für mich absolut nichtssagend sind, und zweitens es auch nicht richtig ist dass Eventhandling in Python nicht geht (ich erinnere nur an pywin32 mit WaitForMultipleObjects.*, oder aber Queue.Queue zur Thread-Kommunikation), kann ich dazu nur sagen: das was Du machen willst geht anscheinend (und das ist häufig so) so wie Du's in C++ machen willst in Python eben nicht. Dafür gehts in Python auf anderen Wegen. Wenn Du die Problematik ein bisschen genauer beschreiben würdest könnte ich da wahrscheinlich (wenn's sich um allgemeine Dinge handelt) auch weiterhelfen, nur meine Ahnung von Windows hält sich arg in Grenzen.

Jede Sprache hat ihre Idiome, und aus meiner Sicht ist es leider so dass Du entweder die Python-Idiome nicht magst weil sie mit den C++-Idiomen kollidieren die Du so kennst, oder aber schlicht und ergreifend die Python-Idiome nicht kennst.

schon mal was von Assembler Programmierung mit Python gehört? - ich nicht!


Natürlich. Schon mal was von PyRex, PyC, psyco (im Endeffekt auch Assembler durch Python), oder auch von PyASM gehört? :-) Wenn's Dich interessiert poste ich gerne Links. Zur Not schreib ich auch eine kleine Python-Erweiterung, das ist dann zwar nicht mehr pures Python, aber die Logik meines Programms liegt trotzdem noch in Python mit ungefähr 20 Zeilen C irgendwo.

Das war eigentlich auch der Stein der meine Antwort ins Rollen gebracht hat: die Dinge die Du bisher angesprochen hast gehen mit purem Python vielleicht teilweise nicht, mit Erweiterungsmodulen aber schon, zur Not auch mit eigenen, aber die Erweiterung beschränkt sich in meinem bisherigen Programmierrahmen immer auf ungefähr 20 Zeilen. Oder sie gehen eben auf anderen Wegen als Du es aus anderen Sprachen gewohnt bist. Jede Sprache hat ihre eigenen Idiome. Und es steht Dir frei zu sagen dass Du die Python-Idiome für viele Dinge nicht magst, es ist aber aus meiner Sicht eben nur inflammatorisch zu sagen dass die Dinge deswegen prinzipiell mit Python nicht gehen, weil sie's eben schon tun, nur manchmal mit ein bißchen Hilfe.

Ach so, da du Modelnine dich ja selbst als der Messias in Python darstellst beantworte mir doch einfach mal ein paar meiner Python Fragen die mir hier im Forum komischerweise niemand beantworten kann, wie zB:


... Ganz viele Fragen die mit Windows-Spezifika zu tun haben. Ich hab, wie ich oben auch schon bemerkte, von Windows-Programmierung wenig bis keine Ahnung, deswegen lass ich selbst die Finger davon. Unabhängig davon: ich hab mich niemals als der Python-Messias dargestellt. Ich hab Dich nur gebeten Deine Aussage zwecks der Benutz- und Einsetzbarkeit etwas zu präzisieren (oder sie sein zu lassen), da Deine Aussage sehr, sehr allgemein war, das man nämlich diese Dinge nicht in Python machen kann ist einfach nicht wahr.

So. Falls Du Dich beleidigt gefühlt hast tut es mir leid, darum gings mir nicht (und Du hast recht dass ich manchmal die falschen Worte finde um das auszudrücken, ich hab selbst eben noch mal meinen letzten langen Post gelesen und der war auch nicht ganz sauber). Es ging mir darum dass ich für meinen Teil Deine Aussage zu allgemein empfand, und ich hab oben noch mal dargelegt was meine Ansicht war/ist dazu.
--- Heiko.
Buell
User
Beiträge: 90
Registriert: Samstag 29. Oktober 2005, 14:17

Beitragvon Buell » Freitag 10. März 2006, 21:12

ok ok, abgeregt - das Wort Troll hat mich nur etwas "angepisst"


wie ich es schon in meinem letzten Beitrag gesagt habe, ist alles irgendwie mit Umständen machbar. Allerdings nicht so, wie Python ursprünglich mal gedacht war. Es ist wahrscheinlich richtig, dass man mittels Py2Exe einen dauerhaft registrierbaren COM Server bauen kann, aber dann habe ich eine kompilierte exe und das ist nicht der Sinn von Python.

Mit dem Assembler, hab ich wirklich noch nie was von gehört.

Sapi4: Richtig, eine gewrappte dll und schon kann ich mit Python auf die Sapi4 zugreifen. Genau so mache ich (bessergesagt wir) es auch. Nur diese dll ist mit C++ geschrieben und nicht mit Python. (Vielleicht hab ich da auch noch nie was von gehört, dass man mit python auch dll's schreiben kann)

Mein Event Problem: manchmal verstehe ich mich selbst nicht mehr... ;)
quasi 3 involvierte Dateien:
- eine zur Anbindung an die COM Schnittstelle von xy
- eine die Ausgaben der COM xy braucht
- ein COM Server der die erste mit der zweiten verbindet.
die Kommunikation zwischen diesen dreien gestaltet sich als sehr komplex, da man am Rande erwähnen sollte, dass es von der 1. Datei ca 4 gibt und von der zweiten beliebig viele (Momentan 5) und dazu noch der COM Server aus 3 Klassen besteht die jeweils im gesamten Programmablauf nur einmal initialisiert werden dürfen aber trotzdem auch untereinander kommunizieren müssen. Alles verzwickt. Um das vernünftig und verständlich zu beschreiben, müsste ich wahrscheinlich mehrere Seiten beschreiben, aber auch Informationen preis geben, die ich jetzt noch nicht preisgeben möchte.
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Sonntag 12. März 2006, 13:59

Buell hat geschrieben:Sapi4: Richtig, eine gewrappte dll und schon kann ich mit Python auf die Sapi4 zugreifen. Genau so mache ich (bessergesagt wir) es auch. Nur diese dll ist mit C++ geschrieben und nicht mit Python. (Vielleicht hab ich da auch noch nie was von gehört, dass man mit python auch dll's schreiben kann)


Aber genau das ist doch das schöne an Python, das man es mit C++ erweitern kann. Somit kann man indirekt (fast) alles mir Python machen... Das man mit Python selber keine DLLs schreiben kann, dürfte wohl klar sein.

Klar ist, das man mit C mehr machen kann, als mit Python. Aber mit welchem Aufwand? Unterm Strich ist Python einfach effektiver in der Programmierung. Noch mehr als in C kann man wahrscheinlich mit Assebler machen, aber das dürfte nochmal um einiges Aufwändiger sein... Mal eben einen Test-CGI-Webserver starten, in C oder Asselbler?

Und das sind halt die wahren stärken, das man einfach schneller ans Ziel kommt und das ganze auch noch überschaubarer ist... Die Batteries-Included sind einfach genial...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Beitragvon Clython » Sonntag 12. März 2006, 14:46

jens hat geschrieben:Aber genau das ist doch das schöne an Python, das man es mit C++ erweitern kann. Somit kann man indirekt (fast) alles mir Python machen... Das man mit Python selber keine DLLs schreiben kann, dürfte wohl klar sein.


Das Problem dürfte sich eigentlich mit Ironpython auch erledigt haben, oder :?:

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]