Add-Ons & Services
The POCO C++ Libraries Blog


Filed under: Uncategorized by alex at 20:58

I mean really, why Poco?

Why another framework? And why in C++? Aren’t there enough frameworks around? Hasn’t everything been said and done with C++? Doesn’t everyone know by now that Java is future and C++ is dead (or at least on the deathbed) and C# is even better and … well you know what I’m talking about. Indeed, if one wants to quickly get acquainted with programming, no doubt Java provides shorter and less thorny path. Not that I’m comparing the two, but VB used to do that once upon time. Is it surprising that Java is “succesful”? Not at all – so was MS DOS (see interview w/ A. Stepanov). It’s all marketing. But, as Beverly Sills said, “There are no shortcuts to any place worth going”. Maciej Sobczak puts it well: “I just don’t like when somebody gives me half of the language and tells me that it’s for my own protection”. I happen to strongly agree, although Maciej is an optimist – I see it as withholding half the language from me. And I particularly do not like when somebody owns the language. If anything should be free as speech, it is a programming language. Before I proceed, a note to Java/C# militants out there reaching for their guns: hold your fire – I am well aware of the fact that VM based languages have their place and there are good and bad sides to everything under the sun (no pun intended), C++ included. So, let me straighten things out: C++ is kinda like western type democracy – far from perfect yet the best thing human kind was able to come up with so far.

Now all that being said, back to main thread …

As I occasionally browsed Java code, I couldn’t help but enviously notice the enticing abundance of libraries and code that all had this same “feel” to it and looked tidier than most of C++ (not to mention C) found around. You know what I’m talking about, it gives you that good feeling to see things tidy. But it is a superficial thing, because language is still restrictive – everything has to be object, single object hierarchy tyranny and garbage colection are non-negotiable etc… I thought, heck, there is no reason why C++ code wouldn’t look and feel like this or even better and had such abundance of libraries on top of all the freedom the language offers. Yet, even ACE or Boost, although top-quality well-designed code, could not completely make me happy and convince me to fully commit. Somehow, something did not feel right. Enter Poco. It was one of those things you find and immediately know that’s it – you’ll be able to really use it, and use it with joy and enthusiasm. It was C++. It was well thought-out, well designed and really neat and tidy. (Speaking of tidy, have you ever been in Poco home country Austria – if you have you’ll know what I mean. If you haven’t, go see it – it’s the tidiest place in the world – and I’ve been places.) So, I have found a framework that looked and felt like all that Java stuff, but was full blown standard portable C++ instead. Since I fail to see a significant difference between “write once run anywhere” and “write once compile and run anywhere”, I was sold. I started playing with it, then I started using it for serious work and then contributing to it and I never looked back. Is Poco perfect? No, but it’s the best general-purpose framework known to human kind written in the best general-purpose language known to human kind.

That’s why Poco.

  1. Thank you, Alex, very well said.

    This also reminds me of a famous quote by Scott Robert Ladd, on Java and C++:
    “Just because very few people can fly a Space Shuttle doesn’t mean
    we shouldn’t have spacecraft. Some of us are big boys, and we can
    handle C++ just fine, thank you.”

    Comment by guenter on July 13, 2006, 09:11

  2. Congratulations on putting POCO out into the wild. It is a breath of fresh air to see quality documentation, a well designed and great looking web site etc. for a programming library of any sort, and even more so for something that is open source.

    I wish you well on your travels with POCO.

    One quick question. I’ve downloaded the source which includes MS VC7 and 8 Projects, but not VC6. Does this mean POCO won’t work with VC6?

    Comment by Neville Franks on July 15, 2006, 11:22

  3. I agree. Indeed IMO there is a need for an alternative to Boost/ACE. Boost still has problems building everywhere due to the crappy state of vendor compilers. Also the build system seems to be in a high state of flux. ACE is clunky but mature and seems to have been ported everywhere. I prefer it to boost even though boost is cleaner in many ways. But both leave me slightly dis-satisified. I hope that POCO will prove to be a better alternative (for me at least).

    Comment by Andrew Marlow on July 16, 2006, 21:41

  4. Neville, thanks for your comments. Regarding VC6, please see Andrew’s comment “crappy state of vendor compilers”. So, no VC6 support, at least for now. Anyway, you could try your luck with VC6 yourself, many parts of POCO will probably work. However, we don’t want to mess up the code base with support for older, non-conforming compilers.

    Comment by guenter on July 17, 2006, 11:54

  5. Just to add to Guenter’s comment; ACE tries to compile across the known universe, including ancient crappy compilers, and this has led, over the years, to loads of macros being sprinkled throughout the code. It also complicates their build system. POCO seems to be relatively macro-free and it would be nice to keep it that way. This might mean a slight restriction on the supported compilation environments.

    Comment by Andrew marlow on August 14, 2006, 18:11

RSS RSS feed for comments on this post.

Leave a comment