Comment by RHSeeger
2 days ago
By that same logic, we don't need object oriented features in a language, because we have closures and can get the same functionality with a library.
Sometimes, having a language with a distinct syntax is nicer.
2 days ago
By that same logic, we don't need object oriented features in a language, because we have closures and can get the same functionality with a library.
Sometimes, having a language with a distinct syntax is nicer.
Typically, what's nicer is the absence of other features that interfere with the important ones.
For example, Prolog isn't a general purpose functional or imperative language: you can assert, retract and query facts in the automatically managed database, risking only incorrect formulas, inefficiencies and non-monotonicity accidents, but not express functions, types, loops, etc. which could have far more general bugs.
I like how classes escape closures but then dependency injection frameworks have to work around that because now it is hard to think of construction as passing arguments to functions in the correct order.
I am so glad LLMs eliminate all of that and just call functions in the right order.
> I am so glad LLMs eliminate all of that
When LLMs do something, it's always because everybody was already doing it.
The noise you see online about it exists exactly because most people don't understand and can't use DI.
No, LLMs like NextJS style injection as much as anyone.
There is nothing magical about topological sort and calling constructors in the right order, which is all DI is.
I dislike it a lot, it is exactly like any other construct that allows you to throw code at anything in a way that sucks (Haskell lens, optics, monad transformers).
It allows people to granularize the whole codebase to the point where you can’t do much about it. For most, they should just stick with functions, no one can build 100 levels deep function callstacks without it being cumbersome, but DI makes it a breeze.
2 replies →
Absolutely. In the same direction as some people I've heard along the lines of "Anything you can do with language X, can be done with assembler, just have some routines for that in your stash"