Libwayne

Libwayne is een bibliotheek met redelijk abstracte datatypes en algoritmen geschreven in C.
Download nu

Libwayne Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • LGPL
  • Prijs:
  • FREE
  • Naam uitgever:
  • Wayne Hayes
  • Uitgever website:
  • http://www.cs.toronto.edu/~wayne/libwayne/

Libwayne Tags


Libwayne Beschrijving

Libwayne is een bibliotheek met redelijk abstracte datatypes en algoritmen geschreven in C. Libwayne is een bibliotheek met redelijk abstracte datatypes en algoritmen geschreven in C.De algoritmen in Libwayne zijn in geen geval origineel. Velen van hen worden woordelijk gemaakt van tekstboeken over datastructuren en algoritmen, en ik vertaalde ze eenvoudig in C. Ze omvatten efficiënte en correcte routines voor prioritaire wachtrijen, gebeurtenisgestuurde simulaties, wachtrijen, stapels, binaire bomen, sets van gehele getallen, grafieken ( De knooprandsoort), sommige combinatorische routines, ODE-integratieroutines, een eenvoudig statistiekenpakket en een matrix-vectorbibliotheek. Fany van de routines (heap, stapel, wachtrij, bintree) kunnen werken met willekeurige objecten, niet alleen gehele getallen. Vergelijkingen worden gedaan met aanwijzingen tot vergelijkingsfuncties, vergelijkbaar met de standaard QSORT van ANSI C. Deze bibliotheek is niet bedoeld om compleet te zijn; Ik schrijf de routines als ik ze nodig heb, maar alleen hoogwaardige code gaat naar Libwayne.Een ding dat veel mensen me vragen, is `` Waarom heb je geen C ++ gebruikt? '' Zonder in een lange tirade te gaan, volstaat het Dat, hoewel ik geen C ++ -deskundige ben (eigenlijk, de enige dingen die ik niet heb geleerd in intieme details zijn sjablonen), ik weet genoeg C ++ om te beseffen dat het niet de BE-ALLES is, eindig alle programmeertalen. In feite, na enkele jaren van C ++ in de buurt, begint het al een langzame vervaging in de geschiedenis, waarbij Java zijn opvolger is --- en niet een zeer goede, daarom het risico om te klinken als het 40-50 jaar Olds die er nog steeds aandringen dat Fortran een goed genoeg taal is voor alles, ik zal een 30-iets zijn dat erop staat, totdat iets beter langskomt, C is nog steeds een goede taal van het hele doel om zwaar, gegevens te schrijven -structuurintensieve programma's. Ik geloof dat het Dennis Ritchie was die zoiets zei, "C is zelden de beste taal voor een bepaalde taak, maar het is vaak de op één na beste," de implicatie is dat het beter is om de ene beste taal te leren, dan om een nieuwe taal te leren voor elke programmeertaak. (Men zou hetzelfde kunnen zeggen van Engels.) Ik begon Libwayne toen ik me realiseerde dat ik constant kleine stukjes code opnieuw had geschreven die belangrijke dingen hebben gedaan die in de C-norm zouden moeten zijn, maar dat niet zijn. Hoe vaak hebt u bijvoorbeeld code als volgt geschreven: if ((p = malloc (n)) == null) / * of een andere fatale foutconditie * / {fprintf (Stderr, "fout:% sn", err_msg ); EXIT (1);} Ik heb er ziek van. Bovendien wilde ik vaak meer weten over waarom mijn programma faalde. Dus ik schreef fataal. Hier is het prototype: void fataal (char * fmt, ...); / * genereert een beweringstoring * / Het maakt gebruik van varargs, zodat u het een willekeurige lijst van uitvoerargumenten net als printf kunt doorgeven, maar het genereert een beweringstoring, zodat als u het onder een debugger uitvoert, waarvan u het programma goed kunt uitvoeren het sterft. Het bleek alleen de eerste functie te zijn die ik heb geschreven voor Libwayne, en het werd in een bestand gebeld genaamd "Misc.c" dat ik begon, waaronder in de meeste code die ik schreef. Een ander vroeg lid van de bibliotheek was MALLOC, die fataal oproept als de standaard MALLOC mislukt .Eventueel "Misc.c" begon behoorlijk groot te worden, met macro's voor Min, Max, ABS, SQR, enz., Dus heb ik misc.h en gecompileerd gemaakt Misc.c in een objectmodule. Dat was ongeveer 1993. Over die tijd begon ik te beseffen dat we, althans in C hebben, we een manier nodig hebben om 'objecten' rond te passeren op een redelijk transparante manier, maar soms willen we aanwijzingen behandelen als gehele getallen. Dit maakt het zweet van sommige mensen (mijn eigen inbegrepen), dus vond ik het vele datatype, dat is (je raadde het) een unie van (ongeldig *) en (int). Toen ik begon met het toevoegen van meer complexe algoritmen aan Libwayne, telkens nodig ze. Elk stuk van Libwayne is geschreven omdat ik het nodig had, maar alleen dingen die ik zorgvuldig tijd maakte om goed in Libwayne te gaan. Elk algoritme dat objecten moet vergelijken, heeft een vergelijkingsfunctie nodig zoals die die wordt gebruikt door de ANSI-standaard QSort-routine.


Libwayne Gerelateerde software