BoostPro Computing

BoostCon 2010

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

  • BoostCon 2011: Save the Date

    Mark your calendars! BoostCon 2011 is scheduled for May 15-20, 2011 in Aspen, Colorado.

    More...

  • C++ Next Blog update

    Dave and Sean Parent have organized a study group for Elements of Programming. Are you in?

    More...

  • C++0x, Hot or Not?

    Dave recently visited Sioux Embedded Systems in the Netherlands.

    More...