I don't understand what is going on, why are people even spending time on this? I think this and copilot and etc are solving a non problem of "we will remove the boring part of programming" by generating a bunch of code, so now it's even more boring to read it and check if it actually does what you want.
In the same time zero of the developers I interviewed know how a linked list is laid out in memory, or what is the pro/con of continuous memory layouts, or even how a cpu works actually.
Maybe those things are not needed anymore, but I see their code... I think it will be better if they know them.
1. "Setup Django, Nginx, and Postgres deployed on a Digital Ocean Ubuntu droplet." Done.
2. "Make a shopping page like $URL." Done.
3. "Fill it with data from X and connect with Stripe." Done.
4. ???
5. Profit
Seems like even a great dev will take 20x the time to do that if the model is able to correctly generate this, even with an error, customization, or two.
If you don't have someone that understands the generated code, you'll be kinda screwed. Most of my work isn't writing a function to do X. It's reading and understanding all the surrounding code and architecture and then knowing that I need a function to do X. Writing the actual function isn't usually much of a challenge. I get the feeling that this tool will just encourage write-only code that ultimately no one understands. Will all of the generated code follow a consistent style? Will it know to use the framework you built or will it just reinvent everything it needs for each problem you give it? I already see tons of code that people copy and paste without really understanding it, and a lot of the time they're just adding complexity by solving non-problems. This just automates that process. I can see it being useful in certain narrow cases, but the potential for misuse is huge.
Why would you mention "Django", "Nginx", "Postgres", "Digital Ocean", "Ubuntu" or "Stripe"? Surely those are implementation details that the user wouldn't care about.
A one-time setup is perfectly OK to take a few days, especially if afterwards you have a documented process that allows you to modify and improve the result.
This is just nascent technology leading toward something like this:
"Computer, I want to play a game."
"Okay, what will the game be?"
"I want to be a starship captain, give me a cool space ship I can explore the galaxy with"
"Okay... like this?"
"Not quite, make the galaxy more realistic, with real stars and planets. Also make it 3d. I want to be the captain inside the ship."
"How about now?"
"Cool, and there should be space stations I can visit near planets, and I can fly my ship to stars with hyperspace. Make it so I have to trade for fuel at the space stations, maybe I need to mine asteroids or search derelict space ships for treasure. I want to play with my friends too, they can have their own ships or walk around my ship."
"Done, was there anything else?"
"Yes, add different alien races to some of the star systems, and make some of them have alliances. I want to talk to the aliens about their history and culture. Sometimes aliens are unfriendly and we'll have space battles if talking doesn't work. Make it so I can command a fleet and call for reinforcements."
Oh! this will be so cool! do you really think it could lead in that direction? To me it seems more like a metaphysical cargo cult. I think I am too pessimistic, I should shake it off, nothing good comes out of being pessimistic (by definition).
> do you really think it could lead in that direction?
If you asked me 20 years ago, or even 10, I'd have said it was total science fiction. I wouldn't have been able to imagine how to do it. If you asked me 5 years ago, I'd have vaguely said something about AI, half jokingly. At the time I thought perhaps the models could be trained so we can do test-only development and let AI trained on formal test cases generate endless code until all tests pass, but I didn't really imagine it would be possible to get a computer to take freeform written English (even in a tightly controlled manner) and produce functioning code.
Over the past couple of years I have seen increasingly fluent demonstrations and tried a few myself, and I have fallen off the fence and I think that with the pace that machine learning and AI assisted programming keeps advancing, this outcome is all but inevitable, as far fetched as it seems.
I was messing with the OpenAI sandbox over the weekend and it helped me generate several game design concepts from prompts similar to my post above that I could see myself being interested in building and playing. It's not difficult to imagine down the line with a few more advancements in this tech that the generated design could then instruct the code generator, fetch the assets, and stage the environment for a player or user to enter without ever touching a line of code.
I'm not close enough to the research itself know which of those problems are hard and which are easy, so I don't know if we'll see the first totally AI-generated "proto-holodeck" tech demo in the next 5 years, or the next 20 years, but I can't see it being more than 50 years away, and something tells me with the pace of things it will be much sooner than that, assuming we're all still around at the time to enjoy it.
From what I've seen the technology can fuse together a remarkable range of outputs, but all of them are essentially fused together from within the training set. If there were enough examples of AI opponents, it conceivably could do it since most game AIs are some form of state machine combined with a degree of statistical analysis and pathfinding (for mobile AI actors). It would "just" be replicating existing patterns.
As I understand it, it would take a dramatic leap from this kind of interpolation to being able to extrapolate and "self improve". So far I haven't seen anything that convinces me we're close to this, but again I'm not close to the wheel on the research side of things.
It seems like they're going in totally the wrong direction. If program content is predictable based on patterns (low entropy) then that's a sign that our programming languages are too low level. If we want to improve developer productivity then the solution is the same as it always has been: create higher level languages which abstract away all the repetitive patterns.
Tools are relatively low level compared to any single use case or field because they should universally support all uses cases or fields. The more narrow your field or use case is, the fewer resources there are to create a higher level language that abstracts away the details that aren't important for your area, but are important to other areas. In this manner, Codex has enormous potential.
Just full stack devs react native + go. Is it too wrong to think they are the same? Programming is programming, most computers work in a similar way no?
But they also don't know how garbage collection works in their language, or how to work with 1 million things in an efficient manner. Or why does the app pause for 100 ms because someone does sort while parsing dates within the sort.
For example, I have seen people that cant imagine what is the cost of a leaked database transaction, just back of the napkin wise, like you would think well, how many changes happened in between, how much we have to unwind when the session disconnects, when will it even disconnect because of the connection pool.. etc etc. Because the sql server is this magic rds thing. As if aws will solve everything with its pixie dust.
Well, to be fair none of the things mentioned are specific to operating systems programming. I think that not understanding the things mentioned is one of the reasons software runs so slowly these days even on computers than are orders of magnitude more powerful than just twenty years ago.
OK? I live not that far from an airport and I can say I have noticed a significant decrease in traffic, so much that I pointed at a passenger plane the other day to show one of my younger kids. Until COVID-19 that would have been just funny, now it was informative.
In the same time zero of the developers I interviewed know how a linked list is laid out in memory, or what is the pro/con of continuous memory layouts, or even how a cpu works actually.
Maybe those things are not needed anymore, but I see their code... I think it will be better if they know them.