http://www.perlmonks.org?node_id=123873


in reply to When is a script an application

From another perspective: What's the definition of application and script? This shows up in http://dictionary.com:

Application

  1. Computer Science. A computer program with a user interface.

    A CLI is also an user interface, isn't it?

  2. 3: a program that gives a computer instructions that provide the user with tools to accomplish a task; "he has tried several different word processing applications" syn: application program, applications programme

    Another user-oriented def

  3. <programming, operating system> (Or "application", "app") A complete, self-contained program that performs a specific function directly for the user. This is in contrast to system software such as the operating system kernel, server processes and libraries which exists to support application programs.
    Editors for various kinds of documents, spreadsheets, and text formatters are common examples of applications. Network applications include clients such as those for FTP, electronic mail, telnet and WWW.
    The term is used fairly loosely, for instance, some might say that a client and server together form a distributed application, others might argue that editors and compilers were not applications but tools for building applications.
    One distinction between an application program and the operating system is that applications always run in "user mode" (or "non-privileged mode"), while operating systems and related utilities may run in "supervisor mode" (or "privileged mode").
    The term may also be used to distinguish programs which communicate via a graphical user interface from those which are executed from the command line.

    Now that is application versus system. May apply to many perl programs, actually.

Script

  1. Computer Science. A simple program in a utility language or an application's proprietary language.

    What would an utility language be? Is 'C' an utility language?

  2. A program written in a scripting language, but see Ousterhout's dichotomy.

    Scripting language?

  3. scripting language (Or "glue language") A loose term for any language that is weakly typed or untyped and has little or no provision for complex data structures. A program in a scripting language (a "script") is often interpreted (but see Ousterhout's dichotomy).

    Well, let's look that up than.

  4. John Ousterhout's division of high-level languages into "system programming languages" and "scripting languages". This distinction underlies the design of his language Tcl.
    System programming languages (or "applications languages") are strongly typed, allow arbitrarily complex data structures, and programs in them are compiled, and are meant to operate largely independently of other programs. Prototypical system programming languages are C and Modula-2.
    By contrast, scripting languages (or "glue languages") are weakly typed or untyped, have little or no provision for complex data structures, and programs in them ("scripts") are interpreted. Scripts need to interact either with other programs (often as glue) or with a set of functions provided by the interpreter, as with the file system functions provided in a UNIX shell and with Tcl's GUI functions. Prototypical scripting languages are AppleScript, C Shell, MSDOS batch files, and Tcl.
    Many believe that this is a highly arbitrary dichotomy, and refer to it as "Ousterhout's fallacy" or "Ousterhout's false dichotomy". While strong-versus-weak typing, data structure complexity, and independent versus stand-alone might be said to be unrelated features, the usual critique of Ousterhout's dichotomy is of its distinction of compilation versus interpretation, since neither semantics nor syntax depend significantly on whether code is compiled into machine-language, interpreted, tokenized, or byte-compiled at the start of each run, or any mixture of these. Many languages fall between being interpreted or compiled (e.g. Lisp, Forth, UCSD Pascal, Perl, and Java). This makes compilation versus interpretation a dubious parameter in a taxonomy of programming languages.

    Ah! That seems sensible. let's stick with that.

And is VB strongly typed? Yeah, guess it is (but see elsewhere in this thread on interpreted) (Update: I should have said: it's stronger typed than perl, perhaps). And I think most of them VB coders wouldn't dubb Java stuff 'scripts', but we know better now, do we?

Update: In retrospect, the definitions above actually show that the terms 'application' and 'script' are orthogonal. An application is defined in terms of user interaction, while a script is defined in terms of the programming language, or in terms of programming approach, as tilly arguments elsewhere in this thread.

So a script can be an application, and not every program automatically is an application.

I noticed furthermore that C can be argumented to have weak typing, and so can be seen as having 'scripting' features.