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!
C/C++ vs Python
-
- 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.
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.
Einen Segmentation fault produzieren.Python Master 47 hat geschrieben:Jetzt wollte ich wissen, was ich mit C/C++ machen kann, was in Python nicht geht!
Zuletzt geändert von Joghurt am Sonntag 5. März 2006, 00:26, insgesamt 1-mal geändert.
Erstmal sollte Dir klar sein das Du da zwei neue Sprachen lernen willst. C++ ist eine ganz andere Welt als C.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!
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.
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.
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.
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.

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.
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
* Speicherlecks produzierenPython Master 47 hat geschrieben:jetzt wollte ich wissen, was ich mit C/C++ machen kann, was in Python nicht geht!
* Den Linux-Kernel verstehen

* Lernen, wie bequem Python ist

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.
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!
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 :-)
Thomas :-)
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
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.Wo hat Python seine Grenzen erreicht wo ich C oder C++ noch mehr machen kann
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.
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.ä.
Heiko hat ja schon das md5 beispiel gebracht ...
Passwortcracker : dito.
Wo Python definitiv nicht geht, sind geräte treiber u.ä.
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
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).Wo Python definitiv nicht geht, sind geräte treiber u.ä.
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.
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
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

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

- 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



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!
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 :-)
Thomas :-)
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.Python Master 47 hat geschrieben:Also das mit dem Pwd Cracker hab ich noch net so verstanden?
Geht sowas jetzt in Python zu programmieren?
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
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.
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 -
Matthias
- Fluchen befreit von Kummer und Leid -
und was heisst das jetzt? ... sind irgendwie ziemlich viele Schlagwoerter dabei, also sags mal auf deutsch in verstaendlichen Saetzen, bitte ...Gunnar hat geschrieben:...und das Python-Prototyping wird nach der Portierung einiger Klassen nach C quasi sofort zu Productioncode
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.
Wobei mir persönlich son Patchwork nicht gefallen würde... das ist aber rein subjektiv.