benji: Definition für Programmiersprache - was ist eine, was nicht ?

HAllo mal wieder, liebes Forum :) !

Also, vor einiger Zeit im selfchat wurde mir halt gesagt, dass es "früher" darüber schon oft Diskussionen gab, und dass diese das Ergebnis hatten, dass eine Scriptsprache oder ähnliches eine Programmiersprache ist, wenn sie "Turing-Fähig" (was ist das eigentlich ?) ist. Schön schön, die haben dann noch gesagt, ja, php ist eine Programmiersprache, und JavaScript auch ...

Ist es denn "wirklich" so ? Also, ich persönlich habe ("früher") Programmiersprachen immer damit verbunden, ob der Quelltext compiliert oder interpretiert wird. Das heißt dann, JavaScript, Z.T. Java, Perl, Basic, und so was wird interpretiert; C, VisualBasic (?) und so was Kompiliert, also letztenendes als .exe dastehend und kein Zusatzprogramm benötigend.

Nun, fragen tue ich eigentlich nur deshalb, weil mich jemand vor einiger Zeit gefragt hat, ob ich überhaupt eine Programmiersprache könne. OK, ich habe also geantwortet: "Gewisse Leute definieren 'Programmiersprache' nach der Turing-Fähigkeit, und wenn man es so sieht, kann ich JavaScript, VBScript [z.T.], PHP,..." - er antwortete dann so ähnlich: "naja, das sind ja keine Programmiersprachen (ist ja schund oder so was hat er gesagt), so was wie Basic oder Pascal...". Vielleicht sollte ich dazusagen, dass diese Person Mathematiker und Physiker ist und früher mal in seinem Studium ein wenig mit PRogrammiersprachen gearbeitet haben soll, und daher beurteilt ER sie so, wie er viel später sagte "Kann man denn mit sowas [Javascript...] Gleichungen aufstellen und komplexe Mathematische Sachen... [vergessen] machen ?" - naja, denk mal nicht, habe auf jeden Fall noch nie

(x + 4) * 5 ..... = 7x^(2*x)......

oder ähnliches in JavaScript gesehen (sei es ein noch so simples Beispiel wie oben gezeigt).

Also, diese Person ist da irgendwie schon ein bisschen komisch, für ihn zählen anscheinend nur die guten alten Programmiersprachen, wie Basic (WIRD ABER INTETRPRETIERT), C, Pascal,... - und PostScript oder SQL, JavaScript oder VBScript ist für ihn --- naja, er kennt es nicht ;-)

Was sagt ihr zu dem ganzen ? In wie fern kann man JavaScript oder PHP zu Programmiersprachen nennen ? Ich meine, bei PHP ist es ja noch extremer: Es kann nur über den Server aufgerufen werden, der dann das PHP-Programm aufruft, und nicht mal so wie JavaScript, der ja z.B. auch über den WSH aufgerufen werden kann.

Vielen Dank für TEXT und nicht nette Hinweise wie "schau dir uralte Chat-Mitaufzeichnungen an,...." oder so was,

benji

  1. Hallo,
    ich hab mal eben http://www.google.de aufgerufen und "Definition Programmiersprache" eingegeben.
    Die erste Seite die angezeigt wird ist dies: http://userpage.fu-berlin.de/~ram/pub/pub_detics8/begriff_programmiersprache_de

    Vielleicht gibt dir der Artikel ja eine Antwort auf deine Frage!

    Tschau

    Tobias

    --
    http://www.tobiasklare.de
    fo:) ch:? rl:( br:^ n4:° ie:{ mo:) va:| fl:) ss:| ls:<
    Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
    Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
    1. Hallo Tobias !

      ich hab mal eben http://www.google.de aufgerufen und "Definition Programmiersprache" eingegeben.

      Das überrascht micht, denn in der Regel bekommt man bei so Allerweltsbegriffen unter Google tausende von Ergebnisse !

      danke,

      benji

      1. hab mal kurz in die verlinkten treads reingeschaut.
        für eine PROGRAMiersprache gilt:

        der sourcecode wird in direkt von der hardware ausführbare anweisungen übersetzt.
        da die arbeitsweise der hardware eine konstante ist, kann jede programiersprache, nachdem sie vom compiler in maschinencode übersetzt wurde, mit einem disASSEMBLER auf die "low level"-programiersprache assembler zurückgeführt werden.

        eine script-sprache hingegen hat keinen direkten zugriff auf die hardware, sondern braucht als basis zur ausführung zwingend einen interpreter.
        sie kann zwar auf verschiedenen hardware-plattformen (mac, pc, alpha, ... ) interpretiert werden, ist aber nicht selbständig lauffähig.

        btw. javascript hat NICHTS mit java zu tun. das erste ist eine script-sprache von netscape gewesen, die zuerst livescript hies, das zweite eine programiersprache von sun. die umbenennung in javascript im zuge der kooperation zwischen den beiden firmen hatte marketing-gründe.

        1. Hi,

          für eine PROGRAMiersprache gilt:

          der sourcecode wird in direkt von der hardware ausführbare anweisungen übersetzt.
          da die arbeitsweise der hardware eine konstante ist, kann jede programiersprache, nachdem sie vom compiler in maschinencode übersetzt wurde, mit einem disASSEMBLER auf die "low level"-programiersprache assembler zurückgeführt werden.

          eine script-sprache hingegen hat keinen direkten zugriff auf die hardware, sondern braucht als basis zur ausführung zwingend einen interpreter.
          sie kann zwar auf verschiedenen hardware-plattformen (mac, pc, alpha, ... ) interpretiert werden, ist aber nicht selbständig lauffähig.

          btw. javascript hat NICHTS mit java zu tun. das erste ist eine script-sprache von netscape gewesen, die zuerst livescript hies, das zweite eine programiersprache von sun. die umbenennung in javascript im zuge der kooperation zwischen den beiden firmen hatte marketing-gründe.

          Nach Deiner obenstehenden Definition ist Java keine Programmiersprache, denn es wird nicht in Maschinencode übersetzt, sondern in maschinenunabhängigen Zwischencode.

          cu,
          Andreas

          --
          Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
          http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
          1. Nach Deiner obenstehenden Definition ist Java keine Programmiersprache, denn es wird nicht in Maschinencode übersetzt, sondern in maschinenunabhängigen Zwischencode.

            wenn man anwendungen schreibt, die per jvm auf verschiedenen hardwareplatformen laufen sollen, dann ja.
            aber es ist möglich, in java ein eigenes betriebssystem zu schreiben.
            versuch mal, mit javascript auch nur ein cd-brenn-programm zu schreiben *gg* .

            1. Hallo raik,

              versuch mal, mit javascript auch nur ein cd-brenn-programm
              zu schreiben *gg* .

              Natuerlich ist auch das moeglich.

              Gruesse,
               CK

              --
              http://cforum.teamone.de/
              http://wishlist.tetekum.de/
              If God had meant for us to be in the Army, we would have been born with green, baggy skin.
              1. versuch mal, mit javascript auch nur ein cd-brenn-programm
                zu schreiben *gg* .

                Natuerlich ist auch das moeglich.

                ahja?
                dann zeig mir mal, welche funktionen von javascript dazu dienen, hardware anzusprechen.
                es muss nicht kompiliert sein, öffne nur mal die schublade vom cd-laufwerk per javascript.

                grüsse, raik

                1. Hallo raik,

                  versuch mal, mit javascript auch nur ein
                  cd-brenn-programm zu schreiben *gg* .

                  Natuerlich ist auch das moeglich.

                  ahja?
                  dann zeig mir mal, welche funktionen von javascript dazu
                  dienen, hardware anzusprechen. es muss nicht kompiliert
                  sein, öffne nur mal die schublade vom cd-laufwerk per
                  javascript.

                  Der Aufwand, entsprechende Schnittstellen zur Verfuegung zu
                  stellen, ist mir der Beweis nicht wert. Aber vielleicht magst
                  du ja den Gegenbeweis fuehren: was sollte mich daran hindern,
                  einen JS-Interpreter zu schreiben, der ein Objekt
                  bereitstellt, das eine direkte Schnittstelle zur Hardware
                  liefert?

                  Gruesse,
                   CK

                  --
                  http://cforum.teamone.de/
                  http://wishlist.tetekum.de/
                  If God had meant for us to be in the Army, we would have been born with green, baggy skin.
                  1. was ich damit sagen wollte, ist:
                    es gibt in javascript keinerlei syntax, die dazu dient, auf hardware zuzugreifen.
                    in programiersprachen schon.

                    und wärend man in javascript allenfalls eine verschlüsselung des quellcodes einbaut, um das "stehlen" mit den augen zu erschweren, wobei javascript zur ausführung aber in entschlüsselter, lesbarer form vorliegen muss,

                    ist es bei programiersprachen genau anders herum:
                    sie müssen zwingend kompiliert werden, um ausführbar zu sein.

                    btw. auch java hat seine basis auf dem jeweiligen system in maschinenlesbarem code. wie sonst sollte der code der jvm sonst vom prozessor ausgeführt werden können?
                    der code eines, mit exepackern/-cryptern gepackten programmes ist auch nicht direkt vom prozessor ausführbar, sondern erst, wenn das programm im arbeitsspeicher wieder entpackt wurde.

                    ist eine *.hta wirklich eine anwendung?
                    nein, sie ist ein dokument, in dem für einen interpreter darstellungsanweisungen und funktionalität in lesbarer form beschrieben werden. und ohne installierten internet-explorer sind sie nur ein haufen text.

                    COMPILIEREN <=> INTERPRETIEREN

                    klar kann man eine sprache entwickeln, die sowohl von einem interpreter ausgeführt, als auch in eine maschinenlesbares programm compiliert werden kann. trotzdem bleibt erstere variante ein zu interpretierendes script, das ohne interpreter nicht lauffähig ist.

                    1. Hallo Raik,

                      es gibt in javascript keinerlei syntax, die dazu dient, auf hardware zuzugreifen.

                      Doch, es ist möglich. Es hindert Dich niemand daran, den JavaScript-Interpreter eines beliebigen OpenSource-Browsers (z.B. Mozilla oder Konqueror) so zu erweitern, dass dieser auch vordefinierte Objekte zum Zugriff auf die Hardware bietet.

                      Anderes Beispiel: In Brainfuck gibt es auch keinerlei Syntax, auf die Hardware zuzugreifen. Dennoch kannst Du Brainfuck kompilieren.

                      in programiersprachen schon.

                      PHP wird interpretiert. Dennoch kann ich mit PHP direkt auf die Hardware zugreifen. Ich kann mit PHP z.B. eine Festplatte neu partitionieren, indem ich die jeweilige Gerätedatei öffne und an den ersten 512 Bytes etwas modifiziere. Was ist PHP nun nach Deiner Definition? Programmiersprache oder nicht?

                      und wärend man in javascript allenfalls eine verschlüsselung des quellcodes einbaut, um das "stehlen" mit den augen zu erschweren, wobei javascript zur ausführung aber in entschlüsselter, lesbarer form vorliegen muss,

                      Nein. Du könntest JavaScript auch kompilieren, wenn Du einen entsprechenden Compiler bauen könntest. _Jede_ Sprache lässt sich sowohl kompilieren als auch interpretieren - es ist lediglich eine Frage des Aufwands.

                      sie müssen zwingend kompiliert werden, um ausführbar zu sein.

                      Nein. Ich könnte auch einen C-Interpreter schreiben, wenn ich Lust hätte. (habe ich aber nicht ;-))

                      der code eines, mit exepackern/-cryptern gepackten programmes ist auch nicht direkt vom prozessor ausführbar, sondern erst, wenn das programm im arbeitsspeicher wieder entpackt wurde.

                      Wo ist da der Unterschied zu Beispielsweise PHP oder Perl, die genau das auch tun? Sie verwandeln eine für den Prozessor nicht verständliche Form beim Start des Scripts in eine für den Prozessor verständliche Form.

                      COMPILIEREN <=> INTERPRETIEREN

                      Das bezweifelt ja keiner, es geht lediglich darum, dass dies nichts mit der Tatsache zu tun hat, ob Sprache X eine Programmiersprache ist oder nicht.

                      klar kann man eine sprache entwickeln, die sowohl von einem interpreter ausgeführt, als auch in eine maschinenlesbares programm compiliert werden kann.

                      Die gibt es bereits. Siehe Brainfuck.

                      trotzdem bleibt erstere variante ein zu interpretierendes script, das ohne interpreter nicht lauffähig ist.

                      Na und? Es geht doch darum, ob dann die Sprache eine Programmiersprache ist. Wenn diese Sprache sowohl kompiliert als auch interpretiert werden kann, ist sie dann eine Programmiersprache oder nicht?

                      Viele Grüße,
                      Christian

                      1. Es hindert Dich niemand daran, den JavaScript-Interpreter eines beliebigen OpenSource-Browsers (z.B. Mozilla oder Konqueror) so zu erweitern, dass dieser auch vordefinierte Objekte zum Zugriff auf die Hardware bietet.

                        die frage ist nicht, ob du den interpreter um solche funktionen erweiterst und für dich selber eine proprietäre version von javascript ("andreas-script"?) erfindest, sondern ob die script-datei an sich zu irgendwelchen handlungen fähig ist.
                        wenn wir darüber reden, ob javascript eine programiersprache ist, dann reden wir von dem, was das w3c als syntax für javascript festgelegt hat und nicht von "andreas-script".

                        In Brainfuck gibt es auch keinerlei Syntax, auf die Hardware zuzugreifen.

                        doch, du kannst direkt hexadezimal-code schreiben und darüber alles anstellen, was du willst. ich besuch dich dann in 90 jahren im altersheim, zum ersten release deines, in brainfuck erstellten cd-brenn-programmes ;-)

                        Dennoch kann ich mit PHP direkt auf die Hardware zugreifen.

                        nein, kann php nicht. php enthält nur anweisungen für ein, maschinenlesbaren code enthaltendes programm, welches solches tun kann. ohne interpreter ist eine php-datei ein besch*** stück buchstabensalat.

                        und wärend man in javascript allenfalls eine verschlüsselung des quellcodes einbaut, um das "stehlen" mit den augen zu erschweren, wobei javascript zur ausführung aber in entschlüsselter, lesbarer form vorliegen muss,
                        Nein. Du könntest JavaScript auch kompilieren, wenn Du einen entsprechenden Compiler bauen könntest.

                        ich könnte auch eine maschine bauen, die autos einschmilzt und daraus flugzeuge produziert. kann ein auto deswegen fliegen?

                        Nein. Ich könnte auch einen C-Interpreter schreiben, wenn ich Lust hätte. (habe ich aber nicht ;-))

                        und? könnte dein c-source dann irgend etwas anstellen? nö, der interpreter kann das, ein maschinenlesbares programm.

                        der code eines, mit exepackern/-cryptern gepackten programmes ist auch nicht direkt vom prozessor ausführbar, sondern erst, wenn das programm im arbeitsspeicher wieder entpackt wurde.
                        Wo ist da der Unterschied zu Beispielsweise PHP oder Perl, die genau das auch tun?

                        wieder: nein. die scripte werden auch zur laufzeit nicht compiliert, sondern lediglich interpretiert.
                        indem du von einem blatt eine anleitung zum bau von flügeln abliest, und dich mit den dingern in ulm vom rathaus stürzt, machst du aus dem blatt keinen vogel, sondern interpretierst es lediglich.
                        der unterschied ist der, ob ich aus einem behälter einen gegenstand hole, mit dem ich etwas machen kann, oder eine beschreibung dieses gegenstandes lese.

                        Es geht doch darum, ob dann die Sprache eine Programmiersprache ist. Wenn diese Sprache sowohl kompiliert als auch interpretiert werden kann, ist sie dann eine Programmiersprache oder nicht?

                        wenn ich viel mehr arbeiten würde, könnte ich mir sogar einen königs-titel kaufen. würdest du mich dann ab sofort bitte mit "ihre majestät" ansprechen? darüber zu philosophieren, ob man einen compiler für eine sprache schreiben kann, halte ich für irrelevant.
                        wenn eine sprache in ein programm compiliert werden kann, das ohne hilfsprogramme direkt auf der hardware ausführbar ist, dann nenne ich sie eine programiersprache.
                        da wirst du wohl mit der heute verfügbaren syntax von javascript nicht viel glück haben.

                        1. Hallo Raik,

                          [JavaScript]
                          die frage ist nicht, ob du den interpreter um solche funktionen erweiterst

                          Nein, ich erweitere *nicht* den Interpreter. Ich erweiter *nur* die API, die zur Verfügung gestellt wird.

                          sondern ob die script-datei an sich zu irgendwelchen handlungen fähig ist.

                          Natürlich nicht. Kein Stück Code, egal ob kompiliert oder im Quelltext, ist von selbst zu irgendwelchen Handlungen fähig.

                          wenn wir darüber reden, ob javascript eine programiersprache ist, dann reden wir von dem, was das w3c als syntax für javascript festgelegt hat

                          Ich würde an der Syntax nichts ändern, nur an der API.

                          und nicht von "andreas-script".

                          Ich heiße Christian. ;-)

                          In Brainfuck gibt es auch keinerlei Syntax, auf die Hardware zuzugreifen.

                          doch, du kannst direkt hexadezimal-code schreiben und darüber alles anstellen, was du willst.

                          Dann gebe mir *ein* Beispiel, wie ich mit Brainfuck den Interrupt 0x80 auslöse. Mit Brainfuck kannst Du lediglich Eingabe und Ausgabe durchführen sowie im Speicher (der dem Programm zugewiesen wurde) etwas herumrechnen - Du kannst *nicht*

                          ich besuch dich dann in 90 jahren im altersheim, zum ersten release deines, in brainfuck erstellten cd-brenn-programmes ;-)

                          Da musst Du mit Sicherheit länger warten - ich behaupte mal, dass das mit Brainfuck - zumindest mit der derzeitigen API - nicht geht.

                          Dennoch kann ich mit PHP direkt auf die Hardware zugreifen.

                          nein, kann php nicht. php enthält nur anweisungen für ein, maschinenlesbaren code enthaltendes programm, welches solches tun kann.

                          Und ein Programm, dass maschinenlesbaren Code enthält, enthält auch nur Anweisung für ein paar millionen Transistoren, welches dieses dann tun können.

                          ohne interpreter ist eine php-datei ein besch*** stück buchstabensalat.

                          Ohne Prozessor ist eine Ausführbare Datei ein "besch*** stück" Bytesalat.

                          Und bevor Du jetzt kommst, ein Prozessor sei Hardware und das sei ein Unterschied: Es gibt durchaus komplette Prozessoremulatoren in Software, wie z.B. bochs.

                          Nein. Du könntest JavaScript auch kompilieren, wenn Du einen entsprechenden Compiler bauen könntest.

                          ich könnte auch eine maschine bauen, die autos einschmilzt und daraus flugzeuge produziert. kann ein auto deswegen fliegen?

                          Nicht alles, was hinkt, ist ein Vergleich.

                          Nein. Ich könnte auch einen C-Interpreter schreiben, wenn ich Lust hätte. (habe ich aber nicht ;-))

                          und? könnte dein c-source dann irgend etwas anstellen? nö, der interpreter kann das, ein maschinenlesbares programm.

                          Darum geht es mir doch gar nicht. Die Frage, auf die ich hier hinauswollte: Ist C jetzt eine Programmiersprache oder nicht?

                          Wo ist da der Unterschied zu Beispielsweise PHP oder Perl, die genau das auch tun?

                          wieder: nein. die scripte werden auch zur laufzeit nicht compiliert,

                          Doch, werden sie.

                          Es geht doch darum, ob dann die Sprache eine Programmiersprache ist. Wenn diese Sprache sowohl kompiliert als auch interpretiert werden kann, ist sie dann eine Programmiersprache oder nicht?

                          wenn ich viel mehr arbeiten würde, könnte ich mir sogar einen königs-titel kaufen. würdest du mich dann ab sofort bitte mit "ihre majestät" ansprechen?

                          Verstehe ich nicht.

                          darüber zu philosophieren, ob man einen compiler für eine sprache schreiben kann, halte ich für irrelevant.

                          Warum?

                          wenn eine sprache in ein programm compiliert werden kann, das ohne hilfsprogramme direkt auf der hardware ausführbar ist, dann nenne ich sie eine programiersprache.

                          Das gestehe ich Dir ja prinzipiell zu, ich will lediglich erläutern, dass Du Dich damit in Widersprüche verstrickst.

                          da wirst du wohl mit der heute verfügbaren syntax von javascript nicht viel glück haben.

                          Warum? Was hindert mich daran, JavaScript zu kompilieren (ohne auch nur irgendwas an Syntax oder API zu ändern (!)) und diesen kompilierten Code dann mit den Mozilla-Objektdateien zu einem Executeable zu linken? Nichts bis auf meine Faulheit.

                          Viele Grüße,
                          Christian

                          1. wenn wir das jetzt alles so weiter diskutieren, hat die nächste antwort 3 seiten länge, also werde ich mal versuchen, etwas zu reduzieren.

                            Ich heiße Christian. ;-)

                            oops! sorry

                            wieder: nein. die scripte werden auch zur laufzeit nicht compiliert,
                            Doch, werden sie.

                            ok, ob perl kompiliert werden kann, dazu kann ich nichts sagen. zumindest, was php angeht, sind die befehle in der textdatei trigger die die ausführung von, im interpreter vorhandenen codeteilen (funktionen) auslösen.
                            was tatsächlich in maschinenlesbaren code umgesetzt wird, bevor es ausgeführt wird, sind reguläre ausdrücke.

                            darüber zu philosophieren, ob man einen compiler für eine sprache schreiben kann, halte ich für irrelevant.

                            Warum?

                            entweder wir einigen uns darauf, darüber zu diskutieren, was ist.

                            es gibt keinen compiler für javascript und javascript wurde auch nicht konzipiert, um in code umgesetzt zu werden, sondern stellt eigendlich eine folge von aufrufen bestimmter funktionen des interpreters mit parametern dar.
                            ein "compiler" müsste prinzipell nur eben diesen code aus dem interpreter herauskopieren und zusammensetzen. eine funktionserweiterung wäre aber damit nicht möglich. dazu müsste man neue routinen schreiben, deren funktionsnamen als neue trigger in die sprache mit aufgenommen werden müssten.

                            oder wir diskutieren auf basis der unendlichen möglichkeiten des universums.

                            dann kann ich auch fragen: ist der windows-quellcode musik? klar, weil man ein gerät bauen kann, das ihn in töne umsetzt.
                            auf der basis "was wäre, wenn" kann man die absurdesten behauptungen aufstellen und mit der machbarkeit begründen.
                            kann das schreiben vom finanzamt ein küchenrezept sein? ist zwar nicht dafür konzipiert, als kochvorlage zu dienen, aber prinzipell wäre eine, wie auch immer geartete interpretation möglich.

                            Was hindert mich daran, JavaScript zu kompilieren ... und diesen kompilierten Code dann mit den Mozilla-Objektdateien zu einem Executeable zu linken?

                            siehe oben, zu kompilieren gibt es da nichts, nur die fertigen funktionen vom mozilla zu einem neuen programm zusammenzusetzen.
                            klar kannst du das rad auch neu erfinden und diese routinen noch mal selber schreiben, aber prinzipell läuft es darauf hinaus.

                            grüsse aus berlin, raik

                            1. Hallo Raik,

                              was tatsächlich in maschinenlesbaren code umgesetzt wird, bevor es ausgeführt wird, sind reguläre ausdrücke.

                              Aber mit regulären Ausdrücken kannst Du nicht programmieren - es gibt keine Bedingungen, keine Schleifen - nichts. Nach Deiner Definition wäre es also eine Programmiersprache? ;-)

                              oder wir diskutieren auf basis der unendlichen möglichkeiten des universums.

                              dann kann ich auch fragen: ist der windows-quellcode musik? klar, weil man ein gerät bauen kann, das ihn in töne umsetzt.

                              Du bringst hier immer Beispiele, die nichts mit dem aktuellen Sachverhalt nichts zu tun haben: Wenn Du ein Auto in ein Flugzeug verwandeln willst oder den Windows-Quellcode in Musik verwandeln willst [1], dann wirst Du wohl kaum konkret wissen, wie Du das genau anstellen sollst. Wenn ich dagegen einen Compiler für eine bisher nur interpretierte Sprache schreiben wollte, dann würde ich ziemlich genau wissen, was ich machen müsste. (und wenn ich Ahnung von Assembler und maschinenlesbarem Code hätte, dann wüßte ich es ganz genau)

                              siehe oben, zu kompilieren gibt es da nichts, nur die fertigen funktionen vom mozilla zu einem neuen programm zusammenzusetzen.

                              Nein. Eben nicht. Ich lasse die Objektdateien vom Mozilla, die die Funktionen enthalten, so, wie sie sind. Jede Funktion besitzt eine bestimmte Sprungadresse. Wenn ich nun JavaScript kompilieren und linken würde, dann würde ich lediglich Referenzen auf diese Sprungadressen einbauen, wenn ein Funktions- oder Methodenaufruf kommt. Genauso wie bei C, Pascal, etc.

                              Noch etwas: Ist Visual Basic eine Programmiersprache nach Deiner Definition?

                              Viele Grüße,
                              Christian

                              [1] Wobei ich mir sicher bin, dass da nur eine grauenvolle disharmonische Tonfolge rauskäme, wenn man wirklich versuchen sollte, den Windows-Sourcecode in Töne zu verwandeln. ;-)

                              1. Aber mit regulären Ausdrücken kannst Du nicht programmieren - es gibt keine Bedingungen, keine Schleifen - nichts.

                                jemandem, der kein assembler kann, zu erklären, wie eine regexp-engine arbeitet, das würde lange dauern.
                                ([^A]\w+) es wird eine buchstaben(\w)folge(+) gesucht, die (Bedingung:) kein(^) grosses A enthält.

                                Nach Deiner Definition wäre es also eine Programmiersprache? ;-)

                                genau lesen: "in maschinenlesbaren code umgesetzt", da steht nichts von "ohne hilfsprogramme ausführbar".
                                ich habe nicht behauptet, das reguläre ausdrücke eine programiersprache sind, sondern das sie vor der ausführung compiliert werden. wie gut kennst du dich mit regexp aus?
                                http://www.php.net/manual/de/pcre.pattern.syntax.php

                                Du bringst hier immer Beispiele, die nichts mit dem aktuellen Sachverhalt nichts zu tun haben:

                                dann versuche ich es noch einmal anders zu erklären.
                                es gibt einen unterschied zwischen einem rezept und einer bauanleitung für eine maschine.
                                konzept des rezeptes ist es, die ausgangsmaterialien (entspricht den variablen in javascript) an die beschriebenen  maschinen (mixer, fleischwolf, reibe) zu übergeben und so zu einem ergebnis zu kommen.
                                natürlich kann man auch eine maschine bauen, die die einzelnen maschinen beinhaltet oder zumindest ansteuert, und das ergebnis (fertiges essen) dieses einen rezeptes erzeugt.
                                aber wärend das rezept eine anleitung zur nutzung vorhandener maschinen ist, ist die bauanleitung der weg zu einer eben dieser maschinen.
                                     ohne eine schnittstelle nach aussen, die die variable eingabe neuer daten ermöglicht, würde dein compiliertes javascript immer den selben sch** machen. damit es interaktiv wird, muss eine dateneingabe möglich sein und für diese muss ein format festgelegt werden, in dem diese erfolgt, damit das programm sie verarbeiten kann. und genau das ist javascript:
                                eine spezifikation der übergabeformate für daten an ein programm, den javascript-interpreter des browsers.

                                Nein. Eben nicht. Ich lasse die Objektdateien vom Mozilla, die die Funktionen enthalten, so, wie sie sind.

                                gut, damit erzeugst du ein programm, das als hilfsprogramm den mozilla braucht. ohne dessen bibliotheken ist es nicht ausführbar.

                                Noch etwas: Ist Visual Basic eine Programmiersprache nach Deiner Definition?

                                der code von vb-programmen wird direkt vom prozessor ausgeführt. in sofern ist es eine programiersprache, aber bis einschl. version6 eine besch****. ;-)

                                [1] Wobei ich mir sicher bin, dass da nur eine grauenvolle disharmonische Tonfolge rauskäme, wenn man wirklich versuchen sollte, den Windows-Sourcecode in Töne zu verwandeln. ;-)

                                ACK

                                grüsse, raik

                                1. Hallo raik,

                                  Aber mit regulären Ausdrücken kannst Du nicht programmieren - es gibt keine Bedingungen, keine Schleifen - nichts.
                                  jemandem, der kein assembler kann, zu erklären, wie eine regexp-engine arbeitet, das würde lange dauern.

                                  Will ich (im Moment) auch gar nicht wissen.

                                  ([^A]\w+) es wird eine buchstaben(\w)folge(+) gesucht, die (Bedingung:) kein(^) grosses A enthält.

                                  Naja, nicht wirklich. ([^A]\w+) matched auf eine Zeichenfolge, die mit einem Zeichen, das nicht 'A' ist beginnt und dann von mindestens einem Buchstaben gefolgt wird. Was das mit einer klassischen if-Bedingung zu tun haben soll, verstehe ich aber immer nicht. Natürlich hat das ganze eine gewisse Ähnlichkeit, aber eine Äquivalenz sehe ich nicht.

                                  ich habe nicht behauptet, das reguläre ausdrücke eine programiersprache sind, sondern das sie vor der ausführung compiliert werden.

                                  Ähm, Du widersprichst Dir selbst. Du hast doch selbst gesagt, Programmiersprachen seien Sprachen, die man kompilieren kann, oder? Oder meinst Du nur solche, die nicht ohne gesondertes Programm ausgeführt werden können? Dann dürftest Du so ziemlich jede Sprache außer Assembler (und vielleicht Brainfuck auf spezieller Hardware ;-)) als nicht-Programmiersprache disqualifizieren.

                                  wie gut kennst du dich mit regexp aus?

                                  Sehr gut eigentlich. Zumindest was die Verwendung und Syntax angeht.

                                  es gibt einen unterschied zwischen einem rezept und einer bauanleitung für eine maschine.
                                  konzept des rezeptes ist es, die ausgangsmaterialien (entspricht den variablen in javascript) an die beschriebenen  maschinen (mixer, fleischwolf, reibe) zu übergeben und so zu einem ergebnis zu kommen.
                                  natürlich kann man auch eine maschine bauen, die die einzelnen maschinen beinhaltet oder zumindest ansteuert, und das ergebnis (fertiges essen) dieses einen rezeptes erzeugt.
                                  aber wärend das rezept eine anleitung zur nutzung vorhandener maschinen ist, ist die bauanleitung der weg zu einer eben dieser maschinen.

                                  Bis jetzt habe ich Deinen Vergleich nicht verstanden.

                                  ohne eine schnittstelle nach aussen, die die variable eingabe neuer daten ermöglicht, würde dein compiliertes javascript immer den selben sch** machen.

                                  JavaScript hat doch eine Schnittstelle nach außen.

                                  damit es interaktiv wird, muss eine dateneingabe möglich sein und für diese muss ein format festgelegt werden, in dem diese erfolgt, damit das programm sie verarbeiten kann.

                                  Ja.

                                  eine spezifikation der übergabeformate für daten an ein programm, den javascript-interpreter des browsers.

                                  Ja, auch. Ich bestreite ja nicht, dass JavaScript-Code *auch* unter den Begriff "Daten", allerdings ist JavaScript-Code auch Anweisnug.

                                  Nein. Eben nicht. Ich lasse die Objektdateien vom Mozilla, die die Funktionen enthalten, so, wie sie sind.
                                  gut, damit erzeugst du ein programm, das als hilfsprogramm den mozilla braucht.

                                  Ja, mehr oder weniger. Ich würde es natürlich in den Mozilla-Code mit einkompilieren, damit ein ausführbares Programm entsteht.

                                  ohne dessen bibliotheken ist es nicht ausführbar.

                                  Ein CD-Brenn-Programm ist ohne die Kernel-Schnittstelle, ohne die Systembibliotheken und ohne die C-Standardbibliothek auch nicht ausführbar.

                                  Noch etwas: Ist Visual Basic eine Programmiersprache nach Deiner Definition?
                                  der code von vb-programmen wird direkt vom prozessor ausgeführt.

                                  Wenn Du in VB (zumindest bis einschl. Version 3, darüber kenne ich es nicht) auf den "Play"-Knopf drückst, dann wird der Code interpretiert und nicht kompiliert. Wenn Du dagegen im Dateimenü auf "Create EXE File" (oder so ähnlich) machst, dann wird der Code erst kompiliert. Ich wiederhole meine Frage: Ist VB nun eine Programmiersprache oder nicht?

                                  Viele Grüße,
                                  Christian

                    2. Hi!

                      was ich damit sagen wollte, ist:
                      es gibt in javascript keinerlei syntax, die dazu dient, auf hardware zuzugreifen.
                      in programiersprachen schon.

                      Dann ist C also keine Programmiersprache. Oder kannst Du mir schnell mal die Stelle zeigen, wo in der ISO C89 Spec die Schnittstelle fuer die CD-Laufwerke beschrieben ist?

                      btw. auch java hat seine basis auf dem jeweiligen system in maschinenlesbarem code. wie sonst sollte der code der jvm sonst vom prozessor ausgeführt werden können?

                      Das was die JVM macht, ist nichts anderes als interpretieren. Also ist Java keine Programmiersprache. Doch halt, es gibt ja auch Hardware, die Java-Byte-Code direkt ausfuehren kann. Also doch eine Programmiersprache. Jetzt bin ich aber verwirrt. Sieht fast so aus, als ob das Interpretieren vs. Compilieren kein sinnvolles Kriterium fuer die Definition von Programmiersprachen ist.

                      So long

                      --
                      "Microsoft ist über die Probleme informiert, hat aber noch nicht reagiert."
                      "Der Patch %s, der das Problem %s beheben sollte, funktioniert offenbar nicht."
                      "Wann ein Update verfügbar sein wird, ist nicht bekannt."
                          (Textbausteine der Heise-Newsticker-Redaktion)
                      1. Dann ist C also keine Programmiersprache. Oder kannst Du mir schnell mal die Stelle zeigen, wo in der ISO C89 Spec die Schnittstelle fuer die CD-Laufwerke beschrieben ist?

                        ich könnte dir ein dutzend programme nennen, die in c geschrieben sind und die auf das cd-rom zugreifen.
                        kannst du mir ein javascript zeigen, das sowas tut, ohne hilfsprogramme, wie einen browser? tut das javascript oder der browser? hebe ich 4 paletten mit einem gesamtgewicht von 3 tonnen an, oder tut das der gabelstapler, den ich bediene?

                        btw. auch java hat seine basis auf dem jeweiligen system in maschinenlesbarem code. wie sonst sollte der code der jvm sonst vom prozessor ausgeführt werden können?

                        Das was die JVM macht, ist nichts anderes als interpretieren. Also ist Java keine Programmiersprache. Doch halt, es gibt ja auch Hardware, die Java-Byte-Code direkt ausfuehren kann. Also doch eine Programmiersprache. Jetzt bin ich aber verwirrt. Sieht fast so aus, als ob das Interpretieren vs. Compilieren kein sinnvolles Kriterium fuer die Definition von Programmiersprachen ist.

                        dann nenn mir ein anderes
                        trag was konstruktives bei zum thema.

                        1. Hallo Raik,

                          ich könnte dir ein dutzend programme nennen, die in c geschrieben sind und die auf das cd-rom zugreifen.

                          Die jedoch alle auf eine bestimmte API zugreifen, die nicht zum C-Standard gehört.

                          Sieht fast so aus, als ob das Interpretieren vs. Compilieren kein sinnvolles Kriterium fuer die Definition von Programmiersprachen ist.

                          dann nenn mir ein anderes

                          Das Kriterium der Turing-Vollständigkeit wurde schon mehrfach hier im Thread erwähnt.

                          trag was konstruktives bei zum thema.

                          Ich verstehe nicht, was Du damit meinst.

                          Viele Grüße,
                          Christian

                        2. Dann ist C also keine Programmiersprache. Oder kannst Du mir schnell mal die Stelle zeigen, wo in der ISO C89 Spec die Schnittstelle fuer die CD-Laufwerke beschrieben ist?

                          ich könnte dir ein dutzend programme nennen, die in c geschrieben sind und die auf das cd-rom zugreifen.

                          Du weichst der Frage aus. Beantworte sie, bzw. versuch' es. Sie deckt naemlich Deinen Denkfehler auf.

                          Das was die JVM macht, ist nichts anderes als interpretieren. Also ist Java keine Programmiersprache. Doch halt, es gibt ja auch Hardware, die Java-Byte-Code direkt ausfuehren kann. Also doch eine Programmiersprache. Jetzt bin ich aber verwirrt. Sieht fast so aus, als ob das Interpretieren vs. Compilieren kein sinnvolles Kriterium fuer die Definition von Programmiersprachen ist.

                          dann nenn mir ein anderes

                          Hast Du denn den Thread nicht gelesen? Es steht doch schon im Eroeffnungsposting!

                          trag was konstruktives bei zum thema.

                          Meine Postings sind zum Mitdenken.

                          So long

                          --
                          "Microsoft ist über die Probleme informiert, hat aber noch nicht reagiert."
                          "Der Patch %s, der das Problem %s beheben sollte, funktioniert offenbar nicht."
                          "Wann ein Update verfügbar sein wird, ist nicht bekannt."
                              (Textbausteine der Heise-Newsticker-Redaktion)
                          1. Du weichst der Frage aus. Beantworte sie, bzw. versuch' es. Sie deckt naemlich Deinen Denkfehler auf.

                            sicherlich greifen die meisten programme heute auf die schnittstellen des betriebssystems zu. dazu sind diese ja da, das nicht jeder programierer diese funktionen alle selber schreiben muss.
                            aber meines wissens nach ist windows selber in c oder c++ geschrieben. d.h., auch diese dll's wurden so geschrieben. es ist also sehr wohl möglich, mit c auf die hardware zuzugreifen.
                            wenn ich mich da täuschen sollte und windows in assembler gecoded wurde, lass ich mich gern eines besseren belehren. ;-) dann sollte es allerdings etwas schneller sein.
                            peid sagt mir übrigens über den cd-rom-treiber, der meinem uralt-cd-laufwerk beilag:
                            programming language: c

                            mit javascript geht das noch nicht mal, wenn man den interpreter als teil von javascript begreift. sicherlich gibt es scriptsprachen, die einen zugriff auf hardware auslösen können. auslösen, nicht selber tätigen. ausgeführt wird er von einem programm.

                            ich verstehe ehrlich gesagt nicht, warum hier einige javaSCRIPT und consorten unbedingt in den rang einer programiersprache erheben wollen. will man sich programierer nennen dürfen?

                            das man sich darüber freut, die sichel gegen den rasenmäher zu tauschen, kann ich ja verstehen. aber niemand würde doch auf die idee kommen, darüber zu diskutieren, das man für die steuerung all dieser gartengeräte auch eine maschine bauen könnte.
                            entweder könnte diese maschine immer nur die gleichen arbeitsgänge machen, dann müsste man hier und da doch wieder von hand nachhelfen, oder sie wäre so kompliziert, das ihre wartung mehr aufwand machen würde, als sie nutzen bringt.

                            es gibt nun mal programme und es gibt scripte.
                            beide haben ihre berechtigung, sind aber verschiedene paar schuhe.

                            in einem programm werden funktionen zusammengefasst, die so häufig gebraucht werden.
                            die übergabe der zu verarbeitenden werte erfolgt
                             - per commandozeile
                             - per batch- oder scriptdatei oder
                             - per gui

                            eben weil diese sich oft ändern, werden sie nicht in das programm mit einkompiliert, sondern stehen als parameter zur verfügung.

                            die ausrüstung von schumachers rennwagen treibt vielen die begeisterung in die augen.
                            aber keiner würde wohl auf die idee kommen, die aufgaben des fahrers auch noch in einer maschine nachbilden zu wollen.
                            gas geben, bremsen, rechts oder links vorbeiziehen, den momentanen gemütszustand des gegners und seine eigenheiten einschätzen und ihn spontan mit einem ungewöhnlichen manöver austricksen etc.
                            diese intuition, instinkt und menschliche fähigkeit, instinktiv richtige lösungswege erkennen zu können, dazu würde wohl nicht mal big blue reichen.

                            man kann jemandem mit einem guten programm viele nützliche funktionen an die hand geben, aber alle eventualitäten in einer maschine komplett abbilden zu wollen, so das eine eingabe von parametern von aussen unnötig wird, das ist unmöglich und nicht sinnvoll.
                            und deshalb gibt es programme, und scripte (z.b.), die diese steuern. linux funktioniert genau so.
                            ein javascript zu einem programm compilieren zu wollen, macht keinen sinn, weil dieses programm dann nur für diesen einen zweck taugen würde. und damit es für verschiedene zweche geeignet ist (z.b. ein menü-script, dessen farbe man nach dem kompilierern noch einstellen kann), muss es wieder eine schnittstelle haben, an der man ihm diesen parameter übergeben kann. und wenn man ausser der farbe des menüs noch mehr beeinflussen will, braucht man mehr parameter. und schon sind wir wieder bei einer scriptsprache, die dann halt ein kompiliertes javascript zu entsprechenden ausgaben veranlasst. aber dafür könnte man ja dann wieder einen kompiler bauen ...

                            WOZU ???
                            :-/

                            ich versteh's nicht, tut mir leid.

                            grüsse, raik

                            1. Hallo.

                              aber keiner würde wohl auf die idee kommen, die aufgaben des fahrers auch noch in einer maschine nachbilden zu wollen.
                              gas geben, bremsen, rechts oder links vorbeiziehen, den momentanen gemütszustand des gegners und seine eigenheiten einschätzen und ihn spontan mit einem ungewöhnlichen manöver austricksen etc.

                              Mit voller Wucht in den Reifenstapel brettern können heutige Computer aber auch ganz allein ;-)
                              MfG, at

                            2. Du weichst der Frage aus. Beantworte sie, bzw. versuch' es. Sie deckt naemlich Deinen Denkfehler auf.

                              sicherlich greifen die meisten programme heute auf die schnittstellen des betriebssystems zu. dazu sind diese ja da, das nicht jeder programierer diese funktionen alle selber schreiben muss.

                              Mehr noch, ein richtiges Betriebssystem laesst den direkten Zugriff auf die Hardware gar nicht zu. (Damit sind die Windowse der 9x-Linie schon mal disqualifiziert.) Das nur nebenbei.

                              aber meines wissens nach ist windows selber in c oder c++ geschrieben. d.h., auch diese dll's wurden so geschrieben. es ist also sehr wohl möglich, mit c auf die hardware zuzugreifen.
                              wenn ich mich da täuschen sollte und windows in assembler gecoded wurde, lass ich mich gern eines besseren belehren. ;-) dann sollte es allerdings etwas schneller sein.

                              Windows ist hauptsaechlich in C geschrieben. Teile davon sind aber zweifellos in Assembler gehalten, so z.B. der Hardwarezugriff und das Memory Management, welches mit C nicht oder nicht sinnvoll zu implementieren ist (oder wie moechte man bitte die Descriptor Table Register laden?).

                              peid sagt mir übrigens über den cd-rom-treiber, der meinem uralt-cd-laufwerk beilag:
                              programming language: c

                              Das schliesst nicht aus, dass auch Assembleranweisungen enthalten sein koennen.

                              Soviel ich weiss kennt ANSI-C keine Funktionen zum direkten Zugriff auf Hardware. Das waere auch nicht sehr sinnvoll, weil das gar nicht cross-platform hinzukriegen ist. Es gibt aber einige C-Compiler, die zusaetzlich Funktionen wie inpw und outpw einfuehren, mit denen es moeglich ist, auf die Ports eines PC-Systems zuzugreifen. Die C-Compiler von Intel, M$ und Borland sind Beispiele dafuer. Das hat dann aber nichts mehr mit der Sprache selbst zu tun, sondern das stellt bereits ein API dar. Genau so ein API einzufuehren willst Du jedoch fuer das Beispiel JavaScript verweigern. Auch Funktionen wie CreateWindowExA(), die man unter C fuer Windows hat, sind kein Teil der Sprache (du kannst also mit der reinen Sprache C nicht mal ein Fenster aufmachen), sondern das ist Teil des Win32-API. Es waere kein Problem, dieses API auch in JS zu importieren.

                              Die Sprache selbst wird davon jedoch nicht beruehrt. Und somit auch nicht die Frage, ob es sich um eine Programmiersprache handelt.

                              mit javascript geht das noch nicht mal, wenn man den interpreter als teil von javascript begreift. sicherlich gibt es scriptsprachen, die einen zugriff auf hardware auslösen können. auslösen, nicht selber tätigen. ausgeführt wird er von einem programm.

                              Wiederum alles nur eine Frage das APIs. Du kennst halt nur das API fuer die Browserumgebung (damit sind die Objekte navigator, screen, und window mit seinen Unterobjekten document, history, location usw. gemeint), welches es z.B. in einer Kommandozeilenversion von JS nicht geben wuerde. Dafuer wuerdest Du dort dann Funktionen zum Schreiben auf die Konsole oder fuer den Zugriff auf Dateien finden, aehnlich wie in den Kommandozeilenversionen von C oder Pascal oder diversen anderen Sprachen.

                              ich verstehe ehrlich gesagt nicht, warum hier einige javaSCRIPT und consorten unbedingt in den rang einer programiersprache erheben wollen. will man sich programierer nennen dürfen?

                              Es ist nun mal eine, da koennen wir auch nichts dran aendern. Ich persoenlich beherrsche mindestens 3 Sprachen, die auch Du als Programmiersprache einstufst, insofern besteht fuer mich keine Notwendigkeit, irgendetwas ueberzubewerten. "Programmiersprache" ist kein Begriff der Wertung, wie ernst man eine Sprache nimmt. Wenn es darum ginge, ja gut, dann wuerden bei mir JavaScript, Basic in allen Varianten und PHP gleich mal durchfallen, Perl wuerde ich gerade noch so gelten lassen. Aber das ist halt nicht der Punkt.

                              das man sich darüber freut, die sichel gegen den rasenmäher zu tauschen, kann ich ja verstehen. aber niemand würde doch auf die idee kommen, darüber zu diskutieren, das man für die steuerung all dieser gartengeräte auch eine maschine bauen könnte.
                              entweder könnte diese maschine immer nur die gleichen arbeitsgänge machen, dann müsste man hier und da doch wieder von hand nachhelfen, oder sie wäre so kompliziert, das ihre wartung mehr aufwand machen würde, als sie nutzen bringt.

                              Kapier ich net. Wo ist der Zusammenhang?
                              Eigentlich kapier ich den ganzen Rest Deines Postings nicht, seh ich gerade. Naja, ich hab sowieso schon genug geschrieben. *g*

                              So long

                              --
                              "Microsoft ist über die Probleme informiert, hat aber noch nicht reagiert."
                              "Der Patch %s, der das Problem %s beheben sollte, funktioniert offenbar nicht."
                              "Wann ein Update verfügbar sein wird, ist nicht bekannt."
                                  (Textbausteine der Heise-Newsticker-Redaktion)
                            3. Hallo Raik,

                              es gibt nun mal programme und es gibt scripte.

                              Ach Mensch!

                              ich versteh's nicht, tut mir leid.

                              Ich verstehe auch nicht, weswegen Du nicht mit einem Wort auf die hier
                              schon öfter vorgestellte in der Wissenschaft benutzte Definition
                              eingehst. Stichwort: Formale Sprache. Stichwort: Turingvollständigkeit.

                              Tim

                    3. Hallo Raik,

                      COMPILIEREN <=> INTERPRETIEREN

                      Meinst Du hier wirklich eine Äquivalenzrelation? Oder wolltest Du nicht doch
                      das ungleich-Zeichen verwenden, in ASCII meist mit »!=« ausgedrückt? ;-)

                      trotzdem bleibt erstere variante ein zu interpretierendes script, das ohne
                      interpreter nicht lauffähig ist.

                      Auch kompilierter Maschinencode wird nur durch die Hardware »interpretiert«.

                      Tim

                      1. Auch kompilierter Maschinencode wird nur durch die Hardware »interpretiert«.

                        eine wegbeschreibung wird "ausgeführt"
                        3te strasse links, 2.ampel rechts, hinter der 1ten brücke links, 5.strasse 8x links ...

                        und glatt 2mal um den letzten block gefahren, obwohl es nicht zielorientiert ist, oder
                        "interpretiert", wobei man sich die ausführung der letzten anweisung spart.

                        ein prozessor "führt aus". er fährt 8x links, auch wenn er danach wieder an der gleichen stelle steht. er "interpretiert" nicht.

                        1. Hallo Raik,

                          ein prozessor "führt aus". er fährt 8x links, auch wenn er danach wieder an
                          der gleichen stelle steht. er "interpretiert" nicht.

                          Du willst also sagen, daß Interpretieren nichts weiter als Ausführen mit
                          Fehlerkontrolle ist. Und?

                          Tim

          2. Hallo,

            Nach Deiner obenstehenden Definition ist Java keine Programmiersprache, denn es wird nicht in Maschinencode übersetzt, sondern in maschinenunabhängigen Zwischencode.

            Momentmal, heißt das, dass mir meine Informatiklehrerein was falsches erzählt hat. Sie hat gesagt wenn die *.java compiliert wird (und das wird sie ja bei Java) dann wird der Quelltext in _MASCHINENSPRACHE_ umgewandelt!

            Tschau

            Tobias

            --
            http://www.tobiasklare.de
            fo:) ch:? rl:( br:^ n4:° ie:{ mo:) va:| fl:) ss:| ls:<
            Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
            Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
            1. Hi,

              Nach Deiner obenstehenden Definition ist Java keine Programmiersprache, denn es wird nicht in Maschinencode übersetzt, sondern in maschinenunabhängigen Zwischencode.

              Momentmal, heißt das, dass mir meine Informatiklehrerein was falsches erzählt hat. Sie hat gesagt wenn die *.java compiliert wird (und das wird sie ja bei Java) dann wird der Quelltext in _MASCHINENSPRACHE_ umgewandelt!

              Dann überleg mal, warum ein und die selbe .class-Datei auf verschiedensten Betriebssystemen benutzt werden kann...

              Und warum zur Ausführung eine Java Virtual Machine benötigt wird...

              cu,
              Andreas

              --
              Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
              http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
            2. Hi Tobias

              Momentmal, heißt das, dass mir meine Informatiklehrerein was falsches erzählt hat. Sie hat gesagt wenn die *.java compiliert wird (und das wird sie ja bei Java) dann wird der Quelltext in _MASCHINENSPRACHE_ umgewandelt!

              Das ist in nahezu jedem Fall nicht wahr. Es gibt laut den Sun Werbeaussagen Prozessoren, welche den Java-Bytecode als ihre Maschinensprache benutzen, praktisch habe ich noch nie sowas gesehen. Für diese Sonderfälle ist die Aussage dann korrekt.

              Auf den meisten Plattformen braucht Java hingegen eine virtuelle Maschine die den Bytecode von Java in Maschinencode des Computers umwandelt, diesen Maschinencode aber durchaus auch cacht, dh nicht bei jedem Aufruf aufs neue interpretiert.

              Gruss Daniela

  2. Hallo!

    Ich kann mich an einen Thread erinnern, ich meine sogar, dass Antje Hofmann an der Diskussion teilgenommen hat, da ging's genau darum. Habe ihn sogar gefunden ;-)

    http://forum.de.selfhtml.org/archiv/1999_2/t03805.htm#a18321

    Auch vielleicht interessant:

    http://forum.de.selfhtml.org/archiv/1999_3/t06460.htm#a31735

    Viele Grüße aus Frankfurt/Main,
    Patrick

  3. Hallo benji,

    die Definitionen, die ich für Programmiersprachen kenne, gehen alle in
    die hier im Thread, im Archiv und im Netz schon genannte Richtung:

    Eine Programmiersprache ist eine formale Sprache zur Notation eines
    Algorithmus.

    "Kann man denn mit sowas [Javascript...] Gleichungen aufstellen und komplexe
    Mathematische Sachen... [vergessen] machen ?" - naja, denk mal nicht, habe
    auf jeden Fall noch nie (x + 4) * 5 ..... = 7x^(2*x) oder ähnliches in
    JavaScript gesehen

    Gleichungen wäre auch irgendwie sinnfrei, aber Zuweisungen für mathematische
    Berechnungen sind ein integraler Bestandteil:

    http://selfhtml.teamone.de/javascript/sprache/operatoren.htm#berechnung

    Also, diese Person ist da irgendwie schon ein bisschen komisch,

    Das sind Mathematiker, Physiker und auch Informatiker immer. ;-) Aber Deiner
    ist schon recht komisch oder eher uninformiert.

    Was sagt ihr zu dem ganzen ? In wie fern kann man JavaScript oder PHP zu
    Programmiersprachen nennen ?

    Damals, als ich noch jung und unwissend war (1), kriegte ich in diesem
    Forum auf meine Behauptung, Scriptsprachen seien keine Programmiersprachen
    (mit der üblichen Begründung Compilierung) eine wunderbar treffende
    Argumentation an den Kopf gehauen. Sinngemäß:

    »Angenommen irgendjemand entwickelt einen Compiler für eine bislang nur
    interpretierte Scriptsprache, veröffentlicht diesen aber nicht. Was ist
    diese Sprache dann? Eine Programmier- oder eine Scriptsprache?«

    (1) Heute bin ich etwas älter und unwissend.

    Tim

  4. Hallo benji,

    Also, vor einiger Zeit im selfchat wurde mir halt gesagt,

    Ja, ich kann mich erinnern. :-)

    dass es "früher" darüber schon oft Diskussionen gab, und dass diese das Ergebnis hatten, dass eine Scriptsprache oder ähnliches eine Programmiersprache ist, wenn sie "Turing-Fähig" (was ist das eigentlich ?) ist.

    Ja. Es heißt übrigens turing-vollständig und bedeutet, dass man mit der Programmiersprache jede nur erdenkliche Turing-Maschine simulieren kann. (ja, ich weiß, man kann es besser erklären)

    Schön schön, die haben dann noch gesagt, ja, php ist eine Programmiersprache, und JavaScript auch ...

    Ja.

    Ist es denn "wirklich" so ?

    Wenn Du "turing-vollständig" als hinreichendes Kriterium für Programmiersprachen ansiehst: ja. Wenn Du Programmiersprache für Dich anders definierst, darfst Du das gerne, allerdings wirst Du mit der Kommunikation mit anderen Individuen Probleme haben. "turing-vollständig" ist nunmal die allgemein anerkannte Definition von Programmiersprache.

    JavaScript, VBScript [z.T.], PHP,..." - er antwortete dann so ähnlich: "naja, das sind ja keine Programmiersprachen

    Wie gesagt: es ist Definitionssache. Nach der allgemein anerkannten Definition sind sie es.

    (ist ja schund oder so was hat er gesagt),

    "Etwas" kann sowohl Schund als auch eine Programmiersprache sein. Allerdings trifft das auf die von Dir genannten Sprachen per se IMHO nicht zu. ;-)

    Vielleicht sollte ich dazusagen, dass diese Person Mathematiker und Physiker ist und früher mal in seinem Studium ein wenig mit PRogrammiersprachen gearbeitet haben soll, und daher beurteilt ER sie so, wie er viel später sagte "Kann man denn mit sowas [Javascript...] Gleichungen aufstellen und komplexe Mathematische Sachen... [vergessen] machen ?"

    Moment! Turing-Vollständigkeit heißt lediglich, dass man solche "Sachen" unter Umständen selbst nachbauen kann, d.h. ich das ganze zumindest theoretisch realisieren kann. Turing-Vollständigkeit heißt jedoch nicht, dass eine Programmiersprache gleich ein Alleskönner ist.

    Wenn ich Mathematische Dinge machen wollte, dann würde ich selbstverständlich eine Programmiersprache wählen, die darauf ausgelegt ist. Dies heißt jedoch nicht, dass andere Sprachen keine Programmiersprachen sind, sie haben nur eine andere "Zielgruppe".

    • naja, denk mal nicht, habe auf jeden Fall noch nie

    (x + 4) * 5 ..... = 7x^(2*x)......

    oder ähnliches in JavaScript gesehen

    Du könntest theoretisch einen Algorithmus in JavaScript schreiben, der die Gleichung löst. Dürfte allerdings in JS nicht sehr schnell sein... (Bei Turing-Vollständigkeit geht es um Möglichkeit, nicht um Performance ;-))

    Also, diese Person ist da irgendwie schon ein bisschen komisch, für ihn zählen anscheinend nur die guten alten Programmiersprachen, wie Basic (WIRD ABER INTETRPRETIERT), C, Pascal,...

    Basic, Pascal und C können mathematische Ausdrücke auch nicht besser als PHP oder JavaScript.

    In wie fern kann man JavaScript oder PHP zu Programmiersprachen nennen ?

    Wie gesagt: Wenn Du das Kriterium "Turing-Vollständigkeit" als hinreichendes Kriterium anerkennst, sind JavaScript und PHP Programmiersprachen. Wenn Du eine andere Definition für Programmiersprache hast, dann musst Du selbst entscheiden, ob PHP und JavaScript unter Deine Definition fallen; Du wirst jedoch ein Problem mit der Kommunikation mit vielen Menschen haben, wenn Du eine andere Definition verwendest.

    Ich meine, bei PHP ist es ja noch extremer: Es kann nur über den Server aufgerufen werden, der dann das PHP-Programm aufruft, und nicht mal so wie JavaScript, der ja z.B. auch über den WSH aufgerufen werden kann.

    Nein. Das ist falsch. Du kannst auch PHP-Scripte schreiben, die lokal auf Deinem Rechner *OHNE* Webserver laufen und Fenster auf Deinen Bildschrim zaubern. Stichwort PHP-GTK.

    Viele Grüße,
    Christian

    1. Hallo Christian,

      Du kannst auch PHP-Scripte schreiben, die lokal auf Deinem Rechner *OHNE* Webserver laufen und Fenster auf Deinen Bildschrim zaubern. Stichwort PHP-GTK.

      oh, das finde ich aber interessant, da ich in C-Fensterprogrammierung bitter versagt habe. Braucht es dazu eine Art Laufzeitumgebung, wie in Java oder kann man so'ne Art .exe-Dateien machen?

      Gruß, Andreas

      1. Hallo Andreas,

        Erst einmal: ich habs noch nie gemacht. ;-)

        Braucht es dazu eine Art Laufzeitumgebung, wie in Java

        Du brauchst einen installierten PHP-Interpreter, die PHP-GTK-Erweiterung sowie die GTK-Bibliotheken. Ob es auch unter Windows funktioniert, weiß ich nicht... (prinzipiell sollte es, da sowohl PHP als auch GTK für Windows bereitstehen) Schau Dich einfach mal auf http://gtk.php.net/ um...

        oder kann man so'ne Art .exe-Dateien machen?

        AFAIK: nein. Kann mich aber auch täuschen. ;-)

        Viele Grüße,
        Christian

    2. Nein. Das ist falsch. Du kannst auch PHP-Scripte schreiben, die lokal auf Deinem Rechner *OHNE* Webserver laufen und Fenster auf Deinen Bildschrim zaubern. Stichwort PHP-GTK.

      Wirklich ? Gehe ich am besten gleich mal neues Posting schreiben !

      benji

  5. Nach eingehendem studim dieses diskussionsfadens, bin ich immer noch nicht schlauer was nun in programmiersprache darstellt.

    aber folgendes hat sich herauskristallisiert.

    anfoderung turing-vollständig

    bedeutet:

    lösung eines algorhitmus mit endlichem speicherbedarf in endlicher
    zeit

    beispiel html ist programmiersprache

    navigation - baumstruktur (graph)
     algorhitmus -
    start
      zeige alle kanten
      wähle start knoten
      finde knoten (x) (seite)
      zeige knoten (x)
    ende

    nun wenn html eine progrmmiersprache ist so sollte js auch eine sein.

    suche gegenbeispiel

    1. hi!

      anfoderung turing-vollständig
      bedeutet:
      lösung eines algorhitmus mit endlichem speicherbedarf in endlicher
      zeit

      Wer hat sowas behauptet? Turing-vollständig bedeutet nur, dass die
      Programmiersprache so mächtig wie eine Turing-Maschine ist. Und die
      sind ziemlich langsam, und auf gar keinen Fall haben sie einen
      begrenzten Speicher.

      beispiel html ist programmiersprache

      HTML ist aber keine Programmiersprache.

      nun wenn html eine progrmmiersprache ist so sollte js auch eine
      sein.

      Was soll das sein? Beweis durch Reduktion auf das falsche Problem?

      bye, Frank!

      --
      Never argue with an idiot. He will lower you to his level and then
      beat you with experience.
      1. Hallo Frank,

        Was soll das sein? Beweis durch Reduktion auf das falsche Problem?

        *g* Kommt mir doch sehr bekannt vor.

        Tim