The History of Computer programming can be traced back to 1801 when Joseph Marle Jacquard invented a mechanical, automated loom, the Jacquard Loom. The Jacquard Loom used punchcards to control the operation of the loom. Today much of everyday life is controlled by the instructions typed into programs by Software Engineers that run computers of all sizes embedded into the fabric of our life. We now have computers in our clocks that ring us awake, our showers that adjust our water temperature, our houses that know where we are and turn our lights on and off, our cars that we drive to work and the toll scanners that track our drive. And at work most of what we do in the modern office is done using computers, including the copy machines, the telephones, our desktops and our security systems, computers are everywhere. And these computers, no matter how tiny or big are run by programs typed in by a Software Engineer.
Artificial Intelligence (AI) describes a program written by a software engineer to enable computers to perform tasks commonly associated with intelligent beings. Tasks include the ability to learn, reason, discover meaning, generalize, or learn from past experience. This is much different from the static pre-AI programs that are stamped with a finite amount of intelligence and get smarter over time as new versions are released over time. But pre-AI programs can't learn or reason or get smarter, or do anything they weren't programmed for and that is the big difference. AI programs can actually update themselves.
AI will be the biggest wave of technology disruption the world has ever seen, dwarfing the Industrial Revolution. In their paper "Artificial Intelligence: The Next Digital Frontier", the McKinsey Globlal Institute writes:
"Artificial intelligence is poised to unleash the next wave of digital disruption, and companies should prepare for it now. We already see real-life benefits for a few early adopting firms, making it more urgent than ever for others to accelerate their digital transformations. "
Although today, many repetitive manual tasks have been automated by computer programming there were still many repetitive manual tasks that required learning, reasoning, discovering meaning, generalizing, or learning from past experience, these tasks could not be automated by pre-AI programs. The automation of these tasks using AI programming will start biggest wave of technology disruption the world has ever seen. Conner Forest in his article "The first 10 jobs that will be automated by AI and robots" list the following:
In fact, as he reports in his article, the Oxford Martin School in the UK estimates that roughly 47 percent of the total US jobs are at risk of computerization or automation.
- Assembly Line Worker
- Field Technician
- Call Center Worker
- Data Entry
- Insurance Underwriter
- Tax Preparer
- Sales Representative
- Fast Food Employee
So what about the Software Engineers who are coding the AI programs that are automating all these jobs, is it possible that they might code an AI program that could in fact write and rewrite itself and automate the job of a Software Engineer. This is in fact where AI is going. Here are some example projects:
- Pliny - Autocomplete for software engineers. “Imagine the power of having all the code that has ever been written in the past available to programmers at their fingertips as they write new code or fix old code,” said Vivek Sarkar, Rice’s E.D. Butcher Chair in Engineering, chair of the Department of Computer Science and the principal investigator (PI) on the PLINY project. “You can think of this as autocomplete for code, but in a far more sophisticated way".
- ExCAPE - aims to change programming from a purely manual task to one in which a programmer and an automated program synthesis tool can collaborate to generate software that meets its specification.
- ai.codes - In our view, software engineering is about modeling and automating the real world. Coding, to a large extent, is the boring part of the job. Coding is not only tedious, but it's error-prone. Software bugs happen when we, human translators, fail to translate our ideas into codes correctly. We believe that AI is at a stage where it can help software engineers in writing code.
- AI Software learns to write AI Software - Google and others think software that learns to learn could take over some work done by AI experts.