Over the decades I’ve seen the praise and critique of the “Unix way”. I don’t remember reading about the aspect I’ll describe below. This might be a banality, and I haven’t invested much thought into it either. I’m just curious to hear your opinions.

At the core of the Unix way is that tools should do just one thing. Users very often need results that can only be achieved after doing several things. With only single-purpose tools at hand, users have to integrate them. In other words, the tool authors delegate integration to the users.

Here’s the idea I want to discuss. In programming languages, integrating various modules to achieve a goal is already a complex task because we often have to handle numerous failure modes and edge cases. In shell scripts this is much worse, since shells are more limited than programming languages. Writing a tool that does only one thing looks like avoiding the most complicated task. Which leads to a conclusion that the Unix way only works well in a rather small fraction of use cases; the majority of cases are better served by different approaches.

What do you think?

  • arty@feddit.orgOP
    link
    fedilink
    English
    arrow-up
    0
    arrow-down
    1
    ·
    2 days ago

    Well, my post describes the experience of a developer using these tools. “User” here is supposed to mean the person who combines tools to build a more complex piece of software.

    • jollyrogue@lemmy.ml
      link
      fedilink
      arrow-up
      0
      arrow-down
      2
      ·
      2 days ago

      Yeah, and Unix is built around the paradigm of letting people build the tools they need. People are supposed to be skilled in using the computer as a tool to accomplish tasks.

      Originally, IT wasn’t a defined business function. Scientists, accountants, and others, were given access to compute resources, and they were expected to learn the tools to master their jobs. Part of that, was learning how to program the computers.

      • arty@feddit.orgOP
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 day ago

        People are supposed to be skilled

        Software is supposed to make simple things simple, while complex things should be possible. I’d expect iterating over a list of files to be simple, but everyone has to remember to include special handling of whitespaces in filenames. That’s just one example.