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
Python in C - Warum?
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
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
*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.EyDu hat geschrieben:Ich glaube, ich bin nicht der einzige der jetzt darauf wartet, dass du uns das jetzt aber mal genauer erklärstne0h hat geschrieben:Und der höheren Sicherheit von C++?
@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.
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.
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
Ich bin ein dynamischer Typ. Na gut, Haskell ist auch toll
Mir sind beide Sprachen jedenfalls von der Syntax und den Standardfunktionen so suspekt, dass ich mit denen nicht so richtig was anfangen kann
Ich bin ein dynamischer Typ. Na gut, Haskell ist auch toll
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
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:Sicherheit erhöht wegen reduzierter malloc-Frickellei.
Also wenn C++ die Lösung für die ganzen Buffer Overflows ist, dann stimmt da was nichtaudax hat geschrieben:Weniger Buffer Overflows, weil man weniger falsch machen kann.
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
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
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 Verhaltenaudax 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 )
TUFKAB – the user formerly known as blackbird
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Der gobject blöd findet, was ihn aber nicht hindert Vala zu empfehlen.mitsuhiko hat geschrieben:Mir fällt bei C++ immer wieder mal Ronny Pfannschmidt ein, der auch so ein Hardcode C++ Verteidiger ist.
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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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.mitsuhiko hat geschrieben:C++ ist sicher eine wunderbare Sache, wenn man das > 4 Jahre macht und Spaß mit kaputtem Sprachdesign hat.
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.
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.
Ich hoffe, ich konnte hier ein wenig Klarheit schaffen.
Gruß
ne0h
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.
Ich hoffe, ich konnte hier ein wenig Klarheit schaffen.
Gruß
ne0h
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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.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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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.
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.
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.
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.
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).