[PB4 B11] kleiner Fehler mit Shared

Fragen und Bugreports zur PureBasic 4.0-Beta.
Heroglyph
Beiträge: 41
Registriert: 22.11.2004 20:34

Beitrag von Heroglyph »

Dazu muss ich auch mal meinen Senf dazugeben.
Das information hiding des objektorientierten Konzepts gibts ja nicht erst seit C++, auch viele prozedurale Sprachen unterstützen das schon (als prominentes Beispiel C).
Dort wird das so realisiert, dass man in einer Datei eine Variable im oberen Level als static deklariert und nur die Prozeduren innerhalb der Datei sie wie eine globale Variable behandeln dürfen (klappt auch mit Prozeduren).
Ich würde mir wünschen, wenn dieses Konzept auch seinen Weg in PureBasic finden würde; das sollte eigentlich nicht besonders schwer sein, da müssen imho nur Symboltabelle und Parser leicht modifiziert werden.

Damit wäre es jedenfalls möglich, geteilte Variablen zu verwenden, ohne Namen aus dem globalen Scope zu "verschwenden".
Das geht zwar prinzipiell jetzt auch, allerdings muss man, wenn man modular programmieren möchte, immer so komische, lange Namen für die geteilten Variablen verwenden, damit sie sich nicht mit potentiellen globalen überschneiden.
God is real, unless declared integer.
Benutzeravatar
jear
Beiträge: 288
Registriert: 17.10.2004 01:59
Wohnort: Ammerland

Beitrag von jear »

Heroglyph hat geschrieben:Ich würde mir wünschen, wenn dieses Konzept auch seinen Weg in PureBasic finden würde; das sollte eigentlich nicht besonders schwer sein, da müssen imho nur Symboltabelle und Parser leicht modifiziert werden.
Es würde wahrscheinlich genügen, das Schlüsselwort Shared bei jeder Definition zur Pflicht zu machen. Damit würde der jetztige ungute Zustand beseitigt, dass eine irgendwie definierte Variable des Hauptprogrammes mit den in Prozeduren als Shared definierten Variablen identisch wird, ohne dass man dies will.
Will man es, genügt die Definition per Shared.
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Variablen werden nicht definiert, sondern
1.) Deklariert - Einem Datentyp zugewiesen
2.) Initialisiert - Wert zugewiesen

Konstanten, Strukturen, ... werden definiert.

Mit Shared/Protected/Global/Define(DefType)/... werden sie deklariert und sind dann vorhanden und bereit zum beschreiben.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

DarkDragon hat geschrieben:Variablen werden nicht definiert ...

...Define(DefType)/... werden sie deklariert und sind dann vorhanden und bereit zum beschreiben.
:mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ts-soft hat geschrieben:
DarkDragon hat geschrieben:Variablen werden nicht definiert ...

...Define(DefType)/... werden sie deklariert und sind dann vorhanden und bereit zum beschreiben.
:mrgreen:
...das ist wahrscheinlich Franglais... sollte wohl besser Declare heißen, wa?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Gesperrt