> For the complete documentation index, see [llms.txt](https://hanfak.gitbook.io/workspace/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hanfak.gitbook.io/workspace/languages/scripting.md).

# Scripting

## What

* A program, that does some task, which is small and simple. That does not need to be a observed. Automates some task which would take a lot of time.
* Generally some one off script, but could be used often
* Generally intended for the creator.
* tends to be a series of commands that starts, runs, and terminates. It often requires no/little human interaction
* Using written using an interpreted language like bash/python/ruby
* a program that primarily executes linearly, rather than with lots of sequential logic or subroutines
* is rarely sold to a customer
* usually take an initial input state from the user and formulates the output based on that
* A "script" is code that acts upon some system in an external or independent manner and can be removed or disabled without disabling the system itself.

## Difference between script and application

* Application
  * is intended to be used by a customer (perhaps an internal one) and thus should include documentation and support
  * tends to be used interactively
  * Larger scale
  * geared toward providing functionality that is more refined and geared toward an end user
  * is planned. It has multiple goals, it has multiple deliverables. There are tasks set aside at design time in advance of coding that the application must meet.
  * An application comprises multiple components and subsystems that work together to accomplish a larger goal for the user.  It will likely need to use design patterns and factorization to keep this complexity manageable.
  * generally allows the user to manipulate the state mid-execution through user interaction and reformulates output dynamically based on that.
  * are complex and robust, and designed to interact with user throughout the whole run of the program.
  * A "program" is code that constitutes a system. The program's code may be written in a modular manner, with good separation of concerns, but the code is fundamentally internal to, and a dependency of, the system itself.
