C++Now!

Thank You

After 12 years in business, the principals of BoostPro have decided it's time for new challenges. The technical leads are still pursuing their commitment to transforming the way software is written: John Wiegley has started working for FPComplete, building tools for Haskell programmers, and Dave Abrahams has joined a team at Apple, shaping the future of Mac and iOS development.

We thank you for your support of BoostPro over the years; it has been our privilege to serve you.

Note:The open source C++ library collection at Boost.org is still very much alive and well!

Hybrid Development

Despite the basic differences in approach between C++ and dynamic languages (such as Lua, Perl, and Python), they complement one another surprisingly well. The efficiency and strict typechecking of C++ allow expert programmers to build super-fast core components with strong correctness safeguards. However, the cost of linking large programs can impede prototyping, integration, and testing to the point where it becomes a major drag on the development cycle. Dynamic languages usually do not run as fast, but their flexibility and immediacy makes them ideal for assembling large applications out of well-defined components. Also, languages like Python are much more forgiving than C++, allowing safe usage and easy experimentation even by non-programming-experts.

In a hybrid development model, performance-critical components are written in C++ and a dynamic language is used to integrate them into larger systems. High-level C++ libraries are presented as separate, dynamically-loaded Python modules. This organization eliminates whole-program linking, and tends to limit recompilation dependencies. Because dynamic languages are so resilient, this model allows domain experts who are not strong C++ programmers to quickly experiment, prototype, and test, without fear of crashes or compilation errors.

Once upon a time it was very difficult to smoothly bridge the gap between C++ and dynamic languages, because the low-level C-language APIs provided by these languages provided only weak abstractions. As a result, bindings to C++ were usually inelegant. Worse, they often exposed the possibility of crashes when misused from the dynamic side, which violates a baseline user expectation (even if those dangers are de rigeur for C++ programmers).

Today, advanced binding libraries such as Boost.Python and Luabind have changed all that: we can accurately, safely, and idiomatically “reflect” C++ interfaces into dynamic languages (and vice-versa). Code can be easily pushed across the static/dynamic boundary, in either direction, even as a project evolves. Our associates (among them the authors of Boost.Python and Luabind) are all fluent in the principles of hybrid development; we can help you create an architecture that is flexible, safe, efficient, and that engenders real coding momentum.

News

  • Boost 1.50 installer for 32-bit Windows now available

    An installer for Boost 1.50 available for is available for immediate download here

    More...

  • Boost 1.50 installer for 64-bit Windows now available

    BoostPro’s free 64-bit installer for Windows is now available for download here

    More...

  • BoostCon / C++Next!: Register Now and Save $100

    Less than three days remain before the early registration deadline The amazing 6th Boost conference, now with additional track containing 15 hours of C++11 tutorials, is still $599 for a short time only.

    More...