Hi, was genau ist eine Instanz beim Programmieren? Wenn ich z.B. die Variable "name" habe, kann die dann mehrere Instanzen haben? Oder wenn ich eine Funktion habe zum Berechnen eines Wertes und diese Funktion mehrfach aufrufe, dann ist ja diese Funktion "mehrfach" im Speicher vorhanden, z.B. struct Datensatz {...} Datensatz1 = Datensatz Datensatz2 = Datensatz Datensatz3 = Datensatz Könnte ich jetzt sagen, dass ich von struct Datensatz drei Instanzen habe, weil das Objekt dreimal im Speicher vorhanden ist, nur mit unterschiedlichen Werten?
Instanzia schrieb: > was genau ist eine Instanz beim Programmieren? Wenn ich z.B. die > Variable "name" habe, kann die dann mehrere Instanzen haben? ja, und zwar entweder dadurch, daß sich die Funktion rekursiv selbst aufruft ("automatische Variablen" liegen auf dem Stack), oder indem die Funktion in mehreren Threads verwendet wird. Zumindest gilt das bei aktuell üblichen Sprachen, in Fortran 77 dagegen sind alle Variablen statisch und nur einmal vorhanden, weswegen man dort keine Rekursion machen darf. > > Oder wenn ich eine Funktion habe zum Berechnen eines Wertes und diese > Funktion mehrfach aufrufe, dann ist ja diese Funktion "mehrfach" im > Speicher vorhanden, z.B. > > struct Datensatz {...} > > Datensatz1 = Datensatz > Datensatz2 = Datensatz > Datensatz3 = Datensatz ? Verstehe ich nicht. Wenn du Datensatz an 3 verschiedene andere Variablen zuweist, dann hast du ein Original und 3 Kopien, aber nicht mehrere Instanzen einer Variablen. > > Könnte ich jetzt sagen, dass ich von struct Datensatz drei Instanzen > habe, weil das Objekt dreimal im Speicher vorhanden ist, nur mit > unterschiedlichen Werten? Wieso unterschiedliche Werte?
:
Bearbeitet durch User
So wie ich das sehe sind Instanzen vor allem bei Klassen: Also du hast die Klasse "Single", wenn du nun: Single T = ...; schreibst hast du eine Instanz der Klasse Single. Wenn du jetzt allerdings: Single T = ...; Single R = ...; Dann hast du zwei Instanzen. Wichtig ist das halt vor allem bei Programmierkonzepten wie z.B. dem "Singleton". Das selbe ist auch bei dir bei der Funktion der Fall wenn du eine Funktion mehrfach aufrufst hast du mehrere Instanzen, was wieder wichtig ist wenn in der Funktion eine statische Variable ist die zwischen den Aufrufen im Speicher gehalten wird. MfG
Fer T. schrieb: > Dann hast du zwei Instanzen. So isses. Bei OO bewirkt die Definition der Klasse zunächst mal garnichts ausser dass sie dem Compiler bekannt ist, erst wenn man eine Variable der Klasse vereinbart, wird Speicherplatz eingerichtet für eben diese Instanz der Klasse. Davon kann es natürlich viele geben, i.A. ist es so, dass der Programmcode der Klasse nur einmal vorhanden ist, die zugehörigen Daten aber für jede Instanz/Variable extra, um Platz zu sparen, aber ich würde mich da nicht für alle der vielen hundert Programmiersprachen drauf festlegen. Das ist auch nur wichtig, wenn man den Speicherbedarf berechnen will. Georg
Instanzia schrieb: > was genau ist eine Instanz beim Programmieren? Instanz in der EDV: http://www.bullhost.de/i/instanz.html Instanz-Handle: http://www.cpp-tutor.de/mfc/mfc/kap3/tut/tut5.htm
>dann ist ja diese Funktion "mehrfach" im >Speicher vorhanden nein, nur einmal und von Funktionen gibt es auch keine Instanzen ruft man eine Funktion "mehrfach" (rekursiv) auf, sind nur die (lokalen) variablen mehrfach im Speicher (im stack)
Ganz allgemein würde ich in der Programmierung eine Instanz als Exemplar einer Klasse definieren, wobei der Begriff der Klasse ebenso allgemein zu sehen ist. Beispiele für Klassen und Instanzen in unterschiedliche Kontexten:
1 | Klasse Instanz |
2 | ——————————————————————— |
3 | Variablentyp Variable |
4 | Funktionstyp Funktion |
5 | Objektklasse Objekt |
6 | Typklasse Typ |
7 | ——————————————————————— |
Die Liste der Beispiele lässt sich sicher noch erweitern.
Nach meinem Wissen wird der Begriff "Instanz" im Zusammenhang mit der Programmierung verwendet, seit es Multitasking bzw. Windows-OOP gibt. Es geht dabei auch darum, was passieren soll, wenn der Benutzer eine schon geöffnete Anwendung ein weiteres Mal startet. In WinAPI hatte früher das Programmfenster die Eigenschaft hPrevInstance, das Instanz-Handle eines zuvor schon geöffneten Fensters desgleichen Programms. War kein solches vorhanden, so war das Handle gleich 0. Übrigends: Schon bei GEM-Desktop, einer Grafikoberfläche mit Fenstern, wurden geöffnete Anwendungen, Dokumente u.a. zuweilen als Instanz bezeichnet.
Yalu X. schrieb: > Ganz allgemein würde ich Na so schlecht ist die Erklärung bei Wikipedia ja nun auch nicht, die deutsche Version ist villeicht etwas knapp. http://en.wikipedia.org/wiki/Instance_(computer_science) Hast Du Dir eigentlich schon mal Rust und Nimrod angesehen? Haskell ist für mich momentan ein "etwas zu großer Brocken" und der praktische Nutzen erscheint mir auch nicht wirklich groß.
Stefan S. schrieb: > Hast Du Dir eigentlich schon mal Rust und Nimrod angesehen? Ja, gestern. Ich habe dazu einen neuen Thread angefangen: Beitrag "Rust oder Nimrod als neue Hobbyprogrammiersprache?" Danke noch für den Tipp von damals. Aus eigenem Antrieb hätte ich mich wahrscheinlich nicht weiter mit diesen Sprachen beschäftigt ;-)
Yalu X. schrieb: > Typklasse Typ Das würde ich weglassen, weil die Vereinbarung eines Typs überhaupt nichts bewirkt, jedenfalls in keiner Sprache die ich kenne. Erst wenn man eine Variable des Typs vereinbart, den Typ also "benutzt", entsteht etwas Reales im Speicher. Richtiger wäre also, die Variable ist eine Instanz des Typs, aber das sagt niemand so weil es zu selbstverständlich ist. Ich sehe das so weil ich meine, eine Instanz müsste etwas Reales sein, Juristen sehen das vielleicht anders :-) Georg
Ob "etwas Reales im Speicher" entsteht ist völlig egal. Typklassen sind Schemata für eine ganze Reihe von Typen. Und der einzelne Typ ist dann eine Instanz davon, doch, das kann man schon sagen. Das ist völlig analog zu Klassen und Objekten. Oder Metaklassen und Klassen.
Instanzia schrieb: > was genau ist eine Instanz beim Programmieren? Der Begriff »Instanz« wird in der Regel beim OO verwendet. Du hast eine Klasse, rufst den Konstruktor auf (new), und nun hast du von dieser Klasse … ein Exemplar. Unsinnigerweise wird es aber meist »Instanz« genannt. Das ist im Deutschen in diesem Zusammenhang unverständlich. Es ist eine wörtliche Fehlübersetzung des englischen »instance«. Im englischen paßt das schon, dort sagt man ja auch »for instance« synonym für »for example«, so daß die Semantik stimmt. Im deutschen tut sie das aber nicht und deshalb ist »Instanz« ganz einfach falsch, da gibt es nix zu beschönigen. Die korrekte Übersetzung lautet »Exemplar«.
Die korrekte Übersetzung ist die, die etwa 100% der Sprachverwender wählen. Und das ist nunmal "Instanz". Dein Vergleich mit "for instance" ist ohnehin irreführend.
Georg schrieb: > Das würde ich weglassen, weil die Vereinbarung eines Typs überhaupt > nichts bewirkt, jedenfalls in keiner Sprache die ich kenne. Ich weiß jetzt nicht genau, was du mit "Vereinbarung" meinst. Der Begriff der Typklasse und deren Instanzen ist jedenfalls hier beschrieben: http://de.wikipedia.org/wiki/Typklasse_%28Informatik%29 oder etwas ausführlicher hier: http://en.wikipedia.org/wiki/Type_class
:
Bearbeitet durch Moderator
>Im deutschen tut sie das aber nicht und >deshalb ist »Instanz« ganz einfach falsch, da gibt es nix zu >beschönigen. >Die korrekte Übersetzung lautet »Exemplar«. Da haben die englischsprachigen Entwickler auf jeden Fall bessere Karten. Wenn ich programmiere, schreibe ich alle Kommentare in Englisch, damit die Programme auch international verstanden werden können. Meiner Meinung nach wäre es aber besser, man könnte alles in Deutsch schreiben, weil das nun einmal die Sprach ist, in der wir denken. Für die "native Speaker" ( upss, jetzt fange ich schon mit dem Denglisch an ) ist es auch viel einfacher die ganzen Klassenblbiliotheken zu verstehen. Wer weiß den schon intuitiv was ein Panel, ein Template oder ein Pattern ist?
und vielleicht noch mit Umlauten.. NEIN bitte nicht schon mal Excel verwendet..? diese SCH.. deutschen Funktionsnahmen.. wer ist nur auf so einen Blödsinn gekommen.. Panel = Tafel?? wer soll jetzt "intuitiv" wissen was eine Tafel ist?
:
Bearbeitet durch User
Das Problem bei der Verwendung englischsprachiger Begriffe durch nicht-englischsprachige Programmierer ist, daß die nicht-englischsprachigen Programmierer teilweise sehr individuelle Vorstellungen davon haben, was die englischsprachigen Begriffe bedeuten mögen, und sie dadurch bedingt in einer für des Englischen tatsächlich mächtigen bzw. Muttersprachler höchst verwirrenden Weise einsetzen. Das tritt insbesondere auf, wenn Begriffe, die Synonyme sind, in einem Kontext mit unterschiedlichen Bedeutungen besetzt werden.
marc schrieb: > Meiner Meinung nach wäre es aber besser, man könnte alles in Deutsch > schreiben Die Kommentare kannst du ja schreiben wie du willst bzw. wie deine Firma es verlangt. aber ein Programm wie "Für i = 1 ... Nächstes i" ist unbrauchbarer Mist. Ich verfahre da nach folgender Logik: Programmbefehle sind Englisch -> also wähle ich englische Variablen- und Funktionsnamen -> dann schreibe ich auch den Kommentar dazu in Englisch, weil das sonst höchst albern klingt. Wenn ich als Deutscher einen komplexen Sachverhalt in Englisch formulieren kann, habe ich ihn wahrscheinlich auch verstanden. Georg
Nun ist es ja auch so, dass wenn man gut Englisch spricht und eine großes Vokabular hat, es einem von anderen abhebt. Ich habe früher viele Fachbücher in Englisch gelesen und auch einige Dinge in Englisch geschrieben. Heute bin ich allerdings der Meinung, dass man in der eigenen Sprache viel besser denken kann und eine bessere Intuition hat. Der Nutzen der englischen Sprache zeigt sich in der weltweiten Kommunikation. Für das eigene Denken ist es aber eine Behinderung. Machbar, aber es kostet mindestens 30% der sonst anderweitig verwendbaren geistigen Resourcen. >schon mal Excel verwendet..? >diese SCH.. deutschen Funktionsnahmen.. >wer ist nur auf so einen Blödsinn gekommen.. Ja, ich weiß, das fand ich auch ziemlich nervig. ein IF ist ja auch viel kürzer als ein WENN. >aber ein Programm wie "Für i = 1 ... Nächstes i" ist >unbrauchbarer Mist. Das scheint mir nur Gewohnheit zu sein. Ein FÜR ist ja nicht länger als ein FOR. Umlaute im Compiler wären überhaupt sehr lustig.
marc schrieb: > Umlaute im Compiler wären überhaupt sehr lustig. Moderne Sprachen haben oft Unicode als Eingabezeichensatz, da kommt ein echtes lambda schon cool für Lambda-Funktionen. :-)
marc schrieb: >>schon mal Excel verwendet..? >>diese SCH.. deutschen Funktionsnahmen.. >>wer ist nur auf so einen Blödsinn gekommen.. > > Ja, ich weiß, das fand ich auch ziemlich nervig. ein IF ist ja auch viel > kürzer als ein WENN. In früheren Versionen von Excel wurden die verwendeten deutschen Schlüsselwörter direkt in der XLS-Datei gespeichert. Eine mit dem deutschen Excel erstellte Datei konnte somit nicht mit einem englischen Excel geöffnet werden und umgekehrt. Irgendwann sind die MS-Helden dann auf die Idee gekommen, dass es genügt, für jedes Schlüsselwöort ein Token abzulegen, was das obige Problem behebt und zudem Speicher spart.
Fritz schrieb: > Die korrekte Übersetzung ist die, die etwa 100% der Sprachverwender > wählen. Und das ist nunmal "Instanz". Doppelt falsch. Erstens wird ein Fehler durch Wiederholung nicht richtig. Zweitens hätte ein sprachkundiger Anwender in diesem Zusammenhang »instance« nicht mit »Instanz« übersetzt. Es hat sich halt eingebürgert, aber es ist nicht intuitiv verständlich, wofür unter anderem der OP ein Indiz darstellt. Ich erinner mich aber selber, wie ich Mühe hatte zu kapieren, was nun beim OO eine »Instanz« sein soll, und wie das Wort auch bei anderen Probleme verursacht hat, denen ich es zu erklären versuchte. Der das damals übersetzt hat, konnte halt weder gut genug englisch noch deutsch, sonst wär ihm das nicht passiert. > Dein Vergleich mit "for instance" ist ohnehin irreführend. Du hast ihn dann wohl nicht verstanden. Im übrigen geht's doch nicht darum, Schlüsselwörter einzudeutschen (wie bei Excel). Englisch eignet sich besser als Deutsch zum Substrat für Programmiersprachen, weil es eine schwach flektierene Sprache ist und einen größeren Lateinanteil im Wortschatz hat. Ist ja auch nur ein Krüppelenglisch, was man da so benutzt … IF, FOR, WHILE … Soll mir keiner erzählen, das sei eine Sprache. Manchmal ist halt die Fachlichkeit deutsch definiert. Und dann kommt irgendein Eumel und sucht mit LEO lauter englische Übersetzungen und das Resultat ist großer Käse, weil er halt dachte, englisch ist besser, aber selber gar nicht gut genug englisch konnte. Naja, und die exotischen Begriffe, die dabei herumkommen, sorgen regelmäßig für Stirnrunzeln und Mißverständnis, aber die sind dann in den API Stein gemeißelt. :) Und ich stimme demjenigen zu, der hier meinte, auch wenn man sehr gut englisch spricht, hat man damit 30 % geistige Mehrkosten. Mindestens. Und die meisten haben deutlich höhere Mehrkosten, auch wenn es ihnen vielleicht gar nicht bewußt ist. Hab ich oft gesehen, daß die Vorgabe von oben, alles auf englisch abzufassen, für eine drastische Reduktion der Doku sorgt, die überhaupt abgefaßt wird. Operation gelungen, Patient tot. Hab auch die Leute nie verstanden, die trotz mittelmäßiger eigener Englischkenntnisse alles englisch machen wollen. Wozu, um sich durch einen ukrainischen oder indischen Dienstleister ersetzbar zu machen? Mir ein Rätsel.
Micha Lu schrieb: >> Die korrekte Übersetzung ist die, die etwa 100% der Sprachverwender >> wählen. Und das ist nunmal "Instanz". > > Doppelt falsch. Erstens wird ein Fehler durch Wiederholung nicht > richtig. Wie immer in der Linguistik lacht man über Präskriptivisten wie dich. Linguistik wird deskriptiv betrieben. Und das kann man hier 1:1 drauf anwenden.
Michael schrieb: > Micha Lu schrieb: >>> Die korrekte Übersetzung ist die, die etwa 100% der Sprachverwender >>> wählen. Und das ist nunmal "Instanz". >> >> Doppelt falsch. Erstens wird ein Fehler durch Wiederholung nicht >> richtig. > > Wie immer in der Linguistik lacht man über Präskriptivisten wie dich. > Linguistik wird deskriptiv betrieben. Da klingst du aber reichlich präskriptiv. :) Ich hab ein paar Sprachen studiert und lache daher über Linguisten! :) Linguistik (die ahistorische) ist aufgeblasene Fremdwortschieberei ohne Erkenntnisgewinn. Ein Rangierbahnhof für Worthülsen. Hat mit Sprache nicht viel zu tun, eher mit Legosteinchen.
> Micha Lu
Du sprichst mir aus dem Herzen. Ich hätte nicht gedacht, dass es in der
Hinsicht Leute gibt, die ähnlich denken.
Hier noch ein schöner Beispielsatz aus einem englischen Lehrbuch, das
ich zur Zeit lese:
"In other forms, there is a supraesophageal ganglion giving rise to
dorsal and ventral longitudonal cords connected by commisural tracts".
Na, alles klar?
marc schrieb: > "In other forms, there is a supraesophageal ganglion giving rise to > dorsal and ventral longitudonal cords connected by commisural tracts". Naja, Marc, hier scheint es um die Artikulation zu gehen … auch wenn das schon wie eine Parodie klingt. Da führte dem Autor offenbar der Wille zum Fremdwort die Feder; das hätt man sicher einfacher sagen können. Immerhin ist Artikulation wichtig und manche Menschen leiden, wenn sie ihnen nicht gelingt; allerdings ist das meiner Meinung nach eine eher praktische als theoretische Frage (Gehör und Mundwerk schulen). Ich hob eher ab auf die sogenannte »generative Transformationsgrammatik« … :)
Robert L. schrieb: > diese SCH.. deutschen Funktionsnahmen.. > wer ist nur auf so einen Blödsinn gekommen.. Oh, ich erinnere mich noch an Diskussionen in der 1980er Jahren, in denen einige Leute forderten, dass in Deutschland nur noch Programmiersprachen mit deutschen Schlüsselwörtern verwendet werden sollten. Es gab auch SAAKA(*)-Dialekte für den Schulunterricht, die alles viel einfacher machen sollten. Taten sie aber nicht. Einige früher Assemblersprachen, z.B. für Zuse-Rechner, basieren auf der deutschen Sprache, ebenso auch einige Konventionen bei Siemens-SPS, z.B. E für Eingang und A für Ausgang. Den Vogel abschießen tun aber Begriffe wie "Prozesssignalformersteuerung" aus der Prozessrechentechnik. (*): "Symbolischer Allzweckanweisungskode für Anfänger" = BASIC
Micha Lu schrieb: > Die korrekte Übersetzung lautet »Exemplar«. Schönen dank, das macht das ganze endlich mal klar. Fritz schrieb: > Die korrekte Übersetzung ist die, die etwa 100% der Sprachverwender > wählen. Und das ist nunmal "Instanz". Das würde ich jetzt mal eher mit "gebräuchliche" Übersetzung umschreiben. Korrekt ist etwas anderes, eine Instanz ist im deutschen ein Verfahrensabschnitt was man von einer Variable wohl kaum behaupten kann.
Andreas Schweigstill schrieb: > Oh, ich erinnere mich noch an Diskussionen in der 1980er Jahren, in > denen einige Leute forderten, dass in Deutschland nur noch > Programmiersprachen mit deutschen Schlüsselwörtern verwendet werden Was ja sinnlos ist da man die Bedeutung dieser Worte so oder so lernen muss und gleich das original nehmen kann. Etwa anderes ist die Begriffserklärung. Da hilft es wenig darauf rumzureiten das min. 110% aller Fachleute diesem oder jenen verwenden. Vor allem nicht wenn er nur Sinn macht wenn man die Bedeutung schon kennt. Mein Liebligstransformer ist regular expressions. Die 110% Fachleute machen daraus "reguläre Ausdrücke" was außerhalb mathematischer Fakultäten exakt 0,0% Sinn macht.
X4U schrieb: > Mein Liebligstransformer ist regular expressions. Die 110% Fachleute > machen daraus "reguläre Ausdrücke" was außerhalb mathematischer > Fakultäten exakt 0,0% Sinn macht. In diesem Fall finde ich die englische und die deutsche Version etwa gleich gut bzw. schlecht. Aber fast jeder, der sich mit diesen Dingern ernsthaft beschäftigt, sagt sowieso nur "regex" :)
Micha Lu schrieb: > Linguistik (die ahistorische) ist aufgeblasene Fremdwortschieberei ohne > Erkenntnisgewinn. Weil es auch nur diese gibt. Guck mal über deinen Tellerrand.
gerade das verwenden von "neuen" Wörter (also eigentlich alte Wörter mit neuer Bedeutung) ist doch sehr Praktisch gibt es doch überall diese "Fachwörter" (das verstehen dann eben nur die "vom Fach" warum das Praktisch ist..) sagt man Instanz, weiß jeder was gemeint ist Exemplar könnte alles mögliche sein .. (abgesehen davon, ist Deutsch immer noch eine lebende Sprache, da kommen eben manchmal Wörter/Bedeutungen hinzu... "Handy" z.b. )
>abgesehen davon, ist Deutsch immer noch eine lebende Sprache
Deutsch ist auch eine sehr schöne Sprache -- solltest Du vielleicht auch
mal lernen!
Micha Lu schrieb: > Naja, und die exotischen > Begriffe, die dabei herumkommen, sorgen regelmäßig für Stirnrunzeln und > Mißverständnis, aber die sind dann in den API Stein gemeißelt Achja, Klassiker bei KOMA-Script: "pointednumbers" und "pointlessnumbers". Kommt vor :-)
Walter Tarpan schrieb: > Achja, Klassiker bei KOMA-Script: "pointednumbers" und > "pointlessnumbers". In der Doku von KOMA-Script steht seit einiger Zeit eine entsprechende Anmerkung:
1 | Note that the opposite of pointednumbers is not pointlessnumbers! |
Dumm ist halt, dass man, wenn so eine Software erst einmal im Umlauf ist, der Optionsname nicht mehr ohne weiteres ändern kann :) Auch bei den Fans vom "point-free programming style" ist die (dort aber absichtliche) Verwechslung mit "pointless" längst zu einem Running Gag geworden.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.