The Role of JavaScript in Cognitive Application Development

Monday Jun 5th 2017

Cognitive computing is widely used to cover a whole array of technologies that are combined to solve problems by simulating the human thought process.

By Brian Rinaldi, Developer Programs Manager at Progress.

As developers, we are often required to wade through a lot of industry buzzwords and separate the wheat from the chaff. Lately, you may have been hearing the term "cognitive computing" more frequently, and you may be tempted to dismiss it as just another meaningless marketing term.

Part of the problem, as the Wikipedia entry on cognitive computing notes, is that "at present, there is no widely agreed-upon definition for cognitive computing in either academia or industry." Although this may be true, cognitive computing is widely used to cover a whole array of technologies that are combined to solve problems by simulating the human thought process. This is why it is often spoken of as a sub-discipline of artificial intelligence (AI).

Some of the technologies that can play a part in a cognitive application are things like natural language processing, data mining, and machine learning. You may be thinking that I just threw up buzzword soup (and you would be partly right); however, in this article I hope to give you a better sense of how cognitive computing is actually being used and how JavaScript developers can get in on the action.

Putting the Pieces of Cognitive Computing Together

Before we focus on the options for the JavaScript developer specifically, let's put the pieces mentioned above into a more meaningful concept of a "cognitive application."

To solve a problem, an application must first understand it. This usually involves feeding large amounts of data that can be analyzed by a computer—essentially, machine learning. I like to think of this process along the lines of the common sci-if trope where a superhuman "speed learns" by rapidly analyzing the wealth of human knowledge (think The Matrix or The Fifth Element).

In terms of a cognitive application, this could involve things like image analysis (for image data), natural language processing (for textual data), and video or audio analysis (for multimedia data). It could even involve data supplied by IoT devices. However, it may also be as simple as analyzing a large database of information that an application might have gathered from its users.

The goal of feeding that data is to allow the system to identify patterns. These patterns then can be tied to outcomes. Putting all these pieces together, new data can be fed into the system that uses what it has learned to identify probabilities for the various potential outcomes.

The final piece is the interaction with the end user of the cognitive application. Typically, a cognitive app is distinguished by utilizing some form of natural interaction. For example, a user might ask questions via a chatbot or some form of voice recognition.

And JavaScript's Role in Cognitive Computing?

Given Atwood's Law, that states "any application that can be written in JavaScript, will eventually be written in JavaScript," it's no surprise that JavaScript plays an important role in the cognitive application development.

Some of the big corporate players in the cognitive services space are companies like IBM with Watson, which offers an SDK for connecting to all of their cognitive services and APIs using JavaScript with Node.js alongside SDKs for a variety of other languages. Microsoft also has a long list of cognitive services that pretty much all communicate using JSON, making integration into a JavaScript application straightforward. Note that there is a Microsoft Cognitive Services SDK for Node.js available on npm, but this is not an officially supported project.

In addition to IBM and Microsoft, other important players include Amazon's AI services and Google's Cloud Machine Learning Services. Both of these also offer support for JavaScript application development. There are obviously many other smaller companies and startups that offer pieces of the cognitive application puzzle that integrate with JavaScript applications.

There also are many open source projects available, built with JavaScript, that can play a part in cognitive applications. For instance, there are multiple natural language processors, facial feature recognition, machine learning frameworks, decision trees, sentiment analysis, and so much more. The tricky part is finding a well-maintained and well-documented library that suits your needs, but there are no shortage of options!

Examples of Cognitive Services?

At this point, you may be wondering what the real-world applicability of any of this is. Here is a handful of examples:

Even though these examples are not JavaScript-specific, they offer ideas for how any of the cognitive technologies available to a JavaScript developer might be applied to solve actual business problems.

Where to Go From Here

This article has provided a number of links for a wide array of projects and services. But that's the thing: Although cognitive applications are clearly the future of application development, it is still a broad and loosely defined concept.

The key here, whether you are a JavaScript developer or someone simply looking to see what opportunities cognitive apps may offer your company, is to find those aspects that interest you or seem most applicable to your business—be it machine learning, image analysis, natural language processing, voice-controlled application interfaces, and so forth—and explore these in particular. In my view, by exploring each relevant piece individually, even if it is just for a "skunkworks" project, the larger possibilities start to make sense.

Mobile Site | Full Site
Copyright 2017 © QuinStreet Inc. All Rights Reserved