Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

C++, eine moderne Programmiersprache!

40 views
Skip to first unread message

Manuel Rodriguez

unread,
Feb 27, 2017, 5:20:03 PM2/27/17
to
Fragt man bei Stackoverflow oder anderen Foren so hört man oft sehr abfällige Bemerkungen über C++. Angeblich ist jede andere Sprache besser und einige würden sogar Forth nutzen bevor sie sich mit C++ anfreunden. Angeblich ist C++ schwer zu lernen und ist auch nicht viel schneller als Java. Warum also noch mit C++ herumprobieren wenn es doch viel bessere Sprachen wie z.B. Go oder Python gibt?

Das Problem mit echten oder vermeintlichen Alternativen zu C++ ist, dass sie im Einzelfall wertvolle Dienste leisten, aber sich nicht als General Purpose Language eignen. Mal ein Beispiel: Python ist die mit Abstand beste Scriptsprache, man kann wunderbar kurze Programme schreiben, die objektorientiert sind und sogar über eine 3D Grafik verfügen. Aber, wenn man nicht nur Prototypen benötigt, sondern ein richtiges Programm was stabil läuft und täglich benutzt wird, ist Python komplett nutzlos. Es startet nur langsam, es ist nicht kompatibel mit Windows und Linux und die Thread Unterstützung ist mäßig.

Ähnlich ist auch Java eine wunderbare Sprache. Man kann damit super-business Anwendungen bauen die überall laufen und anders als bei C++ muss man sich auch nicht mit Zeigern herumärger. Aber wehe man will mit Java ein Spiel basteln. Dort rächt sich der Verzicht auf Pointer bitterlich, das Spiel wird bei 30 fps immernoch ruckeln wie der Teufel.

Letztlich wird man egal mit welcher Programmiersprache man startet am Ende wieder bei C++ landen. Nur C++ erzeugt saubere EXE oder ELF Dateien, nur C++ bringt eine Unterstützung für gängige Game-Engines mit und nur C++ hat echtes Multithreading. Zugegeben, das Programmieren damit geht sehr langsam vonstatten. Man erhält permanent compiler-Meldungen die keinen Sinn ergeben und beim Umgang mit Pointer ist ein sogeannter "Core dump" nicht die Ausnahme sondern die Regel. Auch gibt es immer mehrere Wege ans Ziel und die Dokumentation ist in sich widersprüchlich. Nur, von der Performance her und von den Sprachfeatures ist C++ unübertroffen. Es gibt keine Sprache die derart mächtig ist.

Und ich spreche da aus Erfahrung. Angefangen habe ich mit Python und konnte dort in kurzer Zeit einen kompletten Roboter-Simulator hochziehen, inkl. Gameengine und BehaviorTree. Aber, leider merkt man relativ schnell dass die Performance doch zu niedrig ist, dass die Anwendung nicht so sauber läuft wie sie könnte und dass Python eine Sackgasse darstellt. Wenn man hingegen auf C++ wechselt fühlt sich alles viel mächtiger an. Zwar macht die Software nicht mehr als die Python Version, es ist aber eben doch ein kleiner Unterschied in welcher Sprache man das System erstellt hat. Bei der C++ Version hat man eine ausführbare Binärdatei, die man dem Betriebssystem übergibt und die wird dann ausgeführt. Da gibt es keine Rückfragen ob der Python Interpreter läuft oder ob die Java Runtime Edition die neueste ist. Da gibt es nur die Applikation und die CPU.

Warum schreibe ich das alles? Nun, ganz einfach um ein wenig Werbung zu machen für C++. Der Einstieg ist komplex aber es lohnt sich.

Stefan Ram

unread,
Feb 27, 2017, 7:00:05 PM2/27/17
to
Manuel Rodriguez <a...@gmx.net> writes:
>Angeblich ist jede andere Sprache besser und einige würden
>sogar Forth nutzen bevor sie sich mit C++ anfreunden.

In manchen Fällen ist C++ besser geeignet, in anderen
weniger gut. Man kann wohl kaum pauschal sagen,
daß C++ immer die beste oder schlechteste Wahl ist.

>Angeblich ist C++ schwer zu lernen

"Wenn man es mit anderen Sprachen vergleicht,
ist C++ tatsächlich schwer gut zu erlernen."

Bjarne Stroustrup

www.heise.de/developer/artikel/Interview-mit-C-Schoepfer-Bjarne-Stroustrup-2300861.html?artikelseite=2

>und ist auch nicht viel schneller als Java.

C++ ist nicht schneller als Java, sondern C++ gibt dem
Programmierer die Mittel an die Hand, ein C++-Programm
schreiben zu können, das schneller als ein entsprechendes
Java-Programm ist.

>Warum also noch mit C++ herumprobieren wenn es doch viel
>bessere Sprachen wie z.B. Go oder Python gibt?

Und in welchen Sprachen sind die implementiert?

Das Oracle JDK ist wohl in C++ implementiert.

[Python]
>startet nur langsam, es ist nicht kompatibel mit Windows und
>Linux und die Thread Unterstützung ist mäßig.

Ich verwende hier unter Windows ein Programm, das man am
ehesten als eine Art von Systemprogramm bezeichnen könnte,
und es ist in Python geschrieben (nicht von mir). Ich kenne
kein anderes Programm, welches das von mir Benötigte tut
außer diesem Python-Programm. Und es arbeitet einwandfrei.
Und ich konnte - obwohl ich zu diesem Zeitpunkt kein Python
gelernt hatte - schon einige Änderungen am Programm vornehmen.

>Java eine wunderbare Sprache. Man kann damit super-business
>Anwendungen bauen die überall laufen und anders als bei C++
>muss man sich auch nicht mit Zeigern herumärger.

Laut Java Language Specification gibt es in Java "pointers".

>Aber wehe man will mit Java ein Spiel basteln. Dort rächt
>sich der Verzicht auf Pointer bitterlich, das Spiel wird bei
>30 fps immernoch ruckeln wie der Teufel.

Minecraft wurde ja ursprünglich in Java programmiert.
Aber für (professionelle) Computerspiele (in dem typischen
Stil) ist C++ tatsächlich die beliebteste Sprache.

>Letztlich wird man egal mit welcher Programmiersprache man
>startet am Ende wieder bei C++ landen. Nur C++ erzeugt
>saubere EXE oder ELF Dateien,

Bei TIOBE und anderen Stastiken liegt C immer noch
deutlich vor C++.

Python ist wohl beispielsweise in C implementiert.

>Bei der C++ Version hat man eine ausführbare Binärdatei, die
>man dem Betriebssystem übergibt und die wird dann ausgeführt.
>Da gibt es keine Rückfragen ob der Python Interpreter läuft
>oder ob die Java Runtime Edition die neueste ist. Da gibt es
>nur die Applikation und die CPU.

Manchmal wird dem Endanwender gesagt: "Bitte prüfen Sie, ob
'Microsoft Visual C++ 2013 Redistributable Package'
installiert ist und installieren Sie es gegebenenfalls,
bevor Sie unser Programm starten!".

Wahrscheinlich kann man Bibliotheken auch /statisch/ mit
einem C++-Programm verbinden, aber dann wird dieses
C++-Programm vergrößert und profitiert nicht von den
Vorteilen von Laufzeitbibliotheken. Beispielsweise
wirkt sich eine Sicherheitsaktualisierung in einer
Laufzeitbibliothek nur auf binäre Programm aus, welche
sich dynamisch mit dieser verbinden.

Jörg "Yadgar" Bleimann

unread,
Mar 7, 2017, 12:20:04 PM3/7/17
to
Hi(gh)... oder doch lieber "Salâm 'aleikum"?

On 27.02.2017 22:05, Manuel Rodriguez wrote:
> [ einen cpluspluslimischen Nashid ]

If programming languages were religions...
(http://blog.aegisub.org/2008/12/if-programming-languages-were-religions.html):

"C++ would be Islam - It takes C and not only keeps all its laws, but
adds a very complex new set of laws on top of it. It's so versatile that
it can be used to be the foundation of anything, from great atrocities
to beautiful works of art. Its followers are convinced that it is the
ultimate universal language, and may be angered by those who disagree.
Also, if you insult it or its founder, you'll probably be threatened
with death by more radical followers."

Volltreffer! Genau so oder ähnlich (mich erinnert C++ irgendwie an
klassisches Arabisch, jedenfalls nach allem, was ich durch meinen
langjährigen Freund http://www.ismailmohr.de über die Sprache
mitbekommen habe) empfinde ich es schon seit langem - und würde mir
daher am liebsten die Shahada (das Glaubensbekenntnis) der
Cepluspluslime in klassischer arabischer Kalligrafie auf die Stirn
tätowieren lassen:

ES GIBT KEINE WAHRE PROGRAMMIERSPRACHE AUSSER C++
UND BJARNE STROUSTRUP IST IHR SCHÖPFER!

Wo finde ich eine Rekrutierungsstelle für den C++-Dschihad?
Am liebsten gegen Visual Basic, C# und sonstige
Möchtegern-Programmiersprachen...

Bis bald im Khyberspace!

Yadgar

Stefan Reuther

unread,
Mar 7, 2017, 12:50:03 PM3/7/17
to
Am 07.03.2017 um 02:00 schrieb Jörg "Yadgar" Bleimann:
> ES GIBT KEINE WAHRE PROGRAMMIERSPRACHE AUSSER C++
> UND BJARNE STROUSTRUP IST IHR SCHÖPFER!
>
> Wo finde ich eine Rekrutierungsstelle für den C++-Dschihad?
> Am liebsten gegen Visual Basic, C# und sonstige
> Möchtegern-Programmiersprachen...

Ich hab ja doch ein Momentchen überlegt, ob das noch on-topic ist, aber
plattformabhängig war's halt nicht.

Diese Gruppe beschäftigt sich mit ISO-14882-konformem C++.
Themen sind z.B. die Umsetzung von Algorithmen, Verwendung von
C++-Features und Umsetzung objektorientierter Methodik in
diese Sprache.

Folglich ist der Schöpfer nach der Lehre dieser Newsgroup die WG21, die
den ISO 14882 verfasst hat, und Missionierungshilfen^WArgumente für die
Verwendung von C++ sind gern gesehen.

Allerdings würde ich betonen, dass auch und gerade C++ nicht unbedingt
eine monotheistische Lehre sein muss. Denn als Mitglied der C-Familie
erlaubt C++ das Einbetten anderer Sprachen wie Lua, Python, Perl
(versuch das mal in Visual Basic!), und wird auch so nicht böse, wenn
man mal abtrünnig wird.

Konfuzius sagt: in jeder Pipe ist noch Platz für ein Perlscript.


Stefan

Jörg "Yadgar" Bleimann

unread,
Mar 8, 2017, 1:30:04 PM3/8/17
to
Hi(gh)!

On 07.03.2017 18:47, Stefan Reuther wrote:
> Am 07.03.2017 um 02:00 schrieb Jörg "Yadgar" Bleimann:
>> ES GIBT KEINE WAHRE PROGRAMMIERSPRACHE AUSSER C++
>> UND BJARNE STROUSTRUP IST IHR SCHÖPFER!
>>
>> Wo finde ich eine Rekrutierungsstelle für den C++-Dschihad?
>> Am liebsten gegen Visual Basic, C# und sonstige
>> Möchtegern-Programmiersprachen...
>
> Ich hab ja doch ein Momentchen überlegt, ob das noch on-topic ist, aber
> plattformabhängig war's halt nicht.

Ich war mir auch nicht ganz sicher, ob das Posting nicht womöglich zu
"heiß" sein könnte, angesichts des Themas "Islam"... aber natürlich will
ich C++-Programmierer nicht in die ideologische Nähe von Islamisten rücken!

> Allerdings würde ich betonen, dass auch und gerade C++ nicht unbedingt
> eine monotheistische Lehre sein muss. Denn als Mitglied der C-Familie
> erlaubt C++ das Einbetten anderer Sprachen wie Lua, Python, Perl
> (versuch das mal in Visual Basic!), und wird auch so nicht böse, wenn
> man mal abtrünnig wird.

Ja, das wäre dann wohl ein langhaarig-lässiger heterodoxer Sufi-Orden
mit indisch-pantheistischem Einschlag... doch, nicht unsympathisch!
Solange die Bärte stimmen...

Und Visual Basic, das ist wirklich Murks, den ich als Programmiersprache
nicht ernstnehman kann - ich musste das mal im Rahmen einer Umschulung
lernen, nie wieder!!!
0 new messages