Ten years ago, when the famous ad campaign for the iPhone 3g featured the tag line "There's An App For That" the phrase became such a popular meme that it ended up as an official Apple trademark granted by the U.S. Patent and Trademark Office.
Although it's probably still true that there's an app for almost anything, the underlying fact is that algorithms are really the ubiquitous beating heart of every modern software solution.
These bits of code are embedded in our day-to-day lives - Warner Music Group has even just signed one in an effort to embrace AI as the music maker of the future - so in this third instalment of our myth busting 'Software Secrets' blog, the team at Purple Crane tell you everything you always wanted to know about algorithms but were afraid to ask...
Matthew Yates works mainly on developing and deploying new features or evolving existing ones on systems developed by Purple Crane, so is perfectly placed to explain things in an easy to understand way.
"An algorithm, very simply, is a set of rules or instructions that should be followed to solve a problem. A technical example might be the instructions on how to sort a list of items, or a more general example might be the steps in a recipe to make a cake," Matthew says.
"Generally, an algorithm will provide the bits of functionality that a piece of software is built from, transforming input to produce output. For instance, in a map application, an algorithm would calculate and suggest routes from point A to point B."
Even when it comes to making bespoke software solutions, some basic elements such as algorithms will be used in a pre-prepared form as part of a collection of software elements known as class libraries.
"A class library is a small package with prebuilt functions/algorithms and/or classes (a way of representing and storing information and data) which a developer can reuse without having to rewrite code from scratch all the time," Matthew explains. "They are a way of storing common items in one place that can then be shared amongst many different projects or different types of applications within a project," he adds.
A typical example of this as a 'real world' usage would be when a web and mobile app were being integrated into a larger application.
"At Purple Crane we use class libraries as common libraries, for our printing and emailing functionalities. This means that we have a common way for a system to handle printing, without spending time rewriting it for new projects. Also, if we make any performance/efficiency improvements it gets applied to all existing projects," says Matthew. "Without using class libraries you’d likely have to build all of the functionality from scratch."
The result of using this approach means that clients are not charged for unnecessary work and that they also benefit from ongoing upgrades and enhancements.
For more complex or unique requirements the team at Purple Crane have to come up with their own algorithms in order to tackle unique problems and find the right solutions. "Quite often when it comes to a company process or business logic for a customer we will tend to write most of the functions/algorithms ourselves, although many can just be fairly simple items," Matthew clarifies.
If you would like to know more about how important getting the basics right for the software used in your business applications, get in touch with Purple Crane or call us on +44 (0)845 388 2569