They're trying to normalize calling vibe coding a "programming paradigm," don't let them.
They're trying to normalize calling vibe coding a "programming paradigm," don't let them.
They're trying to normalize calling vibe coding a "programming paradigm," don't let them.
Tf is "return oriented"?
When you write code for a "runtime" that wasn't intended to run your code.
Seems like not a real programming paradigm, and I don't mean in a No True Scotsman way. It really is in a separate category of thing. Could've said logic programming or stack-oriented programming.
When you write code for a “runtime” that wasn’t intended to run your code.
That definition would be too broad, as includes any type of exploit.
In ROP, you modify the stack to write return addresses and then return to jump to the first of these addresses, the return addresses go to parts of the executable that end with a return instruction (gadgets), so it will always return to the next of your return address.
(That video is maybe not the easiest introduction to ROP.)
Having ROP in here as normal programming paradigm, as opposed to vibe coding, made the meme so much better.
Do you know what a memory stack and assembly are?
If you want code that does assembly operations A, B, and then C, you might be able to accomplish it by scanning loaded memory (or its corresponding binary) for bits that, when translated into assembly, do:
A
D
return
This set of three instructions is a gadget. In practice, it's a location in memory.
And then you find another gadget.
B
C
return
Then, if you don't care about D, or D does something irrelevant that won't screw up what you're trying to do, or won't crash the program, you can replace the stack with the addresses of gadgets one and two. When gadget one returns, the stack is popped and then gadget two executes.
Since the computer did ADBC and D was irrelevant, the system executed your ABC malware and now you win.
Is finding gadgets that execute actual malware hard? Surprisingly not!
I don't know what vibe coding is, but I'm assuming it's when you relax in your chair, lean back, place your hands on the keyboard and just type. Let the vibes guide your code.
Vibe coding is when you're not coding, just typing prompts into AI in hopes it will produce a legible code.
i tried that one time. it was the only time i tried to use AI for something actually useful that i needed. i wanted to write some simple JavaScript that would rapidly flash 3 equally sized images on the screen of a handheld linux machine. the AI provided a list of instructions of software and other prerequisites i would need. after installing everything and entering in the code provided into the software, it immediately started yelling warning signs at me about the code. nothing ran. it was all useless. it felt like talking to a paranoid schizophrenic. the ai was so sure of the code, and insisted that i must be making a mistake, and kept apologizing and providing more useless code. it was literally just like talking to a paranoid schizophrenic at a bus stop, insisting all the crazy shit they're saying REALLY makes sense, if only you'll let them explain it to you further.
what trash.
I also don't know what vibe coding is, but my guess is it's coding while high.
Almost, finish that first sentence with "the ChatGPT prompt and copy-paste the result without reading."
Its when you start a new program without any clear intention or goals and just use current emotion to guide you.
I mean, if my boss understands that the output of vibe coding rarely works, i'm happy to chat with the AI all day if I keep the same salary.
Until they start demanding 10x output in the same timetable
that's not vibe coding then. And AI can be used like a junior dev, you give it simple instructions and check everything it does. Using it like that can probably boost performance of already good seniors, but not by the factor 10.
NGL I'm waiting for the first lawsuit where an engineer is sued by a company by vibe coding as they were told and caused irreparable harm to the company as the whole product has to be redone from the ground up.
But the product is also redone from the ground up by vibe coding because lessons are impossible to learn and corporate is infallible.
caused irreparable harm to the company as the whole product has to be redone from the ground up
Lol this is most projects for most companies I've worked for, long before AI came on the scene. Somehow these multi-year multi-million dollar disasters were never fatal.
Vibe coding is closer to script kiddy
No love for the 'declarative' programming paradigm? You can actually do some useful work with SQL or Ansible...
Functional is also declarative because control flow is implicit/unspecified.
What's actually missing is logic programming, of which the likes of SQL are a subset.
Are those Turing complete? (Legit question, I'd love to know)
There are scripting extensions to SQL that definitely are. There are some features in some SQL servers that make it Turing Complete even without scripting stuff.
https://stackoverflow.com/questions/900055/is-sql-or-even-tsql-turing-complete
Like HTML5+CSS3 being Turning Complete, it's easy to add features that accidentally make you hit the threshold. Many would argue that it's a sign complexity has run away from you, and I tend to agree.
Frezik has a good answer for SQL.
In theory, Ansible should be used for creating 'playbooks' listing the packages and configuration files which are present on a server or collection of servers, and then 'playing the playbook' arranges it so that those servers exist and are configured as you specified. You shouldn't really care how that is achieved; it is declarative.
However, in practice it has input, output, loops, conditional branching, and the ability to execute subtasks recursively. (In fact, it can quite difficult to stop people from using those features, since 'declarative' doesn't necessarily come easily to everyone, and it makes for very messy config.) I think those are all the features required for Turing equivalence?
Being able to deploy a whole fleet of servers in a very straightfoward way comes as close to the 'infinite memory' requirement as any programming language can get, although you do need basically infinite money to do that on a cloud service.
Pure SQL, as in relational algebra, is LOGSPACE/PTIME. Datalog is PTIME-complete when the program ("query") is fixed, EXPTIME-hard otherwise.
It's all quite tractable, but there's definitely turing-complete declerative langugages. Not just pretty much every functional language, but also the likes of prolog.
You lost me at return oriented programming. Getting something working out of that is way more difficult than doing it out of vib coding. (Way more impressive though)
wat
I wonder if this is how scholars reacted to the printing press
Independently of what your position to vibe-coding or LLMs are: Vibe coding just isn't any programming paradigm. A programming paradigm describes the structure of the program, often on a grammatical (programming language) level (e.g. declarative vs imperative). While "Vibe Coding" can lead to using one or the other paradigm, but is not a paradigm itself, it's a tool to achieve that, similar as using an IDE with code-completion to generate code.
the printing press didn't unlawfully steal content and print exabytes of shit-streaked garbage.
the printing press expanded the potential for knowledge to be shared at a higher volume and speed due to the nature of mass printing.
it was more akin to multi-core hyperthreading than AI.
I think what you mean is that AI is like the discovery of distribution of electricity. the story of where a self-educated immigrant attempted to sell his method of distribution that was safer and more pragmatic, was slandered and tormented by a tech oligarch that had no qualms with electrocuting elephants in public. oh and not to mention Thomas Edison didn't even "invent" AC power, he stamped his name on it and falsely claimed he did. sounds like some other tech bro we know today...
this is the problem with you "AI bros", you can't even provide a valid argument because your brain has turned to dog shit from using AI 100% of the time.
You'd have a point if this was an artist community, but coding AI as it exists does not work that well.
I'd give a better example, but most of the technologies that didn't actually work are lost to history. Hmm, maybe reapeating crossbows and that giant 40-reme boat that the one Greek king built?