Hummel Hummel!
ich weiss ja nicht wies euch geht aber ich persönlich bin nicht so wirklich zufrieden mit dem Pattern Matching unter Python. Also es gehört zwar zum besten was ich gesehen / gehört habe unter den Programmiersprachen aber da ist noch Luft nach oben.
Es wird ja gemunkelt, dass das Pattern Matching bei der kaum bekannten Programmiersprache Snobol4 / Spitbol deutlich überlegen sein soll und eine wahre Freude im Vergleich zu RegEx.
Deswegen meine Fragen:
1. Wieso hat Python RegEx gewählt? Aufgrund der hohen Verbreitung durch Perl usw?
2. Bestehen Bemühungen dazu das Snobol4 Pattern Matching in Python einzuarbeiten?
3. Entspricht diese überlegenheit von Snobol4 gegenüber RegEx tatsächlich der Realität? Wenn ja: Welche konkreten Beispiele könnt ihr nennen wo Snobol4 gegenüber RegEx im Vorteil ist?
Danke für eure Mühe!
Python Alternative zu RegEx- Pattern Matching a la Snobol4?
Mors, Mors,
interessante Thema, von Snobol4 hatte ich noch nie was gehört. Aber, um ehrlich zu sein: Nachdem ich ein bißchen was gelesen hatte, bin ich nicht überzeugt, dass es wirklich einfacher ist, als Pythons regexes (Plural? / Beugung? ). In puncto Effiziens scheint zumindest Tim Peters große Stücke auf Snobol zu halten. Aber so ganz überzeugt bin ich nicht. Mag mich wer überzeugen?
Eine Pythonbindung existiert bereits. Ist zwar veraltet, aber wenn es Dich interessiert, kannst Du ja es ja für Python 3.x umsetzen: Mit SWIG dürfte das kein Problem sein, dass sich nicht lösen liesse.
Mal aus Neugierde: Gibt es neuere / bessere Bindings? edit: Gibt es Python-bindings für (noch) "bessere" / andere Pattern Matching engines?
Gruß,
Christian
interessante Thema, von Snobol4 hatte ich noch nie was gehört. Aber, um ehrlich zu sein: Nachdem ich ein bißchen was gelesen hatte, bin ich nicht überzeugt, dass es wirklich einfacher ist, als Pythons regexes (Plural? / Beugung? ). In puncto Effiziens scheint zumindest Tim Peters große Stücke auf Snobol zu halten. Aber so ganz überzeugt bin ich nicht. Mag mich wer überzeugen?
Eine Pythonbindung existiert bereits. Ist zwar veraltet, aber wenn es Dich interessiert, kannst Du ja es ja für Python 3.x umsetzen: Mit SWIG dürfte das kein Problem sein, dass sich nicht lösen liesse.
Mal aus Neugierde: Gibt es neuere / bessere Bindings? edit: Gibt es Python-bindings für (noch) "bessere" / andere Pattern Matching engines?
Gruß,
Christian
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Hängt ab wie man nun Pattern Matching meint. Stringbasiertes Matching? Oder Matching wie in OCaml, Haskell oder Scala? Oder wie Multimethods? Oder wie die syntax-rules Makros aus Scheme?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
"Gibt es neuere / bessere Bindings? edit: Gibt es Python-bindings für (noch) "bessere" / andere Pattern Matching engines?"CM hat geschrieben:
[...]
Eine Pythonbindung existiert bereits. Ist zwar veraltet, aber wenn es Dich interessiert, kannst Du ja es ja für Python 3.x umsetzen: Mit SWIG dürfte das kein Problem sein, dass sich nicht lösen liesse.
Mal aus Neugierde: Gibt es neuere / bessere Bindings? edit: Gibt es Python-bindings für (noch) "bessere" / andere Pattern Matching engines?
Gruß,
Christian
-> Gerade das interessiert mich auch.
---------------------
"Die Sprache SNOBOL 4 unterstützt eine Reihe von eingebauten Datentypen wie Integer- und Gleitkommazahlen, Zeichenketten, Mustern, Feldern und Tabellen. Darüber hinaus gestattet sie dem Programmierer die Definition von zusätzlichen Datentypen und neuen Funktionen.
Ein wesentliches Unterscheidungsmerkmal zu den seinerzeit gebräuchlichen Programmiersprachen ist die Existenz von Mustern als "erstklassigem" Datentyp, d.h. einem Datentyp, dessen Wert in jeder Weise manipuliert werden kann wie in anderen Programmiersprachen, sowie von Operatoren zur Verkettung und Manipulation von Mustern. Zeichenketten, die zur Laufzeit erzeugt werden, können als Programm behandelt und ausgeführt werden. Ein Muster in SNOBOL 4 kann sehr einfach, aber auch sehr komplex aufgebaut sein. Ein einfaches Muster ist z. B. nur eine Zeichenkette wie "ABCD". Ein komplexes Muster kann hingegen eine große Struktur sein, die z. B. die vollständige Grammatik einer Computersprache beschreiben kann."
http://de.wikipedia.org/wiki/SNOBOL4
---------------------
Na ja, Leonidas hat schon recht: Die Frage muß man entsprechend eingrenzen, sonst machen wir hier einen Megathread draus. Also, was mich anbelangt, so denke ich an stringbasiertes Matching.
Und die Frage nach der Qualität von Snobol halte ich im Übrigen nicht für abschließend beantwortet: Mit "es wird gemunkelt" und wikipedia-Zitaten, bin ich nicht überzeugt - der Source-Code ist auch nicht überzeugend. Aber vielleicht gibt es etwas, das ich übersehe - und interessant ist es allemal.
Gruß,
Christian - in diesem Punkt ahnungslos, aber neugierig
Und die Frage nach der Qualität von Snobol halte ich im Übrigen nicht für abschließend beantwortet: Mit "es wird gemunkelt" und wikipedia-Zitaten, bin ich nicht überzeugt - der Source-Code ist auch nicht überzeugend. Aber vielleicht gibt es etwas, das ich übersehe - und interessant ist es allemal.
Gruß,
Christian - in diesem Punkt ahnungslos, aber neugierig
Ich vermute mal, dass die meisten Programmiersprachen reguläre Ausdrücke benutzen, weil die anderen Sprachen sie auch benutzen und daher dem Benutzer die doch anfangs recht kryptische Syntax schon bekannt sein könnte.
Eine gute alternative RE-Engine soll Oniguruma sein, die schon gar keine reguläre Sprache mehr ist, sondern z.B. Klammern zählen kann (siehe \g) und damit eigentlich kontextfrei sein müsste. So genau überblicke ich das allerdings nicht.
Die Sprache REBOL kann direkt kontextfreie Grammatiken als interne DSL verarbeiten, was recht nett ist. Ansonsten ist REBOL allerdings als eher unbekannt (auch wenn sie von dem Amiga-Erfinder stammt). Ich glaube, damit ist sie mit Snobol4 vergleichbar.
Ansonsten meine ich, dass doch auch Perl6 nicht nur reguläre Ausdrücke beherrscht sondern auch Syntax für kontextfreie Grammatiken als interne DSL in der Sprache hat, oder?
Stefan
Eine gute alternative RE-Engine soll Oniguruma sein, die schon gar keine reguläre Sprache mehr ist, sondern z.B. Klammern zählen kann (siehe \g) und damit eigentlich kontextfrei sein müsste. So genau überblicke ich das allerdings nicht.
Die Sprache REBOL kann direkt kontextfreie Grammatiken als interne DSL verarbeiten, was recht nett ist. Ansonsten ist REBOL allerdings als eher unbekannt (auch wenn sie von dem Amiga-Erfinder stammt). Ich glaube, damit ist sie mit Snobol4 vergleichbar.
Ansonsten meine ich, dass doch auch Perl6 nicht nur reguläre Ausdrücke beherrscht sondern auch Syntax für kontextfreie Grammatiken als interne DSL in der Sprache hat, oder?
Stefan
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Wenn du gerne 3x so lange auf deinen Match für simple REs wartest wie mit sre, ist Oniguruma auf jeden Fall etwas für dichsma hat geschrieben:Eine gute alternative RE-Engine soll Oniguruma sein, die schon gar keine reguläre Sprache mehr ist, sondern z.B. Klammern zählen kann (siehe \g) und damit eigentlich kontextfrei sein müsste. So genau überblicke ich das allerdings nicht.
Wer sowas einsetzt, fühlt sich eh zu höherer RE-Magie berufen, die Laufzeit ist da doch völlig egal