Pattern matching in ruby1.9 : new feature "named groups"

Hallo, zusammen,

mir ist gerade beim Überblättern eines “Beta-Buches” bei PragProg ein
neues Feature bei ruby1.9 aufgefallen: named groups.

http://media.pragprog.com/titles/ruby3/code/samples/tutstdtypes_50.rb :

#---
# Excerpted from "Programming Ruby",
# published by The Pragmatic Bookshelf.
# Copyrights apply to this code. It may not be used to create 

training material,
# courses, books, articles, and the like. Contact us if you are in
doubt.
# We make no guarantees that this code is fit for any purpose.
# Visit http://www.pragmaticprogrammer.com/titles/ruby3 for more
book information.
#—
/(?\d\d):(?\d\d)(…)/ =~ “12:50am”
“Hour is #{hour}, minute #{min}”

In python habe ich das schon 1998 oder so benutzen können.
Ist sicherlich ein Teil der “GNU regexp library” oder so.
Und die verschiedenen Programmier-Sprachen-Implementierungen ziehen das
halt wohl unterschiedlich schnell nach.

Nur schade, dass ruby1.9 nicht problemlos mit rails-1.2.* zusammengeht
;-(

Ciao
J.

Hi!
On Thu, Jan 17, 2008 at 02:50:23PM +0100, Jochen H. wrote:

mir ist gerade beim Überblättern eines “Beta-Buches” bei PragProg ein
neues Feature bei ruby1.9 aufgefallen: named groups.

[…]

  /(?<hour>\d\d):(?<min>\d\d)(..)/ =~ "12:50am"
  "Hour is #{hour}, minute #{min}"

In python habe ich das schon 1998 oder so benutzen können.
Ist sicherlich ein Teil der “GNU regexp library” oder so.

Nicht ganz, es ist Teil der Regexp-Engine Oniguruma die mit Ruby 1.9
mitkommt.

Nur schade, dass ruby1.9 nicht problemlos mit rails-1.2.* zusammengeht ;-(

Muss es auch nicht, du kannst Oniguruma auch zusammen mit Ruby 1.8.x
verwenden - entweder indem du ein eigenes, mit Oniguruma gepatchtes Ruby
baust, oder Oniguruma gegen dein vorhandenes Ruby compilierst und den
Oniguruma-Gem verwendest:

http://www.jkraemer.net/2008/1/27/regexps-on-steroids-with-ruby-1-8-x

Jens


Jens Krämer
http://www.jkraemer.net/ - Blog
http://www.omdb.org/ - The new free film database

“JK” == Jens K. writes:

On Thu, Jan 17, 2008 at 02:50:23PM +0100, Jochen H. wrote:

>> mir ist gerade beim Überblättern eines "Beta-Buches" bei PragProg 

ein
>> neues Feature bei ruby1.9 aufgefallen: named groups.

JK> [..]

>> /(?<hour>\d\d):(?<min>\d\d)(..)/ =~ "12:50am"
>> "Hour is #{hour}, minute #{min}"
>>
>> In python habe ich das schon 1998 oder so benutzen können.
>> Ist sicherlich ein Teil der "GNU regexp library" oder so.

JK> Nicht ganz, es ist Teil der Regexp-Engine Oniguruma
JK> die mit Ruby 1.9 mitkommt.

Schade auch!
Nichts gegen Oniguruma, echt nicht!
Danke
dafür!
(… im Prinzip …)

Aber mir scheint das in Ruby überhaupt so ein generelles NIH-Problem zu sein.
( http://en.wikipedia.org/wiki/NIH_(disambiguation) ).

Könnte letztendlich eines der Argumente gegen Ruby sein. (1)

>> Nur schade, dass ruby1.9 nicht problemlos mit rails-1.2.* 

zusammengeht ;-(

JK> Muss es auch nicht,
JK> du kannst Oniguruma auch zusammen mit Ruby 1.8.x verwenden

Ähm, …, sorry, aber die meisten von uns (?!?) bekommen bei Ihrem
Hosting-Provider ein fertiges Ruby
und “Dazu-Compilieren” “is nich”,
GEMs installieren funktioniert also auch nur eingeschränkt.

Insofern kommt es dann eben z.B. “für mich” (also dort, wo “ich” gehostet
werde)
mit 1.9.x und das ist ja auch relativ hübsch so.

JK> - entweder indem du ein eigenes,
JK> mit Oniguruma gepatchtes Ruby baust,
JK> oder Oniguruma gegen dein vorhandenes Ruby compilierst
JK> und den Oniguruma-Gem verwendest:

Und auf gewisse Weise hübsch bzw. ressourcen-schonend ist ja auch gewiss,
dass es compiliert wird und nicht in Ruby geschrieben ist.
Obwohl man das sicherlich auch in Ruby schreiben könnte … :wink:

Und: Open Source ist schon etwas Schönes (im Prinzip), vielen Dank auch
dafür!!!
Aber Selber-Dazu-Compilieren ist halt nicht überall gegeben
und deswegen ist es schon gut, wenn solche Geschichten in einer reifen
Version eben zu so einer Vanilla-Lieferung einfach dazu gehören.

J.

http://Hayek.name/Jochen

Pls be nice and keep responses on the mailing list / on the forum /
within the newsgroup!

(1) Aber wie geht der Spruch mit dem Fisch und dem Kopf?
Habe jüngst die Erfahrung gemacht, dass man bei MRI (
http://en.wikipedia.org/wiki/MRI_(disambiguation) )
auch in Sache “POSIX locale” nicht auf (GNU) libc setzt
sondern lieber auf http://en.wikipedia.org/wiki/Reinventing_the_wheel .
Sei’s drum!
In den 80-er sprach man nicht nur von “re-usable software”,
sondern man verfolgte den Ansatz auch,
und man hat Software schließlich auch “re-used”.
Software muss nicht nur “re-usable” sein, sie muss auch “re-used”
werden, sonst hat das Ganz ja wohl kaum einen Sinn.
Heute entsteht so manche Software halt im Rahmen von Hochschul-Projekten
zur Übung und mehr oder weniger als “proof of concept”
und dann besinnt sich niemand eigentlich besserer Lösungen.
Sehr bedauerlich.
MRI ist in C geschrieben,
und wird wohl in der Regel mit gcc übersetzt,
und im Umfeld des gcc gibt es passender, performante und reife Lösungen,
die schon so manchen Sturm überlebt haben und dabei Qualität bekamen.
Nicht dass meine heile Nacht-Ruhe davon abhängt, dass mein Ratschlag
befolgt wird,
aber MRI sollte soweit möglich auf performante reife “Middleware” setzen
(niemand würde ernsthaft die echt großen “Middlewaren” in Ruby nachbauen, aber
so studienarbeitsgroße Teile wohl immer wieder)
und NIH und “Reinventing_the_wheel” sind Mist.
So genug für heute :wink:

Habe diese Sätze auch mal kurz auf meinen deutschen Blog gepackt:

http://blog-de.jochen.hayek.name/2008/01/ruby-mri-wiederverwendbare-software-nih.html

Jochen H. schrieb:

Aber mir scheint das in Ruby überhaupt so ein generelles NIH-Problem zu sein.

auch in Sache “POSIX locale” nicht auf (GNU) libc setzt
sondern lieber auf http://en.wikipedia.org/wiki/Reinventing_the_wheel
Sei’s drum!
In den 80-er sprach man nicht nur von “re-usable software”,
sondern man verfolgte den Ansatz auch,
und man hat Software schließlich auch “re-used”.
Software muss nicht nur “re-usable” sein, sie muss auch “re-used”
werden, sonst hat das Ganz ja wohl kaum einen Sinn.

Schöner Spruch, nur hilft der nicht viel, wenn die Software, die
“re-used” werden möchte, unter der GPL steht.

Das ist mit der Ruby/MIT/BSD Lizenz nicht vereinbar und somit ist es
nicht Teil von Ruby.

Jonathan

“JW” == Jonathan W. [email protected] writes:

JW> Schöner Spruch,

Das is ja echt Ironie … :wink:
Aber so abfällig …

Das klingt nicht direkt nach Akzeptanz ;-|

JW> nur hilft der nicht viel,
JW> wenn die Software, die "re-used" werden möchte,
JW> unter der GPL steht.

JW> Das ist mit der Ruby/MIT/BSD Lizenz nicht vereinbar
JW> und somit ist es nicht Teil von Ruby.

Also das betrifft wohl konkret eben nicht die glibc,
bei Nachlesebedarf siehe hier:

http://www.freesoftwaremagazine.com/node/1681

Und MRI linkt auf Linux-Plattformen nicht gegen glibc?!?!???
Na, das kann ja wohl gar nicht sein.

Also auch so rum:
Du bekommst deine Rails-Applikation auf einer Linux-Platfrom gehostet,
und dann?

Nichts für ungut,
aber wahrscheinlich gibt es da noch jede Menge
ungedeckter bzw. überholter Gerüchte aus den strengeren GPL-Zeiten.

Und die Ressentiments etc. geben dann den Grund für NIH her.

Ressentiments sind aber keine guten Ratgeber.

JW> Jonathan

Also bei allem Respekt, lieber Jonathan,
aber ich denke nicht, dass das so haltbar ist.

Sorry, aber mein Söhnchen drängelt an der Tür und ich kann nicht noch länger hier
dran feilen.

J.

On Jan 27, 2008, at 6:00 PM, Jochen H. wrote:

JW> wenn die Software, die “re-used” werden möchte,
JW> unter der GPL steht.

JW> Das ist mit der Ruby/MIT/BSD Lizenz nicht vereinbar
JW> und somit ist es nicht Teil von Ruby.

Moinsens alle,

Jochen, mal was anderes, ginge es, dass du deinem Mailprogramm
irgendwie erzaehlst,
dass die zitierten Stellen sich an normalgaenige Konzeptionen anlehnen?
Es ist ein wenig anstrengend die eingerueckten Zitate zu lesen.
Das waere wirklich sehr nett. Dank dir.

Gruss,
Tom_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Hallo, Thomas,

Gruß in die Eifel!

“TW” == Thomas W.
( http://www.workingwithrails.com/person/5520-thomas-winkler ) writes:

On Jan 27, 2008, at 6:00 PM, Jochen H. wrote:

“JW” == Jonathan W. [email protected] writes:

TW> Moinsens alle,

TW> Jochen, mal was anderes,
TW> ginge es, dass du deinem Mailprogramm irgendwie erzaehlst,
TW> dass die zitierten Stellen sich an normalgaenige Konzeptionen 

anlehnen?

Du, was sind schon “normalgängige Konzeptionen”? (wenn du das meinst)

Ich z.B. bin so tolerant (toll, was?!),
dass du ruhig weiterhin so zitieren kannst, wie du das tust,
auch wenn es meinen Augen weh tut.

Aber wenn dein MUA mit dem Formatier-Stil meines MUA Probleme hat:
Wende dich doch, bitte, an den Hersteller deines MUA!
Oder vielleicht hat er schon einen Patch oder eine passende
Konfiguration? :wink:
Du kriegst das schon hin.

TW> Es ist ein wenig anstrengend die eingerueckten Zitate zu lesen.

() Ähm, ist dein Bildschirm nicht breit genug?
(
) Zu kleine Auflösung?
(_) …

Sorry, aber dein Problem ist hier off-topic.

Einen schönen Gruß aus Berlin
J.

…ohne Witz, da fehlen mir echt grad die Worte…

On Jan 27, 2008, at 6:36 PM, Jochen H. wrote:

“JW” == Jonathan W. [email protected] writes:
Ich z.B. bin so tolerant (toll, was?!),

within the newsgroup!
I mean it.


rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Kenn eigenlich noch jemand learn.to/quote?
:-)_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Jochen H. schrieb:

Also das betrifft wohl konkret eben nicht die glibc,
bei Nachlesebedarf siehe hier:

http://www.freesoftwaremagazine.com/node/1681

Da steht doch, dass LGPLv.2 zu ungenau für moderne Systeme ist. Darum
vermeiden auch viele Projekte den Einsatz von LGPL Software. IMHO ist
die LGPL auch so direkt nicht vor Gericht getestet worden.

GPLv3 ist noch zu neu und gerichtlich ungetestet, so dass hier viele
lieber ein wenig warten, bevor sie ein Urteil treffen.

Und MRI linkt auf Linux-Plattformen nicht gegen glibc?!?!???
Na, das kann ja wohl gar nicht sein.

Linken ja. Aber als eine Abhängigkeit extra rein nehmen, nein danke.
Damit läuft Ruby nicht mehr so einfach auf *BSD und macht es vielen
anderen Leuten schwerer (die nämlich keine glibc haben oder nicht haben
wollen).

Also auch so rum:
Du bekommst deine Rails-Applikation auf einer Linux-Platfrom gehostet,
und dann?

???

Nichts für ungut,
aber wahrscheinlich gibt es da noch jede Menge
ungedeckter bzw. überholter Gerüchte aus den strengeren GPL-Zeiten.

IMHO ist die GVPv3 strenger als die GPLv2. Und noch komplizierter.

Und die Ressentiments etc. geben dann den Grund für NIH her.

Ressentiments sind aber keine guten Ratgeber.

JW> Jonathan

Also bei allem Respekt, lieber Jonathan,
aber ich denke nicht, dass das so haltbar ist.

Das sind keine Ressentiments, sondern rechtliche Fakten. Deshalb
versuchen MIT/BSD Projekte möglichst alle Abhängigkeiten auf (L)GPL Code
zu vermeiden und mit der Zeit zu verringern, siehe
BSD-Reimplementationen von CVS, tar & co.

Jonathan

On Sun, Jan 27, 2008 at 06:36:01PM +0100, Jochen H. wrote:
[…]

Du, was sind schon “normalgängige Konzeptionen”? (wenn du das meinst)

http://learn.to/quote

Grüße,Jens


Jens Krämer
http://www.jkraemer.net/ - Blog
http://www.omdb.org/ - The new free film database

“JK” == Jens K. [email protected] writes:

JK> On Sun, Jan 27, 2008 at 06:36:01PM +0100, Jochen H. wrote:
JK> [..]

>> Du, was sind schon "normalgängige Konzeptionen"? (wenn du das 

meinst)

Diese Frage ist übrigens eine rhetorische,
soll heißen: Keine Stellungnahmen notwendig :wink:

JK> http://learn.to/quote

O, der Link funktioniert ja gar nicht :slight_smile:
Such dir mal 'nen passenderen,
aber schick ihn, bitte, nicht mir oder in meinem Zusammenhang,
denn er interessiert mich nicht.

Und weißt du jetzt eigentlich,
ob du in Sachsen oder Sachsen-Anhalt lebst?
Du verbreitest nämlich an verschiedenen Orten verschiedene Angaben.

Hi Jochen,

2008/1/27 Jochen H. [email protected]:

Schade auch!
Nichts gegen Oniguruma, echt nicht!
Danke dafür!

(… im Prinzip …)

Aber mir scheint das in Ruby überhaupt so ein generelles NIH-Problem zu sein.
( http://en.wikipedia.org/wiki/NIH_(disambiguation) ).

Könnte letztendlich eines der Argumente gegen Ruby sein. (1)
Du hast ein paar schöne Argumente in deinem Blog aufgezählt. Jedoch
ist gerade Oniguruma ein schlechtes Beispiel um diese zu untermauern.
Denn es handelt dabei um eine sehr stabile und performante Lösung.
Ausserdem gab es keine andere Alternative die nur annähernd den
Leistungsumfang erreicht hätte.

Zum Thema local und glibc ist noch zu erwähnen, dass Oniguruma direkt
eine ordentliche Encoding Bibliothek mitgebracht hat. Aufgrund dessen
wäre die Verwendung einer anderen Codebasis für das Encoding ungünstig
gewesen. Stell dir mal vor Reguläre Ausdrücke würden in Ruby in
Zukunft eine andere Encoding Bibliothek verwenden als z.B.
Zeichenketten. Nicht auszudenken, was passieren ‘könnte’ wenn es da
einen Definitionsunterschied in der Implementierung gäbe. Ganz davon
abgesehen, dass die Codebasis dadurch noch schwerer zu verstehen wäre
als jetzt schon.

MfG
Daniel B.