Libraries you love/hate.

Started by
19 comments, last by 255 19 years, 7 months ago
Like the subject says, I'd like to hear about which libraries, APIs, engines, frameworks, ... people here enjoy or despise and why. Here you can praise the libraries that you think deserve more users or warn others about those that have caused you many head-aches. The libraries I like: libsigc++ - The signal/slot library. The concept of signals and slots IMO tends to simplify OO design. The ability to arbitrarily bind and/or hide arguments and do other kinds of processing have a tendency to make my code more readable and elegant. Often the flexibility of the library has saved me from writing one or more redundant functions or classes where functor logic is needed. boost - The C++ extension everyone loves :) Provides almost everything a cross-platform game developer needs in addition to graphics, sound and network subsystems. My favorite part is definately the smart pointers. Other good points: maturity and many essential things in one package. libcurl - Download/upload via standard internet protocols. A very mature and extremely comfortable (and configurable if need be) library for anyone who ever needs to download or upload something in a program. There are two interfaces to code with: the easy one (init, set options/callbacks, execute) and the "multi" interface, which allows some finer control. The list of supported programming languages and operating systems is extensive and the API is well documented. Many auto-update systems are coded with this. I would wager that the usefulness of this library surprieses most who haven't heard of it. The license is BSD-style. It allows using the library in any program with static or dynamic linking. gtkmm - The C++ wrapper to Gtk+. The packing system of Gtk+ together with libsigc++ for event processing make this the most comfortable GUI API I've ever tried (I haven't tried that many though). I started programming with Delphi, which was supposed to be a RAD tool but, even if I hard-code the widget layout, writing flexible GUIs with gtkmm seems at least as fast. Bad points: the Windows port of GTK is not very stable at the moment. Btw. you may have read this article, which is very outdated. The bindings are in my experience (which is limited to some half a dozen smallish admin programs) quite stable. UNIX file descriptors - Not really a library but I really like the flexibility with which UNIX systems treat file descriptors (which can be pipes, network sockets, devices ...). I especially like how temporary files can be unlinked before use and the inode is reference-counted in the kernel. What is not nice here is the lack of standardisation and subtle differences between unices. Fortunately these are mostly documented in the man-pages. The libraries that have not impressed me: Win32 API - The ancient relic interface to Windows programming. Old, C-style, it takes ages to get things done. Fortunately there are better alternatives available. Since I have never been forced to use a particular library, I don't really have much to add here. Something I've looked for but couldn't find is a multi-platform, free, mature, efficient and simple C/C++ wrapper for UDP sockets. I've only listed C++ libraries here myself but naturally the thread is open to other languages as well. Criticism is of course welcome too.
Advertisement
TinyXml is a library that has served me very well.
A library that I love
I really love the ANSI C library, I always manage find something new in there. It's a shame that so many C++ programmers seems to ignore so much of it..

A library that I hate
ODBC. I need a reference manual just make a simple query.
I hate:
Morfit
GLUT
MFC
I love:
SDL
OPENGL
HxRender | Cornerstone SDL TutorialsCurrently picking on: Hedos, Programmer One
Tkinter and PMegaWidgets for Python!!
Loki. It's so damn hot.
I'm not a big fan of libraries. Mainly I'm stubborn, but most times I find library documentation to be inadequate [or more accurately, to not come down to my unfortunately limited CS training...]. The STL for example...

One library that I have used, and found easy to pick up and acutally *work* with rather than fight with is libGMP. Perl regular expressions are fantastic. [edit: oh yes, and I like everything I've used in D3DX. Makes tons of painful conversion work go away]
My current favourite libraries: SDL, FMOD, zlib because they are just so damn easy to work with and are quite powerful as well

The only libraries I would say I have anything against would are DevIL and wxWindows, I found the DevIL API so cumbersome that I gave up after a few hours and found another image library to use and as for wxWindows, the less said about that the better.
Oh, where to begin... first of all, DevIL and Win32, despite people speaking against them, I've had no problem with. Win32 is certainly far preferable to that beast, MFC. OpenGL is nice; DirectX is not. ODBC is interesting, I liked it only because it was unique and a challenge. That said, and for those reasons, it's nasty to work with. Not to mention the thousands of lines of code I ended up with. I did touch Morfit once, but I was young and don't hardly remember it. Haven't really worked with higher level 3D engines, but wasn't excited with any. Not CrystalSpace, not OGRE, not the Nebula Device or NeL. WinSock I really like when it behaves, but that's not always. Various sigslot libraries are all nice. The API for embedding Python is the most beautiful thing I've ever worked with when programming. Many of the Python libraries are really quite beautiful. I believe pyjabber is the one I was working with for instant messaging via Jabber. There must have been more, but these are all from memory.
Like: Boost, SDL
Hate: curses - it's firmly stuck in the 1970s design-wise, has an enormous number of namespace clashes with other librarys, and defines nasty macros (it defines "clear" as a macro, FFS!)

Mixed feelings: Allegro

Mark

This topic is closed to new replies.

Advertisement