Static typing

September 29, 2006 – 4:48 am

Statička rezolucija tipova (static typing) je svojstvo nekih programskih jezika (C, C++, C#, Java, Pascal, …) da već prilikom kompajliranja imaju imaju (traže) dovoljno informacija o tipovima varijabli, što bi trebalo pomoći u ranijem otkrivanju trivijalnih pogrešaka uzrokovanim korištenjem krivih varijabli ili korištenjem varijabli na krivi način.

E, to u sprezi sa iole kompleksnijim libraryima ne funkcionira baš najbolje. Primjer je tipičan callback iz glib-a, funkcija koja iterira nad elementima GHashTable-a:

void g_hash_table_foreach (GHashTable *hash_table, GHFunc callback, gpointer user_data);

Problem je u ovom zadnjem. User-data pointer obično služi za prenošenje konteksta kojeg koristi callback funkcija. Iako zgodna ideja (pametnije od globalnih varijabli), ruši cijeli gorespomenuti koncept. Pa tako umjesto:

NekaStruktura *foo = bar(...); g_hash_table_foreach (table, callback, foo);

napravite

NekaStruktura *foo = bar(...); g_hash_table_foreach (table, callback, &foo);

i 2 sata tražite grešku u kodu, i onda frustrirani pišete ovaj blog post u 5 ujutro ;-)

  1. 2 Responses to “Static typing”

  2. heheh, prijeđi na Javu i nemaš frke, a i dalje imaš Strong Typing. :-)

    By Igor on Nov 13, 2006

  3. Uh, možda ipak radije ne. Nekako preferiram C# ako baš moram.

    Doduše, kako je sad Java GPL, ima i za nju nade :)

    By senko on Nov 13, 2006

Post a Comment