Das gleiche oder dasselbe: Mehrfachreferenz

Noch eine Sache, wo man sich als Deutschlehrer bei Informatik leicht tut.

Einleitende Denkaufgabe aus dem Informatikbuch:

In Hamburg und München werden am selben Tag zwei Autos gleichen Typs und völlig gleichen Aussehens mit demselben Kennzeichen jeweils in einer Radarkontrolle geblitzt. Welche möglichen Erklärungen gibt es dafür?
(Informatik 3, Klett)

Mögliche Erklärungen sind wohl: Da ist ein Auto von Hamburg nach München gefahren, oder jemand hat ein gefälschtes Nummernschild benutzt. Großangelegter Trickbetrug, identity theft, oder so…

Mein alternativer Einstieg und ebensolche Überschrift: “Das gleiche oder dasselbe?” Die Frage kennen die Schüler, vielleicht eher aus Diskussionen beim Mittagessen als aus dem Schulunterricht, aber sie kennen sie: Zwei Sachen sind gleich, wenn sie sich in allen Merkmalen gleichen, und zwei Sachen sind dasselbe… schon falsch, eine Sache ist dieselbe wie eine andere, wenn es eben nicht zwei Sachen sind, sondern eine, dieselbe eben.

Eselsbrücke, von mir selbst erfunden: “Das gleiche” schreibt man auseinander, in zwei Worten, weil es um zwei Objekte geht. “Dasselbe” schreibt man zusammen, in einem Wort, weil es um ein Objekt geht.

Ich brauche diese Eselsbrücke auch, denn ich habe jahrelang mit diesem Unterschied gekämpft, ganz verinnerlicht habe ich ihn immer noch nicht. Andere Sprachen kommen auch ohne diese explizite Unterscheidung aus, oder wird auch so auf auf same vs. identical herumgeritten?


Für Informatik ist das aber nützlich. Da gibt es nämlich etwas, das “Mehrfachreferenz” heißt. Zuerst der einfache Fall. Es gibt zwei Variablen a und b.

a=7;
b=a;

Das “=” bedeutet in Java und vielen anderen Programmiersprachen nicht ist gleich, sondern sei oder soll sein. Demnach heißt “a=7” also “a sei 7/a soll 7 sein”. Andere Programmiersprachen benutzen für soll sein die Zeihenfolge “:=”, dort heißt “a soll den Wert 7 haben” demnach “a:=7”. Das ist besser, aber Java macht es leider anders.

Die Variablen a und b haben zu diesem Zeitpunkt den gleichen Wert. Und wenn ich danach etwas an der einen Variablen ändere, wird die andere dadurch nicht verändert:

a=7;
b=a;
a=8; //neue Wertzuweisung, alter Wert wird überschrieben

Danach hat a den Wert 8, aber b immer noch den Wert 7.

Anders scheint es, wenn diese Variablen nicht für ganze Zahlen (oder andere “primitive Datentypen”) stehen, sondern für kompliziertere, zusammengesetzte Gebilde, zum Beispiel Raumschiffe in einem Computerspiel.

a=new Raumschiff(“Enterprise”);
b=a;
b.captainÄndern(“Kirk”);

Hier heißt “b = a” nicht so wie vorhin, dass b den gleichen Wert haben soll wie a, also ein gleiches Raumschiff sein soll, sondern das es dasselbe Raumschiff bezeichnen soll. Nach den ersten beiden Zeilen haben a und b denselben Wert, sie referenzieren beide dasselbe Objekt. Wenn ich danach bei b den Captain ändere, hat auch a einen anderen Captain, da a und b ja dasselbe Objekt referenzieren


Das ganze ist ein notorisch schwieriges Problem und noch ein bisschen komplizierter, als es aussieht. Für Fortgeschrittene:

stefansLieblingslehrer = x;
sabinesLieblingslehrer = stefansLieblingslehrer;

Wenn ich jetzt Eigenschaften von Stefans Lieblingslehrer ändere, ändere ich auch die Eigenschaften von Sabines Lieblingslehrer, da beider Lieblingslehrer ja x ist.

Allerdings: Wenn Stefan sich danach umentscheidet, so dass “stefansLieblingslehrer = y”, dann ändert sich nichts an der Tatsache, dass Sabines Lieblingslehrer immer noch der x ist.

stefansLieblingslehrer = x;
sabinesLieblingslehrer = stefansLieblingslehrer;
stefansLieblingslehrer = y; //neue Wertzuweisung, alte Referenz wird überschrieben


Der Unterschied zwischen primitiven Datentypen (Buchstaben, Zahlen) und komplexeren (Raumschiffe, Lehrer) ist der, dass es nur bei letzteren Referenzen gibt, dass also nur da Mehrfachreferenzen auftauchen können. “a = 7” heißt, dass a den Wert hat, “a = new Raumschiff()” heißt, dass a auf ein Raumschiff verweist, ein Raumschiff referenziert. Und auf dasselbe Raumschiff können neben a eben auch andere Variablen verweisen.

– Und die Schüler haben danach ihrer Mathematiklehrerin erklärt, dass dem Herrn Rau der Unterschied zwischen “dasselbe” und “das gleiche” gaaaanz wichtig ist.

10 Antworten auf „Das gleiche oder dasselbe: Mehrfachreferenz“

  1. …hmmm, Moment… wenn es tatsächlich DASSELBE Kennzeichen war, muss es wohl jemand von dem einen Auto ab- und an das andere wieder drangeschraubt haben. Whatever.

  2. Ich habe das in dem Beispiel ehrlich gesagt auch nicht ganz verstanden… dasselbe Kennzeichen ist vermutlich einfach ein sprachlicher Fehler, weil Informatiker==normaler Mensch und != Deutschlehrer.
    Aber auch für das gleiche Kennzeichen wüsste ich keine gute Erklärung. Das wäre dann ja nicht nur einfach ein gefälschtes Kennzeichen, sondern jemand hätte bewusst das ganze Auto gefälscht. Als Erklärung bietet sich da nur ein extrem komplizierter Plot à la Mission Impossible an.

  3. Zwei gleiche Autos mit demselben Kennzeichen? Kein Problem – Nick Knatterton fährt mit der grünen Ente beim Flughafen Hamburg vor und wird mit 160km/h geblitzt. Er steigt aus, schraubt das Kennzeichen ab und steigt in den Flieger nach München. Dort stiehlt er auf dem Parkplatz eine grüne Ente und versieht sie mit Hamburger Kennzeichen. Auf dem Weg in die Innenstadt wird er dann mit völlig überhöhter Geschwindigkeit geblitzt…

    Ob das ganze sinnvoll ist? Mhm. :)

    Nele

  4. Vermutlich ist (im Bürokratenverständnis) Kennzeichen ungleich Nummernschild:
    Kennzeichen = zugeteilte Buchstaben-Ziffern-Kombination (im Fahrzeugschein dokumentiert), Nummernschild = das geprägte Stück Blech. Also zwei gleich aussehende Stücke Blech, aber mit derselben Kombination bedruckt. Mein Deutschlehrerin-Erklärversuch…

  5. nochmal vielen dank für den netten kommentar.
    eine frage hätte ich noch: was sind eigentlich syndicated view? diese ominöse hellblaue linie…
    gruß fraufreitag

  6. Ich selber habe keinen syndicated view, obwohl es den im Zusammenhang mit Wordpress wohl auch gibt. Vielleicht nur bei Blogs bei wordpress.com? Ich weiß also auch nicht, was das für eine Linie ist, würde mich aber schon interessieren!

    Syndicated view zeigt wohl an, wie oft ein Blog(eintrag) über einen RSS-Reader betrachtet wurde. Wenn jemand das Blog abonniert hat und über den Reader liest, dann kriegen viele Zählmechanismen nicht gut mit, wie oft das gelesen wird.

    Kurz bei wordpress.com gesucht, auch nichts gefunden, aber immerhinque: “Na, wie war’s in der Schule?” steht auf Platz 1 der “Fastest Growing WordPress.com blogs”.

  7. Haha! Das sagt doch schon alles!! AWG rules :) Nein, der Herr R. ist am Graf-Rasso‑G. FFB

  8. Äh, das dachte ich neulich geantwortet zu haben, aber mein Kommentar scheint gefressen worden zu sein. (War am Datenbankbasteln.) Verzeihung. Und ja, so isses, FFB.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.