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.
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Also das mit dem Pwd Cracker hab ich noch net so verstanden?
Geht sowas jetzt in Python zu programmieren?

Ok, angenommen ich würde jetzt C oder C++ lernen, dann hab ich mir folgendes überlegt:

C++ ist die Weiterentwicklung von C, d.h alles was C kann, kann C++ auch, aber C++ kann noch viel mehr als C.Ich würde also C++ lernen und dann hätte ich ja schon einen großen teil von C mit drin!Dann müsste ich nur noch einen kleinen Teil C lernen und könnte dann beides!Ist das so richtig?

Ich weiß noch nicht ob ich C oder C++ lerne, aber es ist immer besser mehr Programmiersprachen zu können, finde ich jedenfalls!
mfg

Thomas :-)
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Python Master 47 hat geschrieben:Also das mit dem Pwd Cracker hab ich noch net so verstanden?
Geht sowas jetzt in Python zu programmieren?
Klar! Warum auch nicht. Nur leben diese Tools von hoher Performance, weshalb ich sowas in Python eigentlich nur als Fingerübung betrachten kann. Für den ernsthaften Einsatz würde ich das in C schreiben.
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
mr.hide
User
Beiträge: 108
Registriert: Montag 29. August 2005, 14:02

Den Entschluss C oder C++ zu lernen sit recht gut.

Ich kann das zwar auch nur oberflächlich, allerdings lernt man dabei viel über die Speicherzuweisung usw, von dem man in Phyton eigentlich nichts mitkriegt.

Ist auf jeden Fall sehr interessant.
Grüße
Matthias

- Fluchen befreit von Kummer und Leid -
jana79
User
Beiträge: 10
Registriert: Dienstag 28. Februar 2006, 10:28

Gunnar hat geschrieben:...und das Python-Prototyping wird nach der Portierung einiger Klassen nach C quasi sofort zu Productioncode :wink:
und was heisst das jetzt? ... sind irgendwie ziemlich viele Schlagwoerter dabei, also sags mal auf deutsch in verstaendlichen Saetzen, bitte ...
ryu
User
Beiträge: 41
Registriert: Dienstag 7. Februar 2006, 19:34

Er will damit sagen, das wenn man ein Prototyp in Python geschrieben hat, nicht den ganzen Prototyp nach C übersetzen muss, sondern dank der guten C anbindung nur die geschwindigtkeitskritischen Dinge, und den Rest einfach so lässt.
Wobei mir persönlich son Patchwork nicht gefallen würde... das ist aber rein subjektiv.
jana79
User
Beiträge: 10
Registriert: Dienstag 28. Februar 2006, 10:28

Hhm, naja, wenn er meint.
Ich hab mir einmal die Sache mit dem Einwickeln von Code mit Swig angesehen und da schon die Krise an einem kleinen Beispiel gekriegt.
Wenn ich richtig proggen koennte, wuerd ich mir aber auch die Zeit nehmen, den Prototypen wegschmeissen und alles neu machen.
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Wenn ich richtig proggen koennte, wuerd ich mir aber auch die Zeit nehmen, den Prototypen wegschmeissen und alles neu machen.
Was Blödsinn ist.

Wenn Du ein funktionierendes Programm in Python hast, warum willst Du das Programm neu schreiben? Die Idee hinter der Auslagerung von Teilen nach C ist eben dass man für einige/manche Dinge auf Python verzichtet um Geschwindigkeit zu bekommen, für den meißten Rest aber bei der VHL-Sprache Python bleibt um die Entwicklungsvorteile (sowohl in Entwicklungsgeschwindigkeit als auch in Debugbarkeit) und alles was damit verbunden ist zu bekommen.

Du mußt bedenken was passiert wenn Du prinzipiell alles neu implementierst:

1) Einen Python-Prototyp schreiben
2) Den debuggen
3) Ein C-Programm schreiben
4) Das Debuggen

4 >> 2, und 3 >> 1, im Normalfall, sprich die Zeit die Du in diesem Fall für das Programm brauchst ist durch 4+3 determiniert.

Jetzt überleg Dir das Du folgendes machst:

1) Einen Python-Prototyp schreiben
2) Den debuggen
5) Performancekritische Dinge nach C auslagern
6) die Debuggen

Da Du nicht ein vollständiges Programm nach C auslagerst, sondern nur Programmteile (einzelne Algorithmen die in C schneller sind), ist die Zeit im Endeffekt bei dieser Art der Entwicklung durch 1+2 determiniert.

Wie ich bereits schon vorher gesagt hab ist 4 >> 2, 3 >> 1, also ist vor allen Dingen auch 4+3 >> 2+1, sprich wenn Du so entwickelst wie ich im zweiten Beispiel angegeben hab wirst Du schneller Resultate sehen als wenn Du einfach alles neu entwickelst, und hast gleichzeitig noch die Vorteile die eine VHL-Sprache bei der Entwicklung im allgemeinen bringt.
--- Heiko.
BlackJack

jana79 hat geschrieben:Warum ich allerdings persoenlich auch der Meinung bin, mein weniges :cry: cpp-wissen trotzdem weiter zu pflegen is nicht nur, dass dazu ein ganzes framework auf Arbeit existiert,
- sondern va. dass die Fehlerausschriften genauer sind
Hm? Was meinst Du damit denn? Das Du Template-Fehlermeldungen verständlicher findest als Python-Tracebacks?
- krieg schneller bei Typfehlern Antwort
Die bekommst Du in Python auch sofort wenn Du die Tests laufen lässt. Andererseits schweigt ein C(++) Übersetzer wenn alle Typen stimmen, was aber nichts darüber aussagt ob die auch korrekt implementiert sind. Testen musst Du also sowieso.
- gcc/gdb sind einstellbar
Es gibt den `pdb` und die meisten Python-IDEs haben einen graphischen Debugger. Braucht man aber nicht unbedingt weil die Tracebacks und ein paar ``print`` Befehle einen Debugger fast überflüssig machen.
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

So Leute,

ich hab mich nochmal kundig gemacht und werde wahrscheinlich D lernen!

Vergleich von D zu C und C++:

http://www.digitalmars.com/d/comparison.html

Dieser Test sagt dann wohl alles! :wink:
mfg

Thomas :-)
BlackJack

Python Master 47 hat geschrieben:C++ ist die Weiterentwicklung von C, d.h alles was C kann, kann C++ auch, aber C++ kann noch viel mehr als C.Ich würde also C++ lernen und dann hätte ich ja schon einen großen teil von C mit drin!Dann müsste ich nur noch einen kleinen Teil C lernen und könnte dann beides!Ist das so richtig?
IMHO nein. C++ unterscheidet sich in der Programmierung sehr stark von C. Man geht an die Umsetzung eines Programms sehr unterschiedlich heran. In "richtigem" C++ ist sehr wenig bis gar kein Code der von einem reinen C Compiler übersetzt werden kann, also kann man, wenn man C++ gelernt hat, nicht automatisch gut in C programmieren.
BlackJack

jana79 hat geschrieben:Hhm, naja, wenn er meint.
Ich hab mir einmal die Sache mit dem Einwickeln von Code mit Swig angesehen und da schon die Krise an einem kleinen Beispiel gekriegt.
Swig finde ich auch nicht so toll. Wenn etwas zu langsam ist dann würde ich erstmal psyco versuchen, also nichts Programmieren sondern einen JIT-Compiler auf die Problemzonen loslassen.

Wenn das nicht ausreicht, dann ist der nächste Schritt die kritischen Teile in Pyrex zu programmieren.

Sollte das immer noh nicht reichen dann würde ich eine dynamische Bibliothek in C schreiben und die mit ctypes anbinden.
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Python Master 47 hat geschrieben:ich hab mich nochmal kundig gemacht und werde wahrscheinlich D lernen!

Vergleich von D zu C und C++:

http://www.digitalmars.com/d/comparison.html

Dieser Test sagt dann wohl alles! :wink:
Warum ist dieser Test für dich ausschlaggebend? Ich hab auch nicht Python gelernt weil es die und die Features hat, sondern weil es einfach Spass macht mit dieser zu programmieren.
Ich muss in der Schule mit Java programmieren, was mir überhaupt nicht gefällt, weil ich finde dass es einfach zu mühsam ist mit Java etwas zu programmieren.

Es kommt mir überhaupt nicht auf die Features an, welche eine Sprache bietet. Wenn es sein muss programmier ich auch C++, ist halt einfach ein wenig syntaktisch umdenken und sich wieder um alles zu kümmern müssen. :? (und C++ steht im nächsten Semester auf dem Stundenplan :( )

Aber wenn man das Programmierdenken mal drauf hat, kommt es nicht gross auf die Sprache an und mit Python steht einem die Sprache am wenigsten im wege dieses Denken anzueignen.

Gruss
Benutzeravatar
Gunnar
User
Beiträge: 68
Registriert: Samstag 23. Oktober 2004, 08:59

jana79 hat geschrieben:
Gunnar hat geschrieben:...und das Python-Prototyping wird nach der Portierung einiger Klassen nach C quasi sofort zu Productioncode :wink:
und was heisst das jetzt? ... sind irgendwie ziemlich viele Schlagwoerter dabei, also sags mal auf deutsch in verstaendlichen Saetzen, bitte ...
Hallo Jana,

so schlimme Schlagwörter sind es eigentlich nicht. Wenn du dich mehr mit Programmieren auseinandersetzen willst möchte ich dir "Code Complete 2" von Steve McConnell ans Herz legen. In dem Buch steht eine Menge ( ich behaupte sogar : fast alles ) was man dazu wissen will. Es ist sehr verständlich geschrieben, allerdings weiss ich nicht wie es da bei der deutschen Übersetzung aussieht. Ich habe es damals auf englisch gelesen.

Gruss,
Gunnar
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Also ich werde nächstens mal ANSI C lernen. Warum?

1. Ein Standard, der auf jeder Maschine laufen sollte, was man von C++ nicht gerade behaupten kann
2. Python ist in ANSI C programmiert
3. Der Linux Kernel auch?

Für alles andere kann man Python nehmen...
Kompottkin
User
Beiträge: 21
Registriert: Sonntag 26. Februar 2006, 03:09
Wohnort: Penzberg
Kontaktdaten:

Clython hat geschrieben:Für alles andere kann man Python nehmen...
Wenn Du ein wirklich guter Programmierer werden möchtest, dann solltest Du auch Sprachen lernen, die ganz andere Paradigmen unterstützen, als Du gewohnt bist. Man muß eine Sprache nicht unbedingt direkt praktisch nutzen können, um von ihr zu profitieren.

C zu können, ist sicherlich nicht schlecht. Dabei lernt man doch einiges über Speichermanagement. Wenn Du von C dann genug hast, kannst Du Dir mal solche Sprachen wie Smalltalk (Extrem-OOP), Scheme (minimalistisch-funktional, schönes Fundament zum Entwurf eigener Sprachen) und Haskell (rein funktional und für einen typischen C-/Python-/Java-Programmierer sehr gewöhnungsbedürftig) ansehen.

Ich habe mit diesen Sprachen (vor allem Haskell) jedenfalls eine Menge Spaß :)
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

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
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Buell
User
Beiträge: 90
Registriert: Samstag 29. Oktober 2005, 14:17

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
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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?

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

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.
Antworten