7 ms·
Coding is trying to order bytes into doing arbitrary stuff that is useful because of some transient conjunction of factors in the real world. We have developed
by namaria 2y ago
Coding is trying to order bytes into doing arbitrary stuff that is useful because of some transient conjunction of factors in the real world.
We have developed programming languages because coding in machine language is horrible, and over the decades we've refined them into tools people can use fluently and just directly think in code when they have to make a computer system behave in a certain way.
Only someone who has never built anything of significant complexity and utility can think that putting natural language encoding between you and the bytes is a net positive.
- deleted 2y ago[deleted]
- s_dev 2y agoAI is a tool like any other. Autocomplete on steroids -- markov chains taken to the extreme. We already put natural language between us and the bytes. Hence why most keywords and variable names (a hard part of computer science) are in simple English and it is considered a net positive.
- namaria 2y agoThe memory and compute requirements to develop and run these models make no sense if the marginal improvement in autocomplete is the big end result. They only make sense in a world where machine can derive intent from natural language and actually conform to what people mean when they ask for something. This is clearly a fantastical result that LLMs are very short of.
- nailer 2y agoIt’s interesting. I would’ve agreed that ‘driving intent from natural language is something that LLMs have fallen far short of’ maybe a month ago. Since then, I spent a week trying to get cursor to work, and after dealing dealing with all the bugs, and restarting the composer each time with a new prompt, was able to get what I would consider a quality output for a moderately complex app (a parimutuel betting market). The issue isn’t that LLMs are terrible, it’s the software like cursor is buggy and poorly written. It should know that I don’t want to use code from an old version of the library I am using because the new library I am using is already in my projects dependencies. It should let me set up preferences for different programming languages. And preferences for all programming languages. So when I give it a prompt, it looks at the dependencies and language rules I already have set up, adds those to the prompt and produces the quality output I’m seeing now without me having to manually specify all those things. Short version: LLMs rule the software is just shitty.
- otabdeveloper4 2y agoLLM's don't "know" anything, it's just a souped-up Stackoverflow search.
- Xmd5a 2y agoMy experience has been the opposite, I found cursor to be an improvement over comparable tools such as aider. I was able to write a plugin for ComfyUI (a 60k loc python/js codebase) in 2 hours thanks to semantic search. It's not an exercise I'm versed in. It wasn't that different from the kind of internal monologue I'd have held in my head had I done it on my own, including misguided confidence that gets crushed 5 minutes later as you read other parts of the code that show you had the wrong understanding of how it actually works. In this context, LLMs can be very useful because a ground truth already exists to compare their replies against.
- nailer 2y ago> My experience has been the opposite, I found cursor to be an improvement over comparable tools such as aider. That sounds like a similar finding to what I had (comparing to copilot in my own case). My point, which my post maybe didn’t make so well, was a huge amount of the prompt should’ve been written for me in order to get to an acceptable result sooner.
- meltyness 2y agoI see this and conclude the opposite that they were adhering to the principle. Basically AI writes the buggy code that is upsetting you. Similar experience trying to use GenAIScript, btw, and peering inside the box the code and product is pretty well incomprehensible.
- nailer 2y agoMy post above does not seem to be well written as it’s been frequently misinterpreted. Yes, the AI is writing the buggy parts that upset me but my point was creating a good quality prompt would’ve taken a lot less time if Cursor had had some reasonable defaults.
- llm_trw 2y ago>The memory and compute requirements to develop and run these models make no sense There is the story that von Neumann flew off the handle the first time he saw an assembler. >>How dare you waste compute cycles on this frivolity? Just use machine code like everyone else.
- chongli 2y agoThere is the story that von Neumann flew off the handle the first time he saw an assembler. That was in the 1940s when labour was very cheap and compute was insanely expensive. We’re talking hundreds to thousands of programmers’ salaries for the cost of one computer.
- aleph_minus_one 2y ago> Hence why most keywords and variable names (a hard part of computer science) are in simple English and it is considered a net positive. As I'm not a native English speaker, I disagree. I learned programming long before I got decent in English, and even today I just consider the English keywords in programming languages to be some "abstract mathematical concept" that by mere coincidence is named after some real, existing English word. Even today, being somewhat decent in English, I stil think this way when I see program code. I actually would insist that this is a much more useful way to think about good programming, since this way you have no difficulties to ask yourself all the time whether it would make sense to replace some "English-named" concept by something more useful, but which has no analogue in the English language (or any other natural language).
- llm_trw 2y ago49 20 72 61 74 68 65 72 20 74 68 69 6e 6b 20 74 68 61 74 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 6b 65 79 77 6f 72 64 73 20 6d 61 74 74 65 72 20 61 20 6c 6f 74 2e
- kmstout 2y ago4b 65 6e 74 20 50 69 74 6d 61 6e 20 72 65 6c 61 74 65 64 20 5b 30 5d 20 74 68 65 20 63 6f 6d 6d 65 6e 74 20 6f 66 20 61 20 70 72 6f 67 72 61 6d 6d 65 72 20 69 6e 20 50 61 6e 61 6d 61 2c 20 77 68 6f 20 6c 69 6b 65 6e 65 64 20 45 6e 67 6c 69 73 68 20 6b 65 79 77 6f 72 64 73 20 74 6f 20 6d 75 73 69 63 61 6c 20 6e 6f 74 61 74 69 6f 6e 73 20 62 6f 72 72 6f 77 65 64 20 66 72 6f 6d 20 49 74 61 6c 69 61 6e 2e 0a 0a 5b 30 5d 20 68 74 74 70 73 3a 2f 2f 64 65 76 65 6c 6f 70 65 72 73 2e 73 6c 61 73 68 64 6f 74 2e 6f 72 67 2f 73 74 6f 72 79 2f 30 31 2f 31 31 2f 30 33 2f 31 37 32 36 32 35 31 2f 6b 65 6e 74 2d 6d 2d 70 69 74 6d 61 6e 2d 61 6e 73 77 65 72 73 2d 6f 6e 2d 6c 69 73 70 2d 61 6e 64 2d 6d 75 63 68 2d 6d 6f 72 65
- tgv 2y agoThere have been studies (in the 80s or 90s, I never wrote down references, unfortunately, but they probably involved lexical priming) that support that idea. They suggest that English keywords get a meaning of their own for non-native speakers.
- d_tr 2y agoBad take. Identifiers are just labels.
- nailer 2y agoI don’t think anyone disagrees that identifiers are labels. If you’re claiming that these labels are unimportant, I’d be interested in why you think this.
- d_tr 2y agoIdentifiers are super important and should be chosen wisely, but a C program with English identifiers is still a C program, while an LLM prompt is in fact NL and a whole new layer of that between your brain and the bytes. Which is why I think that saying "we already put NL between us and the bytes" minimizes that difference and is a bad take.
- dartos 2y agoExactly. Not to mention that our existing programming languages have a deterministic output given the same code and the same compiler. LLMs do not. Thus, LLM prompts are an entirely different class of tool than a programming language. This should be obvious to anyone who has written code, but alas.
- nailer 2y agoOoh. Good point. I guess we need traditional languages as a way to debug the created machine code. But… what if we didn’t? Ie the LLM made bytecode and we had some better way to talk about the concrete implementation.
- seba_dos1 2y agoThey mostly aren't important though. When I first learned Pascal, JavaScript and PHP as a child, I had barely any idea what all those English words meant. Later on, when I was learning English in middle school, I was remembering their meanings by recalling what they do in code.
- JTyQZSnP3cQGa8B 2y ago> AI is a tool like any other. Autocomplete on steroids No, AI is a shitty tool that has yet to prove its utility. Autocomplete works by analyzing the official API and interface, it's completely different than AI which hallucinates meaning between words and also stuff that it was fed before it met you. > variable names (a hard part of computer science) Naming is for software engineering, not CS. One more confusion by people who want to sell us AI at all cost.
- dagw 2y agoAutocomplete works by analyzing the official API and interface, it's completely different than AI You can (and should) give the AI access to your existing codebase and any relevant documentation to use as context if you want good results. If you give the AI zero context for the problem it is trying to solve, of course it will struggle. If you give it all the necessary context, it will do much better. I've found that just uploading the documentation of the API or library you are working with before asking the AI questions about it makes a huge difference in the quality of its output.
- criley2 2y agoAt some point, you become the luddite. Maybe you have no experience with modern AI dev tools, maybe you work in a language that is underrepresented in models meaning off the shelf tools don't work well, or maybe you're just an old curmudgeon who will die on a hill. But modern AI tools are far beyond "auto complete". (I actually turn off those in-line completions, I feel they ruin flowstate). The tools now are fully prompted, with multi-file editing, with full codebase context, with web/search and doc integration, and for "on the rails" development are producing high quality code for "easier" tasks. These modern models and tools can solve nearly every single leet code problem faster than you. They can do every single Advent of Code problem likely 10X-100X faster than you can. In my professional, high standards, very legal and contract driven web app world, AI tools are still very useful for doing "on the rails" development. Is it architecting entire systems? No of course not (yet). Is it emulating existing patterns and extending them for new functionality 10X faster than a Jr or Mid? Yes it is. Is it writing nearly perfect automated tests based on examples? Yes it is. It is scaffolding new ideas and putting down a great starting point? Yep. And it's even able to iterate on featurework pretty well, and much faster than Jr/Mid. The kind of work I'd give to a Jr/Mid and expect to take 2-3 days before they need serious feedback up and down the change, these AI are doing in about 30 seconds, maybe 90 seconds if you need to iterate a few times on the prompt. I get that "AI" is a buzzword that is pumping valuations and making business people see $$$. But coding assistants are not that. For many programmers, they are quickly becoming valuable tools that do in fact speed up development.
- zahlman 2y ago>Hence why most keywords and variable names (a hard part of computer science) are in simple English "Natural language" is about far more than individual words.
- qwertox 2y agoThe hype is around having AI replace your typing, that is, to code for you. The hype should not be around replacing the typing, but in assisting your thoughts. When you code, there's the dialog in your brain which thinks about the code and also creates the questions which you know you must answer in order to then transition to the dialog with the machine, that is, to type code. And in this first part LLMs can be extremely useful, which will come to the point where you select a line, then explain your intent, and while the AI retrieves documentation and possible solutions, you can reason about the problem and then pick and choose from what the AI has collected for you. > Only someone who has never built anything of significant complexity and utility can think that putting natural language encoding between you and the bytes is a net positive. The question is then if assistants are "sitting next to you", like a secretary and a mentor, or if they are sitting between you and the editor, as the thing you need to control. An assistant can be a really effective refinement in the programming process. Even so far that it ends up motivating you instead of you constantly getting demotivated due to hitting the wall of "not another problem that I need to solve before I can really continue" (which happens all to often).
- barrell 2y agoPersonally, I haven’t found LLMs to be helpful for the internal dialogue. Even with a lot of exposition, code samples, and documentations, it always provides either obvious solutions (store items in a vector!), pointless modifications (use map and filter instead of reduce!), or it just makes up APIs that don’t exist. I think it’s really good with the 101-level academics side. Learning the basics of anything through a conversational manner can be massively helpful. As soon as your situation exceeds textbook level, I’ve found them to always be a waste of my time, and nothing I’ve seen as of late makes me think they’re trending in a direction to be helpful in this scenario
- klabb3 2y ago> As soon as your situation exceeds textbook level, I’ve found them to always be a waste of my time Doubly so. A very knowledgeable and helpful tutor would say ”you’re asking for advanced or detailed guidance. I don’t know the specifics, but I can point you to some places that you’d be able to find these answers on your own”. What the AI does is continue its babbling confidently while being incredibly wrong and non-sensical, like a person suffering a stroke or concussion where the mannerisms are normal but they don’t remember their name. It seems completely unable to judge its own knowledge (probably because it is).
- insign_bit 2y agoThis reminds me of something Dijkstra wrote almost 50 years ago in On the foolishness of "natural language programming [1]: > When all is said and told, the "naturalness" with which we use our native tongues boils down to the ease with which we can use them for making statements the nonsense of which is not obvious. Although this is obviously not about LLMs, its astonishing how many parallels can be drawn to today's usage of AI systems. 1: https://www.cs.utexas.edu/~EWD/transcriptions/EWD06xx/EWD667.html https://www.cs.utexas.edu/~EWD/transcriptions/EWD06xx/EWD667...
- bwfan123 2y agoWow, thanks for sharing this beautiful essay by a legend that captures the essence of the llm debate. That, the use of formal languages - although an evil (since it is not a natural human language) is essential to avoid nonsense (ie hallucinations). While intuition/natural language is more imaginative, formalism (ie narrow interfaces) is a forcing function to make things work. According to Dijkstra, the use of natural languages regressed civilization by thousands of years (because of the nonsense and imprecision) ! So, expect thousands of years of LLM hell if we adopted it to replace our formal languages. Indeed, math and other symbolism/formalism is a crowning achievement of humans.
- jstummbillig 2y agoThat's obviously wrong, as demonstrated by the engineers invested in building tools to enable that.
- trinix912 2y agoWhich has been proved again and again to only get you 70% there [1]. [1] https://addyo.substack.com/p/the-70-problem-hard-truths-about https://addyo.substack.com/p/the-70-problem-hard-truths-abou...
- gessha 2y agoA lot of engineers invested in building crypto stuff and we didn’t go far in personal banking. Hype-driven development is not guaranteed to succeed.
- jstummbillig 2y agoThat was not what was argued, and not what I am arguing. OP claimed that "only someone who has never built anything of significant complexity and utility can think that putting natural language encoding between you and the bytes is a net positive." Unless OP is also willing to claim that all the people who are working on LLM dev tools are frauds, and act against their better knowledge, OPs claim is obviously false. The entire premise that the people who build these tools operate under is that natural language "between you and bytes" can be a net positive.
- dartos 2y agoPopularity doesn’t demonstrate anything
- bambax 2y agoI use AI (Sonnet) to write relatively complex SQL queries, but that always need a review before implementation. It's sometimes brillant, and at the same time can suggest wrapping a single, atomic query in a transaction, for no reason. Just asking "why?" will result in profuse apologies and thank yous, but it never explains what caused the mistake in the first place. Trusting an AI to code an app from start to finish seems crazy to me but hey... if some people can pull it off, good for them I guess.
- roland35 2y agoThat's the type of thing AI is great for! I find AI is pretty decent at generating data related code with Pandas, and I since I only rarely use Pandas it saves me a ton of time relearning everything. Where ai starts breaking down is how to effectively incorporate a new feature in a complicated existing codebase. That is where us engineers can continue to hold an advantage.
- petercooper 2y agoOnly someone who has never built anything of significant complexity and utility can think that putting natural language encoding between you and the bytes is a net positive. AppleScript might convince me of your argument.. ;-) But, seriously, we've been putting abstractions between "us and the bytes" ever since Fortran and COBOL appeared (and indeed, earlier). We can argue about the quality and expressiveness of those abstractions, and there are a lot of arguments against natural languages in this task, but the broad idea of putting things in between developers and machines is sound so it's worth continuing to explore IMHO.
- withinboredom 2y agosure; but these languages we speak to computers in are deliberately non-ambiguous and lack nuance. Natural language is both ambiguous and nuanced. "Have a nice day!" can mean many things (an insult, or sincere, for example).
- out_of_protocol 2y agoVery maddening, some regular phrasees can be interpreted in multitude of ways, often contradictory. Even with full context it's still ambiguous
- petercooper 2y agoI accept your point and agree in principle! However, I think there's a lot of fertile ground to be researched and experimented with here. I'm mostly pushing back against the parent's assertion that "putting natural language encoding between [a developer] and the bytes" is inherently of no net benefit. (I'd also argue many programming languages introduce ambiguity, are riddled with undefined behaviors, subject to 'dialects', and distorted by issues similar to those affecting natural languages. C++ perhaps most notoriously. This is something I'd rather debate in good humor in person, though, as I suspect this could be an entirely separate problem.. ;-))
- withinboredom 2y agoI’m not sure why you need to do any research. Just look at how hard it is to drag software requirements from a business person. Or how hard it is to explain to a “pedantic asshole” how to make a sandwich (https://youtu.be/FN2RM-CHkuI?si=3lanUOhXkj2sP8GA https://youtu.be/FN2RM-CHkuI?si=3lanUOhXkj2sP8GA).
- csomar 2y agoThis massively underestimate what current LLMs can do. Yesterday, I was able to create a 600 lines script in 20 minutes or so that essentially setup a Cloudflare worker bindings (KV, Queues, Hyperdrive, etc...). The complexity is very low and debuggu-ability is easy. Reading this infra. code is fast. However, if I was to do this manually, it would have taken me a full day reading through the docs and trying the implementation back and forth for each binding I am connecting to. Claude 3.5 did it from the first shot.
- jason_zig 2y agoYou still have to become a domain expert to debug it though?
- hombre_fatal 2y agoNot when it's code that was only hard to write because you needed to know the right incantations to pipe data between different services. Now you see the incantations that mostly work and the job of transforming it is easy. Java's Bouncy Castle crypto library is a good example of this. The thing you're trying to do might be simple, but to do it, you might need to instantiate 8+ Java classes. It doesn't mean it's complex to read or hard to debug.
- ConspiracyFact 2y ago> The thing you're trying to do might be simple, but to do it, you might need to instantiate 8+ Java classes. It doesn't mean it's complex to read or hard to debug. I’m skeptical that code that needs to instantiate eight separate classes will remain easy to debug in the general case.
- kuschku 2y agoLLMs give you a lot of false confidence, just because something looks right doesn't mean it is. Especially with cryptography you should NEVER use LLMs. Read the docs, write down some notes, and make sure you properly understand everything before you use it. You need to really think it through before you end up leaking user data or worse.
- myth2018 2y agoI agree, and it's sad that, despite all those pitfalls, some companies and CEOs will keep pushing the idea that human programmers can be replaced by AI. But well I guess there's a bright side to see here: those LLMs applied to software development might become the new Genexus and there are gonna be plenty of open positions for humans to rewrite entire systems in a not so far future.
- bccdee 2y agoExactly. The formalism of computer code will always create some amount of boilerplate—there's no perfect language—but in my (admittedly limited) experience, an LLM is a middleman which distances you unacceptably from your own code. Whether you review the code or you write the code, the intellectual effort of deciding which approach is best and understanding the solution still needs to be undertaken. All it's saving you are the keystrokes, at which point it's glorified intellisense.
- seanmcdirmid 2y agoNote that intelligence/code completion was never about saving keystrokes, so I assume LLMs shouldn’t be either. Code completion has always been about getting a list of things you can do on a particular type, saving you from having to remember everything in your head (and APIs have gotten more numerous as a result). LLM code assistance that I’ve seen is poorly designed in that it usually gives you one most likely choice (so save keystrokes) and doesn’t allow you to browse through a bunch of likely possibilities.