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

Hi Leuts,

ich will neben Python auch C/C++ lernen!
Jetzt wollte ich wissen, was ich mit C/C++ machen kann, was in Python nicht geht!Also wo hätte ich vorteile, wenn ich noch C/C++ könnte!

Danke!
mfg

Thomas :-)
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Beide Sprachen sind Turing-vollständig, sprich Du kannst in allen alles machen was eine berechenbare Funktion ist. Zumindest soweit die Theorie.

C/C++ eignet sich eher für hardwarenahe Programmierung als Python oder Erweiterung bestehender C/C++-basierter Programme, sonst seh ich für meinen Teil eigentlich keinerlei Verwendung für die Sprachen. Aber, das ist Geschmackssache.

Sonst, es ist immer gut nicht nur eine Programmiersprache zu können. Aber wenn Du mit C++ anfängst stell Dich schonmal drauf ein dass es von Python aus gesehen eine große Umstellung ist.
--- Heiko.
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Python Master 47 hat geschrieben:Jetzt wollte ich wissen, was ich mit C/C++ machen kann, was in Python nicht geht!
Einen Segmentation fault produzieren.
Zuletzt geändert von Joghurt am Sonntag 5. März 2006, 00:26, insgesamt 1-mal geändert.
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Einen Segmentation fault produzieren.
LOL :-) Sehr schön gesagt. Aber das kann ich auch mit Python und ein bissel thread-Magie. ;-)
--- Heiko.
BlackJack

Python Master 47 hat geschrieben:ich will neben Python auch C/C++ lernen!
Jetzt wollte ich wissen, was ich mit C/C++ machen kann, was in Python nicht geht!Also wo hätte ich vorteile, wenn ich noch C/C++ könnte!
Erstmal sollte Dir klar sein das Du da zwei neue Sprachen lernen willst. C++ ist eine ganz andere Welt als C.

Ob man zuerst C und dann C++ lernen sollte ist Geschmackssache. Es gibt Leute die sagen C sei eine gute Grundlage und andere das man durch C "vorbelastet" ist und nicht so guten C++ Code schreibt, weil man noch in C "denkt".

Ich für meinen Teil lerne gerne neue Sprachen, habe C++ aber aufgegeben. Es ist mir einfach zu kompliziert. Ich bin leider durch "schönere" Sprachen wie Python oder sogar Java "verdorben" und habe deswegen ein Problem damit einzusehen, warum ich mir bei C++ Gedanken über so viele Details machen muss, die mich bei anderen Sprachen nicht aufhalten. Speicherverwaltung insbesondere im Zusammenhang mit Ausnahmebehandlung ist zum Beispiel ein nerviges Detail. Oder Fehlermeldungen vom Übersetzer die mit Templates zu tun haben.

C dagegen finde ich sehr schön und einfach. Ein portabler Makro-Assembler sozusagen.
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Ich stimme meinen vorrednern da ziemlich komplett zu.

Da selbst z.b. wxWidgets in C++ , hast du auch die gelegenheit da ab und an ein paar schöne crashs in python zu produzieren, wenn mal eine wichtige referenz fehlt z.b. :D


Alles in allem, möchte ich nicht wieder weg von Python, habe keine Lust mehr auf kryptische sprachen, wo ich für jede array iteration mir mit "len / datentyp" behelfen muss ...


Das alles heisst natürlich nicht das es sinnlos wäre C++ & Python zu können, ich finde nur den weg mit Pyrex für performance kritische stellen besser.
Damit kannst du, durch typendeklarierung sehr viel an performance rausholen.
Benutzeravatar
Gunnar
User
Beiträge: 68
Registriert: Samstag 23. Oktober 2004, 08:59

...und das Python-Prototyping wird nach der Portierung einiger Klassen nach C quasi sofort zu Productioncode :wink:
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Python Master 47 hat geschrieben:jetzt wollte ich wissen, was ich mit C/C++ machen kann, was in Python nicht geht!
* Speicherlecks produzieren

* Den Linux-Kernel verstehen :D

* Lernen, wie bequem Python ist :wink:

Es kommt natuerlich auch drauf an, in welchem Umfeld man programmiert. Im naturwissenschaflichen Bereich z.B. sind C (und Fortran) sehr verbreitet, es gibt da zahlreiche Toolboxes fuer die verschiedenensten Problemestellungen.

Ich persoenlich finde es gut, mehr als eine Programmiersprache zu koennen, gerade auch so unterschiedlieche Sprachen wie C und Python. Und auch wenn C sehr muehselig sein kann (wie meine Vorredner schon sagten), ist es doch auch lehrreich, sich mit sowas wie Speicherverwaltung und Pointern zu beschaeftigen. Ich finde es einfach interessant, auch ein wenig vom Innenleben meines Betriebssystems zu begreifen.
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Danke für die Zahlreichen Antworten!

Jetzt würde mich doch noch eins interresieren:

Wo hat Python seine Grenzen erreicht wo ich C oder C++ noch mehr machen kann z.B. verschlüsselungsprogramme, passwortcracker,komprimierungsprogramme, port scannern, archivierungsprogramme, chatprogramme, spiele usw?Gibt es diese Grenze überhaupt? :?

Danke!
mfg

Thomas :-)
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Wo hat Python seine Grenzen erreicht wo ich C oder C++ noch mehr machen kann
Wie ich bereits sagte: beide Sprachen sind Turing-vollständig, sprich in beiden geht alles (was eine berechenbare Funktion ist). C oder auch C++ lohnt sich (aus meiner Sicht!) nur da wo Du systemnah programmieren willst, was man zum Beispiel bei Verschlüsselungsalgorithmen allein aus Geschwindigkeitsgründen meißtens will. Das bedeutet aber eben nicht dass man die entsprechenden Algorithmen nicht auch in Python implementieren könnte.

Such zum Beispiel mal nach einer Python-Implementierung von MD5, und vergleich die Geschwindigkeit mit einer C-Implementierung. Die Ergebnisse werden für sich sprechen. Und: md5 in der stdlib ist genau aus dem Grund eine C-Bibliothek die von Python aus angesprochen werden kann.

Sonst gibts eigentlich keinerlei Vorteil bei der Programmierung in C/C++, weil Du Dich schlicht und ergreifend um unheimlich viel mehr kümmern musst was Du bei Python frei haus mitbekommst (wie high-level Datentypen wie listen und hashes die beliebige Objekte akzeptieren, etc.).
--- Heiko.
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Ok danke nochmal für die vielen Antworten!
mfg

Thomas :-)
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Abschliessend möchte ich noch hinzufügen, das du alles in PYthon schreiben kannst und nur einen sehr rechenintensiven teil als C extension schreiben könntest.

Heiko hat ja schon das md5 beispiel gebracht ...
Passwortcracker : dito.

Wo Python definitiv nicht geht, sind geräte treiber u.ä.
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Wo Python definitiv nicht geht, sind geräte treiber u.ä.
Auch hier geht Python wunderbar. Ich hab zum Beispiel mittels FUSE einen Dateisystem-Treiber für Linux im Userspace als Python-Programm geschrieben (ähnlich wie captive-ntfs, aber halt für ein eigenes, anderes Dateisystem).

Wenn der Kernel weitere Schnittstellen zum Userspace hin öffnen würde könnten auch andere Systeme mit Python direkt implementiert werden. Genauso könnte man auf die Idee kommen dem Kernel einen abgespeckten Python-Interpreter zu verpassen, der dann direkt im Kernel-Modus auf das System zugreifen kann wenn die entsprechenden Aufrufe in C (der Kernel ist mal nun leider in C) verkapselt werden mittels eines Erweiterungsmoduls.

Alles möglich. Und (siehe unununium) auch durchaus angedacht.
--- Heiko.
jana79
User
Beiträge: 10
Registriert: Dienstag 28. Februar 2006, 10:28

auch wenn das vllt jetzt nich so perfekt zu den letzten Antworten passt ... aber ...
Was ich zu py und cpp sagen kann ist, mir gefaellt bei py, dass man schnell was zusammen schreiben kann, was erst mal geht. Dabei muss ich mein ueber die Jahre meuhsam angesammeltes Shellwissen nicht ausser Acht lassen.

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
- krieg schneller bei Typfehlern Antwort
- gcc/gdb sind einstellbar

Und wenn ich nicht grad ein ganzes bundle von makefiles hinterhergeschmissen bekomme, dann kann ich auch python fuer meine Projekte nehmen :P :P :P
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Die Makefiles kannst du ja auch in SCons konvertieren, dann hast du wenigstens dort Python ;)
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.
Antworten