Понятие о скриптовых языках
Что такое "скриптовый язык"? Это туманный вопрос, в котором содержатся два термина - "скриптовый" (scripting) и "язык" (language), произошедшие из областей, не имеющих отношения к компьютерам. Смысл, в котором эти термины используют многие люди, расплывчат. Даже такое простое слово, как "язык", легко можно использовать неверно. Например, VBScript, VB, и VBA в грамматическом отношении и в отношении практически используемой семантики являются одним и тем же языком, а VBScript в некоторой степени похож на упрощенный пиджин1 VB.
Понятие скриптинга (написания скриптов) работает довольно хорошо, если понимать скрипт как театральный сценарий. Хотя сценарий является исчерпывающим, проработка деталей исполнения оставлена действующим актерам и режиссеру. К сожалению, таким образом нельзя сузить определение скриптовых языков: манипулируя приложениями, любой язык низшего уровня можно использовать как скриптовый язык!
Скриптовые языки быстро становятся языками общей реализации для многих областей, блистая там, где время разработчика более важно, чем время исполнения (и даже там, где важно время исполнения; например, благодаря встроенным операциям высокого уровня быстродействие программ, написанных на Python, такое же, или даже быстрее, чем программ, написанных на Java). Многие сейчас предпочитают использовать обозначение "динамические языки" вместо "скриптовые языки", ссылаясь на отсутствие выполняемого в процессе компиляции контроля типов2. Какое место занимают скриптовые языки в современных компьютерных кругах?
Скриптовые языки позволяют разработчикам сцеплять вместе различные пакеты программ, а также согласовывать полученные в результате системы.
Все чаще скриптовые языки сами по себе используются в качестве полноценных базовых инструментальных платформ. Например, многие крупные коммерческие Интернет-приложения сейчас программируются преимущественно на языках Perl, Python или PHP.
Естественно, скриптовые языки используются для автоматизации задач системного администрирования.
Не исключено, что интерпретируемые или оперативно компилируемые языки все больше и больше будут заступать на смену предварительно компилируемым языкам. Компиляцию со временем будут рассматривать просто как инструмент оптимизации (чем она собственно и является), использование которого во всех случаях едва ли разумно. Она все еще будет полезна при отправке автономного кода за пределы среды, которой вы управляете, однако, компиляция все чаще будет рассматриваться просто как способ упаковки. С другой стороны, граница между компиляцией и интерпретацией, которая всегда была немного произвольна, будет размыта еще больше. У языка Perl уже есть фаза оперативной компиляции перед интерпретацией. Будущее будет за совместимостью платформ, так что компиляторы все чаще будут нацелены на абстрактные "виртуальные машины" (как JVM у Sun или CLR у Microsoft), которые наслаиваются на аппаратные средства. На каком этапе программирования вы компилируете или интерпретируете? И имеет ли это значение?
Динамические языки в качестве доминирующих языков реализации во многих областях могут со временем перегнать Java и С++. Закон Мура3 на стороне динамических языков.
Статические языки во время компиляции пытаются поставить все точки над "i". Долгое время разработчики полагали, что безопасность типов статических языков означает большую надежность их кодов. Однако все чаще разработчики приходят к заключению, что дело не в этом. Конечно, теоретически возможно иметь в распоряжении переменную под названием "ИмяПользователя", но обнаружить во время исполнения, что она ссылается на объект класса "ЗаказНаПоставку". Однако на практике подобное все же маловероятно.
В чем же состоит привлекательность скриптовых языков?
Скриптовые языки обладают более сложным инструментарием и поддерживают более прогрессивные техники программирования. Например, возможности сортировки данных в Perl встроены прямо в язык. То, что в язык встроены все основные инструменты программирования, избавляет от необходимости создавать их самостоятельно и означает, что для решения конкретной проблемы нужно писать меньше кода, что увеличивает производительность разработчика.
Скриптовые языки позволяют быстро выполнять доработку кода без раздражающей потери времени на ожидание окончания компиляции.
Количество людей, не обладающих подготовкой, которую имеют традиционные компьютерные специалисты, но могущих заняться написанием скриптов, стало на порядок больше. Иначе говоря, программированию на скриптовых языках проще научиться. Чтобы стать средним программистом на C++, необходим больший опыт работы, чем для того, чтобы стать средним программистом на PHP.
Какие можно назвать недостатки скриптовых языков?
Время исполнения все еще является главной проблемой. Конечно, есть области, где скорость слишком важна, чтобы можно было программировать непосредственно на скриптовом языке. Эта проблема обычно решается тем, что код тщательно выбранной части приложения (скажем, 10-30%) пишется на языке низкого уровня (таком, как C или C++); например, в Python есть развитые механизмы для того, чтобы вставить такой код (как и в большинстве других динамических языков).
Общей проблемой всех скриптовых языков является отсутствие хорошей интегрированной среды разработки (IDE). Конечно, какие-то интегрированные среды разработки существуют, однако в них недостает мощности, как у Visual Studio.
Ключевым нетехническим, однако важным недостатком является отсутствие маркетингового бюджета. Многие динамические языки идеально подходят для многих проектов, однако им тяжело конкурировать с такими локомотивами маркетинга, как Sun (Java) и Microsoft (C#), которые продолжают продвигать свои технологии как единственно возможные. В истории есть примеры того, как техническое превосходство подавляется превосходным маркетингом.
Ниже следует обзор некоторых наиболее популярных скриптовых языков.
VBScript
Visual Basic Scripting Edition (или просто VBScript) — это язык программирования от компании Microsoft, предназначенный для создания сценариев (скриптов). Он является подмножеством языка Visual Basic и широко используется при создании административных сценариев в системе Windows. VBScript по умолчанию поддерживается в Windows Script Host (WSH), который в свою очередь по умолчанию устанавливается вместе с почти любой версией Windows. Если у вас слишком старая версия Windows, вы можете скачать WSH с сайта Microsoft и самостоятельно установить его.
Синтаксис VBScript является несколько упрощенной версией стандартного синтаксиса Visual Basic. Например, в VBScript не поддерживается типизация: все переменные имеют тип Variant. Сценарии на языке VBScript чаще всего используются в следующих областях:
Автоматизация администрирования систем Windows.
Серверный программный код на страницах ASP в Web-приложениях.
Клиентские сценарии на Web-страницах (в основном только в браузере Internet Explorer).
JScript
JScript — это язык программирования от компании Microsoft. Он предназначен для создания сценариев и является реализацией стандарта ECMAScript. Синтаксис JScript во многом аналогичен языку JavaScript от компании Netscape. JScript по умолчанию поддерживается в Windows Script Host (WSH), который в свою очередь по умолчанию устанавливается вместе с почти любой версией Windows. Если у вас слишком старая версия Windows, вы можете скачать WSH с сайта Microsoft и самостоятельно установить его.
Сценарии на языке JScript чаще всего используются в следующих областях:
Клиентские сценарии на Web-страницах.
Автоматизация администрирования систем Windows.
Серверный программный код на страницах ASP в Web-приложениях.
Язык JScript получил дальнейшее развитие в виде языка JScript.NET, который ориентирован на работу в рамках платформы Microsoft ASP.NET.
JavaScript
JavaScript - это язык программирования от компании Netscape, который является реализацией стандарта ECMAScript. Microsoft выпустила похожие версии языка под названием JScript, поэтому под названием "JavaScript" часто понимается любая версия языка, в том числе и Microsoft JScript.
В большинстве случаев при упоминании JavaScript подразумевается так называемый клиентский JavaScript, интерпретатор которого встроен в Web-браузеры. Однако JavaScript изначально был разработан как универсальный язык программирования для встраивания в любое приложение и обеспечения возможности написания в нем сценариев. Например, ActionScript, язык сценариев, доступный в Macromedia Flash 5 и MX, также смоделирован в соответствии со стандартом ECMAScript.
Интерпретатор JavaScript от Netscape был выпущен в виде открытого исходного кода и доступен через организацию Mozilla (http://www.mozilla.org/js/). Mozilla предоставляет две различные версии интерпретатора JavaScript - "SpiderMonkey" (написана на С) и "Rhino" (написана на Java).
Вопреки распространенному заблуждению, кроме некоторой синтаксической схожести, языки Java и JavaScript ничего не связывает. Схожесть имен - не более, чем уловка маркетологов (первоначальное название языка - LiveScript - было изменено на JavaScript в последнюю минуту).
Python
Python (питон) — интерпретируемый, объектно-ориентированный язык программирования высокого уровня. Он поддерживает классы, модули (которые могут быть объединены в пакеты), обработку исключений, а также многонитевую обработку. Python относится к классу языков с динамической типизацией, предоставляет программисту автоматическую «сборку мусора» и удобные высокоуровневые структуры данных, такие как словари, списки, кортежи и др. Питон объединяет поразительную мощь с простым и ясным синтаксисом, продуманной модульностью и масштабируемостью. Одной из интересных синтаксических особенностей языка является выделение блоков программы с помощью отступов (пробелов или табуляций), поэтому в Python отсутствуют операторные скобки ("begin/end", как в языке Паскаль или фигурные скобки, как в Си). Python — oдно из самых простых средств обучению и применению ООП. Часто является как первым (для обучения), так и последним (в череде используемых опытными программистами) языком программирования.
Python портируем и работает почти на всех известных платформах. Существуют порты под Windows, все варианты UNIX (включая Linux), Mac OS и Mac OS X, Palm OS, OS/2 и т.д. При этом, в отличие от многих портируемых систем, на каждой платформе Python поддерживает все характерные для данной платформы технологии (например, Microsoft COM/DCOM). Более того, существует специальная версия Python для виртуальной машины Java — Jython (http://www.jython.org/), что позволяет интерпретатору выполняться на любой системе, поддерживающей Java, при этом классы Java могут непосредственно использоваться из Python и даже быть написанными на Python.
Интерпретатор языка Python распространяется свободно на основании лицензии Python Software Foundation (PSF) Licence (http://python.org/psf/license.html), которая в некотором роде даже более демократична, чем GNU General Public License (http://gnu.org/copyleft/). Официальный сайт проекта языка Python располагается по адресу http://python.org/. Здесь же в разделе «Download» можно скачать свежую версию для вашей операционной системы. Русскоязычные сайты, посвященные Python: http://www.python.ru/, http://zope.net.ru/.
В стандартный комплект поставки Python входит интегрированная среда разработки IDLE, в которой редактировать программы будет намного удобнее,чем в простом текстовом редакторе. IDLE написан на Python с использованием платформонезависимой библиотеки Tcl, поэтому легко запускается в любой операционной системе, для которой существует реализация Python. IDLE также имеет встроенную систему отладки.
Стандартная библиотека языка Python богата и предоставляет программисту множество возможностей. Однако, если вам не достаточно возможностей стандартной библиотеки, то существует множество библиотек, предоставляющих интерфейс ко всем мыслимым системным вызовам на разных платформах; в частности, на платформе Win32 поддерживаются все вызовы Win32 API, а также COM в объёме не меньшем, чем у Visual Basic или Delphi. Кроме того, количество прикладных библиотек для Python в самых разных областях без преувеличения огромно (веб, базы данных, обработка изображений, обработка текста, численные методы, приложения операционной системы, и т. д.). Python легко расширяется языками C и C++, а на платформе Windows — также с помощью COM. Библиотека Numeric Python для работы с многомерными массивами позволяет достичь производительности научных расчётов, сравнимой с MATLAB. Кроме того, существует специальная библиотека psyco (http://psyco.sf.net/), позволяющая оптимизировать выполнение некоторых программ, после чего скорость их выполнения можно сравнивать с программами на Си. В среде коммерческих приложений скорость выполнения программ на Python часто сравнивают с Java-приложениями. Существует реализация Python для .NET (http://ironpython.com/).
Для Python существуют библиотеки доступа к СУБД (на платформе Windows доступ к БД возможен через ADO). Существуют модули расширения для Python под Windows и Unix/Linux для доступа к Oracle, Sybase, Informix и MySQL. Существует также пакет mxODBC для доступа к СУБД через ODBC, также поддерживаемый на платформах Windows и Unix.
С Python поставляется библиотека tkinter для создания кроссплатформенных программ с графическим интерфейсом. Данная библиотека является фактически стандартом для GUI-приложений, написанных на Python. Многие люди при написании GUI программ пользуются также библиотекой wxPython, основанной на библиотеке wxWidgets. Также часто используются библиотеки PyQT (PyQt) и PyGTK.
Python и подавляющее большинство библиотек к нему бесплатны и поставляются в исходных кодах. Более того, в отличие от многих открытых систем, лицензионная политика на Python никак не ограничивает его использование в коммерческих системах и не налагает никаких обязательств, кроме указания авторских прав.
Tcl
Tcl (Tool Command Language) — интерпретируемый язык программирования высокого уровня. Официальный сайт языка - http://www.tcl.tk/. Ссылки на русскую документацию можно найти здесь: http://www.opennet.ru/links/sml/36.shtml. Tcl ориентирован преимущественно на автоматизацию рутинных процессов ОС и крупных программных систем и состоит из мощных команд, ориентированных на работу с абстрактными нетипизированными объектами. Принципиальное отличие Tcl от командных языков ОС состоит в независимости от типа системы (когда не надо утруждать себя изучением нового командного языка) и, самое главное, он позволяет создавать переносимые программы с графическим интерфейсом (GUI).
Tcl очень часто применяется совместно с библиотекой Тк (Tool Kit). Связку Tcl/Tk по-русски иногда называют "Так-тикль". Tcl/Tk распространяется в исходных текстах бесплатно. Tcl/Tk разрабатывался одновременно как язык и библиотека. Tk - это популярный графический инструментарий, позволяющий очень быстро создавать графические программы. Варианты Tcl/Tk доступны для множества платформ (Windows, Macintosh, практически все UNIX-платформы, включая Linux). Самые последние версии и полезные расширения Tcl доступны по адресу http://www.tcl.tk/. Библиотека Tk содержит стандартизованный набор команд поддержки GUI в стиле Motif. Управляющие элементы, хранящиеся в Tk, называются виджетами (widgets). Большое количество нетиповых виджетов можно найти в Сети.
Tcl - расширяемый язык. Можно самостоятельно определять новые команды языка (как в Форте). На Tcl написана оболочка Visual Tcl, которая позволяет разрабатывать кроссплатформенное ПО для UNIX, Windows и Macintosh. Фирмой Sun разработана версия Tcl, написанная на Java - Jacl (JAva Command Language).
Ruby
Ruby — интерпретируемый скриптовый язык высокого уровня для быстрого и удобного объектно-ориентированного программирования. Ruby имеет большое количество средств для обработки текстов, для решения системных задач. Ruby является полностью свободным языком программирования с возможностью копирования, модификации и распространения. Ruby перенесён на множество платформ. Он разрабатывался на Linux, но работает на многих версиях Unix, DOS, Windows 95/98/Me/NT/2000/XP, Mac OS, BeOS, OS/2, и т.д. Целью создания Ruby был настоящий объектно-ориентированный интерпретируемый язык программирования. Название отсылает к языку Perl, наследником которого является Ruby (драгоценные камни: англ. pearl — жемчужина, англ. ruby — рубин).
Ruby имеет простой и понятный синтаксис, позволяет обрабатывать исключения в стиле Java и Python, позволяет легко переопределять операторы, которые на самом деле являются методами. Ruby — полностью объектно-ориентированный язык программирования. Все данные в Ruby являются объектами в понимании SmallTalk. Например, число «1» — это экземпляр класса Fixnum. Также поддерживается добавление методов в класс и даже в конкретный экземпляр во время исполнения программы. Ruby сознательно не поддерживает множественное наследование, вместо которого существует концепция модулей. Ruby содержит автоматический сборщик мусора. Он работает для всех объектов Ruby, так что не надо заботиться о подсчёте ссылок даже во внешних библиотеках. Ruby не требует объявления переменных. Язык использует простые соглашения для обозначения области видимости. Пример: просто 'var' — локальная переменная, '@var' — переменная экземляра (член или поле объекта класса), '$var' — глобальная переменная. Ruby имеет независимую от ОС поддержку многопоточности.
Новости Ruby: http://rubynews.ru. Специализированный форум для программистов на языке Ruby: http://ruby-forum.ru/. Примеры конструкций языка: http://pleac.sourceforge.net/pleac_ruby/index.html.
PHP
PHP (пи-эйч-пи) — интерпретируемый скриптовый язык программирования, созданный для генерации HTML-страниц на веб-сервере и работы с базами данных. В области веб-программирования PHP является на сегодняшний день одним из самых распространённых технологий (наряду с Perl, ASP/.NET и Python) благодаря простоте, скорости выполнения и богатой функциональности. PHP распространяется свободно. Синтаксис языка похож на синтаксис С++. PHP поддерживается подавляющим большинством предоставителей сетевого хостинга.
Название "PHP" представляет собой самоповторяющую (рекурсивную) аббревиатуру и расшифровывается как "PHP: Hypertext Preprocessor", или "Personal Home Page". PHP был создан в качестве надстройки над Perl для облегчения разработки веб-страниц. За свою жизнь PHP значительно изменялся. Одной из сильнейших сторон PHP является возможность расширения ядра. Интерфейс написания расширений привлек к PHP множество сторонних разработчиков, работающих над своими модулями, что дало PHP возможность работать с огромным количеством баз данных, протоколов, поддерживать большое число API. PHP поддерживает ООП (деструкторы, открытые, закрытые и защищённые члены и методы, final-члены и методы, интерфейсы и клонирование объектов). PHP поддерживает XML.
Официальный сайт: http://php.net/. Русское руководство по PHP: http://ru.php.net/manual/ru/. Русскоязычный ресурс о PHP: http://www.phpclub.ru/.
Perl
Perl — интерпретируемый скриптовый язык программирования, один из самых распространённых в области веб-программирования. По одной из версий, Perl — аббревиатура, которая расшифровывается как "Practical Extraction and Report Language" (практический язык извлечений и отчётов). Существует также ряд других вариантов. Согласно самому красивому из них, название "perl" произошло от слова "pearl" (жемчужина).
Основной особенностью языка считаются его богатые возможности для работы с текстом, реализованные при помощи регулярных выражений (regular expressions). Перл также знаменит огромной коллекцией дополнительных модулей CPAN, находящейся по адресу http://www.cpan.org/.
Заключение
Кроме вышеперечисленных, существует множество несколько менее популярных скриптовых языков (но, возможно, не менее интересных), информацию о которых можно найти в Интернете. Вот некоторые из них: Parser (http://www.parser.ru/), JudoScript (http://www.judoscript.com/), HaskellScript (http://www.haskell.org/haskellscript/), LuaScript (http://www.luascript.thersgb.net/luascript/), NullScript (http://www.iwebthereforeiam.com/projects/NullScript.asp).
Постоянные ссылки
При копировании ссылка на TeaM RSN обязательна!
Оставить комментарий
Вы должны войти, чтобы оставить комментарий.