Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

1

07.11.2008, 07:50

Token

Hallo,
bei diesen Programmierer-Contests hier hört man immer das Wort Token.
Was ist das? Und was machen die?

Und wie kann man sich vor ihnen schützen? :D

Wäre nett wenn mir das mal jemand erklärt.

Asmodiel

Treue Seele

Beiträge: 150

Wohnort: Schweiz

Beruf: Applikationsentwickler

  • Private Nachricht senden

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

3

07.11.2008, 08:35

Tok, tok.
Wer ist den da?
Ein Token. :)

Ein Token ist eine Einheit, die vom Compiler als ganzes behandelt wird. Sprich z.B

C-/C++-Quelltext

1
int  var = 0; // 5 Token


Eigentlich alles, was mit beliebig vielen (>0) Leerzeichen dazwischen schreiben kann, ohne, dass sich der generierte Programm Code verändert.

C-/C++-Quelltext

1
var      ++        ; // 3 Token ++ ist eine Instruktion

4

07.11.2008, 14:16

Den Begriff gibt es auch beim Poker. ;)

Also ein allgemeiner Begriff.

Mordrak

1x Contest-Sieger

Beiträge: 121

Wohnort: München

Beruf: Junior IT Consultant

  • Private Nachricht senden

5

07.11.2008, 15:20

Re: Token

Zitat von »"Errschaffer"«


Und wie kann man sich vor ihnen schützen? :D


Das geht nur auf sehr rabiate Weise durch die gezielte Vernichtung :badgrin:

Also z.B. aus den 8 Token in

Quellcode

1
2
unsigned int blah;
blah=1;


kann man z.B. durch den Einsatz von der Kettensäge aus stress.exe mehrere Token rausschneiden, so dass es nur noch 5 Token sind:

Quellcode

1
2
unsigned     blah
    =1;


Die weggeschnibbelten Tokens einfach entsorgen (ich hab´ das schonmal vorbereitet) :D

Grüße,
Mordrak
What's yellow and equivalent to the axiom of choice? The Lemmon of Zorn!

6

07.11.2008, 16:06

Hm, das finde ich aber nicht gerade optimal. Wird so der Code nicht oft sehr hässlich, gerade weil man z.B. unsigned statt unsigned int schreibt und auch bei anderen, semantisch identischen Möglichkeiten eher die unübersichtliche (kurze) wählt? Es passiert wahrscheinlich auch nicht selten, dass man dadurch sehr komplexe Ausdrücke mit Mehrfachzuweisungen, Inkrementierungen und vielen Funktionsaufrufen hat... :roll:

Naja, ich kann mir vorstellen, dass eine "gute" Implementierung eines Tokencounters alles andere als einfach ist, und sich der Aufwand nicht lohnt...

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

7

07.11.2008, 16:13

Zitat von »"Nexus"«


Naja, ich kann mir vorstellen, dass eine "gute" Implementierung eines Tokencounters alles andere als einfach ist, und sich der Aufwand nicht lohnt...


Wieso? Was soll daran so kompliziert sein?
@D13_Dreinig

8

07.11.2008, 16:29

Zitat von »"David_pb"«

Wieso? Was soll daran so kompliziert sein?
Du kannst dir nicht vorstellen, was an einer nahezu semantischen Analyse des Codes schwierig sein soll? :roll:

Unter anderem, Redundanzen wie die folgenden rauszuoptimieren:

C-/C++-Quelltext

1
2
int x;
x = 3;

C-/C++-Quelltext

1
2
3
4
5
6
7
8
if (x <= 3)
{
    x = 3;
}
else
{
    x = (3*x)/2;
}

C-/C++-Quelltext

1
2
3
4
5
6
double d = 3.14;
double c = 4.67;
d *= arr[x];
arr[x] -= 3;
++x;
c += d;
Vor allem letzteres könnte man zum Beispiel auf Kosten der Übersichtlichkeit recht zusammenfassen. Und eine Automatisierung von solchen Dingen hat man nicht so schnell, schnell geschrieben. Das geht schon Richtung Compilerbau...

Und auch von solchen Code-Stücken abgesehen: Verzichtet man da nicht fast immer auf einigermassen sauberen Code? Ich denke, Const-Correctness und Referenzübergabe etc. werden wohl weitgehend ignoriert.

Aber eben, es geht ja in den Contests um Kürze des Codes, da spielt Übersichtlichkeit wahrscheinlich keine grosse Rolle. Ich wollte eigentlich nur fragen, ob Contests dieser Art nicht sehr häufig auf ein Riesengefrickel hinauslaufen...

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

9

07.11.2008, 16:39

Zitat von »"Nexus"«


Unter anderem, Redundanzen wie die folgenden rauszuoptimieren


Ich weiß nicht was du unter Tokencounter verstehst. Aber meiner Meinung nach gehört sowas nicht zum Aufgabenfeld eines solchen...
@D13_Dreinig

10

07.11.2008, 16:50

Ja, meiner Ansicht nach eigentlich auch nicht.

Ursprünglich habe ich mich ja gewundert, ob der Code aufgrund von Token-Verkürzungen nicht unlesbar werde. Dann merkte ich an, dass ein "guter" Counter (der lesbaren Code gleich bewerten würde) kaum umzusetzen ist. Wobei man hier nicht unbedingt mehr von Token spricht, aber es ging mir ums Grundsätzliche.

Werbeanzeige