xNeTworKx: Wozu Referenzen ?

Hallo,
Ich wollt mal wissen, wozu man eigentlich Referenzen benötigt? Ja um irgendwie die Speicherposition, oder so, zu ermitteln, aber bei welchen Anwendungsbereich soll das gut sein, zu wissen, oder wo werden Referenzen eingesetzt ?

  1. Hoi,

    Ich wollt mal wissen, wozu man eigentlich Referenzen benötigt? Ja um
    irgendwie die Speicherposition, oder so, zu ermitteln,

    Nicht wirklich. perldoc perlref

    aber bei welchen Anwendungsbereich soll das gut sein, zu wissen, oder wo
    werden Referenzen eingesetzt ?

    perldoc perlreftut:

    DESCRIPTION
           One of the most important new features in Perl 5 was the
           capability to manage complicated data structures like
           multidimensional arrays and nested hashes.  To enable
           these, Perl 5 introduced a feature called `references',
           and using references is the key to managing complicated,
           structured data in Perl.  Unfortunately, there's a lot of
           funny syntax to learn, and the main manual page can be
           hard to follow.  The manual is quite complete, and
           sometimes people find that a problem, because it can be
           hard to tell what is important and what isn't.

    [...]

    Who Needs Complicated Data Structures?
           One problem that came up all the time in Perl 4 was how to
           represent a hash whose values were lists.  Perl 4 had
           hashes, of course, but the values had to be scalars; they
           couldn't be lists.

    Gruesse,
     CK

  2. Halihallo

    Ich wollt mal wissen, wozu man eigentlich Referenzen benötigt? Ja um irgendwie die Speicherposition, oder so, zu ermitteln, aber bei welchen Anwendungsbereich soll das gut sein, zu wissen, oder wo werden Referenzen eingesetzt ?

    Bei komplexen Datentypen... Bei binären Bäumen (B-Trees), Listen, ...
    Eigentlich werden sie verdammt oft gebraucht (oder geht das nur mir so?)
    Beispiel:

    %h1 = ('Name' => 'Hasenfratz',
           'Vorn' => 'Philipp');
    %h2 = ('Name' => 'will nicht',
           'Vorn' => 'genannt sein');
    @names = (%h1, %h2);

    foreach (@names) {
       if ($_->{Name} =~ /$suche_nach/i) {
          print $_->{Name} . ", " . $_->{Vorn} . "\n";
       }
    }

    Wie würdest du dies ohne Referenzen machen??? - Und falls du eine Möglichkeit findest:

    Wie würdest du dies lösen:
    Die Daten werden über eine Datei eingelesen (z. B. addressen.txt)...
    Dann müsstest du diese immer manuell und kompliziert in die Programme einfügen... Doch lieber Referenzen benutzen??? :-)

    Viele Grüsse

    Philipp

    1. %h1 = ('Name' => 'Hasenfratz',
             'Vorn' => 'Philipp');
      %h2 = ('Name' => 'will nicht',
             'Vorn' => 'genannt sein');
      @names = (%h1, %h2);

      foreach (@names) {
         if ($_->{Name} =~ /$suche_nach/i) {
            print $_->{Name} . ", " . $_->{Vorn} . "\n";
         }
      }

      tät wohl auch mit grep funzen, wa??? :-))

      Viele Grüsse

      Philipp

      1. Hi,
        naja wahrscheinlich is mein Wissen noch zu newbiemäßig, daß ich von Referenzen Gebrauch gemacht hätte :-)

        1. Halihallo

          naja wahrscheinlich is mein Wissen noch zu newbiemäßig, daß ich von Referenzen Gebrauch gemacht hätte :-)

          Kein Problem ;-)
          <altklug>
          Aber lass dir eins gesagt sein: Wenn du erst mal mit Referenzen gearbeitet hast, kannst du sie dir nicht mehr wegdenken, da man ganz nette Sachen damit machen kann. Also: Beschäftige dich damit und du wirst dein Spass daran finden! :-)
          </altklug>
           :-)

          Viele Grüsse und viel Spass dabei

          Philipp

    2. Hoi,

      Bei komplexen Datentypen... Bei binären Bäumen (B-Trees),

      Du weisst aber schon, dass B-Baeume und Binaere Baeume etwas unterschiedliches
      sind?

      Eigentlich werden sie verdammt oft gebraucht (oder geht das nur mir so?)

      Noe. Das ist normal.

      Gruesse,
       CK

      1. Halihallo Christian

        Bei komplexen Datentypen... Bei binären Bäumen (B-Trees),

        Du weisst aber schon, dass B-Baeume und Binaere Baeume etwas unterschiedliches
        sind?

        noe, was ist denn der Unterschied?

        Viele Grüsse

        Philipp

        1. Hi Phillip

          Bei komplexen Datentypen... Bei binären Bäumen (B-Trees),

          Du weisst aber schon, dass B-Baeume und Binaere Baeume etwas unterschiedliches
          sind?

          B-Trees steht für Balanced Trees, also das nicht ein Ast wesentlich grösser
          wird als der andere (was ja bei Binary Balanced Trees im Extremfall zu einer
          verketteten Liste ausartet). Zudem müssen B-Trees nicht binär sein, dass ist
          nur ein Spezialfall davon, ein Knoten kann auch mehr als 2 Kinder haben.

          Gruss Daniela

          1. Halihallo

            Bei komplexen Datentypen... Bei binären Bäumen (B-Trees),

            Du weisst aber schon, dass B-Baeume und Binaere Baeume etwas unterschiedliches
            sind?

            B-Trees steht für Balanced Trees, also das nicht ein Ast wesentlich grösser

            Ach so. Ja, ich kannte (und kenne noch immer) Balanced Trees, aber eben nur unter diesem Begriff und nicht unter B-Trees.
            *wieder um eine Abkürzung g'scheiter*

            wird als der andere (was ja bei Binary Balanced Trees im Extremfall zu einer
            verketteten Liste ausartet). Zudem müssen B-Trees nicht binär sein, dass ist
            nur ein Spezialfall davon, ein Knoten kann auch mehr als 2 Kinder haben.

            Nachträglich klar.

            Viele Grüsse

            Philipppppppp

        2. Hoi,

          Bei komplexen Datentypen... Bei binären Bäumen (B-Trees),

          Du weisst aber schon, dass B-Baeume und Binaere Baeume etwas
          unterschiedliches sind?

          noe, was ist denn der Unterschied?

          Ein B-Baum kann auch mehr als nur zwei Alternativen pro Stufe haben. Ein B-Baum
          ist ein M-ary Baum mit den Eigenschaften:

          -   Die Nutzdaten werden nur in der Blättern gespeichert.
          -   Die nicht-Blätter Knoten speichern die Schlüssel; Schlüssel i
              stellt den kleinsten (rechten) Unterbaums dar
          -   Der Wurzelknoten ist entweder ein Blatt oder hat zwischen 2 und M Kinder.
          -   Alle nicht-Blätter Knoten (ausser der Wurzel) haben zwischne M/2 und M Kinder.
          -   Alle Blätter haben die gleiche Tiefe und besitzen zwischen L/2 und L Kinder.

          Nachzulesen unter z. B.
          http://home.zhwin.ch/~mun/ki2c/ki2cunterlagen/ki_sw3_v5_handouts.prn.pdf

          Gruesse,
           CK

          1. Halihallo

            noe, was ist denn der Unterschied?

            Ein B-Baum kann auch mehr als nur zwei Alternativen pro Stufe haben. Ein B-Baum
            ist ein M-ary Baum mit den Eigenschaften:

            Danke an euch (Daniela auch) für die Aufklärung. Dachte wirklich es sei das selbe.

            -   Die Nutzdaten werden nur in der Blättern gespeichert.
            -   Die nicht-Blätter Knoten speichern die Schlüssel; Schlüssel i
                stellt den kleinsten (rechten) Unterbaums dar
            -   Der Wurzelknoten ist entweder ein Blatt oder hat zwischen 2 und M Kinder.
            -   Alle nicht-Blätter Knoten (ausser der Wurzel) haben zwischne M/2 und M Kinder.
            -   Alle Blätter haben die gleiche Tiefe und besitzen zwischen L/2 und L Kinder.

            Jep. THX. Den theoreischen Teil hab ich mir immer erspart bzw. selbst zusammengereimt; aber die praktische Anwendungen habe ich begriffen, deshalb: danke für die Theorie.

            Viele Grüsse

            Philipp

          2. hi!

            -   Die Nutzdaten werden nur in der Blättern gespeichert.

            Hm, davon habe ich ja noch nie was gehört. Ist wohl eine etwas
            speziellere Definition, das lautet überall ein wenig anders. Im
            Grunde läuft es immer auf einen Baum hinaus, der balanciert ist
            (überall gleich tief) und pro Knoten (relativ) beliebig viele
            Nachfolger haben kann.

            Sinn und Zweck: bei großen Datenmengen in einem Baum soll dadurch
            die Zahl der Zugriffe auf ein langsames Speichermedium reduziert
            werden, da die komplexen Speicheroperationen auf einem B-Tree immer
            noch günstiger sind als das Auslesen der Daten.

            bye, Frank!

            1. Halihallo

              Sinn und Zweck: bei großen Datenmengen in einem Baum soll dadurch
              die Zahl der Zugriffe auf ein langsames Speichermedium reduziert
              werden, da die komplexen Speicheroperationen auf einem B-Tree immer
              noch günstiger sind als das Auslesen der Daten.

              oder die Indizes in Datenbanksystemen "on-the-fly" optimiert werden. Diese Technik wird bei RDBMS gerne verwendet, da sonst nach einer gewissen Zeit die Indizes ziemlich "fragmentiert" sind (die Indizes nicht mehr optimal angeordnet). Falls diese "Technik" nicht angewendet wird, muss der _komplette_ Index nach einer gewissen Zeit vollständig erneuert werden (was zeimlich Performance verschlingen würde); anders bei B-Trees...

              Viele Grüsse

              Philipp

  3. Kauf' Dir doch bitte das Buch...

    1. Kauf' Dir doch bitte das Buch...

      Nein :-)

      Ich hab Perl in 21 Tagen, und ich find es spitze, aber das mit den Referenzen hab ich nicht so ganz verstanden, deswegen hab ich hier gefragt.

      1. use Mosche;

        Ich hab Perl in 21 Tagen, und ich find es spitze, aber das mit den Referenzen hab ich nicht so ganz verstanden, deswegen hab ich hier gefragt.

        Es scheint nicht so gut zu sein, wenn es nicht ausreichend erklärt, wozu man Referenzen braucht (die wirklich zu den elementaren "Datentypen" zählen - ohne kann "man" gar nicht mehr auskommen).

        use Tschoe qw(Matti);

        1. d'Ehre,
          erklärt is es schon genau :
          Was ist eine Referenz,
          Eine Referenz erzeugen,
          Referenzen ausgeben und verwenden,
          Referenzen dereferenzieren,
          Referenzierte Daten ändern,
          Subroutinenargumente,
          Referenzen aus Subroutinen zurückgeben,
          Über Listenreferenzen auf Listenelemente zugreifen blablabla usw.

          Ich wollt nur mal wissen, wie schon gefragt und erklärt wurde, bei welchen Bereichen Referenzen so verwendet werden.