seth: programmiersprachen-woerterbuch

gudn tach!

gibt es denn eigentlich im web schon irgendwo ein verzeichnis, bei dem man befehle von einer in die andere programmiersprache uebersetzen lassen kann? ich meine nicht die uebersetzung kompletter programme, sondern wirklich nur die uebersetzung von befehlen/funktionen/typen/...

nuetzlich koennte sowas sein fuer leute, die eigentlich schon ganz gut programmieren koennen, jedoch mal eben schnell was in einer sprache aendern wollen/muessen, mit der sie noch nix/wenig zu tun hatten.

beispiele:
jemand weiss, wie man in c++ eine for-schleife schreibt und moechte jetzt in delphi oder brainfuck eine for-schleife schreiben.

oder jamand weiss, wie man in vba eine spalte eine zelle ausliest, aber nicht, wie es in starbasic geht.

oder jemand kann in php suchen und ersetzen und moechte das nun in perl:
also waere quasi die eingabe "ereg_replace", "eregi_replace", "mb_ereg_replace", "mb_eregi_replace", "preg_replace", "str_ireplace", "str_replace", "ltrim", "rtrim", "trim" oder "nl2br"
und die ausgabe jeweils passende beispiele mittels "s///".

falls es sowas noch nicht geben sollte, waere es doch mal ein anreiz fuer jemanden, der zuviel zeit hat, sowas zu basteln, oder nicht? iirc gab es hier im forum schon ab und zu anfragen von solchen leuten, ob man nicht ein interessantes projekt wuesste. imho ist das hier so eines.

ich haette ein solches verzeichnis jedenfalls schon haeufig gebrauchen koennen.

prost
seth

  1. echo $begrüßung;

    gibt es denn eigentlich im web schon irgendwo ein verzeichnis, bei dem man befehle von einer in die andere programmiersprache uebersetzen lassen kann?

    Ich habe schon solche Gegenüberstellungen gefunden. Sowohl solche, die Sprache X mit Y vergleichen, als auch welche, die alle oder eine Auswahl der wichtigsten Elemente einer Sprache und/oder Standardbibliothek auf einer oder wenigen Seiten auflisten. Doch ein allumfassendes Verzeichnis kann ja nur auf eine "Web 2.0"-Applikation hinauslaufen.

    beispiele:
    jemand weiss, wie man in c++ eine for-schleife schreibt und moechte jetzt in delphi oder brainfuck eine for-schleife schreiben.

    Brainfuck ist vielleicht ein schlechtes Beispiel. Es ist zum einen kein wirklich ernst gemeintes Projekt, zum anderen dermaßen übersichtlich, dass so etwas wohl nicht benötigt wird. Wenn du allerdings auch einzelne Bestandteile dafür in anderen Sprachen notwendigen Mehrzeilern gegenüberstellen willst, dann kannst du das gern auch für alle esoterischen Sprachen zusammentragen (eine vollständige Liste in Richtung Malbolge wäre ein guter Anfang).

    oder jamand weiss, wie man in vba eine spalte eine zelle ausliest, aber nicht, wie es in starbasic geht.

    Ah, und wie möchtest du solche projektspezifischen Scriptsprachen den universellen Sprachen gegenüberstellen? Mit einem Ergebnis "nicht anwendbar"?

    oder jemand kann in php suchen und ersetzen und moechte das nun in perl:
    also waere quasi die eingabe "ereg_replace", "eregi_replace", "mb_ereg_replace", "mb_eregi_replace", "preg_replace", "str_ireplace", "str_replace", "ltrim", "rtrim", "trim" oder "nl2br"
    und die ausgabe jeweils passende beispiele mittels "s///".

    Hier kommst du sicher schnell vom Hundertsten ins Tausendste, weil ereg und preg ja schon wieder eigene "Sprachen" darstellen, mit noch dazu erheblich abweichendem Funktionsumfang.

    ich haette ein solches verzeichnis jedenfalls schon haeufig gebrauchen koennen.

    Ich sehe in einem solchen Verzeichnis durchaus Vorteile, aber auch den Nachteil, dass dadurch der Lexikon-Effekt, der beim Suchen in offizieller und inoffizieller Dokumentation auftreten kann, auf der Strecke bleibt.

    echo "$verabschiedung $name";

    1. gudn tach!

      gibt es denn eigentlich im web schon irgendwo ein verzeichnis, bei dem man befehle von einer in die andere programmiersprache uebersetzen lassen kann?

      Ich habe schon solche Gegenüberstellungen gefunden. Sowohl solche, die Sprache X mit Y vergleichen,

      ja, mit nur zwei sprachen (z.b. batch und bash) habe ich sowas auch schon gesehen. mir ging es um ein allgemeineres verzeichnis.

      Doch ein allumfassendes Verzeichnis kann ja nur auf eine "Web 2.0"-Applikation hinauslaufen.

      full ack

      beispiele:
      jemand weiss, wie man in c++ eine for-schleife schreibt und moechte jetzt in delphi oder brainfuck eine for-schleife schreiben.

      Brainfuck ist vielleicht ein schlechtes Beispiel. [...] Wenn du allerdings auch einzelne Bestandteile dafür in anderen Sprachen notwendigen Mehrzeilern gegenüberstellen willst, dann kannst du das gern auch für alle esoterischen Sprachen zusammentragen (eine vollständige Liste in Richtung Malbolge wäre ein guter Anfang).

      ja, so habe ich mir das gedacht und deswegen absichtlich brainfuck als beispiel gewaehlt: zum einen, um anzudeuten, dass viele sprachen in dem verzeichnis enthalten sein sollten und koennten; zum anderen, um darauf hinzuweisen, dass es nicht immer leicht ist, zu uebersetzen, a la "for"->"for".
      und fuer sprachen a la HQ9+ gibt es dann auch mal faelle, bei denen eine uebersetzung garantiert nicht moeglich ist.

      oder jemand weiss, wie man in vba eine zelle ausliest, aber nicht, wie es in starbasic geht. [anm.: korrigiert]

      Ah, und wie möchtest du solche projektspezifischen Scriptsprachen den universellen Sprachen gegenüberstellen? Mit einem Ergebnis "nicht anwendbar"?

      nein. solange es keine uebersetzung in dem verzeichnis gaebe, wuerde dann einfach "uebersetzung noch nicht vorhanden" oder sowas da stehen (von ausnahmen wie HQ9+ nun mal abgesehen). wenn jemand zuviel zeit hat und ein (vermutlich recht komplexes) perlscript schreibt, welches in excel oder openoffice.org zellen ausliest, dann spricht da ja nichts dagegen.

      also waere quasi die eingabe "ereg_replace", "eregi_replace", "mb_ereg_replace", "mb_eregi_replace", "preg_replace", "str_ireplace", "str_replace", "ltrim", "rtrim", "trim" oder "nl2br"
      und die ausgabe jeweils passende beispiele mittels "s///".

      Hier kommst du sicher schnell vom Hundertsten ins Tausendste, weil ereg und preg ja schon wieder eigene "Sprachen" darstellen, mit noch dazu erheblich abweichendem Funktionsumfang.

      macht ja nix. dann wuerde ein solches verzeichnis eben gross sein. ;-)

      ich haette ein solches verzeichnis jedenfalls schon haeufig gebrauchen koennen.

      Ich sehe in einem solchen Verzeichnis durchaus Vorteile, aber auch den Nachteil, dass dadurch der Lexikon-Effekt, der beim Suchen in offizieller und inoffizieller Dokumentation auftreten kann, auf der Strecke bleibt.

      klar, ein richtiges handbuch kann durch sowas nicht ersetzt werden. ich verstehe es auch mehr als nachschlagewerk fuer erfahrene programmierer, die sich nicht alles merken koennen/wollen. natuerlich waere es hilfreich, wenn bei den jeweiligen uebersetzungen auch links in manuals gesetzt wuerden.

      prost
      seth

  2. Moin!

    nuetzlich koennte sowas sein fuer leute, die eigentlich schon ganz gut programmieren koennen, jedoch mal eben schnell was in einer sprache aendern wollen/muessen, mit der sie noch nix/wenig zu tun hatten.

    Wie soll das funktionieren? Jede Sprache verfügt zwar über grundlegend die gleichen Konstrukte wie Verzweigung, Schleife, Variable - aber dann hört es auch schon auf mit der Gemeinsamkeit, und die unterschiedlichen Konzepte und Weltsichten der Sprachen kommen deutlich zum Tragen.

    Schon mal versucht, mit clientseitigem Javascript eine Datei im Dateisystem zu öffnen? Wird schwierig werden.

    Schon mal versucht, mit C64-Basic 2.0 objektorientiert zu programmieren? Vollkommen unmöglich.

    Schon mal versucht, in PHP typstrenge Variablen (Integer, Float, Bool, String) zu benutzen? Leider von der Sprache nicht unterstützt.

    Ein solches Übersetzungsbuch müßte also nicht nur die Namen relevanter Funktionen und Sprachkonstrukte auflisten und "übersetzen", sondern auch noch das grundsätzliche Konzept der Sprache erklären.

    Ich vermute mal, man wäre da besser bedient, wenn man sich, vollkommen unabhängig von den vielen Sprachen A, B, C, ..., die man beherrscht, einfach ein Einsteigertutorial für die gerade unbekannte Sprache X besorgt, um damit die grundlegende Arbeitsweise der Sprache kennenzulernen.

    Wer wirklich programmieren kann, wird nicht daran scheitern, solch eine gut gemachte Erklärung zu verstehen und dann an existierendem Code Veränderungen vorzunehmen. Im Gegenteil ist solch ein Weg durchaus lehrreich zum Erlernen der Sprache.

    beispiele:
    jemand weiss, wie man in c++ eine for-schleife schreibt und moechte jetzt in delphi oder brainfuck eine for-schleife schreiben.

    In Delphi ist eine For-Schleife eigentlich identisch, in Brainfuck hingegen gibt es keinen Befehl für For-Schleifen. Er muß kompliziert durch Konstruktion aus den vier Grundbefehlen gewonnen werden, wobei das endgültige Resultat wohl auch noch extrem davon abhängt, welche Tätigkeiten innerhalb der Schleife ausgeführt werden sollen.

    oder jamand weiss, wie man in vba eine spalte eine zelle ausliest, aber nicht, wie es in starbasic geht.

    In PHP kann man beispielsweise gar keine Zelle auslesen. Und in Delphi, Perl, Brainfuck oder C++ auch nicht.

    oder jemand kann in php suchen und ersetzen und moechte das nun in perl:
    also waere quasi die eingabe "ereg_replace", "eregi_replace", "mb_ereg_replace", "mb_eregi_replace", "preg_replace", "str_ireplace", "str_replace", "ltrim", "rtrim", "trim" oder "nl2br"
    und die ausgabe jeweils passende beispiele mittels "s///".

    Hier hast du vermutlich das beste Beispiel für die Unsinnigkeit gefunden: PHP bietet so viele verschiedene spezialisierte Funktionen an, die auf den speziellen Haupteinsatzzweck als Webserver-Skriptsprache ausgerichtet sind, dass es extrem unsinnig erscheint, diese Funktionen alle für alle anderen Sprachen zu deklarieren, die mit Web vielleicht nicht das geringste zu tun haben.

    Obendrein wird hierbei ja deutlich, dass dein Wörterbuch deshalb extrem aufwendig wird, weil diese Art von Transformation eine Einbahnstraße ist. Wenn man weiß, wie etwas in PHP geht, dann kann man vielleicht rausfinden, wie das auch in Perl geht. Aber niemand wird den umgekehrten Weg von Perl nach PHP gehen, weil man in Perl Dinge eben oft grundsätzlich anders löst. Wenn es also beispielsweise um nl2br() geht, dass ein Äquivalent in Perl hat, so wird man umgekehrt aber nicht dieses Äquivalent in Perl suchen und dann durch das Wörterbuch bei nl2br() landen.

    falls es sowas noch nicht geben sollte, waere es doch mal ein anreiz fuer jemanden, der zuviel zeit hat, sowas zu basteln, oder nicht?

    Die griechische Unterwelt bot damals ähnliche Aufgaben für Leute mit "zuviel Zeit" - Sisyphos' Felsblock, das Danaidenfass etc. sind bekannte Beispiele. :)

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. gudn tach!

      nuetzlich koennte sowas sein fuer leute, die eigentlich schon ganz gut programmieren koennen, jedoch mal eben schnell was in einer sprache aendern wollen/muessen, mit der sie noch nix/wenig zu tun hatten.

      Wie soll das funktionieren?

      ein paar beispiele habe ich ja bereits genannt. und ein bissl weiteres dazu habe ich soeben in der antwort auf dedlfix' posting gesagt.

      Jede Sprache verfügt zwar über grundlegend die gleichen Konstrukte wie Verzweigung, Schleife, Variable

      nicht mal das, vgl. HQ9+.

      • aber dann hört es auch schon auf mit der Gemeinsamkeit, und die unterschiedlichen Konzepte und Weltsichten der Sprachen kommen deutlich zum Tragen.
        [Schon mal versucht ...]

      aber das macht doch nichts. in natuerlichen sprachen gibt es auch nicht fuer jedes wort eine adaequate uebersetzung und kulturelle unterschiede kommen ebenfalls zum tragen; und dennoch gibt es chinesisch-deutsche woerterbucher.
      nicht alles laesst sich (adaequat oder ueberhaupt) uebersetzen, das heisst jedoch nicht, dass es sich lohnen koennte, wenigstens die gemeinsamkeiten, deren existenz du ja auch nicht leugnest, zu sammeln.
      es geht hier auch nicht darum, dass _jedes_ konstrukt in _jede_ sprache uebersetzt werden soll, sondern s/jedes konstrukt/moeglichst viele konstrukte/ und s/jede sprache/moeglichst viele sprachen/.

      Ein solches Übersetzungsbuch müßte also nicht nur die Namen relevanter Funktionen und Sprachkonstrukte auflisten und "übersetzen", sondern auch noch das grundsätzliche Konzept der Sprache erklären.

      das sollten imho lieber die manuals uebernehmen, also wuerde das grundsaetzliche konzept als halbwegs bekannt vorausgesetzt werden.
      (so, wie auch natuerlichsprachige kommaregeln oder satzstellungen selten von woerterbuechern ausfuehrlich erklaert werden.)

      Ich vermute mal, man wäre da besser bedient, wenn man sich, vollkommen unabhängig von den vielen Sprachen A, B, C, ..., die man beherrscht, einfach ein Einsteigertutorial für die gerade unbekannte Sprache X besorgt, um damit die grundlegende Arbeitsweise der Sprache kennenzulernen.

      kommt darauf an, was man in der sprache alles machen moechte. ich sollte letztens ein kleines vba-script in starbasic konvertieren. die sprachen sind sehr aehnlich aufgebaut, ich brauchte eigentlich fast nur die befehlsnamen zu uebersetzen. aber bis ich mir die aus diversen einsteigertutorials zusammengesucht hatte, vergingen viele stunden.
      wer sich ernsthaft mit einer sprache beschaeftigen und diese _lernen_ will, sollte selbstverstaendlich zu einem ausfuehrlichen manual greifen. das von mir angesprochene woerterbuch ist bloss als nachschlagewerk zu verstehen. (a la "aeh, wie musste noch mal eine for-schleife in fortran 77 aussehen?" oder "(wie) kann man in TeX if-konstrukte basteln?")

      beispiele:
      jemand weiss, wie man in c++ eine for-schleife schreibt und moechte jetzt in delphi oder brainfuck eine for-schleife schreiben.

      In Delphi ist eine For-Schleife eigentlich identisch,

      wird da mittlerweile auch c-syntax zugelassen? vor wenigen jahren war da iirc nur pascal-notation erlaubt.

      in Brainfuck hingegen gibt es keinen Befehl für For-Schleifen. Er muß kompliziert durch Konstruktion aus den vier Grundbefehlen gewonnen werden, wobei das endgültige Resultat wohl auch noch extrem davon abhängt, welche Tätigkeiten innerhalb der Schleife ausgeführt werden sollen.

      richtig. also macht man eben mehrere uebersetzungen von verschiedenen beispielen.

      oder jamand weiss, wie man in vba eine spalte eine zelle ausliest, aber nicht, wie es in starbasic geht.

      In PHP kann man beispielsweise gar keine Zelle auslesen. Und in Delphi, Perl, Brainfuck oder C++ auch nicht.

      ich denke schon. es wird u.u. nur unverhaeltnismaessig aufwaendig. ;-)

      oder jemand kann in php suchen und ersetzen und moechte das nun in perl:
      also waere quasi die eingabe "ereg_replace", "eregi_replace", "mb_ereg_replace", "mb_eregi_replace", "preg_replace", "str_ireplace", "str_replace", "ltrim", "rtrim", "trim" oder "nl2br"
      und die ausgabe jeweils passende beispiele mittels "s///".

      Hier hast du vermutlich das beste Beispiel für die Unsinnigkeit gefunden: PHP bietet so viele verschiedene spezialisierte Funktionen an, die auf den speziellen Haupteinsatzzweck als Webserver-Skriptsprache ausgerichtet sind, dass es extrem unsinnig erscheint, diese Funktionen alle für alle anderen Sprachen zu deklarieren, die mit Web vielleicht nicht das geringste zu tun haben.

      aeh, also textersetzung braucht man in fast jeder sprache. ich halte das deswegen sogar fuer ein sehr gutes beispiel.
      ansonsten gilt das weiter oben gesagte, also dass man nicht alles fuer _jede_ sprache uebersetzen muss.

      Obendrein wird hierbei ja deutlich, dass dein Wörterbuch deshalb extrem aufwendig wird, weil diese Art von Transformation eine Einbahnstraße ist.

      das habe ich gar nicht bestreiten wollen. sowas wuerde nicht von heute auf morgen fertiggestellt werden koennen.
      als eine zusaetzliche schwierigkeit, die du noch nicht genannt hast, kommt hinzu, dass die sprachen sich mit der zeit aendern, sodass auch die versionsnummern von bedeutung sind und die anzahl der sprachen damit quasi multiplikativ in die hoehe geht.

      [...] Wenn es also beispielsweise um nl2br() geht, dass ein Äquivalent in Perl hat, so wird man umgekehrt aber nicht dieses Äquivalent in Perl suchen und dann durch das Wörterbuch bei nl2br() landen.

      es spricht ja nichts dagegen, uebersetzung von s/foo/bar/ mit expliziten foo und bar anzugeben.
      z.b. koennte eine suche nach "s///" perl->php zu einer uebersicht fuehren, in der verschiedene szenarios aufgelistet sind, aus denen man sich ein passendes herauspickt.

      Die griechische Unterwelt bot damals ähnliche Aufgaben für Leute mit "zuviel Zeit" - Sisyphos' Felsblock, das Danaidenfass etc. sind bekannte Beispiele. :)

      dass solch ein projekt nie abgeschlossen waere, ist imho evident aber nicht schlimm. nutzlos faend ich sowas allerdings nicht. wie gesagt haette ich sowas schon haeufig gebrauchen koennen.
      ehrlich gesagt wuerde es mich wundern, wenn noch niemand mit solch einem dict-projekt angefangen hat.

      prost
      seth

      1. Moin!

        ehrlich gesagt wuerde es mich wundern, wenn noch niemand mit solch einem dict-projekt angefangen hat.

        Die einzige Sammlung, die ich in dieser Hinsicht kenne: 99 bottles of beer.

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. Hallo,

          Die einzige Sammlung, die ich in dieser Hinsicht kenne: 99 bottles of beer.

          Und die Türme von Hanoi.

          Tim