Way back when, before I got into C# or Java, I was a pretty hard-core C++ developer. I knew the rules for member overloads, I understood the ambiguity rules, I could play with pointers, the whole nine yards. I wasn’t a master in the sense of the true C++ Adepts (Meyers, Alexandrescu, and so on), but I certainly qualified for Journeyman or possibly even Master status.
While playing around with Google this week, looking for something completely unrelated, I came to realize that the "stagnant" world of C++ that I more or less left behind back in 1998 hasn’t been all that stagnant. Oh, sure, I knew that people were sort of playing around with templates and other things–Alexandrescu’s book "Modern C++ Design" was a great read, and I thoroughly enjoyed it immensely, even if I had to admit to myself that it’s been a LONG time since I understood C++ template rules (not helped by the fact that they’ve changed some since I last did C++ on a daily basis)–but I had no idea things had gotten so… advanced.
What I ran across, of course, was the Boost libraries, which provide a whole slew of free/open-source C++ template libraries, ranging from "function" ("Function object wrappers for deferred calls or callbacks") to "mpl" ("Template metaprogramming framework of compile-time algorithms, sequences and metafunction classes"), to "pool" ("Memory pool management"), to "preprocessor" ("Preprocessor metaprogramming tools including repetition and recursion"). They’ve even got "lambda", which describes itself as "Define small unnamed function objects at the actual call site, and more". Sounds kinda like closures….
In short, Boost contains more than 50-some libraries that provide some pretty interesting functionality, including one that I’m going to have to spend some serious time exploring: "spirit": "LL parser framework represents parsers directly as EBNF grammars in inlined C++". Hmmm…. C++ as a language for expressing DSLs, anybody?
Gotta admit, maybe it’s time to go back and explore my programming roots; some of this stuff sounds pretty interesting and, better yet, pretty powerful. Maybe I was too quick to jump to the managed world…