Seite 1 von 3

Python und C++(C)

Verfasst: Freitag 9. März 2007, 21:22
von lost_mind
Könnte Python eigentlich ohne C++ existieren oder C oder eine andere sprache existieren ? Und kann es sein das viele Pythonia etwas oder einen leichten groll haben C(++) zu benutzen ? (ich kan nur Python :wink: )
könnte man also zb. 3D Engines realisieren ohne irgendeine sprache zu benutzen auser Python? Sry für die frage aber was ich bis jetzt so gelesen ect. habe naja tun sich mir eben diese fragen auf :D und ja ich bin neu bei Python und Programmieren :D

Verfasst: Freitag 9. März 2007, 21:30
von BlackVivi
Es gibt 3D "Engines" in Python, Resourcenkritische Stellen müssen aber trotzdem in C(++) umgesetzt werden... da Python alleine ein wenig zu langsam ist.


Python selber baut imho auf C auf, ich bin mir aber schon lange nicht mehr so sicher...

Verfasst: Freitag 9. März 2007, 21:32
von lost_mind
um "wie viel" ist python eigentlich langsamer ? und wieso eigenltich ? und bringt es einen vorteil binarys zu machen ? (compilen linken) ?

Verfasst: Freitag 9. März 2007, 21:39
von BlackVivi
lost_mind hat geschrieben:um "wie viel" ist python eigentlich langsamer ? und wieso eigenltich ? und bringt es einen vorteil binarys zu machen ? (compilen linken) ?
Alleine schon, weil Variablen während der Laufzeit deklariert werden ... und nicht explizit vorher...

Compilen? Bringt nicht sonderlich viel bei Python.

Verfasst: Freitag 9. März 2007, 21:42
von lost_mind
ungefähr in % ca. abgeschätzt :D um wie vile ist C++ schneller ? und ist C++ eigentlich die schnellste sprache ?

btw. trotz noob fragen schnelle antworten :) (ich bin erstaunt :D )

Verfasst: Freitag 9. März 2007, 21:50
von BlackVivi
lost_mind hat geschrieben:ungefähr in % ca. abgeschätzt :D um wie vile ist C++ schneller ? und ist C++ eigentlich die schnellste sprache ?

btw. trotz noob fragen schnelle antworten :) (ich bin erstaunt :D )
Schnellste "Sprache" ist Maschinensprache oO Aber niemand kann damit tatsähclich ein vollständiges Programm schreiben, dass er in 2 Wochen noch versteht.

C++ ist auch nicht die schnellste "verständlich" (darüber lässt sich auch streiten) Sprache... C ist noch ein bisschen schneller. Ich persönlich verabscheue C alleine schon wegen den Pointern...

Und C ist wirklich ein gaaaanzes Stückchen schneller als Python aber sehr unkomfortabel zu warten und weiterzureichen. Deswegen wird für die Spielelogik in größeren Spielen wie Civ3 auch Python verwendet.... komfortabel...

(Insbesondere weil es Fragen sind von jemanden, der noch nicht soviel Erfahrung hat, kann sie jemand wohl schnell beantworten... Ich bin wohl nicht der klügste auf dem Gebiet, aber ein,... zwei Sachen kann ich)

Achja, kompiliert... also zu .pyc Dateien ist Python nur wenig schneller, genau kann ich es nicht sagen... Solche Bibliotheken wie Psyco können Python ein ganzes Stückchen flotter machen... aber für Sachen wo mehrer 1000 Berechnungen nötig sind reichts wohl doch nicht...

Verfasst: Freitag 9. März 2007, 22:01
von BlackJack
Oh Mann, das ist ja mal wieder eine Diskussion. Erstmal: Sprachen sind nicht schnell oder langsam. Man kann nur *Implementierungen* vergleichen. Und da kommt es dann wieder darauf an, was man vergleicht.

Verfasst: Freitag 9. März 2007, 22:10
von BlackVivi
BlackJack hat geschrieben:Oh Mann, das ist ja mal wieder eine Diskussion. Erstmal: Sprachen sind nicht schnell oder langsam. Man kann nur *Implementierungen* vergleichen. Und da kommt es dann wieder darauf an, was man vergleicht.
Könnt ihn auch das ganze Gesamtkonzept erklären, aber das würde doch ein wenig ausschweifen, oder oO??... Ich mein, dass was er wissen will ist, ob eine bestimmte Anzahl von Operationen von der einen Sprache schneller ausgeführt wird als von einer anderen... Und das hab ich ja wohl gesagt, denk' ich mal.

Verfasst: Freitag 9. März 2007, 22:16
von lost_mind
ok hab schon verstanden :D aber meine frage ob Python ohne C++ oder andere Sprachen "existieren" kann ist noch offen :wink:

Verfasst: Freitag 9. März 2007, 22:17
von BlackJack
Ich denke es ist schon wichtig zu sagen, dass die Frage "Ist Sprache X schneller als Sprache Y?", inklusive Abschätzung des Unterschieds in Prozent einfach eine falsche Frage ist, die von einer ganzen Menge von Parametern abhängt. Unter anderem von der Plattform, dem Compiler, den Optionen beim Übersetzen, dem Algorithmus usw.

Verfasst: Freitag 9. März 2007, 22:21
von matott
lost_mind hat geschrieben:ok hab schon verstanden :D aber meine frage ob Python ohne C++ oder andere Sprachen "existieren" kann ist noch offen :wink:
Nein, selbst bei PyPy musst du bootstrappen. Außerdem kann man Python nicht so einfach mit Assembler verbinden und es existieren keine Pointer und sonstige "maschinennahe Konstrukte". Also kannst du mit Python z.B. kein Betriebsystem schreiben oder ohne die Std. Library auskommen, denn auf die bist du immer angewiesen.

Verfasst: Freitag 9. März 2007, 22:22
von lost_mind
jep hab schon verstanden das meine frage noobish war :oops:
aber naja ich hab auch nicht behaupted das ich es nicht bin :oops:

Verfasst: Freitag 9. März 2007, 22:26
von lost_mind
ah k aber was sind eigentlich bootstrappen?

also setzt python auf einer anderen sprache auf ?
oder nur auf das system ?
mist sry für doppel post

Verfasst: Freitag 9. März 2007, 22:31
von matott
lost_mind hat geschrieben:ah k aber was sind eigentlich bootstrappen?

also setzt python auf einer anderen sprache auf ?
oder nur auf das system ?
mist sry für doppel post
Siehe: http://en.wikipedia.org/wiki/Bootstrapp ... mpilers%29
Python ist selbst in C geschrieben (deshalb auch oft CPython), deshalb muss es "gebootstrappt" werden.

Verfasst: Freitag 9. März 2007, 22:40
von BlackJack
CPython ist in C geschrieben. Es gibt noch IronPython (.NET) und Jython (Java). Es gab mal ein Python in Lisp.

Dann gibt's PyPy, das in Python und RPython, einer statisch kompilierbaren Untermenge von Python, geschrieben ist.

Ausserdem gibt's noch Übersetzer die eine Untermenge von Python in andere Sprachen übersetzen: Pyrex (C) und ShedSkin (C++).

Verfasst: Freitag 9. März 2007, 22:52
von Grossmeister_C
BlackVivi hat geschrieben:Ich persönlich verabscheue C alleine schon wegen den Pointern...
Was hast Du gegen Pointer ?

Verfasst: Freitag 9. März 2007, 23:00
von Dill
eine sprache hat keine geschwindigkeit. sie ist erstmal nur eine hilfsmittel für den programmierer. sie abstrahiert den für menschen schlecht lesbaren maschinencode.

die erste stufe der abstraktion ist assembler:

Code: Alles auswählen

LOAD 47, R0 # merke dir "47" in Register 1
LOAD 11, R1 # merke dir "11" in Register 2
ADD R0, R1  # addiere die beiden zahlen
in maschinencode könnte das dann so etwas sein:

Code: Alles auswählen

0F 47 00  #0F := LOAD, 2F := 47, 00 := R0 
0F 11 01 
0A 00 01  #0A := ADD
(diesen code kann die cpu direkt ausführen, sie liest zeile für zeile zahlen ein, schaut was sie jeweils tun soll,macht das, liest die nächste zeile ...)

wichtig ist hier, dass jedem assemblerbefehl eindeutig eine zahl zugeordnet ist. ( LOAD = 0F (hex) = 00001111 (bin) )
Die parameter sind auch einfach nur zahlen, LOAD erwartet hier zb zuerst ein INT, dann ein ziel register (ein kleiner, schneller speicherplatz im prozessor)

Die abstraktion von einfachen zahlen zu befehlen wie "ADD" ist zwar schon klasse, aber schöner ist doch etwas wie:

Code: Alles auswählen

R0 = 47 + 11
Sowas nennt man dann "höhere programmiersprache", also eine abstraktionseben höher. deutlicher wird das bei kontrollstrukturen wie einem einfachen if:

Code: Alles auswählen

if a > b:
  print 1
else:
  print 2
würde in assembler schon grausam aussehen, etwa so:

Code: Alles auswählen

LOAD A, R0
LOAD B, R1
CMP R0, R1 #vergleiche register 0 und 1
JGT :else    # springe zu else wenn 0 grösser 1
LOAD 1, R2
PRINT R2 
:else
LOAD 2 R2
PRINT R2 
Höhere sprachen wie C oder C++ werden vom Compiler (Übersetzer) in maschinencode übersetzt (Compilersprachen). Wenn man also von geschwindigkeiten von sprachen spricht, meint man damit: wie schnell ist das compilat (der resultierende maschinencode).

C(++) compilate sind deshalb so schnell, da der programmierer sehr hardwarenah programmieren kann (pointer).
Pointer gibt es aber auch in vielen anderen sprachen.
Selbst in Python oder Java, obwohl man sie hier nicht direkt verwenden kann.

Python funktioniert grundsätzlich anders als C: es wird nicht übersetzt, sondern interpretiert, dh es läuft ein programm (geschrieben in einer Compilersprache) das das python-programm zur laufzeit (also während das python-programmausgeführt wird) anaylsiert und zeile für zeile ausführt. Daher ist python grundsätzlich langsamer als C.
Könnte Python eigentlich ohne C++ existieren oder C oder eine andere sprache existieren?
Nein, Python braucht eine Compilersprache, also zb C, in der der Pythoninterpreter geschrieben ist. (theoretisch könnte man den auch direkt in assembler schreiben, aber s.o.)
Und kann es sein das viele Pythonia etwas oder einen leichten groll haben C(++) zu benutzen ?

C(++) sind grausame sprachen, die leider viel zu oft eingesetzt werden.
vor allem von leuten die sie nicht richtig (was schwer ist) beherrschen.
Viele probleme wären in anderen sprachen wie etwa python leichter lösbar, ohne performanceprobleme.
könnte man also zb. 3D Engines realisieren ohne irgendeine sprache zu benutzen auser Python
theoretisch ja. du kannst alles machen in phython (ausser ein betriebssystem) sobald der interpreter läuft ist alles möglich.
praktisch gibt es dinge die nach compilersprachen verlangen, dazu gehören definitiv 3D engines.

Verfasst: Freitag 9. März 2007, 23:41
von BlackJack
Dill hat geschrieben:Python funktioniert grundsätzlich anders als C: es wird nicht übersetzt, sondern interpretiert, dh es läuft ein programm (geschrieben in einer Compilersprache) das das python-programm zur laufzeit (also während das python-programmausgeführt wird) anaylsiert und zeile für zeile ausführt.
Das stimmt so nicht. Bei CPython wird der Python Quelltext in Bytecode übersetzt und nicht Zeile für Zeile interpretiert. Dieser Bytecode kann von einem JIT-Compiler wie Psyco auch in Maschinensprache übersetzt werden. Das gleiche gilt für IronPython und Jython.

Verfasst: Samstag 10. März 2007, 00:15
von Dill
:) ... ich wusste, dass das kommt.
wollte es aber nicht noch komplizierter machen, ist so wohl schon schwer verdaulich ...

wichtig ist aber, dass bei python kein fertiger maschinencode ausgeführt wird, sondern dieser erst zur laufzeit entsteht.

Verfasst: Samstag 10. März 2007, 00:16
von Ene Uran
Ein guter Dialog!

Die Idee hinter Python war, dass man die Sprache gut lesen und verstehen kann. Bausteine (modules) sind einfach einzubauen und man kann sie auch in anderen Sprachen schreiben. Python ist ein Interpreter, man kann Ideen leicht ausprobieren, das endlose compile/link ist einfach zu langsam. Python hat viele Dinge eingebaut von dem andere Sprachen nur geile Sehnsucht haben ...