How We Think...
A6 sees multi-paradigm development as the emerging way to develop software. We believe a multi-paradigm development is key to tackling today's complex software design challenges.

The last major paradigm shift in software methodology occurred with the adoption object-oriented programming. This trend brought sweeping changes to the way developers design software. Object-oriented languages completely overtook other paradigms as the entire industry moved to objects. With this change came new development tools and application technologies. A6 believes a similar transition is occurring today with the growing industry adoption of multi-paradigm development. Multi-paradigm development allows developers to use functional and object-oriented programming together in a best-of-both-worlds approach.
Functional programming has been a hot area of research for many years. Today's software development challenges have led the industry to place a new focus on functional languages. Functional languages allow software to be decomposed into a set of functions. Functional languages emphasize the evaluation of functions rather than the changing of program state, which is typical of imperative languages like Java and C#. Functional programming allows for programs to easily take advantage of system concurrency. Additionally, because state change is implicit, functional programs are more easy to test for correctness. Functional programming can significantly simplify scientific computation, because there is a direct translation from math to functional programs. As a result, data analysis and visualization especially benefit from functional solutions.
The rise of mult-paradigm approaches has been driven by necessity. Today's systems architecture have pushed object-oriented design and imperative development to a breaking point. Imperative programming worked best when program multi-tasking occurred at process boundaries. Multithreaded and asynchronous programming have become significant challenges for imperative programming. In concurrent environments, programming state must explicitly be managed. Functional programming leads to stateless systems, which have proven to scale more easily in distributed and multi-core environments. Additionally, functional programming allows the programming languages themselves to parallelize programs for the developer. This optimization alone significantly eliminates system complexity.
Application architectures have become more complicated. The ubiquity of distributed data stores and the complexity of service-oriented architectures have created significant implementation hurdles. Equally challenging is that many businesses are trying to implement more agile approaches to developing software, which requires a more dynamic software. All these factors have lead to the industry rethink the development paradigm at all levels. The multi-paradigm programming model can provide significant leverage for development teams. A6 believes that multi-paradigm programming will become the predominant way that software will be developed.
While A6 takes advantage of the benefits of traditional object design, experience has shown us that a multi-paradigm approach can deliver significant benefits to development teams when targeted at the right problems. At A6, we see ourselves as the bridge to the multi-paradigm development approach. We facilitate the integration of these multi-paradigm development technologies in a way that quickly adds value to our clients with minimal integration friction.
