wie wärs mit einer vereinfachung vom python-syntax:
bei einer argumenten-uebergabe keine kommas, kein ":" nach if, for und while, wie in ruby wenn nicht noetig "send "halo"" statt "send("halo")", wenn nich noetig bei bedingungsabfragen nur einen "=" statt zwei.
eine funktion wird ohne "()" ausgeführt, wenn man den funktions-object will, einfach zb einen "?" hinten ransetzen....
uvm
der interpreter wuerde in python selbst geschrieben sein und muesste nur python-scripts parsen und ausführen
klar - just vor fun
python code radikal verkuerzen


Mir gefällt die größe der Scripte, die ich schreibe...
MFG EnTeQuAk
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Bei der du die Python-Syntax nicht mehr eindeutig machst, sondern mehrdeutig - wie bei Ruby, wo man nicht immer sofort sieht, was passiert, da die Syntax nicht genug Informationen hergibt, um dies auf den ersten Blick zu erkennen. Frag blackbird, der gibt dir gerne ein Ruby-Beispiel, bei welchem es nicht möglich ist, ohne weiteres abzuschätzen, was passieren wird.Costi hat geschrieben:wie wärs mit einer vereinfachung vom python-syntax:
Guck dir doch mal einen Lisp-Dialekt wie Common Lisp oder Scheme an.Costi hat geschrieben:bei einer argumenten-uebergabe keine kommas, kein ":" nach if, for und while,
Eben, und wann ist es nötig. Das ist gar nicht so einfach wie man denkt. Ich fand es schon in Visual Basic so ätzend mit den Funktionsklammern.Costi hat geschrieben:wie in ruby wenn nicht noetig "send "halo"" statt "send("halo")"
Und wenn man die Globale Variante will dann setzt man ein $ davor, die Klassenglobale ein @, für die Stringversion ein $ dahinter usw. Tolle Ideen die Perl-Code so unlesbar machen, Basic-Strings so seltsam aussehen lassen usw.Costi hat geschrieben:eine funktion wird ohne "()" ausgeführt, wenn man den funktions-object will, einfach zb einen "?" hinten ransetzen....
Und wie würdest du das implementieren? Als Python-Präprozessor oder mit Hilfe von PyPy einen AST aus deinem Quellcode machen, der vom richtigen Python-Interpreter ausgeführt wird?Costi hat geschrieben:der interpreter wuerde in python selbst geschrieben sein und muesste nur python-scripts parsen und ausführen
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
D'oh. Nimmt mir einfach meine First-Class Functions weg. Und meinem Editor das auto indent. darn...Costi hat geschrieben:wie wärs mit einer vereinfachung vom python-syntax:
bei einer argumenten-uebergabe keine kommas, kein ":" nach if, for und while, wie in ruby wenn nicht noetig "send "halo"" statt "send("halo")", wenn nich noetig bei bedingungsabfragen nur einen "=" statt zwei.
eine funktion wird ohne "()" ausgeführt, wenn man den funktions-object will, einfach zb einen "?" hinten ransetzen....
TUFKAB – the user formerly known as blackbird
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Radikal... meines Erachtens nach würde das kaum 3,742% Code einsparen, und um was für einen Preis?
[76,2731% aller Prozentangaben sind viel zu genau angegeben]
[76,2731% aller Prozentangaben sind viel zu genau angegeben]
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi!
Ich will Python programmieren! Da mir aber die Syntax nicht gefällt, muss mir irgendjemand das Python so anpassen, dass es sich wie BASIC anfühlt. Also, was ist??? Los jetzt!
lg
Gerold

Ich will Python programmieren! Da mir aber die Syntax nicht gefällt, muss mir irgendjemand das Python so anpassen, dass es sich wie BASIC anfühlt. Also, was ist??? Los jetzt!



lg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Python ist nicht Ruby. Bei Python gilt: "explicit is better than implicit". Noch Fragen, Kienzle?
Aber wie wäre es, wenn man im Gegenzug bei Ruby einfach das 'end' weglassen und dafür mit Einrückungen Blöcke definieren würde?
Aber wie wäre es, wenn man im Gegenzug bei Ruby einfach das 'end' weglassen und dafür mit Einrückungen Blöcke definieren würde?
* Beatnik (Wörter stehen für ihre Scrabble-Werte)
* Befunge (zweidimensionale Sprache)
* Brainfuck (winziger Compiler)
* Brainfuck2D (Brainfuck auf die Ebene projiziert)
* Chef (Code sieht aus wie ein Kochrezept)
* Cow (Code besteht aus Kuhlauten (Moo) )
* Emoticon (hat Emoticons als Befehle)
* INTERCAL (sollte das Programmieren erschweren)
* Iota and Jot (hat nur 2 Befehle)
* Malbolge (erklärtermaßen schlimmste Programmiersprache)
* Ook! (Syntax besteht einzig und allein aus dem Wort „Ook“, sowie den Zeichen: .?!)
* Piet (Programmcode besteht aus Bildern)
* Shakespeare (Code sieht aus wie ein Stück von Shakespeare)
* Taxi (Wegbeschreibung an einen Taxifahrer)
* Unlambda (Minimale funktionale Programmiersprache)
* Whitespace (Code besteht nur aus nichtdruckbaren Zeichen)
haaaaaa?!
naaaaa!?
hat das irgendeinen sinn?
und genau so geht dat hier auch, es ist ziemlich egal ob das irgendwelche python-philosfien bricht oder einfach nur =//&=$ ist
ich glaube man koennte python um vieeeeel, mehr als "3,742%" kuerzen, mir fallen hier voll die genaialen sachen ein, mindestens 30% sage ich!
edit:
RCR 299 und RCR 300 wollen genau das. Und sicher noch etliche andere.
ich auch, das wuerde zu ruby einfach viel besser passen
* Befunge (zweidimensionale Sprache)
* Brainfuck (winziger Compiler)
* Brainfuck2D (Brainfuck auf die Ebene projiziert)
* Chef (Code sieht aus wie ein Kochrezept)
* Cow (Code besteht aus Kuhlauten (Moo) )
* Emoticon (hat Emoticons als Befehle)
* INTERCAL (sollte das Programmieren erschweren)
* Iota and Jot (hat nur 2 Befehle)
* Malbolge (erklärtermaßen schlimmste Programmiersprache)
* Ook! (Syntax besteht einzig und allein aus dem Wort „Ook“, sowie den Zeichen: .?!)
* Piet (Programmcode besteht aus Bildern)
* Shakespeare (Code sieht aus wie ein Stück von Shakespeare)
* Taxi (Wegbeschreibung an einen Taxifahrer)
* Unlambda (Minimale funktionale Programmiersprache)
* Whitespace (Code besteht nur aus nichtdruckbaren Zeichen)
haaaaaa?!
naaaaa!?
hat das irgendeinen sinn?
und genau so geht dat hier auch, es ist ziemlich egal ob das irgendwelche python-philosfien bricht oder einfach nur =//&=$ ist
ich glaube man koennte python um vieeeeel, mehr als "3,742%" kuerzen, mir fallen hier voll die genaialen sachen ein, mindestens 30% sage ich!
edit:
RCR 299 und RCR 300 wollen genau das. Und sicher noch etliche andere.
ich auch, das wuerde zu ruby einfach viel besser passen
cp != mv
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Und? Willst du eine neue esoterische Programmiersprache erfinden oder etwas mit dem man vernünftig arbeiten kann?Costi hat geschrieben:* Beatnik (Wörter stehen für ihre Scrabble-Werte)
* Befunge (zweidimensionale Sprache)
* Brainfuck (winziger Compiler)
* Brainfuck2D (Brainfuck auf die Ebene projiziert)
* Chef (Code sieht aus wie ein Kochrezept)
* Cow (Code besteht aus Kuhlauten (Moo) )
* Emoticon (hat Emoticons als Befehle)
* INTERCAL (sollte das Programmieren erschweren)
* Iota and Jot (hat nur 2 Befehle)
* Malbolge (erklärtermaßen schlimmste Programmiersprache)
* Ook! (Syntax besteht einzig und allein aus dem Wort „Ook“, sowie den Zeichen: .?!)
* Piet (Programmcode besteht aus Bildern)
* Shakespeare (Code sieht aus wie ein Stück von Shakespeare)
* Taxi (Wegbeschreibung an einen Taxifahrer)
* Unlambda (Minimale funktionale Programmiersprache)
* Whitespace (Code besteht nur aus nichtdruckbaren Zeichen)
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ähnlich viel, wie den Python-Verschnitt, den du dir da gerade aus den Fingern saugst. Ich habe nichts gegen das Design von neuen Sprachen, das hat murphy mal mit LOVE gemacht, aber das muss schon Plan haben. Bei dir sind das alles einfach nur in den Raum geworfene Ideen.Costi hat geschrieben:hat das irgendeinen sinn?
Dann solltest du mal lernen das Programmiersprachen eben für bestimmte Philosophien stehen. Die Philosophie von Lisp ist anders als die von Python, die von Ruby anders als die von Visual Basic etc.Costi hat geschrieben:und genau so geht dat hier auch, es ist ziemlich egal ob das irgendwelche python-philosfien bricht oder einfach nur =//&=$ ist
Belege? Du Willst nur ein paar Sonderzeichen kürzen, die der lesbarkeit dienen. Wenn ich eine Sprache auf der Basis von python entwickeln würde, dann würde sie vermutlich länger sein - statt der Pie-Decorator-Syntax würde ich eher J2 verwenden und sonst ein paar Klinigkeiten. Aber da es mich nie besonders gestört hat, habe ich keinen Python-Dialekt gemacht, weil sich die Mühe nicht lohnt.Costi hat geschrieben:ich glaube man koennte python um vieeeeel, mehr als "3,742%" kuerzen, mir fallen hier voll die genaialen sachen ein, mindestens 30% sage ich!
Kannst ja eine DSL machen, das ist in der Ruby-Welt recht populär.Costi hat geschrieben:ich auch, das wuerde zu ruby einfach viel besser passen
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Heeh!Y0Gi hat geschrieben:Aber wie wäre es, wenn man im Gegenzug bei Ruby einfach das 'end' weglassen und dafür mit Einrückungen Blöcke definieren würde?


lg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hm, da wird Ruby mir doch gleich deutlich sympatischer. Schön, dass auch einige Rubyisten erkannt haben, dass die angesprochenen Dinge mehr als "einfach nur blöd" sind.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Dann guck dir mal die Lösungen vom pycontest an. Da hast du radikal gekürzte, funktionfähige Programme. Die Lesbarkeit und verständlichkeit kann man natürlich vergessen.Costi hat geschrieben:und genau so geht dat hier auch, es ist ziemlich egal ob das irgendwelche python-philosfien bricht oder einfach nur =//&=$ ist
ich glaube man koennte python um vieeeeel, mehr als "3,742%" kuerzen, mir fallen hier voll die genaialen sachen ein, mindestens 30% sage ich!
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
So ziemlich alles was Du vorschlägst macht die Syntax nicht einfacher sondern komplizierter!Costi hat geschrieben:wie wärs mit einer vereinfachung vom python-syntax:
Über den Doppelpunkt gab es in der englischsprachigen Newsgroup gerade eine Diskussion. Über den hat sich Guido am Anfang Gedanken gemacht. Der ist von ABC übernommen und die Entwickler von dieser Sprache haben empirische Tests durchgeführt ob Probanden Quelltext mit oder ohne den Doppelpunkt lesbarer und verständlicher finden. Bei Python wird ja bekanntlich grosser Wert auf Lesbarkeit gelegt, nun rate was das Ergebnis der Studie war.bei einer argumenten-uebergabe keine kommas, kein ":" nach if, for und while, wie in ruby wenn nicht noetig
Äh ja, schön: noch mehr Sonderfälle. Insbesondere im Zusammenhang mit fehlenden Kommata zwischen Argumenten. Wie wird folgendes interpretiert: a b c d"send "halo"" statt "send("halo")",
Möglichkeiten:
a(b c d)
a(b(c d))
a(b(c(d))
a(b c(d))
Wie sieht das aus wenn noch Operatoren mit verschiedenen Prioritäten ins Spiel kommen?
Wieder ein Sonderfall den man sich merken muss und der die Syntax verkompliziert. Zwei unterschiedliche Operatoren für die gleiche Funktionalität wobei der eine an anderer Stelle noch eine ganz andere Funktion hat!? Argh! Welchem Anfänger möchte man Python dann noch als einfache, in sich konsistente Sprache empfehlen!?wenn nich noetig bei bedingungsabfragen nur einen "=" statt zwei.
Und bei allen Änderungen die Du vorschlägst musst Du noch eine technische Besonderheit beachten: Egal was für Python3K umgesetzt wird, die Syntax soll auf jeden Fall von einem LL(1)-Parser verstanden werden können.
So ein ähnlicher Vorschlag wurde Dir ja schon gemacht: Nimm Lisp oder Scheme. Sehr viel einfacher kann man eine Syntax nicht machen. Bigloo ist ein ganz netter Scheme-Compiler.der interpreter wuerde in python selbst geschrieben sein und muesste nur python-scripts parsen und ausführen
Wenn es etwas mit Python zu tun haben soll, dann kannst Du einen Blick auf Noodle werfen.
Ansonsten ist Io noch eine sehr interessante Sprache mit ziemlich wenig Syntax und extrem wenigen Schlüsselworten. Ist aber noch jung und die APIs sind noch im Fluss.
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Und dann fehlt noch der obligatorische Hinweis auf den Griechen-Compiler: http://students.ceid.upatras.gr/~sxanth/pyvm/ und PyPy.
Hi,
Python-Syntax ist doch toll ! So wie sie ist, geht das geradezu in den Sehnerv hinein (hatte nach einem dreiviertel Jahr schon Momente, in denen ein Blick auf einen mit Code vollen Bildschirm mir sagte: Eh, da stimmt was nicht).
Also: Auf gar keinen Fall!
Ein Syntax-Fehler, der mir immer wieder noch unterläuft:
Verstehe übrigens nicht, warum es diese Klammern nicht gibt - schließlich ist eine Klasse ein callable.
Außerdem verwende ich 'self' nicht mehr, frisst zuviel Platz. Ist im Moment 'q' , am besten wäre aber ein freies deutliches Zeichen wie @ es ist - wenn ich es recht sehe, müsste man dafür aber den Parser ändern. Ein paar Stunden lang fand ich 'ä' im Sinne von 'äh' ganz lustig und insofern echt pythonisch, dann aber doch nicht mehr.
Ein zweites, das mich ein bisschen nervt: Das Auspacken von 1-Tupeln ist eigentlich nur durch workarounds wie (x,)[0] möglich. Kann aber nicht anders gehen: y = (x,) für Auspacken wäre völlig gegen das typing by assignment. Man müßte für eine solche Vereinheitlichung einen Auspack-Operator erfinden wie: x,y,z = ,(1,2,3) oder sowas. Wäre für Anfänger in der Sprache und die allgemeine Lesbarkeit gar nicht schlecht, x = ,() würde dann 'None' zuweisen.
Viel Spaß !
Python-Syntax ist doch toll ! So wie sie ist, geht das geradezu in den Sehnerv hinein (hatte nach einem dreiviertel Jahr schon Momente, in denen ein Blick auf einen mit Code vollen Bildschirm mir sagte: Eh, da stimmt was nicht).
Also: Auf gar keinen Fall!
Ein Syntax-Fehler, der mir immer wieder noch unterläuft:
Code: Alles auswählen
class Beispiel():
Außerdem verwende ich 'self' nicht mehr, frisst zuviel Platz. Ist im Moment 'q' , am besten wäre aber ein freies deutliches Zeichen wie @ es ist - wenn ich es recht sehe, müsste man dafür aber den Parser ändern. Ein paar Stunden lang fand ich 'ä' im Sinne von 'äh' ganz lustig und insofern echt pythonisch, dann aber doch nicht mehr.
Ein zweites, das mich ein bisschen nervt: Das Auspacken von 1-Tupeln ist eigentlich nur durch workarounds wie (x,)[0] möglich. Kann aber nicht anders gehen: y = (x,) für Auspacken wäre völlig gegen das typing by assignment. Man müßte für eine solche Vereinheitlichung einen Auspack-Operator erfinden wie: x,y,z = ,(1,2,3) oder sowas. Wäre für Anfänger in der Sprache und die allgemeine Lesbarkeit gar nicht schlecht, x = ,() würde dann 'None' zuweisen.
Viel Spaß !
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Mit Python2.5 und höher nicht mehr.joost hat geschrieben:Ein Syntax-Fehler, der mir immer wieder noch unterläuft:
Code: Alles auswählen
class Beispiel():
TUFKAB – the user formerly known as blackbird
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Davon abgesehen dass es nicht darum geht die Klasse aufzurufen (schlicsslich ruft def funktion() die Funktion auch nicht auf) ist dies in Python 2.5 möglich - aus Konsistenzgründen. Inzwischen schreibe ich aber in der Regel sowieso ``class Klassenname(object)``.joost hat geschrieben:Ein Syntax-Fehler, der mir immer wieder noch unterläuft:
Verstehe übrigens nicht, warum es diese Klammern nicht gibt - schließlich ist eine Klasse ein callable.Code: Alles auswählen
class Beispiel():
Deinen Code möchte ich echt nicht sehen müssen. Das ``self`` ist aus guten Grund da - es erfüllt die gleichen Funktion wie das von dir vorgeschlagene @: ein Name bei dem sofort klar ist, was an ihn gebunden ist. Außerdem ist @ schon für die Dekoratoren reserviert - ob das eine gute Idee war ist natürlich eine andere Frage. Mir gefallen die anderen Dekorator-Syntaxvorschläge besser.joost hat geschrieben:Außerdem verwende ich 'self' nicht mehr, frisst zuviel Platz. Ist im Moment 'q' , am besten wäre aber ein freies deutliches Zeichen wie @ es ist - wenn ich es recht sehe, müsste man dafür aber den Parser ändern.
Ja, einen Buchstaben zu verwenden der bei den meisten Tastaturen der Welt nicht vorhanden ist, ist hmm, eine innovative Idee. Vielleicht kann man aber auch noch ein paar Symbole aus APL einführen?joost hat geschrieben:Ein paar Stunden lang fand ich 'ä' im Sinne von 'äh' ganz lustig und insofern echt pythonisch, dann aber doch nicht mehr.
Kannst du nicht blackbirds Unpack-Operator ``,=``?joost hat geschrieben:Man müßte für eine solche Vereinheitlichung einen Auspack-Operator erfinden wie: x,y,z = ,(1,2,3) oder sowas. Wäre für Anfänger in der Sprache und die allgemeine Lesbarkeit gar nicht schlecht, x = ,() würde dann 'None' zuweisen.

My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice