Static typing
September 29, 2006 – 4:48 amStatič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 ;-)


2 Responses to “Static typing”
heheh, prijeđi na Javu i nemaš frke, a i dalje imaš Strong Typing. :-)
By Igor on Nov 13, 2006
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