• Farooq@realbitcoin.cash
    link
    fedilink
    arrow-up
    20
    arrow-down
    3
    ·
    edit-2
    1 day ago

    I personally think both pro LLM and anti LLM are wrong. One group think they are gods. The other think they are demons. LLMs can be useful for programming to some extent. But they will create a disaster if you don’t know what are you doing. I have recently published a post about the matter on me blog. I think the best part is:

    I strongly believe that LLMs are useful for programming to some extent. Imagine you have a shop and you get a robot to do the moves for you. So you instead focus on the main business concerns.

    So if you want to make some changes to the code which don’t require intelligence, that is they are just mechanical tasks, LLMs are good. If you want the LLMs to understand semantics of your code, you have chosen the wrong tool. Maybe in future we’ll have new AI software and tools which also understand semantics to some extent. But I highly doubt a transformer will be able to do it. They just predict the next likely token.

    There is something I haven’t yet added to the post. So I am writing it here. Our computers are Universal Turing Machines. There are some fundamental limits to what a turing machine can’t do. Those are called undecidable problems. For instance a turing machine can never check if two pieces of code are semantically equivalent[1]. But that’s what human programmers can do. That’s why I emphasize on tasks which require no intelligence.

    [1] That’s about the general case. Sure there are exceptions. But as we say “exception is not the rule”.

    • wicked@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      3 hours ago

      Most of the “undecidable” are only undecidable for a subset of the problem instances, while a vast number of instances can be even trivially decidable. For example in the undecidable halting problem, both you and a computer can trivially deduce that while(true) will not halt. In the same way a computer can deduce that many instances of two pieces of code are semantically equivalent.

      I’d like to see an instance of the problem where a human could decide it and the computer could not.

      • Farooq@realbitcoin.cash
        link
        fedilink
        arrow-up
        1
        ·
        3 hours ago

        Hey. The number of problems which can are decidable are infinite as are those which are not. But as soon as there is a backward jump in your code, a Turing machine most likely won’t be able to decide if it’ll halt or not. The while(true) is an exception. In the real world we have a great number of programs whose loops cannot be decided by a Turing machine. But the programmer who has written the code knows when the loop will terminate.

        If we see the machine code, if there is a conditional backward jump(unlike while(true) which is unconditional), in the general case it’s undecidable.

    • Phoenixz@lemmy.ca
      link
      fedilink
      arrow-up
      3
      ·
      13 hours ago

      LLMs are just tools, the problem is managers who all think they’re god machines and it causes hell on earth

    • sobchak@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      13 hours ago

      But that’s what human programmers can do

      I don’t think humans can solve the undecidable problems. If I understand them correctly, they’re like a law of nature; extends into mathematics, logic, and any formal system (e.g. Godel’s Incompleteness Theorem).

      • Farooq@realbitcoin.cash
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        3 hours ago

        I didn’t mean humans can solve ALL undecidable problems. As I have written in me reply to wicked, a programmer usually writes loops and the turing machine cannot decide their halting, for a vast majority of them.

    • SpaceCowboy@lemmy.ca
      link
      fedilink
      arrow-up
      1
      ·
      14 hours ago

      Yes! And the problem with decidability is you don’t which problem will be undecidable. You can only just try and they it’s like “well couldn’t find a solution, so it might be undecidable”. So we’ll need to put limits on how many tokens an AI should use before giving up, put limits on what it tries to do or we’ll be burning thousands of dollars on tokens and coming up with nothing. There will need to be a lot of judgement used on where we apply the algorithm.

      Judging when to use an algorithm and when not to use an algorithm based around how expensive it will be in terms of resources? That’s just another day for a software engineer.

      • Farooq@realbitcoin.cash
        link
        fedilink
        arrow-up
        1
        ·
        3 hours ago

        You have a valid point. I think currently there are assists which we know an LLM definitely can do for us. Like mechanical tasks. And tasks which we know LLM can never do. In between there is a gray area. I think we will learn about the gray area over time.

        Also I would like automatic generation of programs. But I don’t think an LLM is the last stop for it. I personally research in the field of Genetic Programming. I strongly believe in future we could have tools which generate or optimize programs when guided by a human. Currently we have Evolutionary Art and Music which do the same. Tho they are far from being actually usable, this is the same with every technology in the beginning.

        Also see this talk: https://cr.yp.to/talks/2015.04.16/slides-djb-20150416-a4.pdf