AI In Code Series: DeepCode - Outsmarting the next AI winter with symbolic vs. sub-symbolic AI

We users use Artificial Intelligence (AI) almost every day, often without even realising it i.e. a large amount of the apps and online services we all connect with have a degree of Machine Learning (ML) and AI in them in order to provide predictive intelligence, autonomous internal controls and smart data analytics designed to make the end user User Interface (UI) experience a more fluid and intuitive experience. 

That’s great. We’re glad the users are happy and getting some AI-goodness. But what about the developers?

What has AI ever done for the programming toolsets and coding environments that developers use every day? How can we expect developers to develop AI-enriched applications if they don’t have the AI advantage at hand at the command line, inside their Integrated Development Environments (IDEs) and across the Software Development Kits (SDKs) that they use on a daily basis?

What can AI do for code logic, function direction, query structure and even for basic read/write functions… what tools are in development? In this age of components, microservices and API connectivity, how should AI work inside coding tools to direct programmers to more efficient streams of development so that they don’t have to ‘reinvent the wheel’ every time?

This Computer Weekly Developer Network series features a set of guest authors who will examine this subject — this post comes from Boris Paskalev, CEO and co-founder of AI-based code review software company DeepCode.

AI, infused into code

AI has permeated nearly every aspect of society today, but some developers may think that infusing it in their development process is a step too far. After all, developers take great pride in their code and can view AI as a threat to their jobs and creativity.

As we’ve seen with technology like GPT-3, AI can in fact be a helpful tool to streamline the creation of simple elements and actions, but it’s nowhere near replacing developers.

With that said, there are areas where AI can be used in the development process to supercharge the productivity of developers and help them create quality code in a way that doesn’t feel like a hostile takeover by machines. One of the key proof points of this is using AI to find bugs and security vulnerabilities in code.

Symbolic vs. Sub-Symbolic AI

Static Code Analysis is actually a form of AI and it always has been since its invention in the mid-seventies of the last century. We simply have to understand that there are two schools of AI: Symbolic [sometimes called human-readable AI] and… secondly Sub-symbolic [lower level raw information] in the Machine Learning arena. 

Symbolic AI uses a combination of facts and rules to model the world and then infer knowledge. This is exactly what you’ve seen in Static Code Analysis tools for decades now. Static Code Analysis starts from the source code, which means your app does not need to run or even compile to start using these tools. Your source code is transferred into an intermediate representation (like a tree structure) and then rules are applied to extract facts (e.g. bugs). 

Not another AI winter, please

But, in the past few years, we have seen enormous developments in the field of Machine Learning, so much so that nowadays the public sees AI as equalling Machine Learning. The danger of that is that experts warn of another “AI Winter” [a period of reduced interest, investment or development in AI] if we focus solely on Machine Learning. 

At DeepCode, we bring both worlds together by using a Machine Learning element to identify rules and facts for the Symbolic AI. 

To train the Machine Learning element, we are using the vast amount of changes (fixed bugs) in all open source repositories. By doing this, we can overcome the linearity in the growth of rules as we no longer need a developer to write each rule – we have a system providing the rules. Still, we are using an Augmented AI, meaning an engineer oversees the rule generation and signs off before we ship the new rule. 

So what has AI ever done for developers?

Static Code Analysis for sure.

Paskalev: A smart play with a symbolic sub-symbolic combo.

 

Content Continues Below

Join the conversation

1 comment

Send me notifications when other members comment.

Please create a username to comment.

Probably worth noting that older Symbolic AI approaches like ProLog that used propositional logic, implications, etc that were popular through the 1990s was replaced by description logics ontologies, description logics inference engines in the past 20 years. The IT Enterprise has 4 basic types of knowledge models, Dictionary, Taxonomy, Thesaurus, and Ontology. All 4 support the capture and retrieval of knowledge but only ontology supports inference to effectively reuse what is already known. Description logics ontologies are considered to be semantic technologies that enable semantic interoperability that is needed for object level information integration that enables symbolic AI with machine understanding. The Symbolic AI and the Human have a shared understanding of the meaning and relationships in the information that has been integrated using description logics ontologies.
Cancel

SearchCIO

SearchSecurity

SearchNetworking

SearchDataCenter

SearchDataManagement

Close