Seite 2 von 4
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

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!

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

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

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.
Verfasst: Freitag 10. März 2006, 14:16
von Python 47
Meinst du mit dem "er" zufällig mich?????
Wenn ja dann kann ich nur folgendes sagen:
Natürlich sehe ich Python als eine vollwertige Sprache an!Und es macht auch richtig spaß in Python zu programmieren, aber ich denke, dass es nicht schaden kann, wenn man mehr als eine Sprache kann!Du kannst ja auch viel
mehr Sprachen als Python!Auch wenn ich C/C++ kann, werde ich hauptsächlich noch in Python programmieren!
Verfasst: Freitag 10. März 2006, 14:25
von rayo
Hi
Fühl dich nicht immer angesprochen, ich glaube er bezieht sich einfach auf die Allgemeinheit und nicht eine bestimmte Person
Gruss
Verfasst: Freitag 10. März 2006, 14:33
von jens
Und ich glaube Buell war gemeint

Verfasst: Freitag 10. März 2006, 15:05
von modelnine
Und ich glaube Buell war gemeint
Jo, allerdings. Zumal ich in meinem Post keinerlei Bezug auf einen "er" genommen habe, sondern nur auf das Zitat.
Es ging mir schlicht und ergreifend darum dass man sehr mit Vorsicht genießen muß wenn jemand sowas sagt wie Buell in
Ich habe hier des öfteren gelesen, dass Python alles kann was C oder C++ auch kann, halte ich für absolut falsch.
Das ist nämlich, egal aus welcher Sicht gesehen, eine Aussage die in dieser Form
- 1) In Ihrer Allgemeinheit nicht stimmt
2) Völlig unzureichend begründet ist
3) Sehr inflammatorisch geschrieben, also eher einem Troll zuzuordnen als einem Menschen der jemanden anderes über die Vorzüge oder Nachteile einer Programmiersprache (besser gesagt, ihrer Implementierung) geben will
Darum gings mir im Endeffekt. Wenn jemand genau wie Buell der Meinung ist dass Python eine Sprache (nur) für das Prototyping ist, und eben nicht die "Vollständigkeit" hat die eine Programmiersprache (in der Allgemeinheit)
seiner Meinung nach auszeichnet, ist es besser, wenn er genau diese Tatsache (nämlich dass es
seine Meinung, und im besonderen
seine Erfahrung, bzw. seine
fehlende Erfahrung in der Python-Programmierung) zusammen mit seinem Post schreibt, so dass jeder weiß, was er von dieser Meinung zu halten hat. Zum Beispiel hätte es genügt wenn er anstatt seines Posts geschrieben hätte: "Ich habe in Python bisher zum Beispiel vergeblich probiert direktes Message-Passing zu benutzen wie man es in C++ meißtens mit Threads benutzt, aber ich weiß dass es auch andere Datentypen für den Austausch von Nachrichten zwischen Threads gibt, nur will ich die hier nicht verwenden, weil für mich blöd." Oder so was. Es ist nicht okay, wenn er eben eine solche Allgemeinaussage trifft, dann aber eben seinen Rahmen nicht einschränkt.
Das war im Endeffekt was ich mit der Aussage sagen wollte. Und warum das "nicht böse gemeint?" Buell hat in gewissen Dingen recht, nämlich gibts ja in Python das GIL, was einen anderen Programmierstil verlangt/benötigt als wenn ich in C/C++ mit Threads arbeite, das bedeutet eben auch soviel wie dass eben die Thread-Programmierung mit ganz anderen primitives auskommt als das zum Beispiel in C/C++ der Fall ist (nämlich zum Beispiel Queues zum Message-Passing zwischen Threads). Welches der beiden Modelle "toller" oder "besser", oder sogar nur "leicher zu verstehen" ist, ist eine philosophische Frage: in Python gibts aber sehr wohl ein Modell um das zu machen was Buell will, auch wenn's eben nicht direkt Nachrichten zwischen Threads sind sondern eine etwas allgemeinere Form des Datenaustauschs über einen geteilten Speicherbereich, nämlich die Queue.
Und: "Python Master 47," fühl Dich nicht angegriffen wegen etwas was ich erstens nicht zu Dir, und zweitens auch gar nicht mehr so wirklich im Rahmen dieses Threads gesagt habe.

Verfasst: Freitag 10. März 2006, 15:18
von Python 47
modelnine hat geschrieben:Und: "Python Master 47," fühl Dich nicht angegriffen wegen etwas was ich erstens nicht zu Dir, und zweitens auch gar nicht mehr so wirklich im Rahmen dieses Threads gesagt habe.

Ok werd es mir merken!
