Was aus dem normalen Wahnsinn eines Softwareentwicklers...

Hinweise auf besondere Websites, Vorstellung eigener Websites, Internet-Smalltalk
Antworten
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Was aus dem normalen Wahnsinn eines Softwareentwicklers...

Beitrag von Xin » Mi Mai 22, 2013 5:16 pm

Ich muss derzeit ein Datenformat in C++ repräsentieren können. Ich weiß nicht, wer sich das ausgedacht hat, aber für die Jüngeren unter euch, das ganze ist vermutlich FSK 18.

So sind da zum einen Primitive Datentypen, die zum Beispiel aus einem Integer oder einem Real oder einem String bestehen. Dann gibt es Primitive Datentypen, die aus mehreren Ints, oder mehreren Reals bestehen.
Weiterhin gibt es Primitive, die aus einem anderem Primitiv bestehen. So kann ein PositiveInteger aus einem Integer bestehen. Oder eben aus mehreren Primitiven, die in Listen, Sets, Bags oder Arrays angeordnet sind, die von ... bis ... Elemente enthalten können.
Ein Punkt ist zum Beispiel ein Liste mit einem, zwei oder bis zu drei, also nicht vier oder mehr, Primitiven "Längeneinheit", wobei Längeneinheit ein Real ist. Ja, Liste...

Aus diesen Primitiven werden dann Strukturen gebildet. Strukturen bestehen aus Primitiven oder Referenzen auf andere Strukturen. Oder eben Listen, Set, Bags oder Arrays von Primitiven oder Referenzen auf andere Strukturen.
Außerdem können Strukturen von einer anderen Struktur abgeleitet sein.
Weiterhin gibt es sogenannte Selects. Das sind Mengen von Strukturen. Ein Select referenziert eine andere Struktur oder Primitiv, die/das für diesen Select-Datentyp vorgesehen ist. Diese sind aber nicht irgendwie verwandt, sonst würde man ja eine Oberklasse referenzieren.

Member können Optional sein. Das gilt auch für Listen, Sets, ... und Selects.
Wenn ein Member nicht optional ist, dann ist er verpflichtend. Er muss also angegeben werden.

Außer: Er wird übersprungen. So gibt es im Textdateiformat ein Zeichen, das angibt, dass der optionale Parameter nicht angegeben wird und es gibt ein Zeichen, dass der Parameter übersprungen wird. Übersprungene Parameter müssen aber nicht optional sein, sondern können verpflichtend sein. So schreibe ich gerade eine Template-Klasse, die für Parameter repräsentiert, die zwangsweise genannt werden müssen, also nicht optional sind, aber übersprungen werden dürfen.
Man könnte auch sagen, ich baue gerade eine Ampel mit einem Rotlicht, die man ignorieren darf, wenn man drüberspringen kann...

Somit gibt es verpflichtende Felder, also nicht optional sind, die aber nicht gesetzt werden können, weil sie übersprungen wurden, aber auf eine beliebige Auswahl von Klassen zeigen könnten, wenn sie gesetzt wären. Gleichzeitig muss ich Datentypen haben, die optional referenzierend und überspringbar sein müssen. Oder Listen, die optional (was ja nicht das gleiche wie "leer" bedeutet) sind, referenzieren oder übersprungen wurden.
Eine optionaler Datentyp kann also nicht angegeben werden oder übersprungen werden, weswegen man damit auch nichts machen kann, er aber auch nichtmals "nicht angegeben" werden kann, was sich von "nicht angegeben" halt unterscheidet.

Damit das nicht zu einfach ist, bezieht sich das Dateiformat auf Dinge, die noch nicht beschrieben sein müssen. Jede Zeile beschreibt eine Datenstruktur, die Zeilen sind durchnummeriert. Das heißt, vor jeder Zeile steht eine Nummer. Das bedeutet aber nicht, dass die Nummern fortlaufend oder in Reihenfolge wären. Die Nummern können rein willkürlich sein. Dazwischen können auch beliebige Lücken sein.
Wenn ich nun eine Struktur einlese und etwas angegeben ist und das auf etwas referenziert, heißt das nicht, dass ich das, was referenziert wird, bereits kennen müsste oder wüsste, wo oder ob ich das in der Datei überhaupt finde. Da es keine "includes" gibt, weiß ich nur, dass wenn ich es am Ende der Datei nicht gefunden habe, die Datei halt kaputt ist. Als Hinweis: Hier wird nur eine Baumstruktur abgebildet, kein Graph!


Nur, damit man sich der Konsequenz dieses Formates kurz bewusst wird. Bei einer Ampel, die Rot anzeigen kann, aber trotzdem übersprungen werden darf, muss ich nun denjenigen, die Grün haben nun überall erklären, dass grün nicht bedeutet, dass der Querverkehr hält, sondern dass man bei Grün erst anhalten muss und nachgucken, ob derjenige bei Rot auch stehengeblieben ist, weil er dazu verpflichtet ist oder ob er die Ampel einfach überspringt und damit die Software per Segmentation Fault (verpflichtend, aber trotzdem NullPointer) crasht...

Das Format ist übrigens internationaler Standard. Dafür habe ich echt nicht studiert...
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

GilbertDur
Beiträge: 105
Registriert: Fr Mär 01, 2013 10:31 am

Re: Was aus dem normalen Wahnsinn eines Softwareentwicklers.

Beitrag von GilbertDur » Do Mai 30, 2013 5:22 pm

klingt pervers, vor allem weil es ein Standard ist :cry:

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Was aus dem normalen Wahnsinn eines Softwareentwicklers.

Beitrag von Xin » Do Mai 30, 2013 11:35 pm

GilbertDur hat geschrieben:klingt pervers, vor allem weil es ein Standard ist :cry:
Auf die Frage, ob wir einen Standardvorgehen in einem Fall haben, antwortete meine Entwicklungsleiterin vollen Ernstes, dass wir da mehrere Standards haben.

Pervers ist das neue Normal. ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

GilbertDur
Beiträge: 105
Registriert: Fr Mär 01, 2013 10:31 am

Re: Was aus dem normalen Wahnsinn eines Softwareentwicklers.

Beitrag von GilbertDur » Sa Jun 01, 2013 9:19 pm

hmm, vertraust du deiner Entwicklungsleiterin? :D
das klingt alles so unnatürlich und unwirklich :mrgreen:

Benutzeravatar
darksider3
Beiträge: 347
Registriert: Fr Sep 14, 2012 6:26 pm
Wohnort: /dev/sda1
Kontaktdaten:

Re: Was aus dem normalen Wahnsinn eines Softwareentwicklers.

Beitrag von darksider3 » So Jun 02, 2013 6:45 pm

Und da dachte man mal, dass Standards das Leben einfacher machen sollen - Da haben die aber echt einen guten Scherz gebracht^^
effizienz ist, wenn ich ein loch bohre und hinterher mein nachbar auch ein bild aufhängen kann... ^^
Meine Homepage und der Microblog von mir :)
Live Life dont let Life Live You!
Am meisten Aktiv in Webentwicklung und PHP im Wiki

Antworten