На чтение 5 мин Просмотров 1.6к. Опубликовано 10.09.2020
Язык сценариев — это язык программирования, который интерпретируется, то есть переводится в машинный код при запуске кода, а не заранее. Языки сценариев часто используются для коротких сценариев над полными компьютерными программами. JavaScript, Python и Ruby — всё это примеры языков сценариев.
Вы можете быть удивлены, узнав, что за всю историю компьютеров было изобретено более 700 языков программирования . Это не так много, как у нас есть 6900 человеческих языков, но выучить любой новый язык — нелёгкое дело.
Язык сценариев (также известный как сценарии или сценарий) чётко определяется как серия команд, которые могут выполняться без необходимости компиляции . Хотя все языки сценариев являются языками программирования, не все языки программирования являются языками сценариев. PHP, Perl и Python — распространённые примеры языков сценариев.
Языки сценариев используют программу, известную как интерпретатор, для перевода команд и напрямую интерпретируются из исходного кода, не требуя этапа компиляции . Другие языки программирования, с другой стороны, могут потребовать от компилятора преобразования команд в машинный код, прежде чем он сможет выполнить эти команды.
Хотя важно знать разницу между интерпретируемыми и компилируемыми языками программирования, передовое оборудование и методы кодирования начинают делать различие несколько устаревшим.
Содержание
- Интерпретируемые и компилируемые языки программирования
- Серверные сценарии против клиентских сценариев
- Примеры языков сценариев на стороне сервера
- Примеры языков сценариев на стороне клиента
- Приложения языков сценариев
- Плюсы и минусы языков сценариев
- Плюсы
- Минусы
- Вывод
Интерпретируемые и компилируемые языки программирования
Интерпретируемый язык программирования — это язык, разработанный для непосредственного выполнения исходного кода без необходимости компилировать программу в инструкции на машинном языке. Интерпретатор выполнит программу, переведя операторы в серию из одной или нескольких подпрограмм, прежде чем окончательно переведёт их на другой язык, такой как машинный код.
В компилируемых языках программирования программа компилятора переводит код, написанный на языке программирования высокого уровня, на язык более низкого уровня, чтобы программа могла выполняться. Программы C или Java обычно должны быть сначала скомпилированы для запуска. Два хорошо известных компилятора — это Eclipse для Java и gcc для C и C ++.
Самый простой способ понять, как работает компилятор, — это подумать о различных операционных системах. Например, программы Windows скомпилированы для работы на платформах Windows и поэтому несовместимы с Mac.
Серверные сценарии против клиентских сценариев
Есть два типа языков сценариев: на стороне сервера и на стороне клиента. Единственное существенное различие между ними состоит в том, что для обработки первого требуется сервер.
Языки сценариев на стороне сервера работают на веб-сервере. Когда клиент отправляет запрос, сервер отвечает, отправляя контент через HTTP. Напротив, языки сценариев на стороне клиента работают на стороне клиента — в их веб-браузерах.
Преимущество клиентских скриптов состоит в том, что они могут снизить нагрузку на сервер, позволяя веб-страницам загружаться быстрее. Принимая во внимание, что одно из значительных преимуществ серверных сценариев состоит в том, что они недоступны для просмотра публике, как клиентские сценарии.
Пытаясь решить, в каком направлении двигаться над проектом, имейте в виду, что сценарии на стороне клиента больше ориентированы на пользовательский интерфейс и функциональность. И наоборот, сценарии на стороне сервера ориентированы на более быструю обработку, доступ к данным и устранение ошибок.
Примеры языков сценариев на стороне сервера
Ниже приведены примеры языков сценариев на стороне сервера.
Язык | Комментарии |
PHP | Самый популярный серверный язык, используемый в интернете. |
ASP.NET | Фреймворк веб-приложений, разработанный Microsoft. |
Node.js | Может работать на множестве платформ, включая Windows, Linux, Unix, Mac и т. Д. |
Java | Используется во всём, от Bluetooth в автомобильной стереосистеме до приложений НАСА. |
Ruby | Динамический. Особое внимание уделяется простоте. |
Perl | Немного мэшапа между C, сценарием оболочки, AWK и sed. |
Python | Отлично подходит для обучения новичков. Использует более короткий код. |
Примеры языков сценариев на стороне клиента
Ниже приведены примеры языков сценариев на стороне клиента.
Язык | Комментарии |
HTML | Основа веб-разработки. |
CSS | Улучшает внешний вид и графику на страницах в вашем веб-браузере. |
JavaScript | Хотя обычно на стороне клиента, иногда может использоваться и на стороне сервера. |
Приложения языков сценариев
Языки сценариев используются во многих областях, как в интернете, так и за его пределами. Помимо серверных и клиентских приложений, в системном администрировании могут использоваться языки сценариев. Примерами скриптов, используемых в системном администрировании, являются Shell, Perl и Python.
Языки сценариев также используются во многих играх и мультимедиа. Например, в модах Minecraft используется Java, чтобы пользователи могли создавать собственные миры и предметы в игре. Кроме того, Second Life , Trainz и Wesnoth позволяют пользователям создавать расширения для игр.
Подобно расширениям, используемым в играх, расширения в других программах, таких как расширения браузера Google Chrome, все запускаются с использованием языков сценариев.
Плюсы и минусы языков сценариев
Плюсы
Использование языков сценариев даёт много преимуществ перед другими языками программирования. Они с открытым исходным кодом. Это позволяет пользователям со всего мира присоединиться к процессу улучшения. Другие плюсы включают:
- Не требует компиляции, хотя иногда это необходимо.
- Легко переносить между операционными системами.
- Языки сценариев делают веб-страницы удобными.
- Легче учиться и писать.
- Скрипты можно использовать в качестве прототипа программ, что позволяет сэкономить время на тестовых проектах.
Минусы
У использования языков сценариев не так много минусов. Один из минусов заключается в том, что некоторые компании не хотят, чтобы сценарии читали всё, поэтому они используют сценарии на стороне сервера, чтобы не публиковать их. Кроме того, установка программы-интерпретатора может быть проблемой. Наконец, иногда скрипты работают медленнее, чем программы.
Вывод
Изучение языка сценариев — самый простой способ погрузиться в мир программирования. Существует множество ресурсов, которые помогут вам попробовать каждый из них, пока вы не найдёте тот, который вам подходит. Просто не забывайте делать это медленно, проявлять терпение и стремиться начинать с небольших проектов, а не с больших. Вы быстро найдёте свою нишу.
A scripting language or script language is a programming language that is used to manipulate, customize, and automate the facilities of an existing system.[1] Scripting languages are usually interpreted at runtime rather than compiled.
A scripting language’s primitives are usually elementary tasks or API calls[clarification needed], and the scripting language allows them to be combined into more programs. Environments that can be automated through scripting include application software, text editors, web pages, operating system shells, embedded systems, and computer games. A scripting language can be viewed as a domain-specific language for a particular environment; in the case of scripting an application, it is also known as an extension language. Scripting languages are also sometimes referred to as very high-level programming languages, as they sometimes operate at a high level of abstraction, or as control languages, particularly for job control languages on mainframes.
The term scripting language is also used in a wider sense, namely, to refer to dynamic high-level programming languages in general; some are strictly interpreted languages, while others use a form of compilation.
In this context, the term script refers to a small program in such a language; typically, contained in a single file, and no larger than a few thousand lines of code.
The spectrum of scripting languages ranges from small to large, and from highly domain-specific language to general-purpose programming languages. A language may start as small and highly domain-specific and later develop into a portable and general-purpose language; conversely, a general-purpose language may later develop special domain-specific dialects.
Examples[edit]
- AWK, a text-processing language available in most Unix-like operating systems, which has been ported to other operating systems.
- Bash, an interpreted scripting language for use on Unix, GNU and other Unix-like operating systems and environments.
- Groovy is an object-oriented scripting language for the Java platform, similar to Python, Ruby, and Smalltalk.
- JavaScript (later: ECMAScript), originally a very small, highly domain-specific language, limited to running within a web browser to dynamically modify the web page being shown, that later developed into a widely portable general-purpose programming language.
- Lisp, a family of general-purpose languages and extension languages for specific applications, e.g. Emacs Lisp, for the Emacs editor.
- Lua, a language designed for use as an extension language for applications in general, used by many different applications.
- Perl,[2] a text-processing language that later developed into a general-purpose language, also used as an extension language for various applications.
- PowerShell, a scripting language originally for use with Microsoft Windows but later also available for macOS and Linux.
- Python, a general-purpose scripting language with simple syntax, particularly suited to text processing and also used as an extension language.
- Rexx, a scripting language in IBM’s VM/SP R3. NetRexx and Object Rexx are based on REXX. Used on several platforms. Also used as extension languages for applications.
- sed, a text-processing language available in most Unix-like operating systems, which has been ported to other operating systems.
- Tcl,[3] a scripting language for Unix-like environments, popular in the 1990s. Can be used in conjunction with Tk to develop GUI applications.
- Visual Basic for Applications (VBA), an extension language developed specifically for Microsoft Office applications, and implemented at least partially in many non-Microsoft applications.
Some game systems have been extensively extended in functionality by scripting extensions using custom languages, notably the Second Life virtual world (using Linden Scripting Language) and the Trainz franchise of Railroad simulators (using TrainzScript). In some games, such as Wesnoth, users may play custom variants of the game defined by user-contributed scripts.
Characteristics[edit]
Typical scripting languages are intended to be very fast to learn and write in, either as short source code files or interactively in a read–eval–print loop (REPL, language shell).[4] This generally implies relatively simple syntax and semantics; typically a «script» (code written in the scripting language) is executed from start to finish, as a «script», with no explicit entry point.
For example, it is uncommon to characterise Java as a scripting language because of its lengthy syntax and rules about which classes exist in which files, and it is not directly possible to execute Java interactively, because source files can only contain definitions that must be invoked externally by a host application or application launcher.
public class HelloWorld { public void printHelloWorld() { System.out.println("Hello World"); } }
This piece of code intended to print «Hello World» does nothing as main() is not declared in HelloWorld class, although the one below would be useful.
public class HelloWorld { public void printHelloWorld() { System.out.println("Hello World"); } public static void main(String[] args) { printHelloWorld(); } }
In the example above, main is defined and so this can be invoked by the launcher, although this still cannot be executed interactively.
In contrast, Python allows the definition of some functions in a single file, or to avoid functions altogether and use imperative programming style, or even use it interactively.
This one line of Python code prints «Hello World»; no declarative statement like main() is required here.
A scripting language is usually interpreted from source code or bytecode.[5] By contrast, the software environment (interpreter) the scripts are written for is typically written in a compiled language and distributed in machine code form.
Scripting languages may be designed for use by end users of a program—end-user development—or may be only for internal use by developers, so they can write portions of the program in the scripting language. Scripting languages typically use abstraction, a form of information hiding, to spare users the details of internal variable types, data storage, and memory management.
Scripts are often created or modified by the person executing them,[6] but they are also often distributed, such as when large portions of games are written in a scripting language, notably the Google Chrome T-rex game.
History[edit]
Early mainframe computers (in the 1950s) were non-interactive, instead using batch processing. IBM’s Job Control Language (JCL) is the archetype of languages used to control batch processing.[7]
The first interactive shells were developed in the 1960s to enable remote operation of the first time-sharing systems, and these used shell scripts, which controlled running computer programs within a computer program, the shell. Calvin Mooers in his TRAC language is generally credited with inventing command substitution, the ability to embed commands in scripts that when interpreted insert a character string into the script.[8] Multics calls these active functions.[9]
Louis Pouzin wrote an early processor for command scripts called RUNCOM for CTSS around 1964. Stuart Madnick at MIT wrote a scripting language for IBM’s CP/CMS in 1966. He originally called this processor COMMAND, later named EXEC.[10] Multics included an offshoot of CTSS RUNCOM, also called RUNCOM.[11] EXEC was eventually replaced by EXEC 2 and REXX.
Languages such as Tcl and Lua were specifically designed as general-purpose scripting languages that could be embedded in any application. Other languages such as Visual Basic for Applications (VBA) provided strong integration with the automation facilities of an underlying system. Embedding of such general-purpose scripting languages instead of developing a new language for each application also had obvious benefits, relieving the application developer of the need to code a language translator from scratch and allowing the user to apply skills learned elsewhere.
Some software incorporates several different scripting languages. Modern web browsers typically provide a language for writing extensions to the browser itself, and several standard embedded languages for controlling the browser, including JavaScript (a dialect of ECMAScript) or XUL.
Types[edit]
Scripting languages can be categorized into several different types, with a considerable degree of overlap among the types.
Glue languages[edit]
Scripting is often contrasted with system programming, as in Ousterhout’s dichotomy or «programming in the large and programming in the small». In this view, scripting is glue code, connecting software components, and a language specialized for this purpose is a glue language. Pipelines and shell scripting are archetypal examples of glue languages, and Perl was initially developed to fill this same role. Web development can be considered a use of glue languages, interfacing between a database and web server. But if a substantial amount of logic is written in script, it is better characterized as simply another software component, not «glue».
Glue languages are especially useful for writing and maintaining:
- custom commands for a command shell;[12]
- smaller programs than those that are better implemented in a compiled language;[13]
- «wrapper» programs for executables, like a batch file that moves or manipulates files and does other things with the operating system before or after running an application like a word processor, spreadsheet, data base, assembler, compiler, etc.;[14]
- scripts that may change;[15]
- Rapid application development of a solution eventually implemented in another, usually compiled, language.[citation needed]
Glue language examples:
- AppleScript
- ColdFusion
- DCL
- Embeddable Common Lisp
- ecl
- Erlang
- EXEC
- EXEC2
- JCL
- CoffeeScript
- Julia
- JScript and JavaScript
- Lua
- m4
- Perl (5 and Raku)
- PHP
- PowerShell
- Pure
- Python
- Rebol
- Red
- Rexx
- NetRexx
- Ruby
- Scheme
- Tcl
- Unix Shell scripts (ksh, csh, bash, sh and others)
- VBScript
- Work Flow Language
- XSLT
Macro languages exposed to operating system or application components can serve as glue languages. These include Visual Basic for Applications, WordBasic, LotusScript, CorelScript, Hummingbird Basic, QuickScript, Rexx, SaxBasic, and WinWrap Basic. Other tools like AWK can also be considered glue languages, as can any language implemented by a Windows Script Host engine (VBScript, JScript and VBA by default in Windows and third-party engines including implementations of Rexx, Perl, Tcl, Python, XSLT, Ruby, Modern Pascal, Delphi, and C). A majority of applications can access and use operating system components via the object models or its own functions.
Other devices like programmable calculators may also have glue languages; the operating systems of PDAs such as Windows CE may have available native or third-party macro tools that glue applications together, in addition to implementations of common glue languages—including Windows NT, DOS, and some Unix shells, Rexx, Modern Pascal, PHP, and Perl. Depending upon the OS version, WSH and the default script engines (VBScript and JScript) are available.
Programmable calculators can be programmed in glue languages in three ways. For example, the Texas Instruments TI-92, by factory default can be programmed with a command script language. Inclusion of the scripting and glue language Lua in the TI-NSpire series of calculators could be seen as a successor to this. The primary on-board high-level programming languages of most graphing calculators (most often Basic variants, sometimes Lisp derivatives, and more uncommonly, C derivatives) in many cases can glue together calculator functions—such as graphs, lists, matrices, etc. Third-party implementations of more comprehensive Basic version that may be closer to variants listed as glue languages in this article are available—and attempts to implement Perl, Rexx, or various operating system shells on the TI and HP graphing calculators are also mentioned. PC-based C cross-compilers for some of the TI and HP machines used with tools that convert between C and Perl, Rexx, AWK, and shell scripts to Perl, Modern Pascal, VBScript to and from Perl make it possible to write a program in a glue language for eventual implementation (as a compiled program) on the calculator.[citation needed]
Editor languages[edit]
A number of text editors support macros written either using a macro language built into the editor, e.g., The SemWare Editor (TSE), vi improved (VIM), or using an external implementation, e.g., XEDIT, or both, e.g., KEDIT. Sometimes text editors and edit macros are used under the covers to provide other applications, e.g., FILELIST and RDRLIST in CMS .
Job control languages and shells[edit]
A major class of scripting languages has grown out of the automation of job control, which relates to starting and controlling the behavior of system programs[16] (in this sense, one might think of shells as being descendants of IBM’s JCL, or Job Control Language, which was used for exactly this purpose). Many of these languages’ interpreters double as command-line interpreters such as the Unix shell or the MS-DOS COMMAND.COM
. Others, such as AppleScript offer the use of English-like commands to build scripts.
GUI scripting[edit]
With the advent of graphical user interfaces, a specialized kind of scripting language emerged for controlling a computer. These languages interact with the same graphic windows, menus, buttons, and so on, that a human user would. They do this by simulating the actions of a user. These languages are typically used to automate user actions. Such languages are also called «macros» when control is through simulated key presses or mouse clicks, as well as tapping or pressing on a touch-activated screen.
These languages could in principle be used to control any GUI application; but, in practice their use is limited because their use needs support from the application and from the operating system. There are a few exceptions to this limitation. Some GUI scripting languages are based on recognizing graphical objects from their display screen pixels. These GUI scripting languages do not depend on support from the operating system or application.
When the GUI provides the appropriate interfaces, as in the IBM Workplace Shell, a generic scripting language, e.g. OREXX, can be used for writing GUI scripts.
Application-specific languages[edit]
Application specific languages can be split in many different categories, i.e. standalone based app languages (executable) or internal application specific languages (postscript, xml, gscript as some of the widely distributed scripts, respectively implemented by Adobe, MS and Google) among others include an idiomatic scripting language tailored to the needs of the application user. Likewise, many computer game systems use a custom scripting language to express the programmed actions of non-player characters and the game environment. Languages of this sort are designed for a single application; and, while they may superficially resemble a specific general-purpose language (e.g. QuakeC, modeled after C), they have custom features that distinguish them. Emacs Lisp, while a fully formed and capable dialect of Lisp, contains many special features that make it most useful for extending the editing functions of Emacs. An application-specific scripting language can be viewed as a domain-specific programming language specialized to a single application.
Extension/embeddable languages[edit]
A number of languages have been designed for the purpose of replacing application-specific scripting languages by being embeddable in application programs. The application programmer (working in C or another systems language) includes «hooks» where the scripting language can control the application. These languages may be technically equivalent to an application-specific extension language but when an application embeds a «common» language, the user gets the advantage of being able to transfer skills from application to application. A more generic alternative is simply to provide a library (often a C library) that a general-purpose language can use to control the application, without modifying the language for the specific domain.
JavaScript began as and primarily still is a language for scripting inside web browsers; however, the standardization of the language as ECMAScript has made it popular as a general-purpose embeddable language. In particular, the Mozilla implementation SpiderMonkey is embedded in several environments such as the Yahoo! Widget Engine. Other applications embedding ECMAScript implementations include the Adobe products Adobe Flash (ActionScript) and Adobe Acrobat (for scripting PDF files).
Tcl was created as an extension language but has come to be used more frequently as a general-purpose language in roles similar to Python, Perl, and Ruby. On the other hand, Rexx was originally created as a job control language, but is widely used as an extension language as well as a general-purpose language. Perl is a general-purpose language, but had the Oraperl (1990) dialect, consisting of a Perl 4 binary with Oracle Call Interface compiled in. This has however since been replaced by a library (Perl Module), DBD::Oracle.[17][18]
Other complex and task-oriented applications may incorporate and expose an embedded programming language to allow their users more control and give them more functionality than can be available through a user interface, no matter how sophisticated. For example, Autodesk Maya 3D authoring tools embed the Maya Embedded Language, or Blender which uses Python to fill this role.
Some other types of applications that need faster feature addition or tweak-and-run cycles (e.g. game engines) also use an embedded language. During the development, this allows them to prototype features faster and tweak more freely, without the need for the user to have intimate knowledge of the inner workings of the application or to rebuild it after each tweak (which can take a significant amount of time). The scripting languages used for this purpose range from the more common and more famous Lua and Python to lesser-known ones such as AngelScript and Squirrel.
Ch is another C compatible scripting option for the industry to embed into C/C++ application programs.
See also[edit]
- Architecture description language
- Authoring language
- Build automation[19]
- Configuration file
- Interpreter directive / Shebang (Unix)
- Templating language
References[edit]
- ^ «ECMAScript 2019 Language Specification». www.ecma-international.org. Retrieved 2018-04-02.
- ^ Sheppard, Doug (2000-10-16). «Beginner’s Introduction to Perl». dev.perl.org. Retrieved 2011-01-08.
- ^ Programming is Hard, Let’s Go Scripting…, Larry Wall, December 6, 2007
- ^ Hey, Tony; Pápay, Gyuri (2014). The Computing Universe: A Journey through a Revolution. Cambridge University Press. p. 76. ISBN 978-1-31612322-5, «A major characteristic of modern scripting languages is their interactivity, sometimes referred to as a REPL programming environment. […] The characteristics of ease of use and immediate execution with a REPL environment are sometimes taken as the definition of a scripting language.»
{{cite book}}
: CS1 maint: postscript (link) - ^ Brown, Vicki. «Scripting Languages». Retrieved 2009-07-22.
- ^ Loui, Ronald (2008). «In praise of scripting». IEEE Computer. Archived from the original on 2015-09-23. Retrieved 2013-08-27.
- ^ IBM Corporation (1967). IBM System/360 Operating System Job Control Language (C28-6529-4) (PDF).
- ^ Mooers, Calvin. «TRAC, A Procedure-Describing Language for the Reactive Typewriter». Archived from the original on 2001-04-25. Retrieved March 9, 2012.
- ^ Van Vleck, Thomas (ed.). «Multics Glossary – A — (active function)». Retrieved March 9, 2012.
- ^ Varian, Melinda. «VM AND THE VM COMMUNITY: Past, Present, and Future» (PDF). Retrieved March 9, 2012.
- ^ Van Vleck, Thomas (ed.). «Multics Glossary – R — (RUNCOM)». Retrieved March 9, 2012.
- ^ «What is glue code (glue code language)? — Definition from WhatIs.com». WhatIs.com. Retrieved 2022-01-31.
- ^ Larson, Quincy (10 January 2020). «Interpreted vs Compiled Programming Languages». Free Code Camp. Retrieved 23 February 2022.
{{cite web}}
: CS1 maint: url-status (link) - ^ Balkis, Anton. «Script Adalah». Raja Tips. Retrieved 23 February 2022.
{{cite web}}
: CS1 maint: url-status (link) - ^ Axelsson, Mats. «Shell scripts — What can you change». Linux Hint. Retrieved 23 February 2022.
{{cite web}}
: CS1 maint: url-status (link) - ^ «Job Control Basics (Bash Reference Manual)». www.gnu.org. Retrieved 2022-05-20.
- ^ Oraperl, CPAN]
- ^
Perl, Underground Oracle FAQ - ^ van Rossum, Guido (January 6–8, 1998). «Glue it all together». Glue It All Together With Python. python.org.
Further reading[edit]
- Barron, David William (2001). The World of Scripting Languages. ISBN 0-471-99886-9.
External links[edit]
- Patterns for Scripted Applications at the Wayback Machine (archived October 10, 2004)
A scripting language or script language is a programming language that is used to manipulate, customize, and automate the facilities of an existing system.[1] Scripting languages are usually interpreted at runtime rather than compiled.
A scripting language’s primitives are usually elementary tasks or API calls[clarification needed], and the scripting language allows them to be combined into more programs. Environments that can be automated through scripting include application software, text editors, web pages, operating system shells, embedded systems, and computer games. A scripting language can be viewed as a domain-specific language for a particular environment; in the case of scripting an application, it is also known as an extension language. Scripting languages are also sometimes referred to as very high-level programming languages, as they sometimes operate at a high level of abstraction, or as control languages, particularly for job control languages on mainframes.
The term scripting language is also used in a wider sense, namely, to refer to dynamic high-level programming languages in general; some are strictly interpreted languages, while others use a form of compilation.
In this context, the term script refers to a small program in such a language; typically, contained in a single file, and no larger than a few thousand lines of code.
The spectrum of scripting languages ranges from small to large, and from highly domain-specific language to general-purpose programming languages. A language may start as small and highly domain-specific and later develop into a portable and general-purpose language; conversely, a general-purpose language may later develop special domain-specific dialects.
Examples[edit]
- AWK, a text-processing language available in most Unix-like operating systems, which has been ported to other operating systems.
- Bash, an interpreted scripting language for use on Unix, GNU and other Unix-like operating systems and environments.
- Groovy is an object-oriented scripting language for the Java platform, similar to Python, Ruby, and Smalltalk.
- JavaScript (later: ECMAScript), originally a very small, highly domain-specific language, limited to running within a web browser to dynamically modify the web page being shown, that later developed into a widely portable general-purpose programming language.
- Lisp, a family of general-purpose languages and extension languages for specific applications, e.g. Emacs Lisp, for the Emacs editor.
- Lua, a language designed for use as an extension language for applications in general, used by many different applications.
- Perl,[2] a text-processing language that later developed into a general-purpose language, also used as an extension language for various applications.
- PowerShell, a scripting language originally for use with Microsoft Windows but later also available for macOS and Linux.
- Python, a general-purpose scripting language with simple syntax, particularly suited to text processing and also used as an extension language.
- Rexx, a scripting language in IBM’s VM/SP R3. NetRexx and Object Rexx are based on REXX. Used on several platforms. Also used as extension languages for applications.
- sed, a text-processing language available in most Unix-like operating systems, which has been ported to other operating systems.
- Tcl,[3] a scripting language for Unix-like environments, popular in the 1990s. Can be used in conjunction with Tk to develop GUI applications.
- Visual Basic for Applications (VBA), an extension language developed specifically for Microsoft Office applications, and implemented at least partially in many non-Microsoft applications.
Some game systems have been extensively extended in functionality by scripting extensions using custom languages, notably the Second Life virtual world (using Linden Scripting Language) and the Trainz franchise of Railroad simulators (using TrainzScript). In some games, such as Wesnoth, users may play custom variants of the game defined by user-contributed scripts.
Characteristics[edit]
Typical scripting languages are intended to be very fast to learn and write in, either as short source code files or interactively in a read–eval–print loop (REPL, language shell).[4] This generally implies relatively simple syntax and semantics; typically a «script» (code written in the scripting language) is executed from start to finish, as a «script», with no explicit entry point.
For example, it is uncommon to characterise Java as a scripting language because of its lengthy syntax and rules about which classes exist in which files, and it is not directly possible to execute Java interactively, because source files can only contain definitions that must be invoked externally by a host application or application launcher.
public class HelloWorld { public void printHelloWorld() { System.out.println("Hello World"); } }
This piece of code intended to print «Hello World» does nothing as main() is not declared in HelloWorld class, although the one below would be useful.
public class HelloWorld { public void printHelloWorld() { System.out.println("Hello World"); } public static void main(String[] args) { printHelloWorld(); } }
In the example above, main is defined and so this can be invoked by the launcher, although this still cannot be executed interactively.
In contrast, Python allows the definition of some functions in a single file, or to avoid functions altogether and use imperative programming style, or even use it interactively.
This one line of Python code prints «Hello World»; no declarative statement like main() is required here.
A scripting language is usually interpreted from source code or bytecode.[5] By contrast, the software environment (interpreter) the scripts are written for is typically written in a compiled language and distributed in machine code form.
Scripting languages may be designed for use by end users of a program—end-user development—or may be only for internal use by developers, so they can write portions of the program in the scripting language. Scripting languages typically use abstraction, a form of information hiding, to spare users the details of internal variable types, data storage, and memory management.
Scripts are often created or modified by the person executing them,[6] but they are also often distributed, such as when large portions of games are written in a scripting language, notably the Google Chrome T-rex game.
History[edit]
Early mainframe computers (in the 1950s) were non-interactive, instead using batch processing. IBM’s Job Control Language (JCL) is the archetype of languages used to control batch processing.[7]
The first interactive shells were developed in the 1960s to enable remote operation of the first time-sharing systems, and these used shell scripts, which controlled running computer programs within a computer program, the shell. Calvin Mooers in his TRAC language is generally credited with inventing command substitution, the ability to embed commands in scripts that when interpreted insert a character string into the script.[8] Multics calls these active functions.[9]
Louis Pouzin wrote an early processor for command scripts called RUNCOM for CTSS around 1964. Stuart Madnick at MIT wrote a scripting language for IBM’s CP/CMS in 1966. He originally called this processor COMMAND, later named EXEC.[10] Multics included an offshoot of CTSS RUNCOM, also called RUNCOM.[11] EXEC was eventually replaced by EXEC 2 and REXX.
Languages such as Tcl and Lua were specifically designed as general-purpose scripting languages that could be embedded in any application. Other languages such as Visual Basic for Applications (VBA) provided strong integration with the automation facilities of an underlying system. Embedding of such general-purpose scripting languages instead of developing a new language for each application also had obvious benefits, relieving the application developer of the need to code a language translator from scratch and allowing the user to apply skills learned elsewhere.
Some software incorporates several different scripting languages. Modern web browsers typically provide a language for writing extensions to the browser itself, and several standard embedded languages for controlling the browser, including JavaScript (a dialect of ECMAScript) or XUL.
Types[edit]
Scripting languages can be categorized into several different types, with a considerable degree of overlap among the types.
Glue languages[edit]
Scripting is often contrasted with system programming, as in Ousterhout’s dichotomy or «programming in the large and programming in the small». In this view, scripting is glue code, connecting software components, and a language specialized for this purpose is a glue language. Pipelines and shell scripting are archetypal examples of glue languages, and Perl was initially developed to fill this same role. Web development can be considered a use of glue languages, interfacing between a database and web server. But if a substantial amount of logic is written in script, it is better characterized as simply another software component, not «glue».
Glue languages are especially useful for writing and maintaining:
- custom commands for a command shell;[12]
- smaller programs than those that are better implemented in a compiled language;[13]
- «wrapper» programs for executables, like a batch file that moves or manipulates files and does other things with the operating system before or after running an application like a word processor, spreadsheet, data base, assembler, compiler, etc.;[14]
- scripts that may change;[15]
- Rapid application development of a solution eventually implemented in another, usually compiled, language.[citation needed]
Glue language examples:
- AppleScript
- ColdFusion
- DCL
- Embeddable Common Lisp
- ecl
- Erlang
- EXEC
- EXEC2
- JCL
- CoffeeScript
- Julia
- JScript and JavaScript
- Lua
- m4
- Perl (5 and Raku)
- PHP
- PowerShell
- Pure
- Python
- Rebol
- Red
- Rexx
- NetRexx
- Ruby
- Scheme
- Tcl
- Unix Shell scripts (ksh, csh, bash, sh and others)
- VBScript
- Work Flow Language
- XSLT
Macro languages exposed to operating system or application components can serve as glue languages. These include Visual Basic for Applications, WordBasic, LotusScript, CorelScript, Hummingbird Basic, QuickScript, Rexx, SaxBasic, and WinWrap Basic. Other tools like AWK can also be considered glue languages, as can any language implemented by a Windows Script Host engine (VBScript, JScript and VBA by default in Windows and third-party engines including implementations of Rexx, Perl, Tcl, Python, XSLT, Ruby, Modern Pascal, Delphi, and C). A majority of applications can access and use operating system components via the object models or its own functions.
Other devices like programmable calculators may also have glue languages; the operating systems of PDAs such as Windows CE may have available native or third-party macro tools that glue applications together, in addition to implementations of common glue languages—including Windows NT, DOS, and some Unix shells, Rexx, Modern Pascal, PHP, and Perl. Depending upon the OS version, WSH and the default script engines (VBScript and JScript) are available.
Programmable calculators can be programmed in glue languages in three ways. For example, the Texas Instruments TI-92, by factory default can be programmed with a command script language. Inclusion of the scripting and glue language Lua in the TI-NSpire series of calculators could be seen as a successor to this. The primary on-board high-level programming languages of most graphing calculators (most often Basic variants, sometimes Lisp derivatives, and more uncommonly, C derivatives) in many cases can glue together calculator functions—such as graphs, lists, matrices, etc. Third-party implementations of more comprehensive Basic version that may be closer to variants listed as glue languages in this article are available—and attempts to implement Perl, Rexx, or various operating system shells on the TI and HP graphing calculators are also mentioned. PC-based C cross-compilers for some of the TI and HP machines used with tools that convert between C and Perl, Rexx, AWK, and shell scripts to Perl, Modern Pascal, VBScript to and from Perl make it possible to write a program in a glue language for eventual implementation (as a compiled program) on the calculator.[citation needed]
Editor languages[edit]
A number of text editors support macros written either using a macro language built into the editor, e.g., The SemWare Editor (TSE), vi improved (VIM), or using an external implementation, e.g., XEDIT, or both, e.g., KEDIT. Sometimes text editors and edit macros are used under the covers to provide other applications, e.g., FILELIST and RDRLIST in CMS .
Job control languages and shells[edit]
A major class of scripting languages has grown out of the automation of job control, which relates to starting and controlling the behavior of system programs[16] (in this sense, one might think of shells as being descendants of IBM’s JCL, or Job Control Language, which was used for exactly this purpose). Many of these languages’ interpreters double as command-line interpreters such as the Unix shell or the MS-DOS COMMAND.COM
. Others, such as AppleScript offer the use of English-like commands to build scripts.
GUI scripting[edit]
With the advent of graphical user interfaces, a specialized kind of scripting language emerged for controlling a computer. These languages interact with the same graphic windows, menus, buttons, and so on, that a human user would. They do this by simulating the actions of a user. These languages are typically used to automate user actions. Such languages are also called «macros» when control is through simulated key presses or mouse clicks, as well as tapping or pressing on a touch-activated screen.
These languages could in principle be used to control any GUI application; but, in practice their use is limited because their use needs support from the application and from the operating system. There are a few exceptions to this limitation. Some GUI scripting languages are based on recognizing graphical objects from their display screen pixels. These GUI scripting languages do not depend on support from the operating system or application.
When the GUI provides the appropriate interfaces, as in the IBM Workplace Shell, a generic scripting language, e.g. OREXX, can be used for writing GUI scripts.
Application-specific languages[edit]
Application specific languages can be split in many different categories, i.e. standalone based app languages (executable) or internal application specific languages (postscript, xml, gscript as some of the widely distributed scripts, respectively implemented by Adobe, MS and Google) among others include an idiomatic scripting language tailored to the needs of the application user. Likewise, many computer game systems use a custom scripting language to express the programmed actions of non-player characters and the game environment. Languages of this sort are designed for a single application; and, while they may superficially resemble a specific general-purpose language (e.g. QuakeC, modeled after C), they have custom features that distinguish them. Emacs Lisp, while a fully formed and capable dialect of Lisp, contains many special features that make it most useful for extending the editing functions of Emacs. An application-specific scripting language can be viewed as a domain-specific programming language specialized to a single application.
Extension/embeddable languages[edit]
A number of languages have been designed for the purpose of replacing application-specific scripting languages by being embeddable in application programs. The application programmer (working in C or another systems language) includes «hooks» where the scripting language can control the application. These languages may be technically equivalent to an application-specific extension language but when an application embeds a «common» language, the user gets the advantage of being able to transfer skills from application to application. A more generic alternative is simply to provide a library (often a C library) that a general-purpose language can use to control the application, without modifying the language for the specific domain.
JavaScript began as and primarily still is a language for scripting inside web browsers; however, the standardization of the language as ECMAScript has made it popular as a general-purpose embeddable language. In particular, the Mozilla implementation SpiderMonkey is embedded in several environments such as the Yahoo! Widget Engine. Other applications embedding ECMAScript implementations include the Adobe products Adobe Flash (ActionScript) and Adobe Acrobat (for scripting PDF files).
Tcl was created as an extension language but has come to be used more frequently as a general-purpose language in roles similar to Python, Perl, and Ruby. On the other hand, Rexx was originally created as a job control language, but is widely used as an extension language as well as a general-purpose language. Perl is a general-purpose language, but had the Oraperl (1990) dialect, consisting of a Perl 4 binary with Oracle Call Interface compiled in. This has however since been replaced by a library (Perl Module), DBD::Oracle.[17][18]
Other complex and task-oriented applications may incorporate and expose an embedded programming language to allow their users more control and give them more functionality than can be available through a user interface, no matter how sophisticated. For example, Autodesk Maya 3D authoring tools embed the Maya Embedded Language, or Blender which uses Python to fill this role.
Some other types of applications that need faster feature addition or tweak-and-run cycles (e.g. game engines) also use an embedded language. During the development, this allows them to prototype features faster and tweak more freely, without the need for the user to have intimate knowledge of the inner workings of the application or to rebuild it after each tweak (which can take a significant amount of time). The scripting languages used for this purpose range from the more common and more famous Lua and Python to lesser-known ones such as AngelScript and Squirrel.
Ch is another C compatible scripting option for the industry to embed into C/C++ application programs.
See also[edit]
- Architecture description language
- Authoring language
- Build automation[19]
- Configuration file
- Interpreter directive / Shebang (Unix)
- Templating language
References[edit]
- ^ «ECMAScript 2019 Language Specification». www.ecma-international.org. Retrieved 2018-04-02.
- ^ Sheppard, Doug (2000-10-16). «Beginner’s Introduction to Perl». dev.perl.org. Retrieved 2011-01-08.
- ^ Programming is Hard, Let’s Go Scripting…, Larry Wall, December 6, 2007
- ^ Hey, Tony; Pápay, Gyuri (2014). The Computing Universe: A Journey through a Revolution. Cambridge University Press. p. 76. ISBN 978-1-31612322-5, «A major characteristic of modern scripting languages is their interactivity, sometimes referred to as a REPL programming environment. […] The characteristics of ease of use and immediate execution with a REPL environment are sometimes taken as the definition of a scripting language.»
{{cite book}}
: CS1 maint: postscript (link) - ^ Brown, Vicki. «Scripting Languages». Retrieved 2009-07-22.
- ^ Loui, Ronald (2008). «In praise of scripting». IEEE Computer. Archived from the original on 2015-09-23. Retrieved 2013-08-27.
- ^ IBM Corporation (1967). IBM System/360 Operating System Job Control Language (C28-6529-4) (PDF).
- ^ Mooers, Calvin. «TRAC, A Procedure-Describing Language for the Reactive Typewriter». Archived from the original on 2001-04-25. Retrieved March 9, 2012.
- ^ Van Vleck, Thomas (ed.). «Multics Glossary – A — (active function)». Retrieved March 9, 2012.
- ^ Varian, Melinda. «VM AND THE VM COMMUNITY: Past, Present, and Future» (PDF). Retrieved March 9, 2012.
- ^ Van Vleck, Thomas (ed.). «Multics Glossary – R — (RUNCOM)». Retrieved March 9, 2012.
- ^ «What is glue code (glue code language)? — Definition from WhatIs.com». WhatIs.com. Retrieved 2022-01-31.
- ^ Larson, Quincy (10 January 2020). «Interpreted vs Compiled Programming Languages». Free Code Camp. Retrieved 23 February 2022.
{{cite web}}
: CS1 maint: url-status (link) - ^ Balkis, Anton. «Script Adalah». Raja Tips. Retrieved 23 February 2022.
{{cite web}}
: CS1 maint: url-status (link) - ^ Axelsson, Mats. «Shell scripts — What can you change». Linux Hint. Retrieved 23 February 2022.
{{cite web}}
: CS1 maint: url-status (link) - ^ «Job Control Basics (Bash Reference Manual)». www.gnu.org. Retrieved 2022-05-20.
- ^ Oraperl, CPAN]
- ^
Perl, Underground Oracle FAQ - ^ van Rossum, Guido (January 6–8, 1998). «Glue it all together». Glue It All Together With Python. python.org.
Further reading[edit]
- Barron, David William (2001). The World of Scripting Languages. ISBN 0-471-99886-9.
External links[edit]
- Patterns for Scripted Applications at the Wayback Machine (archived October 10, 2004)
Язык сценариев
Язык сценариев (или скриптовый) – это язык программирования, который разработан для записи последовательностей операций («сценариев»), выполняемых пользователем на своем компьютере. Раньше назывался языком пакетной обработки.
Сценарий или скрипт – это программа, автоматизирующая задачу. Без скрипта пользователю бы пришлось ее выполнять вручную с помощью интерфейса программы.
Скрипты используют для раскрутки сайта в следующих целях:
- для расширения функционала ресурса;
- для автоматического обмена ссылками;
- для выполнения работ по поисковой оптимизации;
- для сбора статистики, анализа позиций сайта и т.д.
Преимущества
Для создания пользовательских расширений язык сценариев удобен в ряде случаев:
- безопасность. Скриптовый язык обеспечивает программируемость без риска дестабилизации системы. Скрипты не компилируются, а интерпретируются. Поэтому неправильно написанная программа выведет диагностическое сообщение, не вызывая падение системы;
- наглядность. Язык сценариев используется, если необходим выразительный код. Концепция программирования в скриптовом языке может кардинально отличаться от основной программы;
- простота. Код имеет собственный набор программ, поэтому одна строка может выполнять те же операции, что и десятки строк на обычном языке. Поэтому для написания кодов не требуется программист высокой квалификации;
- кроссбраузерность. Скриптовые языки программирования ориентированы на кроссбраузерность. Например, JavaScript может исполняться браузерами практически под всеми современными операционными системами.
Классификация
В зависимости от быстродействия различают языки сценариев предварительно компилируемые (например, широко используемый для создания и продвижения сайтов Perl) и динамического разбора (command.com, sh). Первые транслируют программу в байт-код, который затем исполняют. Языки динамического разбора считывают инструкции из файла программы минимально необходимыми блоками, которые исполняют, не читая, дальнейший код.
Выделяют следующие типы скриптовых языков:
- универсальные: Forth, AngelScript, Perl, PHP, Python, Tcl (Tool command language), Squirrel, REBOL, Ruby, AutoIt, Lua;
- встроенные в прикладные программы: VBA, UnrealScript, AutoLISP, Emacs Lisp, Game Maker Language, MQL4 script, ERM;
- командные оболочки: sh, AppleScript, bash, csh, ksh, JCL, cmd.exe, command.com, REXX, Visual Basic Script;
- встраиваемые: Guile, Script.NET, ActionScript, Lingo (используется в редакторе Director), Sleep, браузерные Jscript и JavaScript.
Некоторые приложения имеют встроенную возможность расширения сценариями, написанными на любом универсальном скриптовом языке, например, автоматический планировщик задач или библиотека SWIG.
К скриптам также относят многие консольные утилиты, которые поддерживают выполнение записанной в файл последовательности команд.
Другие термины на букву «Я»
Все термины SEO-Википедии
Теги термина
(Рейтинг: 4.33, Голосов: 6) |
Находи клиентов. Быстрее!
наверх
Скрипт, или сценарий, — это небольшая программа, которая выполняет конкретную задачу. Обычно у скриптов нет своего визуального интерфейса: это код, который запускается по команде, отрабатывает, совершает нужные действия и завершается. Обычно такие программы нужны, чтобы автоматизировать повторяющиеся действия.
Скрипты появились в прошлом веке и изначально представляли собой наборы указаний для старых компьютеров: они описывали какую-то задачу, которую должна была выполнить операционная система. С тех пор сфера их использования сильно расширилась. Теперь это не только командные оболочки для ОС — скрипты используются везде. Они есть на сайтах, внутри крупных систем и в некоторых офисных документах. Обычно их записывают в файлы, которые исполняются на стороне браузера, сервера или другой системы.
Создавать скрипты можно почти на любом языке программирования, но некоторые подходят для этого лучше других. Такие языки называются скриптовыми. Мы подробнее поговорим о них в одном из следующих блоков.
Сейчас скрипты используются почти в любой области разработки. В первую очередь это веб: одни скрипты отвечают за выполнение действий на «внешней» стороне сайта, другие — занимаются отправкой и обработкой данных с сервера и обратно. Но сайты — далеко не единственная сфера применения скриптов.
Скрипты можно использовать для автоматизации повседневных действий в любой отрасли. Если речь о разработке — написанный под конкретные задачи сценарий может обрабатывать данные, рисовать график на основе входной информации, связываться с сервером, анимировать дизайн сайта или делать что-то еще. Но и в офисной работе с документами, и в рекламе есть место скриптам. Их пишут программисты или сами работники офиса.
В большинстве случаев — разработчики разных направлений, но не только. Скрипты могут писать системные администраторы, DevOps, сетевые инженеры, тестировщики, специалисты по анализу данных и так далее. А еще — белые хакеры: вредоносный код часто тоже является скриптом, просто задачи у него специфические.
Умение написать скрипт пригодится и офисному работнику, и менеджеру по рекламе. Этим людям часто приходится работать с большими объемами данных, и будет удобно, если сценарий выполнит рутинные действия за них.
В теории написать скрипт можно почти на любом языке программирования, кроме совсем узкоспециализированных. Но если язык не скриптовый, это будет неудобно и неэффективно. Четких критериев скриптового языка нет, хотя часто выделяют косвенные:
- это обычно языки, которые интерпретируются, а не компилируются;
- типизация у них чаще динамическая, то есть тип переменной присваивается «на лету», а не жестко закрепляется в момент создания;
- они не требуют долгой настройки среды и окружения: файл со скриптом легко запустить, например из командной строки или браузера.
Самый популярный скриптовый язык сегодня — JavaScript. Его понимают все современные браузеры, поэтому JavaScript активно используют в вебе, при разработке интернет-сайтов. На втором месте по популярности — Python. Его применяют более широко, в том числе в машинном обучении и анализе данных. Еще есть PHP — на нем пишут скрипты для «серверной» стороны сайта.
Существуют специализированные внутренние скриптовые языки, которые работают в какой-то большой системе. Например, свой язык есть у AutoCAD: на нем можно отдавать команды программе. Или у MATLAB: на нем пишутся скрипты для решения сложных математических задач. А в Microsoft Office встроен Visual Basic: на нем можно писать скрипты для работы с документами, таблицами и презентациями. Такие сценарии называются макросами.
Никуда не делись и изначальные скрипты — те, которые выполняются внутри операционных систем. Тут тоже есть свои языки. Для Unix и Linux это Bash и Shell, а для Windows — PowerShell. Эти языки работают внутри ОС, писать на них команды можно в консоли, а можно создавать отдельные файлы со скриптами и запускать их.
Вот только несколько примеров заданий, которые можно переложить с живого человека на скрипт. А иногда эти действия вообще не сможет выполнить никто, кроме программы, например запуск анимации на сайте или отправка данных серверу.
Выполнение рутинных действий, автоматизация. Например, нужно быстро заменить в тексте все кавычки-лапки на кавычки-елочки. Или взять информацию из файла или базы, чтобы сгенерировать в другом месте что-то еще. Или обработать разнородные данные… Все это можно сделать и руками, но будет долго и неэффективно. К тому же легко что-то пропустить и ошибиться. Проще написать и запустить скрипт.
Действия пользователя на сайте. Во фронтенде — отрасли разработки, которая занимается «передней», видимой пользователю частью сайта, — без скриптов никуда. Почти все интерактивные, динамические действия на сайте, которые вам доступны, выполняются за счет скриптов. Вы выполняете какое-то действие — скрипт запускается.
Сайт может работать и без скриптов: такие действия, как отправка формы или переход по ссылке, возможны без их использования. Но всплывающие окна, автокоррекция формата даты, подсказки в поиске и многое другое — это всё скрипты.
Подгрузка контента. Еще одна важная роль скриптов на сайте — подгружать контент. Например, когда вы листаете ленту в соцсети, в какой-то момент внизу автоматически подгружается больше постов. Это тоже происходит с помощью скриптов: они загружают больше контента, когда совершается действие — пользователь доходит до низа экрана. Если бы такого не было, вам пришлось бы переходить по ссылкам-страницам или соцсеть бы постоянно зависала, пытаясь подгрузить огромное количество контента разом.
Динамические элементы дизайна. Скрипты можно использовать для украшения. Так, с их помощью работают интерактивные элементы дизайна. Например, когда пользователь вводит во всплывающем окне некорректные данные, оно «трясется» — проигрывает анимацию. Она запускается по скрипту. Или на сайте есть элемент, который анимируется, если на него нажать, — это тоже скрипт. Еще более распространенный пример — динамическое меню: оно появляется, если пользователь кликнет на иконку или наведет на нее курсор.
Так можно делать не только на сайтах, просто веб — одна из наиболее популярных отраслей использования сценариев.
Продвижение и реклама. Огромное количество маркетинговых функций работает с помощью скриптов. Например, всплывающее окно с лотереей, которое показывается пользователю, когда он заходит на коммерческий сайт. Вся лотерея работает на скриптах. Или реклама в виде мини-игры на JavaScript, или красивые переходы от одного рекламного предложения к другому — всё это скрипты.
Можно создавать сценарии, которые имитируют действия пользователя на сайте: так делают, например, для теста юзабилити. Можно автоматически публиковать статьи, настраивать кампании, собирать статистику по рекламе и продвижению, оптимизировать страницу под SEO и делать многое другое.
Скрипты не стоит путать с плагинами. Кажется, будто их функции схожи, но нет. Скрипт — это маленькая программа, в нем обычно ничего нет, кроме строчек программного кода. Он не зависит от основной системы — только от языка программирования. Если понадобится изменить скрипт, можно будет просто его переписать.
А плагин — это полноценный модуль, часто с собственным графическим интерфейсом. Он подключается к определенной системе и ориентирован только на нее. Сам по себе он не запустится, к тому же больше весит и хуже модифицируется.
Существуют библиотеки скриптов — в них содержатся сценарии для решения частых задач. Библиотеки обычно бесплатные, достаточно скачать их и подключить нужные части их кода к своему проекту. Это помогает сэкономить время создания скрипта.
Но пользоваться библиотеками не всегда оправданно. Они весят больше, чем один скрипт, созданный вручную, могут «тянуть» за собой разные зависимости, а написанный там код не всегда удобно адаптировать под конкретную задачу. Поэтому скрипты обычно пишут самостоятельно, если задача не совсем шаблонная. А библиотеки используются как вспомогательные инструменты.
Скорость написания. Скрипт обычно пишется быстро и легко, он небольшой и не требует переписывать всю большую систему. При этом десяток строчек кода может сэкономить несколько часов работы программиста.
Независимость. Сценарий – это независимый блок кода, в отличие от модуля или плагина. Его не нужно подолгу встраивать в основной программный продукт, он может вообще с ним не связываться. Поэтому скрипты довольно безопасны: маловероятно, что их создание и применение сломает что-то в большой системе. Даже если они не будут работать, их можно переписать без ущерба основной программе и запустить снова.
Универсальность. Скрипт можно запустить практически где угодно. Главное, чтобы в этой среде был установлен интерпретатор языка, который отвечает за прочтение и исполнение кода. Например, интерпретаторы JavaScript есть в браузерах, поэтому написанный на этом языке код можно запустить в любом браузере, и он будет работать.
Но обычно скрипты изначально пишут под конкретную платформу, и предполагается, что где-то еще их запускать не будут, поэтому думать о кроссплатформенности при создании почти не надо.
Функциональность. Скрипт по определению ориентирован на конкретное действие, на решение определенной задачи и экономию времени. При этом сценарии очень гибкие. С их помощью можно запрограммировать практически любое действие, даже сложное. Они расширяют возможности систем. Когда скрипты стали активно использовать в вебе, сайты стали красивее и функциональнее: сравните интернет 10 лет назад и сейчас.
Возможность автоматизации. Благодаря сценариям можно не думать о самостоятельном решении рутинных задач. Скрипт сделает все сам и освободит время для более важных задач. Это касается не только разработчиков, но и пользователей: скрипты делают сайт или программу удобнее для них.
Скорость выполнения. При написании скриптов часто не думают об оптимизации. Исключение — отрасли, где скорость выполнения очень критична. Это логично: если потратить кучу времени на оптимизацию скрипта, можно потерять все его преимущества. Но по этой причине скрипты могут работать не слишком быстро. Особенно если речь идет о каких-то больших действиях. Важен этот минус бывает в вебе: «перегруженный» скриптами медленный сайт неудобен пользователям и мешает SEO.
Вес. Один сценарий обычно весит немного. Но если их несколько и они не оптимизированы, суммарный вес скриптов может быть довольно большим, нагружать браузер и замедлять выполнение всей программы. А пользователи не любят терять время. Если речь о сервисах в интернете, на «тяжелые» блоки кода на сайте ругаются Google и Яндекс. Они могут понизить рейтинг в выдаче, а это вредит SEO-продвижению.
Риск ухудшить юзабилити. Звучит странно: скрипты как раз нужны для юзабилити. Но представьте себе человека, который отключил выполнение сценариев в браузере, чтобы не тратить заканчивающийся трафик, а потом зашел на сайт с динамическим меню. Если разработчик не подумает о таком заранее, человек просто не сможет использовать возможности сайта. Поэтому фронтенд и похожие направления требуют внимательности и умения думать о разных ситуациях, а на скрипты нельзя полагаться всегда.
Блокировка страницы при ошибке. Еще одна вероятная ситуация: скрипт не сработал, и поэтому пользователь не может выполнить нужное ему действие. К счастью, в современных командах разработки очень тщательно проверяют ошибки перед деплоем, то есть публикацией и развертыванием кода. А еще скрипты на веб-странице нельзя размещать в верхней части HTML-документа: если так сделать, они будут подгружаться первыми. Тогда, если что-то пойдет не так, страница не загрузится совсем.
Чтобы создавать простые сценарии, не обязательно досконально знать выбранный язык программирования. Для легких задач хватит основ. А вот если вы хотите работать со скриптами профессионально, учиться придется дольше — но зато использовать их «для себя» можно начать быстро. Правда, понадобится освоить несколько вещей.
Мы советуем изучить синтаксис и принципы языка, а конкретно для написания скриптов — принятые практики и паттерны их построения. Это поможет научиться сразу писать хорошо. Если вы хотите в веб, понадобится понять, как работают сайты и как устроены страницы. Это уже компьютерная грамотность, ей тоже можно обучиться. А для работы в продвижении нужно узнать больше про алгоритмы Google и Яндекса, маркетинг и рекламу.
Можно воспользоваться туториалами в сети, документацией языка, образовательными статьями и учебниками. А можно записаться на курсы — и получить знания для входа в новую профессию.
Скрипт
Скрипт (script) – это понятие в
программировании, обозначающее последовательность команд для выполнения
конкретных операций. По сути, это небольшая программа, заточенная под
определенное действие. Скрипты используются в веб-разработке, в
частности, чтобы автоматизировать операции. Существуют скриптовые языки
программирования, заточенные под их написание, – так называемые «языки
сценариев». Сценарии – второе название скриптов. Скриптовые ЯП обычно
интерпретируемые, а не компилируемые.
История развития
Популярный ЯП, интерпретатор
которого есть во всех современных браузерах, – JavaScript, который
коротко называют JS. На его основе написано огромное количество скриптов
для веб-страниц, и само понятие скрипта во многом связывают с этим
языком. Он зародился в 1999 году и имел тогда название LiveScript. До
него похожие скриптовые языки уже пытались создать, но LiveScript
прижился и продолжил развитие, со временем изменив название. Изначальным
его создателем была компания Netscape, позже разработку другой версии
JS начала Microsoft (сейчас эта версия называется Jscript и имеет ряд
отличий от стандартного JavaScript). Со временем благодаря работе
компании W3C язык обрел единые рекомендации по написанию кода и
стандарты. Сейчас с его помощью реализуется большое количество
веб-технологий на стороне как сервера, так и клиента (в браузере).
Назначение скриптов
С помощью сценариев выполняется огромное количество рутинных операций, например:
- сбор статистики.
Счетчики посещаемости, аналитические системы – все они используют
скрипты, которые подсчитывают нужную специалистам информацию. Чаще всего
такой код написан на JS; - обращения к БД. Сообщение между базой данных и интерфейсом сайта происходит постоянно, и его описывают скриптами, чаще всего на языке PHP;
- написание
комментариев и ведение гостевых книг. Сервис добавления новых
комментариев на сайт тоже работает за счет сценариев на PHP или
JavaScript; - динамическая подгрузка информации на странице без ее обновления.
Например, кнопка «Показать еще» на странице магазина. Такие функции
реализуются за счет технологии AJAX, в основе которой лежит работа
скриптов на JavaScript; - динамическое отображение элементов сайта. Меню, страницы фильтров интернет-магазина и многие другие элементы генерируются автоматически с помощью скриптов.
Операции для продвижения.
Огромное количество рутинных манипуляций, необходимых для SEO и
рекламы, можно автоматизировать. Для этого существуют специальные
программы и надстройки для CMS, работающие за счет скриптов. Их можно
найти в Сети или написать самостоятельно. Например, веб-программист
может написать сценарий для автоматического заполнения полей при
создании страницы через CMS. С его помощью можно автоматизировать,
скажем, генерацию метатегов или заполнение стандартных страничек. Так
что же такое скрипт? Это замена нескольким часам работы
контент-менеджера.
Преимущества использования
- Простота внесения изменений.
Если вместо большого количества скриптов применять одну программу,
малейшая ошибка может привести к падению всей системы. В случае со
сценариями ошибку можно исправить без вреда для остальных компонентов,
равно как и внести любую правку. Для этого не понадобится изменять всю
сложную структуру – просто видоизменить один скрипт. - Ускорение решения задач.
Один небольшой скрипт по функциональности может сравниться с огромным
массивом кода, вдобавок такой подход дает возможность сразу
ориентироваться на возможные проблемы и решать их. - Кроссплатформенность.
Сценарии легко переносятся между разными площадками, во многом из-за
того, что тот же JavaScript интерпретируют все современные браузеры.
В
целом у использования скриптов в веб-разработке почти нет альтернатив.
Другие методы реализации существуют, но не всегда доступны и оправданы.
Недостатки применения
- Скриптовые языки в целом медленнее, чем компилируемые ЯП, и это нужно учитывать при разработке.
- Для
некоторых из них до сих пор не создана интегрированная среда разработки
(IDE), полностью заточенная под их функции. Впрочем, для
веб-программирования это не так важно. Для написания скриптов достаточно
редакторов кода, а отладку, если сценарий выполняется на стороне
пользователя, можно произвести через браузер. Многие разработчики
считают, что функциональность IDE для скриптов избыточна. - За
счет доступности многих скриптовых языков в них низкий порог вхождения,
что порождает обилие низкоквалифицированных разработчиков. Условная
бесплатность парадоксальным образом создает таким ЯП своеобразную
репутацию, в результате крупные проекты часто делают выбор в пользу
других вариантов. Тем не менее тот же JavaScript очень широко
распространен и уже используется не только в веб-разработке, став
известен как мультипарадигменный язык.
Типы скриптовых ЯП
Как
и любые другие, они разделяются на интерпретируемые (выполняются
динамически) и компилируемые (сначала компилятор «собирает» программу
целиком и переводит на машинный язык, и только потом она начинает
выполнение). Впрочем, первых среди скриптовых языков больше. К ним
относятся и JavaScript, и PHP, и Python, и многие другие популярные в
веб-разработке ЯП. Также существует классификация по назначению:
- командно-сценарные.
Они предназначены для выполнения действий в операционных системах.
Работа в консоли любой ОС производится на командно-сценарном языке этой
системы (PowerShell, Bash и т. д.); - встроенные (прикладные).
Заточены под конкретные задачи и обычно являются внутренними языками
какой-либо системы. Например, AutoLISP применяется в САПР AutoCAD; - общего назначения.
Языки, предназначенные для широкого спектра задач. Именно к ним
относятся JS и большинство других ЯП, применяемых в веб-разработке.
Скриптовые языки
Помимо
JavaScript, в веб-программировании активно используются Jscript, PHP,
Python. Известен также Perl, пик популярности которого пришелся на
2000-е годы, после чего он уступил место другим языкам, но до сих пор
используется для создания сайтов. Существуют и другие менее известные
решения, такие как AngelScript, заточенный под использование в
приложениях. Все скриптовые языки высокоуровневые, большинство из них
интерпретируемое. Многие являются мультипарадигменными, то есть
поддерживают несколько моделей написания кода (структурную,
объектно-ориентированную, функциональную и т. д.).
Значение скриптов в продвижении
- Грамотное
использование скриптов повышает юзабилити сайтов, что в свою очередь
хорошо сказывается на поведенческих факторах, важных для продвижения.
Динамически подгружаемое содержимое, слайдеры – несложно догадаться, что
такие скрипты удобны в первую очередь пользователям. Но это не
единственное, что важно для продвижения. - Сценарии позволяют
автоматизировать огромное количество рутинной работы, включая публикацию
новых записей или генерацию метатегов. Заскриптованные алгоритмы
справляются с такими задачами быстрее, чем люди, и отнимают меньше
средств. - Существует ряд скриптов, имитирующих поведение
пользователей, что в свою очередь находит применение в продвижении. Так,
можно массово регистрироваться в почте или соцсетях, лайкать публикации
и т. д. Можно запрограммировать почти любую, сколь угодно сложную
последовательность действий пользователя – никто даже не догадается, что
это скрипт, а не человек.
Скрипты в контекстной рекламе
Контекстные
рекламные кабинеты поисковых систем поддерживают сценарии для
выполнения рутинных действий. Это намного удобнее, чем выполнять
аналогичные действия вручную. С помощью скриптов можно автоматизировать
запуск кампании, внесение изменений, ведение статистики и многое другое.
Отключение и подключение новых площадок, групп и кампаний тоже можно
производить в автоматическом режиме на основе статистики эффективности.
Узнать
больше о том, как использовать скрипты в продвижении и рекламе, помогут
тематические курсы IMBA для начинающих специалистов. Вам расскажут, что
нужно делать, чтобы с помощью сценариев повысить продажи,
автоматизировать и упростить работу.
Сценарный язык (язык сценариев, скриптовой язык; англ. scripting language) — высокоуровневый язык сценариев (англ. script) — кратких описаний действий, выполняемых системой. Разница между программами и сценариями довольно размыта. Сценарий — это программа, имеющая дело с готовыми программными компонентами, которые, однажды загруженные, в своей работе не зависят от дальнейшего наличия / отсутствия подключения к Сети.
Согласно Джону Устерхауту, автору языка Tcl, высокоуровневые языки можно разделить на языки системного программирования (англ. system programming languages) и сценарные языки (англ. scripting languages). Последние он также назвал склеивающими языками (англ. glue languages) или языками системной интеграции (англ. system integration languages). Сценарии обычно интерпретируются, а не компилируются, хотя сценарные языки программирования один за другим обзаводятся JIT-компиляторами.
В более узком смысле под скриптовым языком может пониматься специализированный язык для расширения возможностей командной оболочки или текстового редактора и средств администрирования операционных систем.
Классификация
Языки программирования вообще и сценарные языки в частности могут быть классифицированы множеством различных способов.
В плане быстродействия скриптовые языки можно разделить на языки динамического разбора (sh, COMMAND.COM) и предварительно компилируемые (Perl). Языки динамического разбора считывают инструкции из файла программы минимально требующимися блоками, и исполняют эти блоки, не читая дальнейший код. Предкомпилируемые языки транслируют всю программу в байт-код и затем исполняют его. Некоторые скриптовые языки имеют возможность компиляции программы «на лету» в машинный код (т. н. JIT-компиляция).
По применению языки можно грубо разделить на три типа:
- командно-сценарные;
- прикладные сценарные;
- универсальные сценарные.
Командно-сценарные языки
Появились ещё в 1960-х годах для управления заданиями в операционных системах. Из языков того времени наиболее известен JCL для OS/360. В этот класс входят языки пакетной обработки (англ. batch language) и языки командных оболочек, например sh, csh для Unix. Эти языки чаще всего используются в пакетном режиме обработки.
- AutoHotkey
- JCL
- sh
- bash
- csh
- ksh
- Pilot
- REXX
- AppleScript
- COMMAND.COM и cmd.exe
- VBScript
- PowerShell
- AutoIt
Например, язык AppleScript операционной системы MacOS имеет редактор Script Editor, который позволяет записывать действия по мере их выполнения пользователем в системе в файл сценария (текстовый файл) и оформлять в виде исполняемой программы. Такой подход позволяет составлять простейшие сценарии непрограммирующим пользователем.
Встроенные (прикладные сценарные) языки
Сценарные языки этого типа начали появляться в 1980-е годы, когда на промышленных персональных компьютерах стало возможным интерактивное общение с ОС. В клиент-серверной архитектуре такие языки работали в клиентской части программного обеспечения.
- AutoLISP
- ECMAScript и его диалекты (JScript, JavaScript, ActionScript)
- Emacs Lisp
- ERM
- Game Maker Language
- LotusScript
- Lua
- MQL4 script
- UnrealScript
- VBA
- Встроенный язык программирования 1С:Предприятие
Языки общего назначения
Этот тип сценарных языков наиболее известен (особенно в применении к веб-программированию). Языки этого типа стали возникать с 1990-х годов.
- Tcl (Tool command language)
- Lua
- Perl
- PHP
- Python
- REBOL
- Ruby
- JavaScript
Следует заметить, что многие языки этой категории имеют более широкое применение, чем в качестве просто языков сценариев, например JavaScript, который в некоторых случаях может выполняться на сервере.
Критика
Создатель Java Джеймс Гослинг отвёл динамическим языкам программирования (упомянув PHP и Ruby) роль сценарных языков, генерирующих веб-страницы, но непригодных для применения в более широкой нише приложений из-за проблем с масштабируемостью и производительностью. Приверженцы динамических языков не оставили критику без ответа по всем пунктам, в частности о его старании представить современные динамические языки всего лишь «сценарными».
Плагины и скрипты
Для написания пользовательских расширений могут использоваться как скрипты (в терминологии некоторых программ «макросы»), так и плагины (независимые модули, написанные на компилируемых языках; в некоторых программах они могут называться «утилитами», «экспортёрами», «драйверами»).
Скриптовый язык удобен в следующих случаях:
- Если нужно обеспечить программируемость без риска дестабилизировать систему. Так как, в отличие от плагинов, скрипты интерпретируются, а не компилируются, неправильно написанный скрипт выведет диагностическое сообщение, а не приведёт к системному краху. Контрпримером могут служить, например, JVM и CLR, причём если первая была разработана из соображений переносимости кода (безопасность — побочный эффект), то вторая — именно из соображений безопасности.
- Если важен выразительный код.
- Во-первых, чем сложнее система, тем больше кода приходится писать «потому, что это нужно». Скрипт может перенести часть подобного шаблонного кода (инициализация, уничтожение, межпоточная синхронизация и т.д.) в среду исполнения скриптов.
- Во-вторых, в скриптовом языке может быть совсем другая концепция программирования, чем в основной программе — например, игра может быть монолитным однопоточным приложением, в то время как управляющие персонажами скрипты выполняются параллельно или как сопрограммы. Такой подход хорош с точки зрения масштабируемости системы (сценарии не зависят от реализации процедур, пишутся гораздо быстрее и легче отлаживаются), но не очень хорош с точки зрения качества кода, поскольку неизбежно приводит к его дублированию.
- Гораздо более рациональным подходом является создание файлов ресурсов (как вариант, xml-файлов, структур, баз данных), описывающих поведение «по существу» (в декларативном стиле), как это делается с другими свойствами внутриигровых объектов (текстуры, модели, эффекты, звуки).
- В-третьих, скриптовый язык имеет собственный проблемно-ориентированный набор команд, и одна строка скрипта может делать то же, что несколько десятков строк на традиционном языке. Однако стоит заметить, что большая выразительность кода на сценарных языках является следствием их ограниченности и/или новизны и сравнивать C (1970-е) и PHP (1990-е) и/или Fortran (1950-е) и Python (1990-е) неуместно.
- Скрипты известны низким порогом вхождения, на скриптовом языке может писать даже низкоквалифицированный программист. Это одновременно и плюс, и минус. С одной стороны, это позволяет нанимать дешёвую рабочую силу (освобождать специалистов от рутинной работы и повышать скорость разработки экстенсивно), а с другой критически снижает производительность и надёжность (из-за ориентированности обучения таким языкам на решение конкретных задач, а не на понимание сущности производимых действий).
- Проблема высокого порога вхождения возникает, в основном, в языках с избыточным синтаксисом (C++, C#) и может быть полностью решена лишь отказом от них в пользу более удачных (что, разумеется, далеко не всегда возможно). В этом случае скрипты выполняют роль паллиатива. Собственно, они и возникли когда масштабируемость Си-подобных языков стала недостаточной для повседневной работы и порог вхождения новичков в отрасль резко возрос.
- Проблема большого количества рутины, вообще говоря, неразрешима, но в большинстве случаев может быть сглажена более надёжными дополнительными средствами, например, автоматической кодогенерацией.
- Если требуется кроссплатформенность. Например, JavaScript — его исполняют браузеры под самыми разными ОС.
- Проблема с кроссплатформенностью напрямую вытекает из стандарта языка: стандарт Си, например, указывает «sizeOf (short) <= sizeOf (int) <= sizeOf (long)», но не указывает какую именно разрядность они должны иметь (эту проблему решают прикладные библиотеки, например, Glib). Современные не-сценарные языки (Java, C#, Haskell) этой проблемы полностью лишены именно по причине хорошей стандартизации.
- Скриптовые языки применяются для написания программ, не требующих оптимальности и быстроты исполнения. Из-за простоты на них часто пишутся небольшие одноразовые («проблемные») программы.
- Многие скриптовые языки общего назначения работают достаточно медленно, поэтому их часто используют только в сочетании со сторонними библиотеками (например, NumPy в сочетании с Python).
- Это не очень хороший пример, поскольку NumPy основывается на старой фортрановской библиотеке MATHLAB, код которой, хоть и проверен временем, начинает неизбежно «гнить» — писался он под крайне примитивные однопоточные компьютеры с другими узкими местами (и хотя это компенсируется оптимизирующими компиляторами и распараллеливанием на уровне ОС, производительность постепенно снижается).
- Более правильный пример: язык Lua является классическим встраиваемым языком сценариев общего назначения, для его работы достаточно минимальной реализации Си (везде, где есть Си, может работать и Lua).
- Также скриптовые языки хороши для визуализации данных: создания сложных графиков и презентаций, а также простых программ (например, Python используется в графических оболочках Gnome и Cinnamon для создания апплетов и небольших настроечных утилит).
- Многие скриптовые языки общего назначения работают достаточно медленно, поэтому их часто используют только в сочетании со сторонними библиотеками (например, NumPy в сочетании с Python).
У плагинов также есть важные преимущества.
- Готовые программы, оттранслированные в машинный код, выполняются значительно быстрее скриптов, которые интерпретируются из исходного кода динамически при каждом исполнении. Большинство программ переносимы на уровне исходного кода и могут быть выполнены интерпретатором соответствующего языка подобно скриптам. Использование же байт-кода (Java, C#, LLVM) позволяет хранить, переносить и исполнять программы более эффективным образом, нежели скрипты.
- JIT-компиляция также позволяет оптимизировать общий код под конкретную платформу (в перспективе, под конкретное семейство процессоров и имеющееся оборудование).
- Полный доступ к любому аппаратному обеспечению или ресурсу ОС (в скриптовом языке для этого должен существовать специальный API, написанный на компилируемом языке). Плагины, работающие с аппаратным обеспечением, традиционно называют драйверами.
- Если предполагается интенсивный обмен данными между основной программой и пользовательским расширением, для плагина его обеспечить проще.
- Для компилируемых языков программирования характерно использование сильной статической системы типов, которая позволяет эффективно отлавливать ошибки и лучше оптимизировать код. Использование же в современных скриптах динамической типизации обусловлено скорее техническими особенностями реализации и историческими причинами. Также у статически типизированных языков есть потенциал для роста, а именно, переход с традиционной мономорфной типизации на полиморфную. Расширения мономорфизма в современных Си-подобных языках (перегрузка, ad-hoc-полиморфизм) и полиморфизм подтипов, а также параметрический полиморфизм и классы типов в экспериментальных языках (например, Haskell) сценарным языкам недоступен (статическая типизация во время исполнения скрипта приведёт к существенной потере производительности).
Комментариев пока еще нет. Вы можете стать первым!
Скри́птовый язы́к (англ. scripting language, в русской литературе принято название язык сценариев) — язык программирования, разработанный для записи «сценариев», последовательностей операций, которые пользователь может выполнять на компьютере. Простые скриптовые языки раньше часто называли языками пакетной обработки (batch languages или job control languages). Сценарии обычно интерпретируются, а не компилируются (хотя всё чаще применяют компиляцию каждый раз перед запуском).
В прикладной программе, сценарий (скрипт) — это программа, которая автоматизирует некоторую задачу, которую без сценария пользователь делал бы вручную, используя интерфейс программы.
Содержание
- 1 Плагины или скрипты?
- 2 Типы скриптовых языков
- 2.1 Универсальные скриптовые языки
- 2.2 Встроенные в прикладные программы
- 2.3 Командные оболочки
- 2.4 Встраиваемые
- 2.5 Командные файлы интерпретаторов
Плагины или скрипты?
Для написания пользовательских расширений могут использоваться как скрипты (в терминологии некоторых программ «макросы»), так и плагины (независимые модули, написанные на компилируемых языках; в некоторых программах они могут называться «утилитами», «экспортёрами», «драйверами»).
Скриптовый язык удобен в следующих случаях:
- Если нужно обеспечить программируемость без риска дестабилизировать систему. Так как, в отличие от плагинов, скрипты интерпретируются, а не компилируются, неправильно написанный скрипт выведет диагностическое сообщение, а не приведёт к системному краху;
- Если важен выразительный код. Во-первых, чем сложнее система, тем больше кода приходится писать «потому, что это нужно» — см., например, Hello World#Маргинальные примеры. Во-вторых, в скриптовом языке может быть совсем другая концепция программирования, чем в основной программе — например, игра может быть монолитным однопоточным приложением, в то время как управляющие персонажами скрипты выполняются параллельно. В-третьих, скриптовый язык имеет собственный проблемно-ориентированный набор команд, и одна строка скрипта может делать то же, что несколько десятков строк на традиционном языке. Как следствие, на скриптовом языке может писать программист очень низкой квалификации — например, геймдизайнер своими руками, не полагаясь на программистов, может корректировать правила игры;
- Если требуется кроссплатформенность. Хорошим примером является JavaScript — его исполняют браузеры под самыми разными ОС.
У плагинов же есть три важных преимущества.
- Готовые программы, оттранслированные в машинный код, выполняются значительно быстрее скриптов, которые интерпретируются из исходного кода динамически при каждом исполнении. Поэтому скриптовые языки не применяются для написания программ, требующих оптимальности и быстроты исполнения. Но из-за простоты они часто применяются для написания небольших, одноразовых («проблемных») программ.
- Полный доступ к любому аппаратному обеспечению или ресурсу ОС (в скриптовом языке для этого должен существовать написанный на машинном коде API). Плагины, работающие с аппаратным обеспечением, традиционно называют драйверами.
- Если предполагается интенсивный обмен данными между основной программой и пользовательским расширением, для плагина его обеспечить проще.
Также в плане быстродействия скриптовые языки можно разделить на языки динамического разбора (sh, command.com) и предварительно компилируемые (Perl). Языки динамического разбора считывают инструкции из файла программы минимально требующимися блоками, и исполняют эти блоки, не читая дальнейший код. Предкомпилируемые языки транслируют всю программу в байт-код и затем исполняют его. Некоторые скриптовые языки имеют возможность компиляции программы «на лету» в машинный код (т. н. JIT-компиляция).
Типы скриптовых языков
Универсальные скриптовые языки
- AngelScript
- Perl
- Python
- PHP
- Squirrel
- Tcl (Tool command language)
- REBOL
- Ruby
- Lua
- AutoIt
- Pawn
Встроенные в прикладные программы
- UnrealScript
- Emacs Lisp
- AutoLISP
- VBA
- MQL4 script
- Game Maker Language
- ERM
Командные оболочки
- AppleScript
- sh
- bash
- csh
- JCL
- ksh
- COMMAND.COM и cmd.exe
- Visual Basic Script
- REXX
Встраиваемые
- ActionScript — В средах Adobe Flash, Adobe AIR, Adobe Flex
- Браузерные языки: JavaScript, JScript
- Lingo — использующийся в редакторе Director, называют скриптовым
- Guile
- Io
- Lua
- Sleep
- Script.NET
Также в приложение может быть встроена возможность расширения сценариями на любом из универсальных скриптовых языков, см. к примеру библиотеку SWIG или автоматический планировщик задач.
Командные файлы интерпретаторов
Многие консольные утилиты поддерживают выполнение последовательности команд, заранее записанной в файл. Такие файлы тоже называют скриптами.
Примеры таких утилит:
- SQLPlus — выполняет команды SQL и PL/SQL в СУБД Oracle
Что такое скрипт и скриптовый язык
Скрипт (script с англ. сценарий) — это небольшая программа, которая последовательно выполняет список однотипных задач. Простыми словами, скрипт — это автоматизация какого-то рутинного процесса: заменить в статье дефисы на тире, кавычки лапки (“”) на ёлочки («») или подготовка файлы сайта для загрузки на сервер.
Написать скрипт можно на любом языке, если он поддерживает описание инструкций в виде последовательности действий, то есть алгоритмов:
- Открыть сайт X.
- Нажать кнопку Y.
- Подождать N секунд.
- Закрыть сайт и так далее.
По похожим сценариям работают актеры, повара, заводы. Каждый из них выполняет последовательность действий, будь то рецепт блюда или технология по эксплуатации станка. Эту последовательность действий можно описать в подавляющем большинстве языков программирования.
Вот только называть язык скриптовым только потому, что на нем можно писать сценарии, нельзя. Есть и другие критерии:
- Чаще интерпретируется, а не компилируется — переводится на машинный язык во время запуска, а не предварительно.
- Типизация обычно динамическая: тип данных может в любой момент меняться, и не определяться во время компиляции.
- Он более высокоуровневый — больше понятен человеку, чем компьютеру.
Сейчас будет моё личное мнение:
Сложно выделить, что делает язык скриптовым. Например, Java таковым не считается, хотя он подходит по всем критериям:
- На нем можно писать инструкции для компьютера, которые будут выполняться как сценарий.
- Java компилируется в байт-код, который во время запуска интерпретируется в машинный язык.
- В нем допустима динамическая типизация, благодаря дженерикам.
- У него достаточно высокий уровень абстракции — то же объектно-ориентированное программирование.
Дженерик (обобщение) — такое описание данных при написании алгоритма или функции, которое позволяет использовать разные типы данных, не переписывая алгоритм.
На мой взгляд, есть всего один корректный критерий классификации: язык должен быть создан специально для того, чтобы выполнять сценарии внутри какой-либо программы. Например, VBA, на котором пишут макросы для Excel, или WitcherScript для игр The Witcher 3 и CyberPunk 2077, а также sh для терминалов.
Какие бывают типы скриптов
Скрипты и языки для их написания можно разделить на следующие типы:
- Консольные или командные — Bash, PowerShell.
- Расширяющие или встраиваемые — JavaScript, Lua, VBA.
- Макросы или скрипты графического интерфейса — зависит от программы.
- Универсальные — Python, PHP, JavaScript.
На каких языках нельзя писать скрипты
Существуют языки, созданные для решения конкретных задач и не предполагающие написания алгоритмов (разве что математических). Например, язык для аналитики данных R.
Рассмотрим возможности двух языков на примере анализа данных:
Таблица выше показывает, насколько ограничен узкоспециализированный R по сравнению с языком общего назначения Python.
Скрипты нельзя писать на:
- R — он используется только для аналитики данных.
- SQL — предназначен только для запросов к базам данных.
- MATLAB — только для математических вычислений.
- Solidity — для написания смарт-контрактов.
Эти языки задумывались для решения конкретных задач и в них просто нет возможностей для написания скриптов. Иначе ничего бы не помешало использовать и их. Как говорится, любой инструмент — это молоток.
Плохо ли это? Наоборот, создатели узкоспециализированных языков могут позволить себе сосредоточиться на главных возможностях своего языка и сделать их действительно мощными и удобными. И в зависимости от сложности задачи программист решает — использовать ли отдельный язык или достаточно будет языка общего назначения.
Где и кем используются скриптовые языки
Языки, поддерживающие написание скриптов, используются во всех сферах и для решения всех задач:
- Разработка под iOS или OS X — Swift.
- Разработка под Android — Java или Kotlin.
- Создание игр — C# или C++.
- Веб-разработка — PHP, Python, JavaScript.
- Аналитика — Python, Java, JavaScript.
- Программирование устройств — Python, C++.
Формальных ограничений на использование тех или иных языков в разных сферах нет — просто могут быть некоторые сложности. Например, можно создать приложение для OS X хоть на Python, просто оно будет медленно работать. Можно создать интерфейс сайта хоть на ассемблере — но тут уже медленно работать будете вы.
Что же касается сценарных языков, их используют в специальных случаях, например:
- WitcherScript или Lua для написания квеста для игры.
- VBA для создания макроса для бухгалтерской таблицы.
Также не стоит забывать и про скрипты — их тоже может писать кто и угодно и для чего угодно. Например, чтобы улучшить позиции сайта в поисковой выдаче.
Как скрипты помогают в SEO
С помощью кода можно решить любую задачу, если соблюдены три условия:
- Это теоретически возможно.
- Есть достаточно времени на написание кода.
- Есть достаточно времени на выполнение кода.
Теоретически возможно предсказывать будущее, если рассчитать движение всех частиц во Вселенной. Вот только на сбор данных, написание кода и запуск такой программы уйдет слишком много времени. Поэтому, к сожалению, демон Лапласа не поможет угадать ключи, которые со 100 % вероятностью продвинут сайт в топ за один час.
А вот заставить скрипт проанализировать тексты на сайте, просмотреть конкурентов, изучить поисковую выдачу, чтобы он предложил несколько подходящих ключей — вполне возможно.
Вот ещё несколько полезных примеров:
- мониторинг онлайна сайта;
- анализ текстов на количество ключей, их актуальность, на ошибки и прочее;
- проверка скорости загрузки;
- проверка оптимизации для людей с ограниченными возможностями;
- анализ безопасности;
- ведение статистики;
- автопостинг по разным площадкам;
- анализ поведенческих факторов;
- сбор данных о пользователях;
- сбор данных о конкурентах и так далее.
И все эти скрипты уже кем-то написаны и давно используются в индустрии. Например, с помощью PageSpeed от Google можно проверить скорость загрузки сайта, узнать о возможных причинах торможения и понять, что можно исправить и улучшить. Яндекс.Метрика позволяет вести статистику посещений и следить за активностью пользователей.
В зависимости от вашего знания предметной области и вашей фантазии вы можете придумать еще какие-то скрипты, написать их или заказать их разработку. Это может быть что-то новое, а может быть и объединением нескольких других скриптов. Например, можно взять готовый скрипт мониторинга и добавить в него отправку уведомлений в Телеграм или запуск каких-нибудь служб восстановления.
Преимущества и недостатки скриптов
Преимущества скриптов делают их идеальным инструментом для задач, для которых они используются:
- Их легко написать, что экономит время. Они небольшие, поэтому можно особо не переживать из-за чистоты кода или правильной архитектуры.
- Их не нужно встраивать в целую систему, чтобы выполнить какие-то действия.
- Не нужно беспокоиться о кроссплатформенности кода — скрипты пишутся под определенные задачи и запускаются сразу на целевых платформах.
- Гибкость — можно добавить в программу любые действия и параметры. А в случае необходимости скрипт легко переписывается.
Есть и недостатки, но в контексте требований к скриптам они не имеют значения. Например, чуть более медленная скорость выполнения. Условно говоря, с помощью скрипта, который работает одну секунду, вы экономите час своего времени. Но вместо того, чтобы удовлетвориться этим, вы решаете потратить еще десять часов, чтобы скрипт выполнялся за полсекунды.
Как научиться использовать сценарные языки
Первый шаг — определиться, зачем вы хотите этому учиться. Чтобы автоматизировать небольшие процессы или писать моды к играм, парсить данные или создавать мобильные приложения? Зная ответ на этот вопрос, вы можете подобрать подходящий язык и попробовать его изучить.
Важно! Язык — это инструмент. Подбирайте подходящий для ваших задач — список был в разделе выше.
Если сомневаетесь, выбирайте JavaScript или Python. Это очень популярные языки, которые быстро развиваются, по ним много обучающих материалов и много вакансий для программистов. Также они легки для освоения.
Второй шаг — изучите основные принципы программирования. Их не так много и они общие (но не всегда идентичные) для большинства языков. И если через несколько месяцев вы поймете, что ошиблись с выбором, сможете быстро перестроиться под новый язык.
Третий шаг — придумайте несколько небольших проектов и реализуйте их на своем языке. Чем меньше у вас опыта — тем меньше должен быть проект. Не нужно строить Бурдж-Халифа, если вы ни одного гвоздя в жизни не забили. Второй и третий шаги можно совмещать.
Практиковаться нужно как можно больше, а начинать — как можно раньше. Теория важна, но без практики ничего не стоит, потому что программирование — это про решение проблем, а не про алгоритмы, структуры, парадигмы и другие умные слова.
Если не можете придумать интересные проекты, можете погуглить идеи для новичков — их полно для любого языка и уровня владения им.
Оглавление
-
История развития скриптов
-
Основные принципы скриптов
-
Преимущества скриптов
-
Недостатки скриптов
-
Типы скриптов
-
Примеры скриптовых языков
-
Роль скриптов в продвижении
-
Использование языка JavaScript в контекстной рекламе
В современном программировании в Сети скрипты (сценарии) – это отдельные последовательности действий, созданные для автоматического выполнения задачи. Если готового сценария нет, пользователь выполняет эти действия вручную с соответствующими затратами времени и возможностями появления ошибок.
Для написания скриптов используются специальные языки программирования, которые так и называются – скриптовые. Соответственно, скриптовый язык программирования – это набор лексический, семантических и синтаксических правил для создания и редактирования скриптов. Корректно также синонимичное название «язык сценариев».
История развития скриптов
Рассмотрим для примера историю развития наиболее распространенного скриптового языка JavaScript. Именно с его помощью реализуются множество решений по взаимодействию пользователей с сайтами, программируются широкие возможности интерактивных страниц.
В 1995 году компания Netscape для своего популярного на тот момент браузера Netscape Navigator 2.0 предложила специальный язык под названием LiveScript. На то время возможности языка были очень скудными, и многие просто не понимали, что такое скрипт (script) в браузере. Тогда он мог проверять и обрабатывать те данные, которые пользователь оставлял на странице сайта через форму. Такая проверка давала возможность контролировать правильность введенных данных и избегать отправки формы без нужной информации. Вскоре название этого языка было изменено на JavaScript.
Через некоторое время известный конкурент Netscape – корпорация Microsoft – создал свою версию JavaScript. Несмотря на то что такой скриптовый язык программирования имел немного отличающиеся функции, он успешно прижился и получил собственное название JScript. Он начал использоваться в браузере Internet Explorer начиная с версии 3.0. Через некоторое время и другие браузеры стали поддерживать JavaScript.
Со временем язык развивался и совершенствовался, теперь с его помощью можно успешно решать гораздо более сложные задачи. Интерпретатор JavaScript является встроенным элементом всех современных браузеров.
Несмотря на жесткую конкуренцию, Microsoft и Netscape вместе с наиболее авторитетными разработчиками обеспечения для деятельности в Интернете трудились в организации W3C. В результате были подготовлены единые стандарты и рекомендации. Но все же языки JavaScript и JScript имеют определенные различия, что необходимо учитывать в работе.
Основные принципы скриптов
Интерпретатор языка JavaScript встроен во все популярные браузеры. Именно поэтому любой браузер понимает, что такое скрипт на этом языке. Эти коды успешно выполняются в тот момент, когда пользователь обращается к страницам сайта. Но такие же скрипты могут успешно работать и на сервере, если на нем установлен интерпретатор JavaScript. Сценарии могут выполняться как на стороне клиента, в браузере, так и непосредственно на сервере.
Скрипты имеют следующие цели:
- SEO-скрипты (шаблоны) для продвижения сайтов. Обычно под их управлением работают специализированные программы автоматизации этого процесса. Наиболее известные – ZennoPoster, Human Emulator;
- системы для сбора статистики посещений (счетчики посещаемости). Эти скрипты чаще всего создаются с применением JavaScript;
- сценарии для обращения к базам данных. Здесь лидирует язык PHP;
- скрипты для работы гостевых книг и создания комментариев к записям. Чаще всего применяется комбинация PHP и JavaScript;
- скрипты для динамического отображения сайтов. В этом случае скриптовый язык определяется языком написания CMS;
- скрипты для изменения части страницы сайта без ее перезагрузки. При реализации используются технологии Ajax. В этом случае на первый план выходят асинхронный JavaScript и XML. Веб-приложения производят обмен данных с сервером в «фоне», изменения на страницах сайта происходят без их полной перезагрузки. Пользователи обычно не замечают таких изменений, и им не нужно понимать, что такое скриптовый язык программирования, чтобы отлично взаимодействовать с сайтом.
Преимущества скриптов
- Их применение дает возможность вносить программные изменения без опасения разрушить всю систему. Если скрипт написан с ошибкой, то при его выполнении они будут выданы в результате. При этом сайт останется работоспособным.
- Использование скриптов дает возможность получать проблемно ориентированный набор команд. В этом случае одна строка сценария позволяет выполнять такой же объем действий, как программа из многих десятков строк на компилируемом языке. На этом примере наглядно видно, что такое сценарий в программировании и насколько его применение ускоряет решение задач.
- С использованием скриптов успешно реализуется кроссплатформенность выполнения задач. Отличным примером является JavaScript – одни и те же сценарии на этом языке без проблем выполняют браузеры в различных операционных системах.
Недостатки скриптов
- Заметно большее время исполнения. Практически во всех случаях интерпретируемые сценарии требуют для выполнения гораздо больше времени и компьютерных ресурсов.
- До сих пор для таких языков не создана качественная среда разработки уровня IDE.
- В продвижение и рекламу этих языков вкладываются недостаточные средства. Как это ни парадоксально, относительная доступность и условная бесплатность сценарных языков приводят к тому, что у разработчиков просто не хватает средств на маркетинг и рекламу. Поэтому для многих крупных денежных проектов выбираются Java или C#.
Типы скриптов
По степени быстродействия они подразделяются на языки динамического разбора (sh, COMMAND.COM) и требующие предварительной компиляции, такие как Perl. Также скриптовые языки разбиваются на несколько больших групп по применению.
Выделяют:
- командно-сценарные (JCL, sh, bash, csh, ksh, AppleScript, COMMAND.COM и cmd.exe, VBScript);
- прикладные (AutoLISP, JScript, JavaScript, ActionScript, Game Maker Language, VBA и др.);
- универсальные сценарные (Tcl, Lua, Perl, PHP, Python, REBOL, Ruby).
Примеры скриптовых языков
Наиболее известные: PHP, Perl, Python, AngelScript, JavaScript, JScript и другие. Все они являются высокоуровневыми. По своему механизму действия скриптовые языки обычно интерпретируются, а не компилируются.
Роль скриптов в продвижении
Использование в процессе программирования страниц слайдеров, динамических навигационных меню, активных элементов анимации позволяет расширить юзабилити сайтов, увеличить их посещаемость. Удачные решения на этой основе значительно повышают продажи. В качестве примера можно рассмотреть специальные технологии создания видеопродающих страниц. Здесь используются приемы на основе JavaScript.
И таких решений множество.
Отдельно стоит отметить технологии создания скриптов, имитирующих с помощью специальных программ действия пользователей в различных направлениях. Такие скрипты и шаблоны формируются на основе программ ZennoPoster, Human Emulator и их аналогов.
Уникальность таких решений базируется на том, что в шаблонах ZennoPoster может быть запрограммирована любая последовательность действий реального пользователя. При этом программа может эмулировать одновременно практически неограниченное количество пользователей, применять как собственные, так и получаемые из Интернета информационные базы.
В качестве примера можно рассмотреть шаблоны, позволяющие в автоматизированном режиме выполнять множество действий по продвижению сайтов и товаров в социальной сети «ВКонтакте». Другие шаблоны обеспечивают размещение объявлений или иной информации в Сети. Третьи в автоматизированном режиме могут генерировать множество блогов и страниц, на которых размещаются ссылки или коммерческая информация. Пользователи, которые видят результаты таких действий, обычно не знают, что это заскриптованный алгоритм размещает информацию для них в соцмедиа.
Во многих случаях для продвижения сайтов необходимо множество аккаунтов почты. В качестве примера можно рассмотреть почтовый сервис mail.ru. Автоматизированный шаблон для программы ZennoPoster легко справляется с этой задачей. При этом скрипт не просто заходит на страницу регистрации, но также самостоятельно выполняет работу по разгадыванию капчи, определяет возможный бан IP-адреса и выполняет много других действий.
Использование языка JavaScript в контекстной рекламе
Еще в 2012 году рекламная система Google AdWords внесла в свой интерфейс возможности использования скриптов для автоматизации управления рекламной кампанией. Такой способ управления работает значительно быстрее, чем использование API.
К тому же он не требует применения сложных языков программирования. Задачи на основе скриптов запускаются по расписанию. Они обеспечивают регулярную проверку аккаунта, дают возможность анализировать статистику рекламы и вносить любые заданные изменения.
При этом можно в автоматизированном режиме отслеживать качество рекламных объявлений, отключать неэффективные каналы рекламы и подключать эффективные.