...half of which actaully work
Is the reg's spell checking perchance done by one of CodeNet's work products?
IBM has assembled a massive silo of source code for teaching machine-learning programs about programming. Dubbed Project CodeNet, the set contains, we're told, 14 million code samples totaling 500 million lines in more than 55 programming languages, from Java, C, and Go to COBOL, Pascal, and FORTRAN. Truth be told, more than …
> About half of the samples work as expected (hopefully the authors did not expect it to fail?)
Functionality is nice, but to do it securely is better. If this IBM data can be used to re-write code so that it is hardened against hacks, then it might have some use.
And best of all, is if the code can be made to work efficiently and without bloat.
This post has been deleted by its author
Not necessarily. It depends on the encoding of the training set. If you encode such that the neural network learns only the structure of the test then it will do just as you say. However, if you encode the training data such that it learns the grammatical forms of function and process then it should be able to spot good and bad programming without the context of the tasks that IBM set.
I find the number of entries to these contests rather staggering, but this is the ultimate form of design by committee. If choosing only on the basis of correct output from input, the system is going to label no end of bad, misguided and downright risky techniques and solutions as "good".
And I don't want that anywhere near my software, either the stuff I write or run.
I'm still sceptical about many of the efforts in this area, as to me good programming is much more about clean design than simply coding to produce expected output, and good work is much better identified by someone who appreciates this. At the very least I'd hope they trained it exclusively on examples which skilled people agree are good and demonstrate best practices.
You nailed it. They are training the AI to copy/paste code, so the code quality will be exactly the same as the current outsourced solutions. When the code doesn't work as expected (you can read that two ways), they will train the AI to ask questions on stackoverflow.
It seems like this effort is akin to converting a PLC's (programmable logic controller) ladder logic into another programming language or vice-versa. I don't quite see the utility of this. If they're just trying to covert X number of inputs to Y number of outputs, then it is just a state machine. State machines can be very elegant (but those are usually quite obfuscated) or can be very inelegant (and usually easier to understand). Computers are very good for predicable behaviour (even without AI). Granted most, correctly written, software, excluding AI, can be distilled down to gigantic (predictable) state machines. Lucky for us humans.
To extend this thought, this is what FPGA tools already do. Take verilog / VHDL and turn it into a set of bits that define a huuuuge state machine that runs in the FPGA logic gates. Again, this has been done.
Taking examples from human programming for examples of (good) security just seems..... wrong. We (humans) aren't very good at that.
And lastly, why would computer (AI) generated language (designed by humans) to run on a computer be desirable? Once it's generated, humans are going to review and comment on the correctness, after the AI has already generated it based on learned examples (from potentially billions of input examples - both good and bad)?
We go from:
problem -> human -> (programming) language source -> preprocessed -> compiled machine code of choice
And with AI:
problem -> AI -> (programming) language source -> preprocessed -> compiled machine code of choice
Why not just:
problem -> AI -> compiled machine code?
We exist to serve our AI overlords.