Wozu Referenzen ?
xNeTworKx
- perl
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 ?
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
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
%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
Hi,
naja wahrscheinlich is mein Wissen noch zu newbiemäßig, daß ich von Referenzen Gebrauch gemacht hätte :-)
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
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
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
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
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
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
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
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!
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
Kauf' Dir doch bitte das Buch...
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.
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);
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.