vergesst C++ ...
-
groovemaster schrieb:
maximAL schrieb:
oh doch, genau darum geht es hier.
Nö. Entweder du hast den Thread nicht gelesen oder das Thema nicht verstanden. Niemand behauptet, dass C++ die beste Sprache ist wo gibt, und niemand behauptet, dass man mit C++ alles kinderleicht hinbekommt. Hier wird darüber diskutiert, ob man C++ aufgrund von Python vergessen sollte. Was ist also nicht legitim daran, dies zu verneinen?
auch wenn der threadstarter hier mit python trollt (was vom anwendungsgebiet sicherlich nicht vergleichbar ist), ändert das nichts daran, dass C++ hier über den grünen klee gelobt wird.
immer wieder die selbe beknackte argumentation - weil man alles mögliche mit diversen libs lösen kann, ist C++ natürlich genauso gut, wie andere sprachen, die derartige features nativ bieten - oder bei denen man entsprechende probleme erst gar nicht hat.
higher order functions? ach was! boost::lambda! function objects! alles genauso gut! garbage collector? ja, die gibts doch auch! etc. pp.
hauptsache man kann sich feature XYZ irgendwo auf die liste schreiben und dann sagen, dass doch sowieso alles geht. der faktor mensch wird dabei immer schön ausgeklammert, eine programmiersprache muss keineswegs einfach und intuitiv strukturiert sein, nönö! schliesslich sind wir ja richtige kerle und packen das alles! fehleranfällig? ach, wer fehler macht, ist nur zu blöd!
the right tool for the job - aber da C++ ja von low bis highlevel alles perfekt abdeckt, ist es auch immer das richtige werkzeug, gell?ich will einmal hören, dass C++ einfach ne gute sprache für low level sachen ist - wenn man tatsächlich selbst den speicher verwalten will, wenn es einen wirklich interessiert, wie groß nun ein int ist oder man wirklich immer ganz genau wissen will oder muss welcher speicher/rechenzeit bedarf hinter irgendwas steckt.
aber nö, macht ruhig weiter.irgendwann sterbt ihr mitsamt eurer sprache sowieso aus ;)[/sarkasmus]
-
Worin liegt der Unterschied ob eine Sprache diese Mittel von Haus aus mitbringt, oder Programmierer Bibliotheken mit dieser Funktionalität schreiben und jedem zur Verfügung stellen? Richtig bei letzterem kann man die Sprache selbst auf viel mehr Plattformen verwenden und für Plattformen die zB eine grafische Oberfläche haben eine entsprechende Bibliothek entwickeln. Ist btw. auch nen Grund weshalb C bis vor nen paar Jahren für alle plattformunabhängige Projekete verwendet wurde.
Manchmal hilft es auch, wenn man sich klar macht, dass es noch andere programmierbare Systeme gibt, als den Desktop PC mit 0815 Ausstattung.
-
Genau das meinte ich mit "langjährige C++-Programmierer haben soviel
Mühe und Zeit in das Lesen tausednseitiger Sprachdokumentationen investiert, daß sie glauben müssen, nun auch eine besonders mächtige Sprache zu beherrschen."C++ ist keine ausdrucksstarke Sprache.
(Zur Erinnerung: "ausdrucksstark" bedeutet, daß man eine Vielzahl von Konzepten
mit *wenig* Code beschreiben kann, nicht, daß die Quelltexte besonders viele
Ausdrücke enthalten)
-
groovemaster schrieb:
O'Rakl schrieb:
Daß C++ mächtig ist, ist eine Täuschung, der mancher langjährige C++-Programmierer aufsitzt -- er hat schließlich tausende Seiten an Referenz und
wirklich komplizierter Dokumentation zu C++ durchgearbeitet,
sodaß er zwangsläufig zum Schluß kommen muß, daß er nun, nach all den Jahren
der Mühsal, eine besonders mächtige Sprache beherrscht. Kompliziert ist es
ja wirklich.So langsam fängst du an zu nerven.
jep
@O'Rakl sowas hör ich vorallem von leuten die sich featurebeschreibungen durchlesen ohne sie zu verwenden und vergessen, dass hinter jedem feature auch eine sinnvolles anwendungsgebiet steckt
d.h. der richtige weg is erst mit ein paar wenigen features zu programmieren und dann etwas bestimmtes realisieren zu wollen wofür die bekannten features nich ausreichen
dann holt man sich die doku und kramt das neue feature raus das man zusätzlich brauchfalls es dir noch nich aufgefallen is... du kannst auch ein gültiges c/c++ unter verwendung von 0.1% der vorhandenen features schreiben
-
O'Rakl schrieb:
Genau das meinte ich mit "langjährige C++-Programmierer haben soviel
Mühe und Zeit in das Lesen tausednseitiger Sprachdokumentationen investiert, daß sie glauben müssen, nun auch eine besonders mächtige Sprache zu beherrschen."C++ ist keine ausdrucksstarke Sprache.
(Zur Erinnerung: "ausdrucksstark" bedeutet, daß man eine Vielzahl von Konzepten
mit *wenig* Code beschreiben kann, nicht, daß die Quelltexte besonders viele
Ausdrücke enthalten)gut wenn du dir da so sicher bist dann bring mal 5 codebeispiele in denen
c++ schrecklich ausdrucksschwach is
-
Sovok schrieb:
d.h. der richtige weg is erst mit ein paar wenigen features zu programmieren und dann etwas bestimmtes realisieren zu wollen wofür die bekannten features nich ausreichen
dann holt man sich die doku und kramt das neue feature raus das man zusätzlich brauchEben, man kann eh nie alle Features einer Sprache kennen und/oder nützen. Braucht man auch gar nicht.
-
<gut wenn du dir da so sicher bist dann bring mal 5 codebeispiele in denen
c++ schrecklich ausdrucksschwach is>Ausdrucksschwäche ist keine lokale Eigenschaft, sondern eine globale.
Eine Sprache kann nur an sich ausdrucksstark sein oder eben nicht. Man kann
nicht die Nicht-Existenz von Features mit Codebeispielen beweisen, nur
deren Existenz.Aber gut, ich gebe Dir dennoch einen Tip, wie Du Dich einem Verständnis des
Problems nähern kannst:
Leg' Deine C++-Referenz mal auf den Schreibtisch und dann sieh von vorne
auf das Buch. Was siehst Du ?
5 bis 10 cm Papier.-- und nun überlege mal scharf, ob wir hier über eine ausdrucksstarke
Sprache reden, wenn soviel Papier notwendig ist, um überhaupt erst mal
an den Datentyp "string" oder "liste" (der zweiteinfachste zusammengesetzte Datentyp) zu gelangen.(string und liste sind Dinge, die in ausdrucksstarken Sprachen wie Python irgendwo auf den ersten 10 Seiten vollständig beschrieben sind, allerdings in Tutorials für Nicht-Programmierer; Programmierern kann man das schon auf Seite 1 eines Python-Tuts erklären).
Ciao !
-
Leg' Deine C++-Referenz mal auf den Schreibtisch und dann sieh von vorne
auf das Buch. Was siehst Du ? 5 bis 10 cm Papier.Du redest Blech, eine Referenz erklärt warum C++ dies und jenes so oder so macht, nichts anderes. Ich denke Python würde da auch einiges an Papier fressen.
Btw. Kannst/Willst du eigentlich nicht vernüftig zitieren?
-
Sovok schrieb:
gut wenn du dir da so sicher bist dann bring mal 5 codebeispiele in denen
c++ schrecklich ausdrucksschwach isich bring mal eins:
tuple.
tja, wie kommt man denn in C++ zu tupeln? jedesmal ne extra struct bauen? unschön. oder templates! ja, da gibts doch auch was in boost...tuple<int, int, double> add_multiply_divide(int a, int b) { return make_tuple(a+b, a*b, double(a)/double(b)); }
toll, nicht?
naja, das man die enthaltenen typen explizit angeben muss, ist natürlich nicht sooo elegant.
vielleicht ist es tatsächlich auch nicht so prall, das man sowas eigentlich grundlegendes erst aus einer "unabhängigen" lib ziehen muss, welche in kaum einem C++ buch erwähnung finden wird, die ein großteil der programmierer kaum kennt und die man in kaum einem source antreffen wird.mir wärs nun wirklich zu blöd, noch weiter zu machen, denn mir ist eh klar, dass es im grunde keiner hören will.
-
Schon mal was von Typlisten gehört? Sind auch ganz nett. Wo gibt's die in Python?
Falls es sie gibt (keine Ahnung?!?) ist das sicherlich gut. Aber andersherum gefragt, wie oft brauch ich solche Teile im normalen Alltag? Sowohl in Python als auc h in C++?
-
O'Rakl schrieb:
@Power Off:
Nur aus Neugier:
Wo hast Du denn in BCPL programmiert ? Ist ja eine äußerst seltene Sprache,
der Vor-Vorgänger von C sozusagen.Ich hab 1989 damit angefangen, als ich das AmigaDOS Manual (von der AmigaOS "dos.library") gelesen habe.
Da stand bei der Dokumentation von AmigaDOS-Handlern:
AmigaDOS Manual schrieb:
This is normally written in BCPL.
Sonst nix. Da bin ich dann neugierig auf die Sprache geworden. Ich hatte den offiziellen Entwickler-Kit nicht, in dem ein BCPL Compiler enthalten war, also kaufte ich mir das Buch "BCPL - The Language and Its Compiler" von Martin Richards und Colin Whitby-Strevens.
Und dann war's um mich geschehen; denn als ich sah, wie einfach und genial BCPL im Vergleich zu C war, wollte ich einiges damit machen.
Ich hab dann in C Programme geschrieben, die genau so wie der BCPL Compiler funktionierten (der teilweise im Buch abgedruckt war), und so lernte ich Compilerbau.
Später fand ich dann das Original BCPL-Paket von Richards im Netz (kann man sich von Cambridge Universität, UK saugen), und schrieb als erstes einen INTCODE-Interpreter und später auch einen INTCODE-Assembler für 68030.
Der INTCODE-Interpreter war in ANSI C geschrieben und lief auf jedem Betriebssystem. Das war echt cool! Ein kleines Programm compilieren, und schon laufen alle BCPL-Programme auf einem neuen Targetsystem.
Da wurde mir klar, daß Richards wirklich der beste Spezialist für portable Compiler und Betriebssysteme war.
Übrigens: Die "dos.library" auf dem Amiga war eine Portierung von TRIPOS, einem Mini-Computer-Betriebssystem, das Richards mal entwickelt hatte. Als MetaComCo für Commodore die "dos.library" entwickeln sollte, habe sie einfach TRIPOS genommen.
Das hat sehr stark zur Erweiterbarkeit und Skalierbarkeit von AmigaOS beigetragen, auch wenn Commodore später (in AmigaOS 2.0) den TRIPOS-Code in C neu entwickelt hatte (lustig waren die damit verbundenen Programmfehler, die es vorher nicht gab, ich brauchte eine Weile, um mich an AmigaOS 2.x und 3.x zu gewöhnen). Aber ohne TRIPOS hatte es irgendwie etwas von seinem Reiz verloren, auch wenn die Funktionalität im Prinzip dieselbe war. Man konnte halt nicht mehr BCPL-Code ins OS einbetten!
-
GPC schrieb:
Schon mal was von Typlisten gehört? Sind auch ganz nett. Wo gibt's die in Python?
Falls es sie gibt (keine Ahnung?!?) ist das sicherlich gut. Aber andersherum gefragt, wie oft brauch ich solche Teile im normalen Alltag? Sowohl in Python als auc h in C++?typlisten hauen mich auch nicht grad um, mal davon ab werden die meissten programmierer auch davon nie was gehört haben.
und wozu man tupel braucht? also langsam wirds lächerlich...
übrigens hab ich mit python nichts zu tun.
-
Power Off|_work schrieb:
In der Steinzeit.
Sehr witzig! Was soll der Quatsch??
-
<mir wärs nun wirklich zu blöd, noch weiter zu machen, denn mir ist eh klar, dass es im grunde keiner hören will.>
Doch. Ist doch eine interessante Diskussion, wie ich finde
@power off:
TRIPOS ist schon genial, vor allem angesichts seines Alters. Daß man so ein
Großrechner-OS in dem als "Spielcomputer" unterschätzten Amiga verwendet hat,
hat mich damals sehr fasziniert -- der Amiga war in Wahrheit ja allen Konkurrenten
mit ihren nicht-Multitasking-fähigen Spar-Betriebssystemen (ST, Mac, PC) weit überlegen, zumindest, bis Windows 95 kam, also ein Jahrzehnt lang.
-
O'Rakl schrieb:
Ausdrucksschwäche ist keine lokale Eigenschaft, sondern eine globale.
Eine Sprache kann nur an sich ausdrucksstark sein oder eben nicht. Man kann
nicht die Nicht-Existenz von Features mit Codebeispielen beweisen, nur
deren Existenz.Dann beweise doch mal mit ein paar Python-Beispielen (bitte mit Erklärung, ich kann kein Python), was so unglaublich ausdrucksstarkes möglich ist.
Aber gut, ich gebe Dir dennoch einen Tip, wie Du Dich einem Verständnis des
Problems nähern kannst:
Leg' Deine C++-Referenz mal auf den Schreibtisch und dann sieh von vorne
auf das Buch. Was siehst Du ?
5 bis 10 cm Papier.-- und nun überlege mal scharf, ob wir hier über eine ausdrucksstarke
Sprache reden, wenn soviel Papier notwendig ist, um überhaupt erst mal
an den Datentyp "string" oder "liste" (der zweiteinfachste zusammengesetzte Datentyp) zu gelangen.Du verwendest den Begriff "ausdrucksstark" falsch. Eine Sprache ist ausdrucksstark, wenn ich den Index-Operator überladen kann, anstatt eine Methode get(int) schreiben muss, die nicht ausdrückt, dass hier indizieren stattfindet. Es gibt in C++ für alle denkbaren und sinnvollen, sowie für alle nicht sinnvollen (nicht sinnvoll: Überladen von &&, ||, Komma) Dinge ein Sprachmittel, mit dem ich ausdrücken kann, was ich erreichen will. Man kann C++ einiges vorwerfen, z.B. mangelnde Eleganz (foreach), mangelnde Einfachheit (templates), mangelhaftes Übersetzungsmodell (lange compile-zeiten, affige Fehlermeldungen), aber mit Sicherheit kann man C++ nicht vorwerfen, dass es keine Ausdrucksstärke besitzt.
Eine Sprache, die nicht besonders ausdrucksstart ist, ist Ook! und jetzt ist es wichtig zu kapieren, warum. Nicht, weil es nur 2 Syntaxelemente gibt, sondern weil ich in Ook! nicht ausdrücken kann, was ich eigentlich bezwecken will. "Erhöhe den Wert an der aktuellen Adresse um 1" kann ich sagen. Dass ich einen Subtrahierer baue, der erst das 2-Komplement bildet und dann die Stellen addiert, fällt dabei nicht auf. C++ hat mit seinem + Operator mehr Ausdruckskraft.
-
genau
-
<C++ hat mit seinem + Operator mehr Ausdruckskraft.>
Das gestehe ich zu
Wobei mehr Ausdruckskraft als Ook! zu haben nun ein so
großes Kunststück auch wieder nicht ist.
-
Optimizer schrieb:
Du verwendest den Begriff "ausdrucksstark" falsch...
ich glaube eher, dass beides richtig ist.
-
Schön wie die C++-Gegner mein Kommentar ignorieren
Naja für mich ist das Thema damit erledigt, denn don't feed the trolls
-
O'Rakl schrieb:
TRIPOS ist schon genial, vor allem angesichts seines Alters. Daß man so ein
Großrechner-OS in dem als "Spielcomputer" unterschätzten Amiga verwendet hat,
hat mich damals sehr fasziniert -- der Amiga war in Wahrheit ja allen Konkurrenten
mit ihren nicht-Multitasking-fähigen Spar-Betriebssystemen (ST, Mac, PC) weit überlegen, zumindest, bis Windows 95 kam, also ein Jahrzehnt lang.Ja, und in manchen Punkten noch länger. Z.B. Das Gerätetreibermodell (Devices/Resources) und auch die AmigaDOS-Handler findet man sonst in keinem anderen Betriebssystem. Mal kurz einen Treiber schreiben? Nur mit AmigaOS! Power to the user!
Übrigens, hast Du gewußt, daß es Amiga Inc. immer noch gibt? Seit einigen Jahren ist es endlich möglich, Amiga-Technologie zu lizensieren. Es gibt von AmigaOS 4 schon Beta-Versionen (entwickelt von Hyperion Entertainment). Es gibt auch mehrere neue Amiga Mainboards von Eyetech UK unter dem Namen "AmigaONE" mit PPC Prozessoren bis 1 GHz. Ist leider sehr kostpielig und es gibt wohl auch noch Probleme damit, aber die Schar von Fans wird immer größer. Hoffentlich ziehen die das voll durch. Wenn ich Geld hätte, würde ich Geld in diese Projekte pumpen und würde auch neue, eigene Systeme entwickeln. Mir persönlich würde ein Fork von AmigaOS 1.3 aus gefallen, würde ich notfalls selber machen, wenn ich die Kohle dazu hätte. Mir hat nämlich nicht gefallen, wie Commodore damals das AmigaOS erweitert hatte. Mit RJ Mical wäre das nicht passiert.
Ich kannte ja das AmigaOS damals fast buchstäblich bis ins letzte Bit, ich würde mir gerne mal das OS so richtig vornehmen.
Aber so weit ich weiß ist das AmigaOS 4 schon äußerst gut geworden. Es gibt z.B. Views auf Libraries, d.h. man kann verschiedene Sichten auf eine Library bekommen (so ähnlich wie die Interfaces bei OLE, nur viel besser). Das Multitasking ist auch erwartungsgemäß sehr schnell, Message Roundtrip Zeit (also von Thread zu Thread und wieder zurück) von unter 1 Mikrosekunde.