gtkmm
gtkmm är ett C++-omslag för GTK, ett bibliotek som används för att skapa grafiska användargränssnitt. Det är licensierat under licensen LGPL, så du kan utveckla öppen programvara, fri programvara eller till och med kommersiell icke-fri programvara med gtkmm utan att köpa licenser.
gtkmm kallades ursprungligen gtk-- eftersom GTK i början hette GTK+ och hade ett + i namnet. Men eftersom -- inte lätt kan indexeras av sökmotorer så gick paketet allmänt under namnet gtkmm vilket vi sedan höll oss till.
Varför använda gtkmm i stället för GTK?
gtkmm låter dig skriva kod med vanliga C++-tekniker som inkapsling, härledning och polymorfism. Som C++-programmerare inser du förmodligen redan att detta leder till tydligare och bättre organiserad kod.
gtkmm är mer typsäkert, så kompilatorn kan upptäcka fel som bara skulle upptäckas vid körning om du använde C. Denna användning av specifika typer gör också API:t tydligare eftersom du kan se vilka typer som ska användas bara genom att titta på en metods deklaration.
Arv kan användas för att härleda nya komponenter. Härledandet av nya komponenter i GTK:s C-kod är så komplicerad och inbjudande till fel, så att nästan inga C-kodare gör det. Som C++-utvecklare vet du att härledning är en viktig teknik i objektorientering.
Medlemsinstanser kan användas vilket förenklar minneshantering. Alla C-komponenter i GTK hanteras genom användning av pekare. Som C++-kodare vet du att pekare ska undvikas när möjligt.
gtkmm innefattar mindre kod än GTK, vilket använder prefixade funktionsnamn och många typkonverteringsmakron.
gtkmm jämfört med Qt
Trolltechs Qt är den närmaste konkurrenten till gtkmm, så det förtjänar att diskuteras.
gtkmm-utvecklare tenderar att föredra gtkmm över Qt för att gtkmm gör saker på ett mer C++-aktigt sätt. Qt härstammar från en tid då C++ och standardbiblioteket varken standardiserats eller stöddes ordentligt av kompilatorer. Det duplicerar därför mycket saker som nu är i standardbiblioteket, som behållare och typinformation. I synnerhet modifierade Trolltech C++-språket så det tillhandahöll signaler, så Qt-klasser kan inte lätt användas med klasser som inte är Qt. gtkmm kunde använda standard-C++ för att tillhandahålla signaler utan att ändra C++-språket. Se frågor och svar för mer detaljerade skillnader.
gtkmm är ett omslag
gtkmm är inte en inhemsk C++-verktygslåda, utan ett C++-omslag för en C-verktygslåda. Denna uppdelning av gränssnitt och implementation har fördelar. Utvecklarna av gtkmm spenderar sin mesta tid åt att prata om hur gtkmm kan erbjuda det klaraste API:t, utan klumpiga kompromisser på grund av obskyra tekniska detaljer. Vi bidrar lite grann till den underliggande GTK-kodbasen, men så gör även C-kodarna, Perl-kodarna och Python-kodarna o.s.v. Därigenom drar GTK nytta av en bredare användarbas än språkspecifika verktygslådor - det finns fler implementatörer, fler utvecklare, fler testare, och fler användare.