Idee über 'deutsche' Programmiersprache

  • Allgemein

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von Link.

    Idee über 'deutsche' Programmiersprache

    Hi,

    Ich hab die Idee eine kleine Programmiersprache zu machen wo man nicht mit Befehlen und einer speziellen Syntax sondern mit wirklicher Sprache (zum Beispiel Deutsch oder Englisch) programmieren kann.

    Hier ist mal ein Vergleich -->

    In C#

    C#-Quellcode

    1. public static void main()
    2. {
    3. print(plus(4, 2));
    4. }
    5. static int plus(int x, int y)
    6. {
    7. return x + y;
    8. }


    Und in (ja hab noch keinen Namen):

    start
    funktion main
    schreib das Ergebnis von 'plus' mit [7, 2]

    funktion plus (rückgabe zahl; braucht zahl 'x', zahl 'y')
    definiere neue zahl 'a'
    setze a zu x+y
    gib a zurück

    Ich hab es hier in Offtopic gepackt, weil ich offen für jeden Kommentar bin. Also wenn jemand schreibt "was soll das, so deine bescheuerte Idee hab ich in meinem Leben noch nicht gehört", dann ist das auch völlig ok :)

    Aber vielleicht hätten ein Paar auch Interesse kleine Programme in "Deutsch" zu schreiben, deswegen sagt was ihr darüber denkt

    mfg :)
    Verschoben.

    print gibt es nicht in C#, außer, das ist selbst definiert. :P
    Naja, also deutsche Programmierspachen sind imho nicht gerade so toll. Erinnert mich so ein bisschen an VBA. Die Sache ist halt, dass man sich auch nirgends orientieren kann bzgl. der Syntax und Schlüsselwörter, wenn man so eine Sprache nutzen würde. Scheint mir auch ziemlich umständlich.

    Um die Funktionsweise vom Programmieren zu verdeutlichen ist es vielleicht ganz sinnvoll (so wie bei Robot Karol), aber sonst natürlich nicht effektiv brauchbar und schön ist's auch nicht.^^

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    ​print gibt es nicht in C#, außer, das ist selbst definiert.


    häh, ja das weiß ich "eigentlich" auch, kein plan warum ich "print" statt "Console.WriteLine" geschrieben hab.

    Ja. mit dem Design, das dann durcheinander und unstrukturiert aussieht stimmt schon, ist ja auch nur so ne kleine idee.

    Aber danke für deinen Post.

    XTech schrieb:

    Ich hab die Idee eine kleine Programmiersprache zu machen wo man nicht mit Befehlen und einer speziellen Syntax sondern mit wirklicher Sprache (zum Beispiel Deutsch oder Englisch) programmieren kann.


    Hallo!

    Nette Idee, allerdings gibt es die Programmiersprache schon, da kann man in Englisch, Deutsch, und vielen anderen Sprachen "programmieren". Die Sprache nennt sich Inform, besonders Inform in Version 7 wird so programmiert. de.wikipedia.org/wiki/Inform
    @XTech Deren Anwendung wäre dann natürlich dem deutschsprachigen Raum vorbehalten, unsere Kollegen in den USA, China, Japan, Russland usw. wirst Du nicht bewegen können, solch eine Programmiersprache zu verwenden, weil

    MircoTuor schrieb:

    Englisch ist doch
    Standard...
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Als eine Lernsprache wäre das sicherlich ganz cool. So könnte man Kinder & Jugendliche näher an die Programmierung ranbringen...

    EDIT: Wenn dann schon so ;)

    Quellcode

    1. funktion main()
    2. {
    3. schreib(plus(mit: 7,2));
    4. }
    5. funktion[zahl] plus(braucht: zahl x, zahl y)
    6. {
    7. definiere zahl a;
    8. a ist x+y;
    9. gebe a zurück;
    10. }

    und dann das alles in ein schönes Programm verpacken, dann passt des!
    Software being "Done" is like lawn being "Mowed". (Jim Benson)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „KidRick“ ()

    @KidRick: jo danke, ja wie du das aufgeschrieben hast, sieht das auch ordentlicher aus :thumbup:
    Ja ich freue mich das diese Idee, entgegen Erwartung, doch eine relativ gute Resonanz erhalten hat.
    Dann werde ich wohl in den nächsten Tagen mit der Entwicklung beginnen. :)
    Ok dann hier eine kleine Zusammenfassung über die Sprache

    Merkmale:
    - Deutsch
    - Für Anfänger geeignet
    - Keine Semikolons!!!

    Umsetzung:
    - In C#
    - Der "Kompiler" (absichtlich mit 'k') kompiliert dann die Skripte und packt sie als Resource in einen
    .NET-Launcher
    ODER
    Ein zentraler Kompiler liest die Sourcecode-Dateien aus und führt die Befehle sofort aus ohne ein
    fertiges Programm zu erstellen

    Was findet ihr besser?

    Was wird die Sprache können?
    - Berechnung mit Zahlen
    - Benutzung/Verarbeitungen von Texten (Strings), Schaltern (Bools), Kommazahlen (Floats) und vom
    User selbst erstellbare Datenstrukturen
    - Funktions-Pointer: Funktionen können wie Variablen benutzt werden, so das man Funktionen als
    Parameter übergeben kann
    - Kleine Spiele durch ein kleines Spielframework "Germagame? :)"

    Was die Sprache NICHT können/tun wird
    - Ein kompletter Ersatz zu C++/C# sein (ist aber auch glaub ich verständlich :) )
    - Fenster-Designing (ich glaub nicht das es möglich wär in so einer Sprache Fenster zu designen, aber wer weiß ; )

    Name der Sprache?
    Hm, ja die Auswahl des Namens möchte ich euch nicht vorenthalten, wenn ihr eine Idee habt, schreibt sie einfach, wenn nicht, ist auch nicht schlimm, dann muss ich mir halt was ausdenken :)
    Da gibt's zwei Möglichkeiten für die Sprache:
    Entweder sie wird extrem low-level (nicht vom System her low-level, sondern von den Sprachkonstrukten her):

    Quellcode

    1. Kommentar: Public Shared Sub Main(Befehlszeilenparameter As String())
    2. Öffentliche Statische Methode Einstiegsmethode mit den Parametern Befehlszeilenparameter vom Typ 1-dimensionales Array von String:
    3. Kommentar: Dim Numbers As List(Of Integer)
    4. Deklariere eine lokale Variable Zahlen vom Typ Liste von 32-Bit Ganzzahl mit Vorzeichen.
    5. Kommentar: Numbers = New List(Of Integer)(30)
    6. Weise Zahlen ein neues Objekt vom Typ Liste von 32-Bit Ganzzahl mit Vorzeichen und den Konstruktorargumenten 30 zu.
    7. Zähle mit i von 0 bis 30 exklusive:
    8. Kommentar: Numbers.Add(i)
    9. Rufe an Objekt Zahlen die Methode Hinzufügen mit den Argumenten i auf.
    10. Ende der Zählung
    11. Kommentar: Dim LessThan100 As IEnumerable(Of Integer)
    12. Deklariere eine lokale Variable WenigerAls100 vom Typ beliebige Auflistung von 32-Bit Ganzzahl mit Vorzeichen.
    13. Kommentar: LessThan100 = Numbers.Where(AddressOf LessThan100Predicate)
    14. Kommentar: Das .NET Framework ist komplett in Englisch. Also bei solchen Sachen müsste man entweder eine Übersetzung im Compiler hardcoden oder einfach mit englischen Bezeichnern leben.
    15. Rufe am Objekt Zahlen die Methode Where mit den Argumenten Funktionszeiger auf WenigerAls100Prädikat auf und weise das Ergebnis WenigerAls100 zu.
    16. Kommentar: Ich will gar nicht erst versuchen, eine sinnvolle Syntax für Lambda-Methoden zu (er)finden.
    17. Kommentar: End Sub
    18. Ende der Methode
    19. Kommentar: Private Shared Function LessThan100Predicate(Element As Integer) As Boolean
    20. Private Statische Methode WenigerAls100Prädikat mit den Parametern Element vom Typ 32-Bit Ganzzahl mit Vorzeichen und dem Rückgabetyp Wahrheitswert:
    21. Kommentar: Return Element < 100
    22. Gib zurück: Ist Element kleiner als 100?
    23. Ende der Methode

    Also man hat nur ganz dünne, syntaktische Wrapper um die Features des darunterliegenden Systems (hier beispielsweise .NET). Einen Compiler dafür zu schreiben ist machbar, aber so zu programmieren macht keinen Spaß.

    Die andere Möglichkeit: Man hat sehr abstrakte Beschreibungen und der Compiler muss selbst drauf kommen, wie er die umsetzt:

    Quellcode

    1. Die Einstiegsmethode:
    2. Erstelle eine Liste "Zahlen" mit allen Zahlen von 0 bis einschließlich 30.
    3. Wähle aus der Liste "Zahlen" Elemente ahnand des Prädikats WenigerAls100Prädikat aus und speichere das Ergebnis in einer neuen Liste "WenigerAls100".
    4. Kommentar: Als lambda:
    5. Wähle aus der Liste "Zahlen" alle Elemente aus, die kleiner als 100 sind und speichere das Ergebnis in einer neuen Liste "WenigerAls100".
    6. Ende der Methode
    7. Die Funktion "WenigerAls100Prädikat" nimmt eine Zahl entgegen, gibt einen Wahrheitswert zurück.
    8. Gib zurück, ob die angegebene Zahl kleiner als 100 ist.
    9. Ende der Funktion

    Das würde spaß machen, aber einen Compiler für sowas zu schreiben wäre die Hölle. Die deutsche Sprache ist so schon komplex genug. Sogar Google hat Probleme, Deutsch zu verstehen *hust* Google-Übersetzer *hust*
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Ich? Keines von beiden :P Ich bin schon an was anderem dran und eine Programmiersprache mit der Syntax einer gesprochenen Sprache ist meiner Meinung nach auch nicht wirklich sinnvoll.

    Letzteres zu machen ist wohl auch für sehr erfahrene Programmierer zu komplex. Ersteres hingegen dürfte machbar sein. Das Problem ist halt, dass die Sprache "einfach" sein soll, aber bei ersterem kommt man nicht aus, ohne das zugrundeliegende System zu verstehen. Also wenn Deine Sprache .NET wrappt, muss man auch .NET zu gewissen Teilen verstehen, damit man Deine Sprache verwenden kann.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils

    XTech schrieb:

    packt sie als Resource in einen .NET-Launcher
    ODER
    Ein zentraler Kompiler liest die Sourcecode-Dateien aus und führt die Befehle sofort aus
    Wie wärs mit einem IL-Emitter? Also direkt eine fertige .NET-Assembly erstellen.
    Mit freundlichen Grüßen,
    Thunderbolt