COMPUTING
A scripting language is a programming language commonly used to automate tasks, coordinate other software, or add behavior to an existing application. Scripts are often executed by an interpreter or runtime rather than compiled into a standalone machine-code program, although modern implementations frequently combine interpretation, bytecode compilation, and just-in-time compilation.
A scripting language is chiefly distinguished by how and where it is used, not by a single technical property. Scripts commonly direct an operating system, manipulate files and data, configure software, or control an application through an embedded runtime. The same language can also support large, compiled applications; Python, JavaScript, and Lua are examples whose boundaries extend well beyond small scripts.
Execution usually depends on a host environment that supplies services such as input/output, networking, a document model, or application objects. An interpreter may execute source directly, while a runtime may first create bytecode or optimized native code. Consequently, the older contrast between “interpreted scripting language” and “compiled programming language” is useful historically but technically incomplete.
Scripting grew from command interpreters and text-processing tools that made operating systems and development environments programmable. Unix shell languages standardized conventions for pipelines, redirection, processes, and files; POSIX specifies a shell and utility environment intended to improve portability across conforming systems.
Later languages broadened the model. Perl became influential in text processing and systems administration, Tcl was designed for embedding and extension, and Lua emphasized a small embeddable core. JavaScript began as a language for interactive web pages but became a general-purpose language through browser APIs and server-side runtimes; its core language is standardized as ECMAScript.
Scripting languages are valuable when development speed, interoperability, and changeability matter more than minimal execution overhead. Common applications include build and deployment automation, data preparation, test orchestration, command-line utilities, web pages, server applications, scientific notebooks, and plug-in systems. Python’s standard tutorial, for example, presents the language as suitable for scripting and rapid application development across many domains.
The trade-offs depend on the workload and runtime. Dynamic typing and automatic memory management can shorten code but move some errors to execution time; startup cost, memory use, and dependence on a runtime can also matter. Native extensions, caching, bytecode, or just-in-time compilation can reduce performance gaps, while sandboxing and least-privilege design are important when scripts come from untrusted sources.
“Scripting language” is a contextual label rather than a strict category. A language may be called scripting when it is embedded in a host, yet the same language may serve as a standalone systems or application language. Lua’s small core and documented embedding interface illustrate how a scripting language can be deliberately designed as a component inside another program.
Scripts also form a portability layer with uneven guarantees. Shell behavior can vary when programs rely on nonstandard utilities or extensions, which is why POSIX conformance matters for portable Unix scripts. In browsers, JavaScript code is inseparable from host APIs such as the DOM, network interfaces, and event systems; ECMAScript standardizes the language, not every environment in which it runs.
The boundary between scripting languages and other programming languages is conventional; language capabilities and implementation techniques overlap substantially.
Help improve the encyclopedia. Reports go straight to the site manager.