I’m talking about programs that can’t be improved no matter what. They do exactly what they’re supposed to and will never be changed.

It’ll probably have to be something small, like cd or pwd, but does such a program exist?

  • IanTwenty@piefed.social
    link
    fedilink
    English
    arrow-up
    19
    ·
    11 days ago

    There was a moment in time where maybe it was qmail:

    https://en.wikipedia.org/wiki/Qmail

    Ten years after the launch of qmail 1.0, and at a time when more than a million of the Internet’s SMTP servers ran either qmail or netqmail, only four known bugs had been found in the qmail 1.0 releases, and no security issues.

    More on how it was accomplished:

    https://blog.acolyer.org/2018/01/17/some-thoughts-on-security-after-ten-years-of-qmail-1-0/

    • kalpol@lemmy.ca
      link
      fedilink
      arrow-up
      3
      ·
      edit-2
      10 days ago

      Djbdns was excellent too, and ezmlm,.in fact all DJB’s software was quality for its single purpose. The world moved on though, and you had to have your basic Internet servers just…do more

  • Blackmist@feddit.uk
    link
    fedilink
    English
    arrow-up
    8
    ·
    10 days ago

    TeX?

    Development is considered to be complete, and the version numbering is just adding a digit of pi. Last change was 5 years ago.

    • ehxor@lemmy.ca
      link
      fedilink
      arrow-up
      2
      ·
      9 days ago

      This was going to be my point. The idea that as the software slowly makes new releases the version number more and more closely approximates Pi

    • Eager Eagle@lemmy.world
      link
      fedilink
      English
      arrow-up
      5
      ·
      edit-2
      11 days ago

      ugh, no way. It might do a fine job with typesetting, but the user experience is utterly awful and that’s very unlikely to change because of design choices over 40+ years. If you don’t think so, give typst a real try.

      • grue@lemmy.world
        link
        fedilink
        arrow-up
        2
        ·
        11 days ago

        TeX will be perfect after Knuth dies and the version number is incremented to π.

  • FizzyOrange@programming.dev
    link
    fedilink
    arrow-up
    7
    ·
    11 days ago

    Yeah you probably can’t do to much more to pwd or yes or whatever (yeah I know about the silly optimisations). I think once you get much beyond that there are always more features you can add. Even for something like cd, people have made fancier versions with fuzzy matching and so on.

  • Kissaki@programming.dev
    link
    fedilink
    English
    arrow-up
    6
    ·
    10 days ago

    For software to be perfect, can not be improved no matter what, you’d have to define a very specific and narrow scope and evaluate against that.

    Environments change, text and data encoding and content changes, forms and protocol of input and output changes, opportunities and wishes to integrate or extend change.

    pwd seems simple enough. cd I would already say no, with opportunities to remember folders, support globbing, fuzzy matching, history, virtual filesystems. Many of those depend on the environment you’re in. Typically, shells handle globbing. There’s alternative cd tools that do fuzzy matching and history, and virtual filesystems are usually abstracted away. But things change. And I would certainly like an interactive and fuzzy cd.

    Now, if you define it’s scope, you can say: “All that other stuff is out of scope. It’s perfect within it’s defined target scope.” But I don’t know if that’s what you’re looking for? It certainly doesn’t mean it can’t be improved no matter what.

    • ne0phyte@feddit.org
      link
      fedilink
      arrow-up
      3
      ·
      10 days ago

      If you just need the functionality then fzf does (among other things) exactly that. Interactive fuzzy cd. If you use the shell bindings you can do cd foo/bar/**<tab> to get a recursive fuzzy matching or you can do alt+c to immediately find any subdirectory and directly cd into it upon pressing enter. You can also use Ctrl+T to find and insert a path into the prompt.

      • Kissaki@programming.dev
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        9 days ago

        Thanks for the suggestion. As a first step, I set it up in Nushell with a ctrl+t shortcut:

        $env.config.keybindings = (
            $env.config.keybindings | append {
                name: fzf_file_picker
                modifier: control
                keycode: char_t
                mode: [emacs, vi_insert, vi_normal]
                event: {
                    send: ExecuteHostCommand
                    cmd: "commandline edit --insert (fzf | str trim)"
                }
            }
        )
        

        Maybe I will look into more. :) I’ve known about fzf but I guess never gotten around to fully evaluating and integrating it.

        Nushell supports fuzzy completions, globbing, and “menus” (TUI) natively. Still, the TUI aspect and possibly other forms of integrations seem like they could be worthwhile or useful as extensions.

  • thingsiplay@lemmy.ml
    link
    fedilink
    arrow-up
    5
    ·
    11 days ago

    I don’t think such thing as perfect software exist, only abandoned software. If the environment changes, then the software needs changes too.

  • kryptonianCodeMonkey@lemmy.world
    link
    fedilink
    arrow-up
    4
    ·
    11 days ago

    Depends on your definition of “perfect” and “improved”. Is it perfect because it does one fundamental thing really well? Is it improved by adding new features?

    I think what you’re meaning is, is there a program that is ubiquitous (or at least works anywhere), will basically remain used forever because it does a fundamental job that will always need to be done, and it does that job in the most straightforward way possible that can’t be made any algorithmically simpler, faster, etc. Probably plenty, honestly. Bitwise operations, arithmetic, fetch/store, etc. Though ubiquity/working anywhere gets rarer the higher you go from hardware. Even your suggestion of cd, for example, has to interface with an OS’s file system, of which there are several common types. What it’s doing is simple in concept, but will always be dependent on other programs for the file system.