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

C/C++ vs Python

Beitragvon Python 47 » Samstag 4. März 2006, 20:52

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:

Beitragvon modelnine » Samstag 4. März 2006, 21:18

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.
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Re: C/C++ vs Python

Beitragvon Joghurt » Samstag 4. März 2006, 23:57

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:

Beitragvon modelnine » Sonntag 5. März 2006, 00:23

Einen Segmentation fault produzieren.


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

Re: C/C++ vs Python

Beitragvon BlackJack » Sonntag 5. März 2006, 07:48

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

Beitragvon Mad-Marty » Sonntag 5. März 2006, 09:59

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

Beitragvon Gunnar » Sonntag 5. März 2006, 10: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:

Re: C/C++ vs Python

Beitragvon Rebecca » Sonntag 5. März 2006, 12:27

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

Beitragvon Python 47 » Sonntag 5. März 2006, 14:53

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:

Beitragvon modelnine » Sonntag 5. März 2006, 15:22

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

Beitragvon Python 47 » Sonntag 5. März 2006, 17:03

Ok danke nochmal für die vielen Antworten!
mfg



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

Beitragvon Mad-Marty » Sonntag 5. März 2006, 21: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:

Beitragvon modelnine » Sonntag 5. März 2006, 22:24

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

Beitragvon jana79 » Montag 6. März 2006, 11:50

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
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Montag 6. März 2006, 14:34

Die Makefiles kannst du ja auch in SCons konvertieren, dann hast du wenigstens dort Python ;)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder