Software Development
Boost Consulting creates both open source and proprietary software with an emphasis on expressive domain-specific libraries, high performance C++, and hybrid development with dynamic languages such as Python.
Library Development
Boost Consulting is one of a very few companies specializing in custom development of domain-specific software libraries. Our experience as Boost contributors makes us uniquely qualified to develop efficient components that provide solid—yet flexible and sustainable—infrastructure for your application. We emphasize the importance of interfaces that reflect the mental model of your domain experts, giving programmers and architects unparalleled freedom to express their ideas in software.
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.
< Consulting | Support >