As AI becomes a more powerful coding tool I could see it taking us in two directions. One would be more and more bad high level code that runs slower and requires more hardware, the other would be more efficient low level code that runs faster and requires less hardware to do more than we do today.
Let's explore these two options and see how we can get to option two.
Option one requires looking at the history of coding from the beginning up until now. In the beginning machine instructions were programmed directly. It was very difficult and time consuming to get computers to do anything. It required skills that only a small number of people had. These people soon realized that they could create easier ways to tell the computers what to do.
Slowly, new programming languages were developed that could be parsed by the computer and compiled down to those original machine instructions. As language design matured, higher level languages were created that were more human readable and allowed for more abstract concepts to be represented in code. These languages allowed more people to begin writing code. This has been great in many ways, but it means that there is a huge amount of poor quality inefficient code running on our computers today. We responded by building faster computers and finding ways to optimize parsers and compilers to generate better code. This has gotten us pretty far, but it is hard to keep up with all the ways people find to create inefficient code.
With the help of AI people will be able generate exponentially more code. Many more people will be able to write code. Without the correct training AI will not make the best possible code. It will be so easy to just have the AI write more code, that people wont bother with well designed reusable code anymore. Left alone this will lead to slower systems and code that humans can't maintain.
Option two requires thinking more about what the potential for AI could be. Currently we have been training AI to output code in all these high level languages that are easy for humans to use. AI could be trained to use low level languages, or to generate executable binaries without any intermediate code. I think we have somewhat of an aversion to doing this since it would be harder to understand what has been produced by the AI. We would need the to work out ways of testing the end product. The AI could help with this. It could write tests in a higher level language that humans can understand and trust.
Option two sounds a lot better to me, but also much harder to achieve. I'm guessing we will get mostly what I described in option one for now. Eventually we may move towards something better though. The only way to find out is to keep moving forward, and maybe try to have a hand in guiding things where we want them to go.
No comments:
Post a Comment