With the growing applications of machine learning and AI such as AWS’s codeguru which claims to give code reviews equivalent to a software engineer of 10+ years experience many software developers may worry about their job security. But seldom is that concern too real since surely real code needs to be created by real people that are familiar with the problem they are trying to solve and the coding language they’ve spent years learning to excel in. However recently an AI was developed that may leave those developers cozy in their beds with nightmares.
An AI Coding Bot is born from Python
As seen in a recent demo, OpenAI showcased successful training of an AI coder bot done on thousands of Python repositories. This enabled the coder bot to create its own code given only a function name and a brief comment to go off of. To understand how this is possible we must look at the aspects of Python which makes it achievable to train an AI bot to code in it.
Firstly Python has extremely simple syntax compared to other languages. This allows less divergence between code produced by different engineers which would allow an AI to pick up on patterns for things that the code should achieve.
Secondly, Python has a very robust standard library shipped with it. This further reduces lines of code needed to do repeated tasks and makes a model more trainable.
Thirdly, Python is already very AI friendly and countless developers are creating and hacking different AIs within the language. It was only a matter of time before someone got a working coding bot together with the vast community of Python developers out there hacking projects in the evening.
Python and AI: Why They Work Well Together
As a result of the continued discussion on AI within the industry of computer programming, many have raised this question: “Why should we select Python for AI instead of other programming languages?”
There are numerous reasons for this. First and foremost, Python provides the least code versus others. To be specific, it is 1/5 the number in comparison to other OOPs. Python is unique, as it offers prebuilt libraries. Numpy is used for scientific computation. Scipy is used for advanced computing. Pybrain is used for machine learning. As a result, this makes Python one of the most compatible languages for AI. Developers for Python communicate with other developers from all over the world via tutorials and forums. This makes coding with Python easier than other programming languages.
Python is classified as platform-independent. It is flexible for use on many different platforms, with the least amount of adjustments needed. Due to its flexibility, there are two options to select from with Python. This includes OOPs and scripting. It is also possible to use IDE to check for most codes. It is very helpful for developers that are struggling with algorithms.
Python & AI: Decoding
In order to form the basics for an AI project, tools such as scikit-learn, matplotlib, iPython notebook and NumPy are very useful. NumPy is utilized as a vessel for generic data. This data is comprised of an N-dimensional object, specific tools for using C/C++, random numbers, fourier and supplementary functions. Pandas is a library that is highly serviceable. This is an open source library that offers a simple data structure and tools for analyzing.
Another beneficial service is matplotlib. This service is a 2D plotting library that easily creates quality figures. Matplotlib can be used for 6 graphical user toolkits, web app servers and Python scripts.
The Future of AI Coding
Now that the basics of AI and Python are understood, let’s explore how the future of coding will be impacted and affected by AI. Many have speculated that AI will replace developers, however that is not the case… at least not yet. During a recent survey 550 developers were questioned about their career. Approximately 30% noted their development efforts were being replaced by some form of AI.
According to a research team at Oak Ridge National Laboratory, machine learning/ natural learning technologies will be capable of writing code by 2040. They believe AI will write code faster and better than top human developers. However, it is very important to note that software development- specifically for safety-critical fields, must be of high-quality. The code must deliver on functional specifications.
During 2015, Andrej Karpathy used recurrent neural networks in order to generate code. The results of this project included functions, function declarations, variables, parameters, loops, indents, open/ closed brackets and comments.
The code generated by AI contained syntactic errors. Variable names were not tracked and often times variables were declared- yet never used. Also, when a variable was used, it was not always defined.
Will AI Replace Software Developers?
AI will not replace software developers, but it may be used to write code one day. As with any new technology, it will take time for AI to create worthy, high-quality code. AI will impact software development, however the result will be positive- not negative.
First and foremost, AI will improve in the coming years. AI will be effective for assisting developers. AI will help developers to understand various options. AI will then allow the human developer to select optimal circumstances. AI will be used as a coding partner, with the goal of writing better code. Programmers will still hold a valuable place in software development. Programmers understand “what to build.” This is significantly more important than understanding “how to build it.” Also, AI is not able to determine the business value of specific features and what to develop with priority. This would take much more time to acquire with accuracy. This ensures a role for human developers is always present.
Will AI Coding Be Worthy? High-Quality?
AI learns from human written code and even human written code has errors. With time, AI can develop, however at this time AI written code still has errors. AI is not yet able to write code on its own or understand business value/ prioritize. Converting design copies into CSS and HTML code is suitable for AI. This is one of the easiest tasks in programming. A practical example of this is with the company “Airbnb.” They introduced a new tool called “Sketch2Code.” This tool allows conversion of hand-drawn design for HTML with the help of AI. This tool is not generating code, rather selecting the correct components made by humans.
The Role of AI in Coding
The type of AI needed to think/reason on par with a human is known as AGI (artificial general intelligence). This type of AI has not yet been built. The intelligent systems used today can recognize faces in pictures, predict code mistakes and make specific product recommendations. However, it is not capable of operating like a human. They can not write their own algorithms used to solve problems in the way human programmers can.
According to Artur Hebda, (software developer for an AI consulting firm) “creating software focuses on converting vague prerequisites into strict specifications.” He noted that task isn’t easy, “even for humans.” The attempt to specify software/ understand what problem it will solve is much more difficult than simply writing code. This is something reserved only for human programmers.
Programmers typically do not write code from scratch. This process would be similar to building a home from building blocks. In order to secure these “blocks” together, each developer will utilize APIs (application programming interfaces). APIs are used to help one software system communicate with a hardware platform, database or specific operating system.
Many systems today use million of lines worth of code and are vast beyond measure. Developers are in need of better tools for navigating the complexity and ever-growing nature of APIs. This is something AI can help with.
AI will become much more efficient in problem exploration and code generation, connecting APIs to properly solve these issues. Computers are different than humans, as they are not controlled/ driven by emotions. Computers do not make logical or syntactic errors. Rather, they must be told what to do. This is why human develops are still in high demand.
The Road Ahead with AI
According to an Oxford study conducted over 5 years ago, software engineers had an 8% chance of automation over 20 years. According to Oak Ridge National Laboratory, within 20 years, machine learning will be able to write code better than humans. Yet even with these two seemingly different predictions, there is still a massive demand for human developers.
Most estimations predict the need for human developers will increase within the next decade. The programming jobs with the most demand include those dedicated to running, creating, improving and testing AI. These jobs are also the highest paying within the sector. It is safe to assume the use of AI will become more and more prevalent in the workplace of program developers.