Hasty Briefsbeta

Bilingual

LLMs could be, but shouldn't be compilers

3 months ago
  • #Programming Abstractions
  • #LLMs
  • #Software Engineering
  • LLMs are being compared to compilers, raising questions about the future of programming and whether people will need to look at underlying code.
  • Higher-level programming languages reduce mental complexity by abstracting away low-level details, allowing programmers to focus on more abstract concepts.
  • Compilation involves giving up some control (e.g., memory management, code layout) in exchange for reduced mental burden and increased productivity.
  • Abstractions in programming rely on well-defined semantics, testing, and contextual guarantees to ensure correctness.
  • LLM-based programming differs because natural language lacks precise semantics, making functional correctness harder to define and verify.
  • The core issue with LLMs is not just hallucinations but functional underspecification—natural language prompts leave gaps that the model must fill.
  • LLMs can generate multiple 'reasonable' implementations from vague prompts, leading to potential mismatches with user intent.
  • Development with LLMs may shift toward iterative refinement, where users refine prompts based on generated outputs rather than designing from scratch.
  • The danger lies in outsourcing critical design decisions to the model, leading to software that users don’t fully understand.
  • Specification and verification will become increasingly important skills as LLMs make it easier to generate code from well-defined requirements.
  • While LLMs can be seen as compiler-like in translating specifications to code, the control relinquished is much greater than with traditional compilers.
  • To use LLMs effectively, developers must strengthen their ability to specify requirements precisely and verify outputs rigorously.