Python in C - Warum?

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.
ne0h
User
Beiträge: 115
Registriert: Samstag 16. Februar 2008, 11:35

Hi,

auch wenns blöd klingt, aber ich frage mich seit Tagen:

Warum ist Python selbst in Ansi C geschrieben? Warum nicht in C++ ?

Gruß

ne0h
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Wieso sollte es denn in C++ geschrieben sein?
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Benutzeravatar
Craven
User
Beiträge: 223
Registriert: Dienstag 24. Januar 2006, 13:37

Das liegt wahrscheinlich am Autor.
[code]q = 'q = %s; print q %% repr(q)'; print q % repr(q) [/code]
ne0h
User
Beiträge: 115
Registriert: Samstag 16. Februar 2008, 11:35

Hm,

schon alleine der OO wegen? Und der höheren Sicherheit von C++?

Ich meine damit auch nicht, dass ich es unbedingt "so" machen würde, ich wüßte halt nur gerne, warum gerade reines C gewählt wurde und warum eben nicht C++? Oder gibt es dafür garkeinen Grund und die Wahl der Sprache ist nur Zufall?

ne0h
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

ne0h hat geschrieben:Und der höheren Sicherheit von C++?
Ich glaube, ich bin nicht der einzige der jetzt darauf wartet, dass du uns das jetzt aber mal genauer erklärst ;-)
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

EyDu hat geschrieben:
ne0h hat geschrieben:Und der höheren Sicherheit von C++?
Ich glaube, ich bin nicht der einzige der jetzt darauf wartet, dass du uns das jetzt aber mal genauer erklärst ;-)
*lach* Genau das wollte ich auch schreiben. Ich weiß nicht, hab bisher nur das Gegenteil gehört. Wenn überhaupt... Die Sicherheit sollte nur gleich sein, nicht besser.
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Sicherheit erhöht wegen reduzierter malloc-Frickellei.

Weniger Buffer Overflows, weil man weniger falsch machen kann.
BlackJack

@audax: Also ich komme mit der Speicherverwaltung von C++ so gar nicht klar. Wenn's dann noch mit Ausnahmen kombiniert wird, ist die Sprache unbrauchbar. Und irgendwie kann man bei C++ auch viel mehr falsch machen. Wegen der drastisch erhöhten Komplexität der Sprache.

Ausserdem hat C++ ein komplett anderes OOP-feeling als Python. Das wäre ein ganz schöner Bruch. C++ OOP ist IMHO kein OOP im Sinne des Erfinders. Sieht der übrigens auch so.
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Ich kann beides nicht, aber Hello World ist von den Verbesserungen von C++ begeistert. (Und er ist kein blinder Fanatiker, auch wenn er manchmal so erscheint ;) )

Mir sind beide Sprachen jedenfalls von der Syntax und den Standardfunktionen so suspekt, dass ich mit denen nicht so richtig was anfangen kann :o
Ich bin ein dynamischer Typ. Na gut, Haskell ist auch toll ;)
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

audax hat geschrieben:Sicherheit erhöht wegen reduzierter malloc-Frickellei.
Eh. Ja. Ne klar. Also ich geb ja zu, ich hab so überhaupt keine Ahnung von dem Thema, aber ich seh jetzt nicht, wie das was mit C++ zu tun hat. Kannst dir ja einen Böhm nehmen und malloc/free auf den Böhm GC definen und fertig ist dein Müll-eingesammeltes C Programm.
audax hat geschrieben:Weniger Buffer Overflows, weil man weniger falsch machen kann.
Also wenn C++ die Lösung für die ganzen Buffer Overflows ist, dann stimmt da was nicht ;-)

Zumindest ich tu mir mit C wesentlich leichter als mit C++ und sehe es als großen Vorteil, dass Python in C implementiert ist. Das Refcounting ist jetzt nicht so toll, aber wäre auch in C++ nicht wirklich anders. Diese smart pointer Sache ist auch nicht der Weißheit letzter Schluss, vor allem ist das schwerer zu durchblicken als ein einfaches INCREF/DECREF.
TUFKAB – the user formerly known as blackbird
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

C ist eben auch wesentlich einfacher...

@Topic:
Weil es viel mehr ordentliche C Programmierer als ordentliche C++-Programmierer gibt :D
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

audax hat geschrieben:Ich kann beides nicht, aber Hello World ist von den Verbesserungen von C++ begeistert. (Und er ist kein blinder Fanatiker, auch wenn er manchmal so erscheint ;) )
Für die nicht ubuntuusers.de Leute, da gibts einen Typen der heißt "Hello World". Mir fällt bei C++ immer wieder mal Ronny Pfannschmidt ein, der auch so ein Hardcode C++ Verteidiger ist. C++ ist sicher eine wunderbare Sache, wenn man das > 4 Jahre macht und Spaß mit kaputtem Sprachdesign hat. Das könnte ich ja fast verstehen weil das was mir bei Ruby am besten gefällt sind die Designschnitzer und das Teils seltsame Verhalten :)
TUFKAB – the user formerly known as blackbird
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

mitsuhiko hat geschrieben:Mir fällt bei C++ immer wieder mal Ronny Pfannschmidt ein, der auch so ein Hardcode C++ Verteidiger ist.
Der gobject blöd findet, was ihn aber nicht hindert Vala zu empfehlen. :)

Ich werf da direkt noch bessere Fragen in den Raum. Warum ist Python nicht in O'Caml geschrieben, die Entwickler hätten doch CPython wegwerfen können und Vyper nehmen können. Oder warum wird CPython nicht zu DPython portiert? Oder warum gibt es immernoch kein Python, das in JavaScript implementiert ist? Fragen über Fragen...

ne0h, für mich klingt deine Frage etwa so als hätte dir jemand gesagt, dass C++ toll ist (warscheinlich ein Windows-Nutzer, denn dort ist es wesentlich populärer, weil es dort bis vor kurzem keine anderen wirklich wesentlichen Sprachen gab) und du jetzt überlegst, warum die ganzen Unix-Leute nicht schon längst auf C++ umgestiegen sind. :shock:
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Python in Python implementieren: [wiki=FAQ#WasIstPypy]PyPy[/wiki].

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
lunar

mitsuhiko hat geschrieben:C++ ist sicher eine wunderbare Sache, wenn man das > 4 Jahre macht und Spaß mit kaputtem Sprachdesign hat.
Das kommt jetzt auch auf das Toolkit an. C++ mit TBB fühlt sich aufgrund der exzessiven Verwendung von Funktoren fast schon ein wenig funktional an, C++ mit Qt4 wird ich zwischen Java (schlechter) und C# (besser) ansiedeln.

In wie weit C++ "schlecht" ist, hängt sehr davon ab, ob man Komfort-Toolkits nutzt, oder lieber "roh" mit C++, Boost und Konsorten programmiert. Ersteres ist zwar nicht Python, aber immer noch besser als Java, letzteres ist für die Tonne ;)

Es gibt Qt4 Programme, in denen nicht ein einziges free-Statement auftaucht, weil sich Qt4 um Speicherbereinigung kümmert.
ne0h
User
Beiträge: 115
Registriert: Samstag 16. Februar 2008, 11:35

Hallo,

also vorab erstmal einige Dinge, die ich klarstellen möchte, da meine Frage wohl doch eher falsch aufgefasst wurde bzw. zumindest nicht so, wie ich es beabsichtigt habe.

Ich habe nicht damit beabsichtigt, C gegen C++ zu bewerten bzw. C als "ungeeignet" zu degradieren bzw. C++ als "besser" darzustellen.

Meine Aussagen zu C++ und der höheren Sicherheit bzw. der OO sind keine eigenen Meinungen, sondern das, was in sehr sehr vielen Kreisen als Meinung kursiert. C++ wird nunmal eine erhöhte Typsicherheit zugesagt, z.B. hält sich die Meinung, dass C-Compiler (und auch einige C++ Compiler) hinsichtlich der Überprüfung vpn Quellcode keine geeigneten und sicheren Prüfroutinen besitzen und somit viele Fehler untergehen.

Auch das Speichermanagement bei C soll anfällig für Fehler sein (was auch schon jemand hier angesprochen hat). Ich habe zu C in einem Buch gelesen (welches weiss ich jetztn nicht mehr, müsste ich mal nachschauen), dass C aus diesen Gründen z.B. nicht in der Raumfahrt oder in sicherheitsrelevanten Bereichen eingesetzt wird.

Um wieder zum Kern der Sache zu kommen: Mir persönlich macht die Programmierung mit C grossen Spass, mit C++ konnte ich noch keine so grossen Erfahrungen sammeln. C ist natürlich unglaublich schnell und mächtig (nicht umsonst sind die meissten Systeme immer noch in C implementiert). Aber C hat auch seine Macken und Tücken, die zwar zum Teil durch guten Programmierstil und durch "Vorausdenken" garnicht erst auftreten, aber auch C++ ist da bei weitem nicht perfekt.

Trotzdessen geht es eben nicht um einen "Was ist denn nun besser"-Vergleich dieser Sprachen oder um diese typischen 08/15 Kämpfe , sondern um den Hintergrund dessen.

Oder um es ein wenig besser zu formulieren:

Hinter einer Sprache verbirgt sich (zumindest heute noch) ein Mensch, der auch mit bestimmten Absichten und Zielen eine Sprache entwirft und dabei bestimmte Konzepte zugrunde legt.

So habe ich in einem Python Buch etwas interessantes gelesen.

Es wird dort ein direkter Vergleich gezogen, zwischen Perl und Python. Warum? Weil der Autor auf die Menschen dahinter zu sprechen kommt. Er definiert dabei, um welche Menschen es sich hinter diesen Sprachen handelt, also welchen Hintergrund die beiden Erschaffer mitbringen.

Zu Perl ist seine Aussage:

Der Erschaffer von Perl ist ein gelernter Linguist. Dies schlägt sich eben im Design der Sprache nieder. "There is more than one way to do it" zeigt hier sehr gut die Verbindung, in der menschlichen Sprache gibt es häufig dutzende Wege, etwas auszudrücken, zu umschreiben....

Python hingegen wurde von einem Menschen erschaffen, der gelernter Mathematiker ist. Dies zeigt sich in der Philosophie, dass es genau einen Weg für eine Lösung gibt und dies ist auch (fast immer) der effizienteste und logischste. Python ist kein Sprache, die sich aus unzähligen "Ausnahmen" zusammensetzt, sondern eine logisches, mathematisches Konstrukt mit definiertem Verhalten.


So zumindest sind die Aussagen des Autors.

Was davon nun zu 100% der Wahrheit entspricht, weiss ich nicht, aber es sind doch sehr interessante Aussagen, die dort aufgegriffen werden und damit auch beide Sprachen in einen direkten Kontext gerückt werden.

Und dahingehend zielte auch meine Frage.

Ich möchte nicht wissen, welche syntaktischen Elemente C besser machen als C++ oder dass C++ als OO Sprache konzipiert wurde (und JA, ich weiss, auch das gehört nunmal dazu, ich habe es auch selber angesprochen). Ich möchte im Grunde wissen, welche Überlegungen dazu geführt haben, dass C der Baustein für Python ist.

Und NEIN, Leonidas, niemand hat mir aufgedrückt, C++ sei das "Wahre". Ich gehe von meinen eigenen Gedanken aus und stelle mir nunmal des öfteren solche Fragen, die vielleicht ein wenig kindisch oder merkwürdig klingen. Aber ich schaue einfach auch gerne hinter die Kulissen und begnüge mich nicht mit dem, was offensichtlich scheint. :wink:


Ich hoffe, ich konnte hier ein wenig Klarheit schaffen.


Gruß

ne0h
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

ne0h hat geschrieben:Meine Aussagen zu C++ und der höheren Sicherheit bzw. der OO sind keine eigenen Meinungen, sondern das, was in sehr sehr vielen Kreisen als Meinung kursiert. C++ wird nunmal eine erhöhte Typsicherheit zugesagt, z.B. hält sich die Meinung, dass C-Compiler (und auch einige C++ Compiler) hinsichtlich der Überprüfung vpn Quellcode keine geeigneten und sicheren Prüfroutinen besitzen und somit viele Fehler untergehen.
Weder C noch C++ bieten eine besonders große Typsicherheit, wenn du Typsicherheit willst, dann nimm doch eine Sprache mit Hindley-Miller Inferenzierten Typen. Das stört weniger und bietet höhere Typsicherheit.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sechsrad
User
Beiträge: 173
Registriert: Montag 31. März 2008, 17:09

dieser sogenannte "Mathematiker" konnte kein "c++" wo er python konstruiert hat, sondern nur "c" . wenn man sich einmal festbeissen tut, kommt man nicht mehr los.

ein schlechtes beispiel ist "Purebasic mit Ogre", festgebissen und immer noch keine lösungen von ogre in purebasic, womit ein progger was vernünftiges in 3d schaffen kann.

:D
BlackJack

Vielleicht sollte man auch mal ein Blick auf das Jahr werfen, an dem Python gestartet ist: 1991. Also sieben Jahre bevor C++ standardisiert wurde. C dagegen war schon standardisiert und es gab konforme Compiler auf vielen Plattformen.

Ausserdem sind sich IMHO "philosophisch" C und Python viel näher als C++ und Python. Im C-Standard sind fünf Ziele des Sprachentwurfs aufgelistet, von denen die ersten vier auch auf Python, aber nicht auf C++ zutreffen:

1. Trust the programmer.
2. Don't prevent the programmer from doing what needs to be done.
3. Keep the language small and simple.
4. Provide only one way to do an operation.
5. Make it fast, even if it is not guaranteed to be portable.
lunar

Zudem ist C++ nicht so portabel wie C. Selbst zehn Jahre nach der Standardisierung setzt kaum ein Compiler den Standard vollständig um, die C++-Standardbibliothek kommt kaum über Container-Klassen, IO und Strings hinaus, und zudem interpretieren C++-Compiler den Standard manchmal äußerst frei (man denke nur an die ganze VS-C++-Erweiterungen).
Antworten