1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Wie entw. man eine neue Progr.Sprache ?

Discussion in 'Programmieren' started by ghost rider, Dec 8, 2002.

Thread Status:
Not open for further replies.
  1. Danny243

    Danny243 Kbyte

    http://other.jrsoftware.org/ip/
     
  2. ghost rider

    ghost rider Megabyte

    Hallo Torsten,

    kleiner Nachtrag zu meinem vorherigen Posting:

    Wenn jetzt z.b. beim Zuse bestimmte über Lochstreifen gegebene Codes in Mechanische Bewegung an den richtigen Relais und somit zu den richtigen elektrischen Schaltungen führen sollten so stelle ich mir das so vor (stark vereinfacht wiedergegeben):

    A 1 A2 A3 A4 A5 A6

    o \ o o----o o----0

    Also :

    A1/A2 offen , A3/A4 geschlossen , A5/A6 geschlossen...

    Binär:

    0 1 1

    Stimmt meine Schlußfolgerung ?

    mfg ghostrider

    [Diese Nachricht wurde von ghost rider am 10.12.2002 | 00:09 geändert.]
     
  3. SourceLE

    SourceLE Kbyte

    Hi...

    zunächst mal, meine ich nicht DICH mit den Hausaufgaben :-); sondern ein paar Postings hier.

    Ich werde Deine Frage(n) überarbeiten und Dir die effektivste Antwort geben. Einiges ist zwar schon beantwortet, aber ich versuchs mal so allgemein wie möglich zu halten.

    Da es vielleicht andere auch interessiert, mach ichs mal öffentlich (das bezahlt mir kein Schw...). Das dies nicht sofort geschieht versteht sich von selbst. (Es soll Leute geben die studieren sowas; Hut ab! und sfg**** :-)).

    Es freut mich User mit Interesse kennenzulernen...

    MfG & CU
     
  4. ghost rider

    ghost rider Megabyte

    Hallo Torsten,

    nein, ich schreibe keine Hausaufgaben, mich interessiert das einfach privat ;) .

    Nun mal zurück zum Z1, ich glaube damit kann ich meine Frage noch besser erläutern:

    Also als Konrad Zuse die ersten Maschinenbefehle entwerfen mußte, wo ich annehme, daß dies erstmal in Binärschreibweise erfolgte, so denke ich, daß diese spezielle Befehlsfolge aus den elektrischen Eigenschaften dieser "halbmechanischen" Computer hervorging, also jedes Bit, einen elektrischen Anschluß reprensentiert.

    Diesen Gedanken weiterentwickelt würde sich eine entsprechende Numerierung im Hex-Zahlensysdem (Hardwareadressierung) ergeben. Habe ich hier die richtigen Schlüsse gezogen ?

    Dies meinte ich eben mit meiner Frage, ob diese Maschinenbefehle willkürlich entstanden sind, oder eben aus "Gegebenheiten" entstanden sind.

    Die nächste Frage wäre dann, wie es geschieht, daß dann eben eine bestimmter Befehl einer Hochsprache , einer Binärcodefolge fest zugeordnet wird, wie z.b. einer Variablen ein bestimmter Wert in einem Programm übergeben wird.

    mfg ghostrider

    PS:

    Sollte es zu umfangreich werden, dies hier im Forum zu erläutern, kannst Du mir ja, wenn es Dir nicht zuviel Arbeit ist, mir an meine emailaddy schreiben, die steht im Profil.
     
  5. SourceLE

    SourceLE Kbyte

    Comp\' war übrigens der Z1 von Konrad Zuse und passte mit ach und krach in sein Schlafzimmer. Ich nenn das Meisteleistung Made in Germany.

    MfG & CU
    [Diese Nachricht wurde von SourceLE am 09.12.2002 | 21:57 geändert.]
     
  6. SourceLE

    SourceLE Kbyte

    Naja\' (Hausaufgaben abgeschrieben?). Fakt ist eine neue Sprache zu entwickeln ist gar kein Problem! Einziges Problem dürfte die Zeit sein!

    Wichtig ist auch, die Architektur einer CPU und Deren Arbeitsweise zu verstehen, was eigentl. jeder Programmierer beherrschen sollte. Das ist aber gar nicht so schwierig, nur ebend verammt viel Theorie.

    MfG & CU

    Zur Not erklär ich das. Tipparbeit fällt mir nict schwer.
    [Diese Nachricht wurde von SourceLE am 09.12.2002 | 21:30 geändert.]
     
  7. SourceLE

    SourceLE Kbyte

    Hi...

    Ich fasse mich so kurz wie möglich!

    Eine Hochsprache (oder Interpreter) ist ein eine Sparche für den Menschen. Eine CPU kann mit einer Hochsprache nichts Anfangen. Die CPU versteht nur sogenannte Operations Codes (OpCodes). Diese Codes in der richtigen Reihenfolge ergeben eigentl. das was von ihm erwartet wird.

    Programmiersprachen machen also nichts anderes als eine Reihe von OpCodes zu übersetzen. Und DER ASSEMBLER (im wahrsten sinne des Wortes) benutzt genau diese OpCodes. Also könnte man sagen, alle Sprachen erzeugen ASM Code (ich hau mich wech). Na ganz so ist das nicht; das Ergebniss ist immer eine 0 oder eine 1 (auch bekannt als Mnemonic). Beispiel:

    add r1, r2 ist nichts anderes als die Mnemonic für

    00111000 11000001 11000010.

    (Stell Dir mal vor mann/frau müsste sowas schreiben, und dennoch ginge das)

    Der Übersetzer der dieses Übersetzt nennt man Assembler (genau wie der ASM, sind aber 2 verschiedene Dinge)

    Nebenbei: die Entstehung von C++ (sehr vereinfacht).

    Vor C++ kam C vor C kam B und vor B? Falsch nicht A, sonder BCPL (basic combined programming language), welches mitte der 60er von Martin Richard (Dozent an der Uni London und Cambrige) entwickelt wurde. Der Grund: Um alle User zu nerven (Scherz). Nein, Der Grund war die Implementierung von UNIX.

    Was lernt man daraus? Sprachen sind nichts anderes als Verwande! Und wenn Du eine neue Sprache entwickeln wolltes, musst Du einfach deren ältere Brüder o. Brüderinnen (viele Grüsse an Alice Schwarzer(ich vergess euch nicht)) befragen.

    MfG & CU

    PS: An diese Stelle, viele Grüsse an RapMaster!
    [Diese Nachricht wurde von SourceLE am 09.12.2002 | 22:09 geändert.]
     
  8. ghost rider

    ghost rider Megabyte

    Hallo Karl,

    also mich interessiert einfach die Technik und die Vorgehensweise. Eben z.b. wie die ersten Maschinenbefehle definiert und festgelegt wurden auch anhand ihrer Bit-Struktur usw. Dies ist ja das eigentlich faszinierende an der ganzen Technik.

    Denn das war ja die eigentliche Pionierleistung in der ganzen Entwicklung. Da war ja noch nix vorhanden und es mußte ja festgelegt werden, daß eine spezielle Bitfolge genau eine bestimmte Atkion zur Folge hat und nicht eine völlig andere, die mit einem anderem Befehl ausgeführt werden sollte.... und genau dies mußte ja dem Rechner "beigebracht" werden, der "wußte" ja voher sozusagen nix von den Befehlen....

    Hmm... für eine eigene Programmiersprache, würde ich wohl mehrere Leben brauchen, als Einzelner, um eine solche Lauffähig zu bekommen... ;) ... obwohl, wär schon ein faszinierender Gedanke so ein mini OS sich selbst zu Programmieren und zu sehen, daß es läuft....

    mfg ghostrider
    [Diese Nachricht wurde von ghost rider am 09.12.2002 | 02:25 geändert.]
     
  9. ghost rider

    ghost rider Megabyte

    HI,

    jetzt kommen wir ja genau zum Kern meiner Frage:

    Wer hat denn überhaupt festgelegt, daß "Goto" genau diese Funktion hat und nicht die Funktion von "Run", was ja theoretisch auch sein könnte , bzw. Run könnte ja genausogut "startingprogramm" heissen.

    Man müsste doch dazu nur die Namensvariablen in der Befehlsdefinition dazu ändern, oder?

    Zur "jungräulichen CPU":

    Damit meine ich, <B>wie diese speziellen Befehle</B>, eben MMX usw. an die CPU übergeben werden, was ich ja schon weiter oben gefragt habe... über ein EPROM ?

    mfg ghostrider
    [Diese Nachricht wurde von ghost rider am 09.12.2002 | 02:12 geändert.]
     
  10. ghost rider

    ghost rider Megabyte

    Hallo Franzkat,

    danke füpr das Stichwort, werde dann mal ausgiebig "googeln". ;)

    mfg ghostrider
     
  11. it-praktikant

    it-praktikant Megabyte

    <B>goto</B> igittigitt.

    Also nehmen wir mal dein goto. Dein goto ist in sofern nun schlecht, weil es als ASM verfügbar ist, aber macht nix.

    Dein goto kann auch anders ausdrücken, zum Beispiel als: suche xy und mach dort weiter. Nichts weiter soll ja der Befehl darstellen. Zufrieden der, der schon suchen kann. Wer es nicht kann, muss weiterprogrammieren. Eine CPU ist eigentlich ein dummes Ding. Sie kann zwei Bits addieren, vergleichen udn vertauschen. mehr eigentlich nicht. Dann kommen noch weitere Befehle dazu, aber die drei sind wohl essentiell.

    So und wenn du mit: vergleichen, addieren und vertauschen -&gt; suchen kannst, dann hast du schon gewonnen. Kannst du, also ist eine Suche in ASM wunderbar zu programmieren, also ist auch dein goto kein Problem mehr.

    So und nu noch was. Eine heutige CPU kann mehr als die drei Dringe da oben, angedeutet mit MMX, SSE ... , d.h., es gibt für verschiedene Befehle eine direkte Hardwarelösung.
    Ein Beispiel: für das Hören einer MP3-datei unter Windows braucht man mindestens eine 75 MHz CPU, in den kleinen HiFi-MP3-Player ist noch nicht mal ein Viertel dieser Leistung, wenn nicht sogar nur kHz. ;-)

    Also was ein Compiler versucht ist ja klar, er versucht deinen und meinen Firlefanz in CPU-freundliche Befehle umzusetzen, im schlimmsten Fall eben in vergleichen, addieren, vertauschen :-)

    Ach ja, eine jungfräuliche CPU gibt es nicht, sonst muss man es ein Metall-Klumpen nennen ;-) weil sie ja überhaupt gar keine Funktion hat. Schade um den schönen Waver ;-)

    Gute Nacht it.
     
  12. franzkat

    franzkat CD-R 80

    Hallo ghost rider !

    Wenn Du Informationen zu der Frage suchst, wie die Grundlagen von Programmiersprachen "erfunden" werden,mußt Du mal unter dem Stichtwort "Metaprogrammierung" oder "Metasprache" recherchieren.Dann wirst Du in vielfätiger Weise fündig.

    franzkat
     
  13. rapmaster

    rapmaster Halbes Gigabyte

    eine adresse für dich:
    http://forum.pcwelt.de/fastCGI/pcwforum/topic_show.fpl?tid=64960
     
  14. ghost rider

    ghost rider Megabyte

    Hallo Michael, hallot IT-Praktikant,

    genau auf diese Implementierung will ich hinaus. Nehmen wir mal eine "jungfräufliche" CPU an.

    Um darauf ein Programm zum laufen zu bringen, noch dazu in einer "neuen" Programmiersprache, muß der CPU ja erstmal die richtige Interpretierung des Sourcecodes beigebracht werden bzw. sein eigener Befehlssatz diesem "eingebrannt" werden damit er funktioniert.

    Ebenso die Art und Weise, wie er diese CPU-eigenen Befehlssatz (ich nehme an, dies geschieht über das BIOS) sowie den Source Code zu interpretieren hat.

    Ich nenne mal ein simples Beispiel:

    Als z.b. in Basic der Befehl : Goto eingeführt wurde, dann mußte dessen funktion ja irgendwie definiert werden, damit der Rechner diesen eindeutig interpretieren kann und "weiß" was er damit zu tun hat.

    Wie genau erfolgt jetzt diese Definition, denn bei "neuen" Programmiersprachen mitsamt Ihren Strukturen, ist ja im eigentlichem Sinne alles "neu". Wie werden jetzt diese Definitionen an den Rechner "zum Lernen" übergeben ? Mit einer eigenen Befehlsbibliothek-Dantenbank, die die Befehlsdefinition dann bereits in Maschinensprache beinhaltet ähnlich wie ein Sprachlexikon, daß ein bestimmtes Wort auflistet und parallel dazu die Vokabel in der Fremdsprache ?

    IMHO ist doch dies der entscheidende Knackpunkt an der ganzen Sache.

    mfg ghostrider
     
  15. ghost rider

    ghost rider Megabyte

    Hallo it-praktikant,

    Danke für die ausführliche Antwort, weitere Fragen in der Antwort an species007.

    mfg ghostrider
     
  16. it-praktikant

    it-praktikant Megabyte

    Zusatz:

    Assembler ist nicht gleich Assembler, da zum Beispiel Macs G Prozessoren anders mit den Daten umgehen als 80x86 mit denselben Daten. Und auch da gibt es dann Unterschiede zischen x86 und x87 und nicht zu vergessen die Befehlsatzerweiterungen von Pentium <B>MMX</B>, Pentium III <B>SSE</B>, K6-2 <B>3D Noew</B> und Pentium 4 <B>SSE2</B>.
     
  17. it-praktikant

    it-praktikant Megabyte

    Normen\' wie man Befehle zu nennen hat bzw. wie die Namensstruktur sein soll. In Java zum Beispiel:
    Variablennamen sind klein: "ichsortiere"
    Methodennamen fangen klein an: "ichSortiere()"
    Klassennamen fangen groß an: "IchSortiere()"

    Ich C und C++ gibt es ähnliche Kompromisse.

    Ach ja, es gibt auch noch funktionale Programmiersprachen wie Haskel, ML oder Opal. Solltest du dir mal anschauen, falls du wirklich mal Interesse an einem Compilerbau hast. Dort kann man nähmlich manche Sachen mit Einzeilenprogrammen lösen, wo du bei imperativen Programmiersprachen oft mehrere Methoden brauchst.

    Naja, nu hast du wieder was zu lesen ;-)

    Ciao it.
     
  18. ghost rider

    ghost rider Megabyte

    Hallo IT-Praktikant,

    danke erstmal für Deine sehr ausführliche Antwort. Das Assembler sozusagen die "Mutter aller Programmiersprachen ist" hab ich hier in der Rubrik ja schon mal in einem anderem Thread erwähnt.

    Auf was ich speziell hinaus will:

    Wer legt denn dann genau fest, wie welcher Befehl heißt und welche Funktion er konkret ausübt ?

    Wird da eine Norm erabeitet oder geschieht dies willkürlich, sozusagen "frei Schnauze" ?

    Hab mir jetzt die Links noch nicht sofort angeschaut, aber in die Favoriten aufgenommen...

    mfg ghostrider
     
  19. it-praktikant

    it-praktikant Megabyte

    Bjarne Stroustrup\', Entwickler von C++).

    So, nun habe ich mich ein wenig verloren ... ja ... also, wenn du eine Programmiersprache entwickeln will, dann solltest du dir vorher darüber klar werden, was du überhaupt darin machen willst und wovon du es ableiten willst. Sicher ist Assembler am schnellsten, aber auch am schwierigsten.

    Eigentlich sind die neuen Programmiersprachen nicht anders als die alten, nur eben <B>mehr</B>. Wenn sich nicht wirklich irgendein Crack mal daran gesetzt hat, dann könnte man sicher noch spuren der aller ersten Programmiersprachen finden. Sei es in der Semantik oder in der cryptischen Art-und-Weise der Syntax oder ähnliches.

    Ach ja, hier ein musikalischer Überblick der Programmiersprachen
    http://rotor.fb12.tu-berlin.de/personen/klaus/Write_in_C.html

    wichtige dinge, die heute in (fast) jeder Programmiersprache zu finden sind:
    - ableitbarkeit
    - objectorientiert
    - intuitiv bedienbar , soll heißen, schluss mit crypto-C

    Links:
    http://irb.cs.tu-berlin.de/~zuse/history/Programmiersprachen.html
    http://de.google.yahoo.com/bin/query_de?p=Geschichte+Programmierspachen ;-)
     
  20. ghost rider

    ghost rider Megabyte

    Hallo AS_X,

    ist mir schon klar, daß man sich das nicht mal so auf die Schnelle "aus den Fingern saugt" und dazu enormes Fachwissen nötig ist. ;-)

    Mich interessiert einfach der entwicklungstechnische Ablauf...

    Zuerst muß ja mal eine Idee vorhanden sein, also welche Befehle man verwenden möchte, welche Funktionen diese haben sollen, in welcher Landessprache (üblicherweise ja Englisch...könnte aber auch mal auf deutsch oder französisch sein...) die Programmiersprache geschrieben wird.

    Dann eben auch die Struktur der Programmiersprache usw. ... usw.

    Man muß aber ja von einer Basis ausgehen, denn z.b. C++ konnte ja nicht in C++ entwickelt werden weil es das ja da noch nicht gab... .

    Braucht ja jetzt hier niemand ein Fachseminar halten, sondern es geht halt um den allgemeinen Überblick mit ein paar Details angereichert...

    mfg ghostrider

    PS: kannst beruhigt schlafen.... hab nicht vor, <B>selbst</B> ne neue Programmiersprache zu erfinden... auch wenn es faszinierend wäre... ;-)
     
Thread Status:
Not open for further replies.

Share This Page