Seite 1 von 4

Verfasst: Montag 6. März 2006, 15:27
von Python 47
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!

Verfasst: Montag 6. März 2006, 15:40
von N317V
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.

Verfasst: Montag 6. März 2006, 16:04
von mr.hide
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.

Verfasst: Montag 6. März 2006, 16:27
von jana79
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 ...

Verfasst: Montag 6. März 2006, 16:31
von ryu
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.

Verfasst: Montag 6. März 2006, 18:30
von jana79
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.

Verfasst: Montag 6. März 2006, 18:39
von modelnine
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.

Verfasst: Montag 6. März 2006, 22:38
von 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.

Verfasst: Montag 6. März 2006, 22:45
von Python 47
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:

Verfasst: Montag 6. März 2006, 22:48
von 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.

Verfasst: Montag 6. März 2006, 23:05
von 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.

Verfasst: Dienstag 7. März 2006, 00:53
von rayo
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

Verfasst: Dienstag 7. März 2006, 09:12
von Gunnar
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

Verfasst: Dienstag 7. März 2006, 11:48
von Clython
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...

Verfasst: Donnerstag 9. März 2006, 19:40
von Kompottkin
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ß :)

Verfasst: Donnerstag 9. März 2006, 19:42
von Joghurt
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.

Verfasst: Freitag 10. März 2006, 08:13
von jens
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

Verfasst: Freitag 10. März 2006, 08:26
von Buell
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.

Verfasst: Freitag 10. März 2006, 08:37
von jens
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?

Verfasst: Freitag 10. März 2006, 10:01
von modelnine
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.