What you call "AI" is nothing more than a statistical sentence continuation predictor
To say it's statistical implies it's linear and stateless, neither of which is true. That also belies the sophistication of the model, which the "statistical" camp seems to regard as little more than a giant cross-correlation matrix between words. It's not, and one way you know it's not is that training a model is iterative. If it were just statistical, then there would be no need to iterate. The role of iteration, in training, is to form the logical structures required to support its nonlinear behavior.
I think it's funny that no one I've seen who insists AI is "just statistics" ever had any formal training on deep learning. Maybe you'll be the exception, but so far they've all asserted their expertise after watching a few youtube videos created by others of dubious expertise.
trained on human data, so it can't make fewer mistakes unless the input data has been curated by experts.
It needn't be trained on human examples, if the task is sufficiently objective. For instance, you can train AI to design circuits by quantitatively analyzing the result. The same can be true of code - you can see if it compiles and run it through static analysis tools to find bugs, security flaws, and inefficient constructs. Then, subject it to actual testing and evaluate the accuracy of its results and its runtime performance.
Start with simple problems and progress to more difficult ones. Maybe start with a foundational model trained on a human-produced dataset and use transfer-learning to adapt it to other languages and problem domains.
That costs serious money so you can bet that's what those companies making the models won't be doing.
Employing lots of programmers also costs serious money.
Also, "AI" will allow mistakes to be made faster once you remove human supervision, and on a much larger scale than humans ever could.
Yeah, I wouldn't let it roam free. Its designs need some form of oversight, to make sure it doesn't go off the rails.
1. How in the world is testing what some code does a valid substitute for proper code review, not to mention for writing functional specification and documentation before writing said code?
Generative AI frequently involves a second, adversarial model, trained to detect bad output. The generative and adversarial models are then refined together. So, basically, the adversarial model functions as the primary code & design reviewer.
2. More often than not the customers don't know what they actually want and as a result product owners and project managers don't either and developers have to guess parts or even all the functionality because no functional specification or documentation was provided by the customer. How is the AI going to do that, especially considering that it's not creative and can't produce novel output (it can only produce what it has seen in the training dataset)?
One way to solve this is with a specification language that minimizes ambiguities. Another way is to use AI to help the user develop the specification through a more interactive, question & answer session that employs natural language. I'm more a fan of the first, but I expect the second will be more common.
Finally, some code can certainly be verified that it does what you want (like OpenSSL library was doing for decades), but it can also have issues hidden in plain sight (like Heartbleed which went undetected despite developers doing both testing AND code reviews) which will also do things you don't want.
As you point out, all code can have bugs. AI is already helping produce better static analysis and test-generation tools. These can benefit AI-written code, just as they're benefiting human-written code.
The problem is that your "AI" does not understand what it is doing and apparently you don't understand how it works.
I agree that we probably can't have AI producing code without explaining its theory of operation. So, we'll probably need it to produce design documentation, as well.
If what you want the code to do isn't already in the model it can't offer it as a completion so you can ask it to revise it as much as you want and it won't come up with a correct result.
True. The application domains will probably be limited, at first.
That AI isn't building anything -- It is using what has already been written by actual humans.
The act of programming is basically just transforming a specification into code. Once it learns how to do that adequately... job done.
People thought many of these highly-complex cognitive tasks required general intelligence, but they don't. I'm not saying there's no value in the sort of creativity and outside-the-box thinking that humans bring to problems, but I think there are relatively few truly novel ideas in the world. Most ideas have occurred to someone, somewhere, at sometime in the past. A big enough training set can encompass most ideas that people have successfully applied to programming.
Well, you've succeeded in convincing
me that this problem is more tractable than I had considered. It's not an easy problem, but I think it's solvable. Eh, I guess coding was a nice gig, while it lasted...