vergesst C++ ...
-
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.
-
O'Rakl schrieb:
Leg' Deine C++-Referenz mal auf den Schreibtisch und dann sieh von vorne
auf das Buch. Was siehst Du ?
5 bis 10 cm Papier.sry aber meine c++ referenz hat das format einer festplatte
is nix mit 5-10 cmabgesehn davon haben c++ programmierer die möglichkeit hinter die kulissen zu schaun
es existiert die "möglichkeit" aber es is keine "bedingung" zu anwendungsowohl char* als auch std::string lassen sich in 5min erklärn wenn der erklärende sie wirklich kennt... is letztendlich alles ned wirklich wild
-
Sovok schrieb:
O'Rakl schrieb:
Leg' Deine C++-Referenz mal auf den Schreibtisch und dann sieh von vorne
auf das Buch. Was siehst Du ?
5 bis 10 cm Papier.sry aber meine c++ referenz hat das format einer festplatte
is nix mit 5-10 cmabgesehn davon haben c++ programmierer die möglichkeit hinter die kulissen zu schaun
es existiert die "möglichkeit" aber es is keine "bedingung" zu anwendungsowohl char* als auch std::string lassen sich in 5min erklärn wenn der erklärende sie wirklich kennt... is letztendlich alles ned wirklich wild
Meine Referenz heißt "Die C++ Programmiersprache" und enthält weit mehr als nur die Sprache selbst und ist noch lange nicht 10cm dick.
-
Sovok schrieb:
sowohl char* als auch std::string lassen sich in 5min erklärn wenn der erklärende sie wirklich kennt
wem?