My experience with generative-AI has been that, at its very best, it is subtly wrong in ways that only an expert in the relevant subject would recognise.
-
On the gripping hand, if you're a trained programmer using vibe-coding because of a perceived increase in your productivity, or pressure from management to increase your productivity, I would refer you to my first post in this thread…
I've seen lots of posts in the last couple of days about how quickly one can write lots of code with AI. I feel perplexed by this as I hate large programs. The largest thing I have written in the last decade is Flitter. It's only 30k lines and I believe very strongly that it is. Still. Too. Big. Even there, I wrote it purposely to allow the stuff I write *in* it to be very smol: mostly no more than 100 lines. That is the maximum I want to write in a day.
-
I've seen lots of posts in the last couple of days about how quickly one can write lots of code with AI. I feel perplexed by this as I hate large programs. The largest thing I have written in the last decade is Flitter. It's only 30k lines and I believe very strongly that it is. Still. Too. Big. Even there, I wrote it purposely to allow the stuff I write *in* it to be very smol: mostly no more than 100 lines. That is the maximum I want to write in a day.
To me, all these people crowing about having written 10k lines of code in a day are idiots. If you need to write that much code in a day, you are manifestly working at the wrong level of abstraction to solve your problem.
-
I've seen lots of posts in the last couple of days about how quickly one can write lots of code with AI. I feel perplexed by this as I hate large programs. The largest thing I have written in the last decade is Flitter. It's only 30k lines and I believe very strongly that it is. Still. Too. Big. Even there, I wrote it purposely to allow the stuff I write *in* it to be very smol: mostly no more than 100 lines. That is the maximum I want to write in a day.
@jonathanhogg I feel like this misses the point. The point is to not have to spend your life writing 100 lines in a day, when the end goal can be achieved faster and still be as good if not better than hand-made. I am not saying there are no issues and that there is no slop. I am saying it requires mind shift and learning in order for it to not produce slop. Otherwise it will produce results like in your first reply. If coding is just a hobby for you, then none of this matters anyways.
-
I've seen lots of posts in the last couple of days about how quickly one can write lots of code with AI. I feel perplexed by this as I hate large programs. The largest thing I have written in the last decade is Flitter. It's only 30k lines and I believe very strongly that it is. Still. Too. Big. Even there, I wrote it purposely to allow the stuff I write *in* it to be very smol: mostly no more than 100 lines. That is the maximum I want to write in a day.
@jonathanhogg Consider this scenario: spend a very long time planning and designing, and then have a very fast code output, then fix any issues.
Also what about projects which can't be made in 30k lines? Doesn't automatically mean that the project is wrong just because it is big.
-
To me, all these people crowing about having written 10k lines of code in a day are idiots. If you need to write that much code in a day, you are manifestly working at the wrong level of abstraction to solve your problem.
@jonathanhogg
We need more done in actually high level languages. -
@jonathanhogg
We need more done in actually high level languages.@kirtai@tech.lgbt @jonathanhogg@mastodon.social A large number of those lines of code are probably boilerplate indicative of abysmal library quality.
If a language's entire ecosystem is built on boilerplate and it's seen as normal, that is not okay.
-
@jonathanhogg this is my central response to the "AI makes software development accessible" argument.
Once upon a time anyone could program their personal computer using a book that came with it. We taught it to all the kids in my tiny town's elementary school. My shopkeep neighbor and our local mechanic wrote their own custom software with no CS background.
BASIC, Hypercard, personal computers, printed manuals > LLM's.
@requiem @jonathanhogg We still have all that, but it’s 10 different web sites you have to pay a monthly subscription fee to. Every small business that is just one person gets stuck in that web.
-
@jonathanhogg There's also the duplicated effort problem. Pick any large company...McDonald's for example. I'm sure they've got a bunch of coders building their app and their website and controlling the POS or whatever other gadgets in the stores. And Burger King probably has a very similar team writing very similar code. And Wendy's, and Jack in the Box, and on and on and on.
If you've got two competing factories that each produce a hundred cars a day, at the end of the day you have two hundred cars. But when you've got two teams writing the same software? You could just copy and paste. Half those people are entirely unnecessary, just wasting their time and wasting their labor because grown-ass adults can't figure out how to share.
So now we build these "AI" tools that gobble up everyone's code and spit it back out again just to launder the IP infringement and call that progress!
The "efficiency gains" of LLMs are just a matter of disguising collective action as rugged individualism.
-
@jonathanhogg Thanks! I'll absorb that and then I can ask you better questions at EMF.
@jonathanhogg .. great talk!
-
@jonathanhogg .. great talk!
@jarkman thank you!
-
We seem to have largely stopped innovating on trying to lower barriers to programming in favour of creating endless new frameworks and libraries for a vanishingly small number of near-identical languages. It is the mid-2020s and people are wringing their hands over Rust as if it was some inexplicable new thing rather than a C-derivative that incorporates decades old type theory. You know what I consider to be genuinely ground-breaking programming tools? VisiCalc, HyperCard and Scratch.
@jonathanhogg Rust does fundamentally rely on advances in type theory that weren't there until 2010s, so I don't think this is a fair characterization of it
-
@jonathanhogg Rust does fundamentally rely on advances in type theory that weren't there until 2010s, so I don't think this is a fair characterization of it
@jonathanhogg I do agree otherwise and I've spent a lot of time working on lowering barriers to entry for RTL development; I think quite successfully, after observing a chemical engineer with no formal CS training or background develop an electron microscope data acquisition package from the basics
-
@jonathanhogg Rust does fundamentally rely on advances in type theory that weren't there until 2010s, so I don't think this is a fair characterization of it
@whitequark Heh! I honestly expected to get more pushback on the Rust quip
. I don't mean to ding on it in particular, I actually like Rust a lot. Introducing the borrow checker as a type-theoretic way of doing formal proof of memory safety is genuinely great, but algebraic types and protocols go way, way back. -
I will say one thing for generative AI: since these tools function by remixing/translating existing information, that vibe programming is so popular demonstrates a colossal failure on the part of our industry in not making this stuff easier. If a giant ball of statistics can mostly knock up a working app in minutes, this shows not that gen-AI is insanely clever, but that most of the work in making an app has always been stupid. We have gatekeeped programming behind vast walls of nonsense.
@jonathanhogg I get the strong impression we don't want to! We want to feel like Real Engineers doing Real Programming.
This can really be seen when it comes to the web...
-
I will say one thing for generative AI: since these tools function by remixing/translating existing information, that vibe programming is so popular demonstrates a colossal failure on the part of our industry in not making this stuff easier. If a giant ball of statistics can mostly knock up a working app in minutes, this shows not that gen-AI is insanely clever, but that most of the work in making an app has always been stupid. We have gatekeeped programming behind vast walls of nonsense.
@jonathanhogg
i think it can only generate an app that is sort of working maybe and could have security problems -
@whitequark Heh! I honestly expected to get more pushback on the Rust quip
. I don't mean to ding on it in particular, I actually like Rust a lot. Introducing the borrow checker as a type-theoretic way of doing formal proof of memory safety is genuinely great, but algebraic types and protocols go way, way back.@jonathanhogg I very much agree with that! at the time Rust was a tiny little language with a lot of promise I was heavily using OCaml, which is nearly as old as C, and a lot of what I like about Rust is just that it finally brings those decades old techniques into the mainstream. I think this is in itself a valuable achievement!
the other thing about Rust is that it does make systems programming more accessible by giving you lots of guardrails in the trodden path. it is not only focused on that and you could argue it's not even primarily focused on that, but I think it's a very important aspect of it that allows a lot of people to do things they'd otherwise be afraid of.
I also think it's useful to say "accessible to whom?". in my description above, the unstated part was "makes system programming accessible to developers with experience in different domain", but this is very different from "makes programming accessible to people who do not think of themselves and do not want to be 'developers'" which as I understand is more what interests you
-
@jonathanhogg I very much agree with that! at the time Rust was a tiny little language with a lot of promise I was heavily using OCaml, which is nearly as old as C, and a lot of what I like about Rust is just that it finally brings those decades old techniques into the mainstream. I think this is in itself a valuable achievement!
the other thing about Rust is that it does make systems programming more accessible by giving you lots of guardrails in the trodden path. it is not only focused on that and you could argue it's not even primarily focused on that, but I think it's a very important aspect of it that allows a lot of people to do things they'd otherwise be afraid of.
I also think it's useful to say "accessible to whom?". in my description above, the unstated part was "makes system programming accessible to developers with experience in different domain", but this is very different from "makes programming accessible to people who do not think of themselves and do not want to be 'developers'" which as I understand is more what interests you
@whitequark yes! Rust totally makes accessible a lot of previously esoteric type theory to people who are programming at a low enough level that they probably should be using it. But even as someone who lives for this sort of shit, it’s too low level for 95% of what I want to be doing day to day
-
@whitequark yes! Rust totally makes accessible a lot of previously esoteric type theory to people who are programming at a low enough level that they probably should be using it. But even as someone who lives for this sort of shit, it’s too low level for 95% of what I want to be doing day to day
@jonathanhogg completely fair, yeah!
-
@jonathanhogg this is my central response to the "AI makes software development accessible" argument.
Once upon a time anyone could program their personal computer using a book that came with it. We taught it to all the kids in my tiny town's elementary school. My shopkeep neighbor and our local mechanic wrote their own custom software with no CS background.
BASIC, Hypercard, personal computers, printed manuals > LLM's.
@requiem @jonathanhogg I am old enough to remember the days before gcc when I wanted to learn how code everyone laughed and said first I'd need $500 for a copy of the Borland C compiler. It wasn't until linux became popular that I actually had a way to compile my C programs.
-
I will say one thing for generative AI: since these tools function by remixing/translating existing information, that vibe programming is so popular demonstrates a colossal failure on the part of our industry in not making this stuff easier. If a giant ball of statistics can mostly knock up a working app in minutes, this shows not that gen-AI is insanely clever, but that most of the work in making an app has always been stupid. We have gatekeeped programming behind vast walls of nonsense.
@jonathanhogg Creating CRUD for any database object was a solved problem in Django 20 years ago. No reason for people to pretend it was difficult all this time.