Hallo
Ich möchte gerne eine eigene Programmiersprache für Anfänger erstellen, in der alles auf Deutsch ist.
Ich dachte an so einen Syntax:
schreibe(rechne(rechne(3+6)+5))
Ich denke mal ich muss keinem erklären was der code machen soll.
Wie gehe ich das am besten an?
Forme ich meinen Syntax in Pythonsyntax und führe in dann mit eval oder exec aus?
Oder soll ich einen Parser bauen eigene Variablentypen erstellen und die ganzen Funktionen selber erstellen?
oder ganz anders?
Gruß
Andyh
Neue Programmiersprache für Anfänger
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Abgesehen davon, dass jeder Mal im Laufe seines Lebens eine eigene Sprache schreiben sollte (sinnvoller als Baum pflanzen jedenfalls
), warum auf Deutsch? Irgendwann müssen eh alle, die programmieren wollen, Englisch lernen...

Hallo
Genau da sehe ich den Knackpunkt.
Ein Beispiel:
Meine Schwester ist jetzt 12(oder so) und findet Programmieren recht nett, nur fehlt ich der richtige einstig.
Meine Idee ich mache eine Programmiersprache die super einfach sein soll mit Deutschen Fehlermeldungen und Deutschen befehlen. Dann fängt einem das Programmieren an Spaß zu machen und weil die Sprache keinen großen Umfang hat kann man muss/will man umsattelt auf eine andere(und hier hoffe ich das die guten Leute dann nicht gleich wieder abspringen)
Gruß
Andyh
Genau da sehe ich den Knackpunkt.
Ein Beispiel:
Meine Schwester ist jetzt 12(oder so) und findet Programmieren recht nett, nur fehlt ich der richtige einstig.
Meine Idee ich mache eine Programmiersprache die super einfach sein soll mit Deutschen Fehlermeldungen und Deutschen befehlen. Dann fängt einem das Programmieren an Spaß zu machen und weil die Sprache keinen großen Umfang hat kann man muss/will man umsattelt auf eine andere(und hier hoffe ich das die guten Leute dann nicht gleich wieder abspringen)
Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Meinst Du nicht, das liegt eher an einer fehlenden Herausforderung?Andyh hat geschrieben: Meine Schwester ist jetzt 12(oder so) und findet Programmieren recht nett, nur fehlt ich der richtige einstig.
Hm ... und Du meinst die Deutsche Sprache macht das einfacher? Ich habe damals auch so mit 12 angefangen und das Commodre BASIC v2.0 gabs auch nicht in Deutsch - und Englisch habe ich erst mit 12 angefangen zu lernen.Meine Idee ich mache eine Programmiersprache die super einfach sein soll mit Deutschen Fehlermeldungen und Deutschen befehlen. Dann fängt einem das Programmieren an Spaß zu machen und
Also Du könntest natürlich C nehmen und per Präprozessor alle Schlüsselwörter eindeutschen - allerdings bleibt dann das Compilieren usw.
Alternativ bastel doch eine Art Präprozessor für Python, der die eingedeutschten Schlüsselwörter ersetzt. Die wichtigsten Funktionen könntest Du dann schlichtweg mit einem deutschen Namen wrappen.
- noisefloor
- User
- Beiträge: 4208
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
schau dir mal Sugar an, die "GUI" vom OLPC Projekt. Gibt's als Paket für diverse Linux-Distros.
Da kann man Progammieren lernen, aber rein grafisch - Sprache egal.
Und Sugar ist in Python geschrieben.
Gruß, noisefloor
schau dir mal Sugar an, die "GUI" vom OLPC Projekt. Gibt's als Paket für diverse Linux-Distros.
Da kann man Progammieren lernen, aber rein grafisch - Sprache egal.
Und Sugar ist in Python geschrieben.

Gruß, noisefloor
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Achwas, das hat mir der Sprache nix zu tun. Meine Schwester ist eben erst 13 geworden, ich habe ihr Learning Processing kombiniert mit Processing.js vor die Nase gelegt (Kinder finden sowas total klasse wenns im Browser läuft, weil sie das dann Problemlos anderen Kindern aka Freunden zeigen können). Das Englisch das im Buch vorkommt ist durchaus verständlich, ein wenig amüsant und auf Anfänger ausgelegt. Dabei fängt es ganz einfach an, mit Koordinatensystemen und sowas.Andyh hat geschrieben:Meine Schwester ist jetzt 12(oder so) und findet Programmieren recht nett, nur fehlt ich der richtige einstig.
Meine Idee ich mache eine Programmiersprache die super einfach sein soll mit Deutschen Fehlermeldungen und Deutschen befehlen. Dann fängt einem das Programmieren an Spaß zu machen und weil die Sprache keinen großen Umfang hat kann man muss/will man umsattelt auf eine andere(und hier hoffe ich das die guten Leute dann nicht gleich wieder abspringen)
Dein Code ist außerdem sehr komisch: ``rechne(rechne(3+6)+5)`` ist das gleiche wie ``rechne(rechne(9)+5)`` ist das gleiche wie ``rechne(9+5)`` ist das gleiche wie ``rechne(14)`` ist das gleiche wie ``14``. Warum also nicht gleich ``3+6+5`` schreiben. Funktionen die ihre Argumente nicht auswerten sind IMHO für Anfänger eher verwirrend (etwa Haskell-Funktionen, oder Lisp-Makros, oder auch einfach Thunks in Scheme).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Guido van Robot gibt's auch auf Deusch.
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Man lernt eine fremde Sprache (->Programmieren), aber Englisch ist ein Problem? Klingt irgendwie nicht ganz schlüssig für mich.
Ich kann übrigens aus eigener Erfahrung sagen, dass Englisch für Kinder echt kein Problem darstellt. Selbst wenn man's nicht wirklich versteht oder aussprechen kann. War mein Mario auf'm NES tot, habe ich immer "Gamme offer" gesagt. 


- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
snafu hat da einen wichtigen Aspekt angesprochen: Die Sprache besteht aus wirklich wenig Woertern, deren Uebersetzung man nicht unbedingt braucht, sondern nur die semantische Bedeutung benoetigt um die Sprache zu beherrschen.
Das Problem ist eher, dass die Dokumentation und die Stdlib in Englisch ist, was du aber auch nur durch zwei Sachen loesen kannst: Eine kastrierte Sprache ohne Stdlib - bzw mit wenigen Elementen - dafuer aber in Deutsch, oder aber eine Uebersetzung der Dokumentation. Die Sprache selbst muss man dafuer nicht uebersetzen (s.o.).
Das Problem ist eher, dass die Dokumentation und die Stdlib in Englisch ist, was du aber auch nur durch zwei Sachen loesen kannst: Eine kastrierte Sprache ohne Stdlib - bzw mit wenigen Elementen - dafuer aber in Deutsch, oder aber eine Uebersetzung der Dokumentation. Die Sprache selbst muss man dafuer nicht uebersetzen (s.o.).
Deine 12 (oder so) Jahre alte Schwester sollte doch eigentlich schon über grundlegende Englischkenntnisse verfügen. Wenn sie nicht so gut in Englisch ist, wäre das Lernen von Python sicherlich ein guter Motivationsschub. Der Englischunterricht alleine ist meist leider wenig motvierend.
Für das schnelle Nachschauen von Vokabeln ist das Onlinewörterbuch LEO nützlich oder auch GoogleTranslate. Die meisten Menschen verstehen Compilermeldungen (wenn sie sie lesen) meiner Meinung auch nicht wegen fehlender Englischkenntnisse, sondern weil das Fachwissen fehlt.
Für das schnelle Nachschauen von Vokabeln ist das Onlinewörterbuch LEO nützlich oder auch GoogleTranslate. Die meisten Menschen verstehen Compilermeldungen (wenn sie sie lesen) meiner Meinung auch nicht wegen fehlender Englischkenntnisse, sondern weil das Fachwissen fehlt.
Ich habe irgendwann einmal das hier gesehen (und prompt über (g|scr)oogle wiedergefunden):
http://www.fiber-space.de/EasyExtend/do ... teuton.htm
Es klingt aber einfach... panne. Mag sein das man das als Muttersprachler der englischen Sprache anders einschätzt, aber Englisch passt für sowas einfach besser. Generell hat Englisch die Tendenz, für einfache Dinge (Kommunikation, Programmiersprache, ...) "besser" geeignet / schöner zu sein. Seitdem ich Englisch halbwegs gut beherrsche bestätigt sich für mich dieser Eindruck immer mehr.
http://www.fiber-space.de/EasyExtend/do ... teuton.htm
Es klingt aber einfach... panne. Mag sein das man das als Muttersprachler der englischen Sprache anders einschätzt, aber Englisch passt für sowas einfach besser. Generell hat Englisch die Tendenz, für einfache Dinge (Kommunikation, Programmiersprache, ...) "besser" geeignet / schöner zu sein. Seitdem ich Englisch halbwegs gut beherrsche bestätigt sich für mich dieser Eindruck immer mehr.
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Essential skills in a blitzkrieg...snafu hat geschrieben:Go to the kindergarten, take the rucksack with you and don't forget to abseil.
Keiner hat die ursprüngliche Frage beantwortet. Das möchte ich nachholen.
Wie baut man denn nun eine eigene Sprache - egal ob mit deutschen oder englischen Schlüsselwörtern?
Ich stelle informell eine einfache Programmiersprache mit Präfixnotation vor, zeige wie man einen Scanner für Wörter dieser Sprache baut, einen Parser, der geklammerte Blöcke erkennt und einen Interpreter, der Wörter ausführen kann. Nicht unbedingt in dieser Reihenfolge.
Meine Sprache
Hier sind Beispiele in meiner Sprache:
Zahlen und Zeichenketten sehen so aus wie immer. Mit `schreibe` kann ich etwas auf dem Bildschirm anzeigen. Das `ist` weist dem Wort davor den Wert des Ausdruck dahinter zu. Das kann man auch kurz als `wort: ausdruck` schreiben. Steht vor einem Wort ein `nur`, ist nicht dessen zugewiesener Wert sondern das Wort selbst gemeint, was man auch als `:wort` schreiben darf.
Runde Klammern bestimmen die Auswertungsreihenfolge, die ansonsten strikt von links nach recht geht. Jedes Befehlswort weiß, wie viele Argumente es braucht. `schreibe` hat ein Argument, `addiere` hat zwei. Daher sind Trennzeichen wie `;` optional. Eckige Klammern bilden einen Block, der nicht (wie Blöcke mit runden Klammern) implizit ausgewertet wird. Dies ist wichtig für z.B. Bedingungen. `wenn` hat zwei Argumente, etwas das zu einem Wahrheitswert wird und einen Block, der nur dann ausgeführt wird, wenn der Wert des ersten Arguments "wahr" ist.
Komplexe Fallunterscheidungen sind auch möglich:
Tatsächlich kann man dieses `falls` selbst definieren - es ist kein Syntax:
Mit `funktion` kann ich eigene Funktionen definieren. Zwei Argumente bestimmen die Parameter und den Rumpf der neuen Funktion - beides Blöcke. Die Befehlswörter `leer?`, `bei` oder `nächster` greifen auf Blöcke zu, die meine zentrale Datenstruktur sind. Hat ein Block keine Element, liefert `leer?` den Wahrheitswert `wahr`, ansonsten eben `falsch`. Mit `bei` hole ich mir ein Blockelement an dem entsprechenden Index, wobei das erste Element den Index 1 hat. Und `nächster` liefert einen Block mit allen Elementen außer dem ersten. Das würde ich mit `erster block` bekommen, einer Alternative zu `bei block 1`.
Im Gegensatz zu vielen anderen Sprachen hat meine Sprache also keine festgelegten Schlüsselwörter. Wirklich alles (auch `wenn` oder `funktion`) sind Befehlswörter (kurz Wörter) die umdefiniert werden können. Damit bin ich nicht auf Englisch oder Deutsch festgelegt. Das sollte doch jeden zufrieden stellen.
Interessiert?
Weiter geht's hier -> http://gist.github.com/154797 , wenn ich versuche gar nicht erst, diesen Artikel durch den lahmen Syntaxhighlighter dieses Boards zu jagen.
Stefan
PS: Ja, das meine krude ad-hoc-Implementierung von REBOL.
Wie baut man denn nun eine eigene Sprache - egal ob mit deutschen oder englischen Schlüsselwörtern?
Ich stelle informell eine einfache Programmiersprache mit Präfixnotation vor, zeige wie man einen Scanner für Wörter dieser Sprache baut, einen Parser, der geklammerte Blöcke erkennt und einen Interpreter, der Wörter ausführen kann. Nicht unbedingt in dieser Reihenfolge.
Meine Sprache
Hier sind Beispiele in meiner Sprache:
Code: Alles auswählen
schreibe "Hallo"
gruß ist "Hallo Welt"
schreibe gruß
schreibe nur gruß
schreibe (addiere 3 4)
schreibe [addiere 3 4]
a ist 1 ; wenn nicht null? a [schreibe a]
Runde Klammern bestimmen die Auswertungsreihenfolge, die ansonsten strikt von links nach recht geht. Jedes Befehlswort weiß, wie viele Argumente es braucht. `schreibe` hat ein Argument, `addiere` hat zwei. Daher sind Trennzeichen wie `;` optional. Eckige Klammern bilden einen Block, der nicht (wie Blöcke mit runden Klammern) implizit ausgewertet wird. Dies ist wichtig für z.B. Bedingungen. `wenn` hat zwei Argumente, etwas das zu einem Wahrheitswert wird und einen Block, der nur dann ausgeführt wird, wenn der Wert des ersten Arguments "wahr" ist.
Komplexe Fallunterscheidungen sind auch möglich:
Code: Alles auswählen
falls [
[null? a] [schreibe "a ist 0"]
[null? b] [schreibe "b ist 0"]
]
Code: Alles auswählen
falls ist funktion [alternativen] [
wenn leer? alternativen [antworte nichts]
wenn führe_aus bei alternativen 1 [antworte bei alternativen 2]
falls nächster nächster alternativen
]
Im Gegensatz zu vielen anderen Sprachen hat meine Sprache also keine festgelegten Schlüsselwörter. Wirklich alles (auch `wenn` oder `funktion`) sind Befehlswörter (kurz Wörter) die umdefiniert werden können. Damit bin ich nicht auf Englisch oder Deutsch festgelegt. Das sollte doch jeden zufrieden stellen.
Interessiert?
Weiter geht's hier -> http://gist.github.com/154797 , wenn ich versuche gar nicht erst, diesen Artikel durch den lahmen Syntaxhighlighter dieses Boards zu jagen.
Stefan
PS: Ja, das meine krude ad-hoc-Implementierung von REBOL.
Zuletzt geändert von sma am Samstag 25. Juli 2009, 15:02, insgesamt 1-mal geändert.
-
- User
- Beiträge: 65
- Registriert: Samstag 9. Juni 2007, 23:45
Entschuldige, aber das ist doch Mumpitz. Du kannst in jeder Sprache alles machen. Nehmen wir die Musik - du kannst jede Musikrichtung in jeder Sprache singen, aber du brauchst die richtigen Leute dafür, die auch das entsprechende Lebensgefühl besitzen und das über die Sprache transportieren können. Und gerade bei so etwas "statischem" wie einer Programmiersprache könnte man das durchaus auch mit sinnvollen deutschen Wörtern versehen, wenn man entrspechend Zeit investiert. Allerdings sehe ich bei einer Programmiersprache jetzt auch nicht so richtig den Sinn.str1442 hat geschrieben:Mag sein das man das als Muttersprachler der englischen Sprache anders einschätzt, aber Englisch passt für sowas einfach besser. Generell hat Englisch die Tendenz, für einfache Dinge (Kommunikation, Programmiersprache, ...) "besser" geeignet / schöner zu sein.
Englisch ist wichtig, alleine schon, damit man sich auf unserem vielsprachigen Kontinent unterhalten kann, aber man muss doch nicht andauernd so tun, als sei irgendeine Sprache einer anderen unter-/überlegen. Das Ergebnis davon ist nämlich, dass ein Großteil der Bevölkerung weder halbwegs akzeptables Englisch, noch vernünftiges Deutsch kann. Deutsche Begriffe klingen im Übrigen häufig nicht wirklich schlechter, sie sind einfach uncool, weil sie eben die Sinnlosig-/Alltäglichkeit des Originals zeigen.Hausmeister bleibt Hausmeister, ein caretaker ändert daran auch nichts.
Kurz: Fremdsprachen sind wichtig, aber wir müssen jetzt wirklich nicht so tun, als könnte man alles schöne/interessante nur mit anderen Sprachen erreichen. Einfach mal Heine lesen, oder was von Tucholskys Gebrauchslyrik, wie er es so schön nannte. Übrigens halte ich nichts von Sprachnazis, nicht dass mich jetzt jemand in die Schublade steckt

Sry für Offtopic - evtl. kann ein Moderator die Diskussion abtrennen.
Das doofe Forum könnte bessere Regexp für http-Links haben. Das Komma wurde fälschlich als Teil der URL interpretiert (was theoretisch auch ein gültiges Zeichen wäre, aber eher selten am Ende steht, daher würde ich bei so einem RE ein ;,.?! am Ende vor einem Leerzeichen ignorieren). Ist korrigiert.cofi hat geschrieben:Das liegt am Komma ;)derdon hat geschrieben:sma: Bei deinem Link kommt die Meldung "This user does not exist". Und ja, ich bin interessiert.
Stefan
Die Wahrheit liegt irgendwo dazwischen. Einfachheit ist IMHO ein Wert an sich. Englisch ist einfacher strukturiert. Bei meinen Experimenten mit einer deutschen Programmiersprache fand ich das Ergebnis eigentlich fast genau so gut oder schlecht wie wenn's Englisch gewesen wäre. Man gewöhnt sich schnell daran. Das "fast" kommt daher, dass ich im Englischen die von mir genutzte Präfixnotation einfacher für Verben benutzen kann als im Deutschen. Ein "execute" wird notgedrungen zu "führe_aus", denn das "aus" müsste ja eigentlich hinten stehen, was aber zu nicht mehr einfach parsebaren Unregelmäßigkeiten führt. Und ein Infinitiv-Befehlston "ausführen" fand ich jetzt nicht so gut. Geht aber vielleicht auch:pudeldestodes hat geschrieben:Entschuldige, aber das ist doch Mumpitz. Du kannst in jeder Sprache alles machen.str1442 hat geschrieben:Generell hat Englisch die Tendenz, für einfache Dinge (Kommunikation, Programmiersprache, ...) "besser" geeignet / schöner zu sein.
Code: Alles auswählen
wiederholen ist funktion [bedingung rumpf] [
wenn ausführen bedingung [ausführen rumpf wiederholen bedigung rumpf]
]
sma, die Sprache sieht ja wirklich ganz nett ist, ein kleiner Kritikpunkt, ich würde für die Zuweisungen lieber "sei" verwenden, "ist" liest sich wie eine Feststellung(assert) oder eine Frage("is" Operator in Python). Da ist "sei" eindeutiger, afair ist dieser Formulierung auch aus dem Matheunterricht bekannt.