C++ Union - Verständnisproblem



  • Nein, die Entwickeln den ISO C++ Standard. Die Compiler werden von Compilerbauern gemacht. (Nicht zu verwechseln mit Gemüsebauern o.ä.)

    Btw, weil ich gerade Langeweile habe, etwas, von dem du mir zeigen kannst, wie man es in C löst. 😃
    http://ideone.com/bvouF
    Ich vergaß, in C gibt es ja keine Funktionen in structs.



  • 314159265358979 schrieb:

    Btw, weil ich gerade Langeweile habe, etwas, von dem du mir zeigen kannst, wie man es in C löst. 😃
    http://ideone.com/bvouF
    Ich vergaß, in C gibt es ja keine Funktionen in structs.

    Das ist keine faire Anfrage, scheint mir. Da werden in C++ Probleme gelöst, die man ohne C++ nicht hätte. Wenn Du was vergleichen willst, dann gib den Zweck des ganzen Programms an.

    Oder um es zu parodieren:

    Btw, weil ich gerade Langeweile habe, etwas, von dem du mir zeigen kannst, wie man es in C löst. 😃

    void killCurrentThreadAndUnwindStackAndDestuctAllLocalObjectsCloseFilesAndSoOn()
    {
      return throw sizeof 0e0;
    }
    


  • Flub schrieb:

    okay.
    Wie kann man sich die entwicklung der sprache dann vorstellen?
    also entwickeln, die eigentlich den compiler oder wie kann ich mir das vorstellen?

    also es war einmal eine programmiersprache. sie wurde C genannt. C war sehr sehr leistungsfähig. die meisten menschen konnten C nicht lesen.

    anfang der 80er jahre kam ein prinz, prinz bjarne von stroustrop, der sagte sich: " C ist ja gut und schön aber, das konzept der objekt orientierung wie bei smalltalk finde ich sehr toll. ich glaube ich schreibe mir das für C"
    und so entwickelte er eine neue programmiersprache die auf C basierte...

    heute ist es halt so geregelt, dass sich ein standardisierungskommitee zusammensetzt und entscheidet was für c++ sinnvoll wäre und wie gewisse sachen einfaach geregelt sein sollen.
    dann kommen firmen an und nehmen dieses blatt mit den ganzen vorgaben als grundlage für ihren eigenen compiler den sie nun entwickeln
    dann entwickeln sie quasi einen compiler der diese standardisierte sprache versteht, jedoch hat jeder compiler hersteller so seine eigenheiten was abwärtskompatiblität, syntax usw. angeht, sprich komplett einheitlich sind die ganzen c++ compiler nicht (sieht man ja am kommenden standard wiedermal, lambda expressions zum Beispiel werden von manchen schon unterstützt von adneren noch nicht)
    aber im grossen und ganzen sind das kleinere unterschiede die zwar beachtenswert sind aber nicht gravierend

    ...und in ein paar jahren (wenn er [hoffendlich] nicht gestorben ist) trifft sich prinz bjarne wieder mit seinen freunden und entscheidet über den übernächsten C++ standard.



  • volkard schrieb:

    Das ist keine faire Anfrage, scheint mir. Da werden in C++ Probleme gelöst, die man ohne C++ nicht hätte. Wenn Du was vergleichen willst, dann gib den Zweck des ganzen Programms an.

    Da hast du Recht, ist mir jedoch erst bewusst geworden, nachdem ich den Post verfasst habe.

    volkard schrieb:

    void killCurrentThreadAndUnwindStackAndDestuctAllLocalObjectsCloseFilesAndSoOn()
    {
      return throw sizeof 0e0;
    }
    

    Und das kompiliert?



  • Skym0sh0 schrieb:

    Flub schrieb:

    okay.
    Wie kann man sich die entwicklung der sprache dann vorstellen?
    also entwickeln, die eigentlich den compiler oder wie kann ich mir das vorstellen?

    also es war einmal eine programmiersprache. sie wurde C genannt. C war sehr sehr leistungsfähig. die meisten menschen konnten C nicht lesen.

    anfang der 80er jahre kam ein prinz, prinz bjarne von stroustrop, der sagte sich: " C ist ja gut und schön aber, das konzept der objekt orientierung wie bei smalltalk finde ich sehr toll. ich glaube ich schreibe mir das für C"
    und so entwickelte er eine neue programmiersprache die auf C basierte...

    heute ist es halt so geregelt, dass sich ein standardisierungskommitee zusammensetzt und entscheidet was für c++ sinnvoll wäre und wie gewisse sachen einfaach geregelt sein sollen.
    dann kommen firmen an und nehmen dieses blatt mit den ganzen vorgaben als grundlage für ihren eigenen compiler den sie nun entwickeln
    dann entwickeln sie quasi einen compiler der diese standardisierte sprache versteht, jedoch hat jeder compiler hersteller so seine eigenheiten was abwärtskompatiblität, syntax usw. angeht, sprich komplett einheitlich sind die ganzen c++ compiler nicht (sieht man ja am kommenden standard wiedermal, lambda expressions zum Beispiel werden von manchen schon unterstützt von adneren noch nicht)
    aber im grossen und ganzen sind das kleinere unterschiede die zwar beachtenswert sind aber nicht gravierend

    ...und in ein paar jahren (wenn er [hoffendlich] nicht gestorben ist) trifft sich prinz bjarne wieder mit seinen freunden und entscheidet über den übernächsten C++ standard.

    also besteht das entwickeln, doch aus dem compilerbau oder was?
    was hat denn der bjarne jetzt direkt gemacht, wenn man sicn vorstellt wie er in seinem zimmer sitzt und c++ entwickelt, was (konkret) war das ergebnis an dem er arbeitete?

    Was ist daran schlimm, wenn der Thread etwas ausufert? man wird nicht gezwungen sich damit zu beschäftigen und es wäre auch nicht besser, wenn ich zu jeder frage einen thread aufmache. Ist das problem, dass man sich nicht aufgeräumt nach dem Motto Threads im C-plusplusforum abgearbeitet, fühlen kann?
    in welchen forumsbereich passt denn das was gerade in dem thread hier passiert?

    es ist eigentlich auch kein großes ding, dass sind nur kommunikationsprobleme, man redet aneinander vorbei. ich will konkretes, wissen dass mir verständlich macht, was gemacht werden muss beim entwickeln von soner sprache. mich interessiert wie alles auf einander aufbaut.

    also, wie kommt man von einer normalen analogen schaltung auf einer lochrasterplatine zu einem relaiscomputer wie hat man darauf aufgebaut bis man irgendwann nicht mehr das gefühl hatte man legt einen schalter um und ändert so den zustand im system sodass die richtigen ergebnisbits (z.b. durch LED s sichtbar) leuchten, sondern eingaben machen kann.

    ich will wissen, wie das genau funktioniert, also als Beispiel:

    Ich frage :
    Wie kann man sich die entwicklung der sprache dann vorstellen?

    Skym0sh0 antwortet :
    und so entwickelte er eine neue programmiersprache die auf C basierte...
    (danach kommt dann, das sie doch an einem Compiler, der dem neuen standard arbeiten, was ja zuvor von der langen Zahl als falsch hingestellt wurde.
    Die anderen Antworten konfrontieren sich auch nicht wirklich mit der Frage.

    also, weiß denn jemand so genau, dass er wüsste was er machen müsste um eine neue programmiersprache zu entwickeln?

    seid bitte nicht allzu genervt von mir 😉 aber irgendwie muss ich ja hinterher sein das zu erfahren was mich interessiert.



  • Du überlegst dir, wie eine schöne Sprache deiner Meinung nach aussieht, schreibst eine EBNF-Grammatik, und gibst sie einem Compiler/Interpreter-bauer bzw schreibts dir selbst einen.

    Was in einem einzigen Satz so einfach klingt, ist in Wirklichkeit ziemlich komplex.
    Es gibt mittlerweile schon so viele Programmiersprachen für die verschiedensten Zwecke,
    dass kaum noch der Bedarf an neuen Sprachen besteht.



  • Es gibt mittlerweile schon so viele Programmiersprachen für die verschiedensten Zwecke,
    dass kaum noch der Bedarf an neuen Sprachen besteht.

    Außer natürlich an meiner!



  • danke lange Zahl, mehr wollte ich nicht wissen, ich habe nicht vor eine sprache zu entwickeln = )



  • C ist hier im C++ veraltet

    C ist alles, aber sicher nicht veraltet.
    und C hat auch ne Bedeutung im C++ Bereich. Ohne die C-Kompatiblitaet waere C++ nie an der Stelle wo es jetzt ist, oder ?

    also, weiß denn jemand so genau, dass er wüsste was er machen müsste um eine neue programmiersprache zu entwickeln?

    Naja, er kennt die Aspekte, auf die es Ihm ankommt, und vielleicht vorgaben die er bekommt. Dann laesst er sich Konzepte einfallen und macht Kompromisse, irgendwann kommt dann was gescheites bei raus, oder auch ned 🙂

    fuer C++:
    C existierte und war bei AT&T in dem Umfeld wo Stroustrup beschaeftigt war, sicher intensiv im Einsatz.
    In C kann man auch "Object-Orientiert" programmieren, nur sieht das ned besonders schoen aus. Man muss die (rudimentaere) typsicherheit überlisten und oft sehr maechtige, aber sehr kompliziert ausschauende Techniken verwenden (Funktionspointer, CallBacks).
    Fazit, trotz "Objectorientierung" seitens der Programmierer, entsand nicht wirklich besser wartbarer Code.
    Fuer groessere Projecte mit mehreren Programmierern und wechselnden Programmierern weniger förderlich.

    Denk das war der Grund fuer das entstehen von C++.
    Wie gesagt die Vorgaben waren:
    - binaere Kompatiblitaet zu C (das gilt auch für viele andere Sprechen)
    - weitgehende Code - Kompatiblitaet zu C (ja c++ war wirklich als Erweiterung zu C konzipiert)
    - ObjectOrientierung als sprachliches Mittel

    Die aenderungen vom compiler her sind eigentlich gar ned so krass.
    Der Sprachwortschatz von c++, der zu C hinzukommt ist minimal, sind nur ne handvoll wörter.
    Wirkliche anederungen sind eigentlich nur die virtuellen Methoden an den Klassen (vtable) ansonsten ist vieles nur Symbolnamenspielerei und verstecken von parametern ... beim compiler.
    Mehr Grips steckt eher im Praeprozessor, Stichwort Templates.

    Nur haben eben diese Anederungen nen radikales umdenken im Design mit sich gebracht.
    also der Unterschied von C zu C++ ist eher Designtechnischer und Philosophischer Art, als Sprachlicher.

    Ciao ...



  • Decimad schrieb:

    Es gibt mittlerweile schon so viele Programmiersprachen für die verschiedensten Zwecke,
    dass kaum noch der Bedarf an neuen Sprachen besteht.

    Außer natürlich an meiner!

    😃 n1 *word*

    wie programmiersprachen entwickelt werden:
    es gibt verschiedenste konzept und anwendungsgebiete für programmiersprachen (markup languages wie HTML oder latex, scriptsprachen wie lua oder batch, und programmiersprachen wie java oder c/c++, und dazwischen natürlich viele mischungen). diese konzepte nennt man paradigmen (sng paradigma). die sind unabhängig von irgendwelcher hardware, sprich die haben sich auch schon früher leute überlegt (turing hat ja ein schachprogramm geschreiben ohne computer xD), aber natürlich kann man heute immer noch neue erschaffen. und darauf aufbauend designst du deine sprache (was muss rein, was muss sie können, keywords, usw...).
    dann kommt der "praktische" teil, du erstellst grammatiken wie die sprache auszusehen hat. das klingt recht einfach ists aber nicht wie einer meiner vorredner gesagt hat (versuch mal regeln anzugeben wie die deutsche grammatik ist: subjekt -> prädikat -> objekt reicht bei weitem nicht). aber das ist ein anwendungsgebiet der theoretischen informatik, die auch direkt ansätze hat um das einfacher zu gestalten bzw erstmal zu kontrollieren (wie ich persönlich finde ist das auch sehr spannend).

    so nun hast du deine konzepte und deine sprache auf dem papier. nun müsstes du einen compiler bauen der die sprache versteht und die umwandelt in eine sprache die dein pc versteht (assembler oder sowas)...

    so nun zur hardware:
    ein computer ist dumm (ja sehr dumm). der kann nichts ausser addieren. die subtraktion ist schon ein interpretationstrick des addierens (zweierkomplement) und für die multiplikation greifen schon erste mikroprogramme.

    aber wie klappt das?
    du hast etwas speicher den du mit beliebigen 010101 füllst.
    du hast dein steuerwerk dass eine gewisse folge von 0 und 1 als addition deutet (dort werden dann deine gespeicherten 101010101 z.b. in die ALU geschoben irgendwo per und gatter z.b.) und eine andere folge von 1 und 0 als multiplikation

    du hast also 3 eingaben
    zahl1 zahl2
    \ /
    | plus eine squenz von bits zum steuern
    |
    ergebnis

    da gibts lustige CPU simulatoren, wobei das in der grössen ordnung für menschen kaum noch überschaubar ist

    der knackpunkt ist einfach nur, du steuerst mit ein paar eingaben deine cpu (wie weichen im schienen netz die reiserichtung steuern)
    und das mit einer saumässig hohen geschwindigkeit (strom geschwindigkeit ~ lichtgeshwindigkeit, bzw knapp drunter)



  • 314159265358979 schrieb:

    volkard schrieb:

    void killCurrentThreadAndUnwindStackAndDestuctAllLocalObjectsCloseFilesAndSoOn()
    {
      return throw sizeof 0e0;
    }
    

    Und das kompiliert?

    Ich glaube schon. throw-Ausdrücke liefern void (keine Ahnung, wozu das Ausdrücke sind, vielleicht für assert-Makros), void kann returnt werden (wurde für templates eingeführt, damit man nicht zwei Versionen braucht, je nach OB die benutzte Funktion was zurückgibt), und 0e0 ist eine Fließkommazahl.



  • http://codepad.org/MV3t2wLA
    Scheint wirklich zu funktionieren 😮



  • RHBaum schrieb:

    Die aenderungen vom compiler her sind eigentlich gar ned so krass.
    Der Sprachwortschatz von c++, der zu C hinzukommt ist minimal, sind nur ne handvoll wörter.

    Jaja. RAII, Exceptions, Funktionsüberladung, Operatoren, Templates, Namensräume, RTTI, etc. sind ja "nur eine Handvoll Wörter" und daher sicher auch nicht schwierig zu implementieren...

    RHBaum schrieb:

    Mehr Grips steckt eher im Praeprozessor, Stichwort Templates.

    Templates werden vollständig vom Compiler kompiliert. Mit dem Präprozessor haben sie nichts zu tun.


Anmelden zum Antworten