Achtung: Dies ist eine historische Web-Site. Aktuell ist https://rainer.gerhards.net/ (engl) bzw https://www.rainer-gerhards.de/ (deutsch). Alle dynamischen Funktionen, Formulare etc auf dieser Seite sind abgeschaltet.
Datenschutzerklärung Impressum

 
Aug 01, 2017 - 06:46 PM


Select language
Preferred language:


Online
There are 1 unlogged user and 0 registered users online.

You can log-in or register for a user account here.

Anmeldung




 


 Log in Problems?
 New User? Sign Up!



Post new topic   Reply to topic
View previous topic Printable version Log in to check your private messages View next topic
Author Message
rgerhardsOffline
Post subject: Globale Sichtbarkeit von Datentypen  PostPosted: Oct 20, 2008 - 09:09 PM



Joined: Sep 25, 2006
Posts: 688

Status: Offline
Anmerkung: "Global" ist eigentlich nicht ganz korrekt. Genau handelt es sich um Definitionen, die auf höherer Ebene als die aktuelle getroffen wurden. Der Einfachheit halber wird hier aber einfach von "global" gesprochen, was bei einfachen Aufgaben auch korrekt ist.

Auf globale Variablen soll (aus guten Gründen) nicht in Prozeduren und Funktionen zugegriffen werden. Für Typen gilt diese Restriktion nicht. Es kommt hin und wieder die Frage auf, warum das denn so ist und ob das überhaupt sinnvoll ist. Hier möchte ich eine Begründung aus meiner Sicht liefern.

Bei Typen ist globale Sichtbarkeit meiner Meinung nach eine Grundvoraussetzung. Warum? Wenn ich den "gleichen" Typen an zwei verschiedenen Stellen definieren würde, so wären es ja keine identischen Typen, sondern zwei verschiedene: eben a) der Typ der an Stelle 1 definiert wurde und b) die gleichnamige Typ, der an Stelle 2 (also einem anderen Kontext) definiert wurde. Damit wären aber auf einmal keine Typgleichen Variablen mehr möglich und man könnte folglich auch nichts mehr ohne implizite Typanpassung übergeben.

Man könnte jetzt sagen: gleicher Name - gleicher Typ und den Kontext ignorieren. Dann hat man aber nichts anderes gemacht, als letztlich doch globale Sichtbarkeit bewirkt und obendrein die Möglichkeit genommen, gleichnamige Typen in verschiedenen Kontexten zu definieren (was eh ne blöde Idee ist, aber immerhin...). Ein schwerwiegenderer Defekt einer solche Lösung wäre, dass man nun überall identische Definitionen schreiben müsste, obwohl der Typ per Definition doch der gleiche wäre.

Diese Regel wäre somit sinnlos, würde unnütz Arbeit verusachen und wäre obendrein eine grosse Fehlerquelle.
 
 View user's profile Send private message  
Reply with quote Back to top
aschunkOffline
Post subject: Globale Sichtbarkeit von Datentypen  PostPosted: Nov 30, 2008 - 09:47 AM



Joined: Oct 03, 2008
Posts: 313

Status: Offline
Soweit ich mich erinnere unterscheidet man in prozeduralen Programmiersprachen traditionell zwischen global und lokal, wobei lokal ja nur bedeutet,
dass eine Variable in einem bestimmt Kontext sichtbar ist.

Auch in Java oder C++ gibt es das Konzept von globalen und lokalen Variablen.
Das Problem dabei ist ja, dass mein zum Beispiel eine Variable, die man schon global - also zum Beispiel Programmglobal wie in Pascal oder Klassenglobal wie in Java - definiert hat und nun plötzlich in einem Block oder einer Schleife diese Variable noch mal verwenden möchte.

Das Problem tritt häufig bei sogenannten Laufvariablen auf wie i, j, k usw. die man auch im Programm oder in einer Klasse global verwendet.

Meines Erachtens ist es hier besesr, bei globalen Variablen sprechende Namen zu benutzen und einfache Variablen für Laufvariablen oder lokale Kontexte zu verwenden.
 
 View user's profile Send private message  
Reply with quote Back to top
aschunkOffline
Post subject: Globale Sichtbarkeit von Datentypen  PostPosted: Nov 30, 2008 - 09:47 AM



Joined: Oct 03, 2008
Posts: 313

Status: Offline
Dieser Thread würde glaube ich besser in das Forum imperative Programmierung passen.
 
 View user's profile Send private message  
Reply with quote Back to top
rgerhardsOffline
Post subject: Globale Sichtbarkeit von Datentypen  PostPosted: Nov 30, 2008 - 09:51 AM



Joined: Sep 25, 2006
Posts: 688

Status: Offline
Übersehe ich etwas: der steht doch in imperative Programmierung?

Zum inhaltlichen Kommentar: klar, globale Variablen sollten nur verwendet werden, wenn es sehr gute Gründe dafür gibt. Und sie sollten auf jeden Fall sprechend sein. Meiner Meinung nach sollten Namenskonflikte grundsätzlich vermieden werden.
 
 View user's profile Send private message  
Reply with quote Back to top
Loki000Offline
Post subject:   PostPosted: Dec 18, 2014 - 10:47 AM



Joined: Dec 18, 2014
Posts: 1

Status: Offline
Man könnte jetzt sagen: gleicher Name - gleicher Typ und den Kontext ignorieren. Dann hat man aber nichts anderes gemacht, als letztlich doch globale Sichtbarkeit bewirkt und obendrein die Möglichkeit genommen, gleichnamige Typen in verschiedenen Kontexten zu definieren (was eh ne blöde Idee ist, aber immerhin...). Ein schwerwiegenderer Defekt einer solche Lösung wäre, dass man nun überall identische Definitionen schreiben müsste, obwohl der Typ per Definition doch der gleiche wäre.

_________________
NAT
 
 View user's profile Send private message  
Reply with quote Back to top
Display posts from previous:     
Jump to:  
All times are GMT + 1 Hour
Post new topic   Reply to topic
View previous topic Printable version Log in to check your private messages View next topic
Powered by PNphpBB2 © 2003-2007 The PNphpBB Group
Credits
:: RSS Feed: ::
Page created in 0.15330696106 seconds.

Ferientips - das Urlaubsweb - Jan Gerhards - Ulrike Gerhards - Ulrike Gerhards Foto Site