Programming anything that runs on the web or mobile devices these days is like opening a huge box of puzzle pieces that need to be put together without knowing what the whole puzzle looks like. Being able to use cloud computing resources may absorb some of the infrastructure burden, but even in the cloud, servers need to be programmed.
As software engineers, we are, on the one hand, used to learning new languages and frameworks to get things to work the way we want them to, and on the other hand often faced with climbing mountains of complexity to reach our coding goals. Because we are persistent, resourceful, and creative, we eventually figure out how to do what we want, but not without a lot of research, trial-and-error, and frustration along the way. Then, several weeks or months later, we clink our glasses together to celebrate the release of our cool, new app and concur it was worth all the pain.
If you are a developer, you’re probably saying something like, “Yeh? So?” In other words, we’re just used to having to work this way and deal with these issues. We manage complexity well, and we share our techniques on more efficiently managing the complexity. We have a whole Internet of fellow developers to tap when we’re having trouble fitting a couple of particular puzzle pieces together, and eventually, we get everything to fit, but it probably won’t be easy, and some of the pieces will likely still be loose fitting.
Now look at this complexity from another perspective. From a technology standpoint, what we now call The Cloud is really no different than what we called a virtual hosting environment five years ago, and a colo facility ten years ago, and a data center fifteen years ago, and time-sharing thirty years ago. What the cloud is really about is volume of data (amount of data stored, processed, served and streamed), efficiency, and cost. What the cloud is not is easy to use as a programming platform, mainly because it is built with and held together by the same rat’s nest of disparate languages and connectors that it all started with nearly 20 years ago. Sure, the tools have evolved along with the appearance of unprecedented access to online storage, processing, and communications tools, but programming on the cloud still requires weaving together markup languages with server-side scripting and database functionality, and there are several groups of these types of weavings, depending on whether you are a linux, Windows, Apple, IBM, or Oracle user.
The point is, while computing infrastructure now runs on fast, multi-processor hardware used to host virtual servers, the systems on which this infrastructure runs were never designed in the beginning to run such vastly distributed computing environments. That’s why it takes at least three programming languages to accomplish anything as a developer using these kinds of environments. But at NCS, we refuse to accept this level of complexity anymore!
The Native Cloud Software Engine is designed from the ground up to maximize the advantages of multi-processor and distributed computing. It basically runs a virtual operating system on cloud services in order to offer the cloud as a secure, high-performance, full-service platform for applications. To take advantage of the full potential of this OS, we’ve created a language that thinks differently while providing both client and server-side application programming that encapsulates the shared data.
Through the Native Cloud Language, we’ve already bolted our engine into XCode/Objective-C via our iOS API, which is what we use behind our game TraceWord to provide the real-time processing and communications capabilities that make it an exciting, fast-paced multiplayer game. There is no need to provision any servers or databases because the language has simple commands for configuring and using processing and various kinds of storage resources.
As we at NCS continue to expand the capabilities of our language and platform, we are actually finding ourselves needing to program less and less in anything besides Native Cloud Language, and we can’t help but think this actually may be the last computer language we’ll ever need to learn! It’s not a matter of being the one-language-to-rule-them-all, but rather the one language to bring them all together. For now, we’ll have to settle for greatly reducing the number of puzzle pieces! In any case, it’s the first language designed to support native applications in the cloud, and we look forward to sharing it, and our development tools, as we roll services out over the next few months. Stay tuned!