jimbokun a day ago

Sometimes.

Sometimes it is one or more programs writing to a queue or topic, and other programs reading from that topic.

Or programs writing to and others reading from a Unix pipe.

Or programs talking to each other using HTTP.

Or Erlang processes communicating concurrently on one machine or across a network.

Or different programs sharing one database.

Or many objects communicating by passing messages in a small talk program.

There are many ways to encapsulate programs and have them interact.

  • wduquette a day ago

    Or to put it another way…clean architecture is how you arrange the code so that you don’t need to keep ALL of it in your head at once, just the big picture and this bit here.

  • ellis0n a day ago

    Totally agree and it depends on the current context of the programmer. For example, in the ACPUL language the program is split into boot images, files, modules, functions and expressions. All of these represent different levels of context encapsulation

  • minkles a day ago

    > Or programs writing to and others reading from a Unix pipe.

    write(message), read() -> message

    > Or programs talking to each other using HTTP.

    request() -> response

    > Or Erlang processes communicating concurrently on one machine or across a network.

    sendMess(message), waitMess() -> message

    > Or different programs sharing one database.

    execute(query) -> response

    ...

    I'm a mathematician at heart so I'm staying away from category theory as long as possible.

jll29 a day ago

The UNIX way would be to break things down into actual programs, where each one would be doing one thing well - and in such a way that they'd be useful as building blocks for solving other problems also.

  • Too 10 hours ago

    This must not be done prematurely. Replacing function calls with processes quickly break “go to definition” and all the other conveniences or guardrails provided by your compiler toolchain.

    Unfortunately been dropped into that situation. The system was constantly broken due to missing of malformated arguments. Nobody dared to change anything.

    Same applies to prematurely microservicing a monolith. At least there folks seem to be sensible enough to use protobufs or json, instead of loosely typed strings.

  • minkles 18 hours ago

    The unix way is re-parsing text 5000 times in separate programmes with no consistency or contract between them really.

    That's not great.

Aeglaecia a day ago

imagine having the brain to synthesise every function across a codebase , most humans gotta settle for interfaces :p

  • minkles a day ago

    Interfaces are just collections of function prototypes.

    • Aeglaecia 20 hours ago

      and some projects have more interfaces than are memorable by the average human