I’ll outline three main elements that allow different programming languages to interact with each other, and provide data to the end user:
- Connection - Internet or a network access between the systems.
- Storage - a way to store and retrieve information (a database, RAM, ROM).
- Interface - a public-faced UI or some raw data protocol for sending data and reading input.
When we consider the connectivity aspect, the user should be able to exchange data with the product or the programming platform - over the Internet or even physically in the same room. It has some storage that contains the executable code and a way to sift through information and respond intelligently. And there is some established interface which could be a screen, voice commanded chip, or something else.
It’s a common practice for multiple applications to share the same storage (a database) and synchronize data processed through different mediums.
At the same time, a mobile application built in Java for Android or Objective-C/Swift for iOS may have a synchronized clone of the database or likely a replica (or even the production) database that the website communicates with as well. The interface is your device (mobile phone or tablet) and data is transferred directly to the database or through API calls to the website.
A desktop application could be developed in C++, C#, Java, Visual Basic or another popular programming language suitable for desktop software. The app may work offline with a local copy of the database, or synchronize similarly to the mobile app with an online database source or interacting with the website’s API endpoints.
An Amazon Echo device could download a custom skill that interacts with the website and retrieves or stores information over the Internet. Echo is controlled with voice commands and can also interact with other devices in your home.
Various low-end applications could run on a schedule in order to rearrange or sync information (or update software versions as needed), or provide additional functionality like switching drivers, communicating with lower level devices, compress and resize images, pull information from sensors (temperature or humidity), and so forth.
Your car can be connected as well if it provides some communication interface and a browser where you can access one of the other resources.
The same principle can be applied to smart watches and other interactive devices that adhere to the same model - a connectivity protocol that allows them to interact with the other devices in your environment, an interface that allows you to communicate with them, and some storage available for storing and retrieving information.
This question originally appeared on Quora - the place to gain and share knowledge, empowering people to learn from others and better understand the world. You can follow Quora on Twitter, Facebook, and Google+. More questions: