Языки CGI-программирования
Для создания CGI-программ может быть использован почти любой язык программирования. Если в приведённом ниже обсуждении вы не встретите упоминания некоторого языка, это не означает, что он не применим для этих целей. В этом разделе мы рассмотрим несколько языков программирования, на которых чаще всего пишутся CGI-программы, но этот список не в коем случае нельзя считать исчерпывающим.
Язык Perl
Perl - это "дедушка" всех языков программирования, которые применяются в наши дни для написания CGI-программ. Он обладал набором приятных свойств в те времена, когда были созданы первые Web-серверы, поддерживающие технологию CGI. Не следует думать, что он даёт программисту какие-то особые преимущества, просто это язык, применяемый для создания CGI-программ большинством разработчиков.
Одним из главных факторов обеспечивающих популярность языка Perl было наличие библиотек, обеспечивающих программирование Web-приложений. Сейчас в поставку интерпритатора Perl входит модуль CGI.pm
, содержащий такую библиотеку. Одна из самых ценных функций, которые содержатся в этой библиотеке, - преобразование введённых в форму данных в структуру языка Perl. Кроме того в этой библиотеке есть огромное количество функций для генерирования HTML-текста.
В этом разделе сайта все программы мы будем писать на языке Perl. Этот язык легко выучить особенно если вы знакомы с основами программирования, кроме того он фактически считается стандартом для разработки Web-приложений. В то же время этот раздел - не учебник языка Perl, он посвящен разработке программ и технике программирования.
UNIX Shell
Когда быстро требуется написать несложную программу, особенно если предполагается, что она будет взаимодействовать с программами среды UNIX, очень часто это делают на языке сценариев, или, как его называют на языке оболочки, или просто на языке Shell. Особенно часто к этому языку прибегают системные администраторы, так как для них Shell - практически язык "повседневного общения", кроме того, на Shell удобно обеспечивать интерфейс между программами.
Например, если вам нужно написать программу, вычисляющую среднюю загрузку вашего Web-сервера (с помощью команды uptime
), есть прямой смысл писать ее на языке Shell. Недостатком этого языка, по моему мнению, является то, что он предназначен все-таки для простых программ с несложной логикой. Для сложных программ существуют более развитые языки.
Язык C
Язык программирования C прекрасно подходит для написания CGI-программ, как и всякий другой язык компилирующего типа, на котором можно создавать исполняемые файлы. Главное преимущество языка C - высокая эффективность скомпилированных программ. Выполнение такой программы занимает меньше времени, чем потребуется только для загрузки интерпритатора Perl.
Но нужно признать, что такое программирование порождает и много проблем. В первую очередь это обычные трудности программирования, не связанные со спецификой CGI. При всяком сравнении компилирующего языка с языком интерпретатора доводы будут одни и те же. Для тех, кто не знаком с подобными дискусиями, я вкратце изложу суть дела.
Интерпретирующие языки имеют некоторые преимущества перед языками компилирующего типа. Первое из них - это быстрота разработки программ. В интерпретирующих языках обычно есть операторы высокого уровня, предназначенные для выполнения специальных задач. Например в языке Perl есть высокоразвитые средства для работы с текстовыми файлами, что очень важно для CGI-программиста. Для написания программы, которая ищет в текстовом файле адрес электронной почты, понадобиться написать гораздо больше операторов на языке C, чем на языке Perl.
Второе преимущество - скорость отладки. При написании программы на компилирующем языке вам потребуется компилировать программу каждый раз при внесении изменений, т.е. вы пробуете запустить программу и, если она не работает, должны внести изменения и перекомпелировать ее. При использовании интерпретирующего языка вы экономите время на этом этапе. Вы просто вносите изменения и запускаете программу еще раз.
Третье преимущество - скорость обучения. Интерпретирующие языки, вообще говоря, осваивать проще и быстрее. Вы можете использовать те конструкции, которые вам уже знакомы, вместо того чтобы изучать философию языка, структуру его программ и типы его данных. Многие интерпретирующие языки позволяют наращивать сложность и эффективность программ по мере освоения, но вначале вы можете писать исключительно простые программы.
Но, с другой стороны существуют и недостатки таких языков, или, если хотите, преимущества языков компилирующего типа. Первое из них - высокая эффективность. Интерпретирующий язык требует запуска интерпретатора и генерирования исполнимого кода перед выполнением программы (и делать это нужно перед каждым выполнением). Если вы используете такие программы редко, для случайных задач, то на низкую эффективность можно закрыть глаза, но сели вам требуется обрабатывать сотни запросов в час, то недостаток скорости может иметь решающие значение.
Второе важное преимущество языков типа C состоит в их универсальности, или пригодности для написания любых программ. Большинство интерпретирующих языков имеют некоторую специализацию, т.е. предназначены для решения какого-то класса задач. Про таки языки говорят, что они проблемно-ориентированные. Хотя и существуют интерпретирующие языки общего назначения, ни один из них не обладает той мощью и гибкостью, которые присущи языку C.
Visual Basic
Язык Visual Basic чрезвычайно широко применяется для написания приложений типа клиент/сервер. Компания Microsoft утверждает, что на Visual Basic работает больше программистов, чем на любом другом языке. Однако, несмотря на это, Visual Basic не очень удобен для написания CGI-программ.
Но вот хорошая новость для поклонников этого языка - сервер компании Microsoft поддерживает технологию Active Server Pages (ASP), которая позволяет вставлять логику программы непосредственно в текст Web-страницы. Эта технология предусматривает использование языка VBScript, который можно назвать упрощенной версией Visual Basic. Кроме того можно написать на языке Visual Basic COM-объекты и обращаться к ним со страниц ASP.
Язык Python
Python - это объектно-ориентированный интерпретирующий язык, реализованный на большей части современных операционных систем. Как и Perl, Python, будучи языком общего назначения, пригоден для многих задач, в том числе и для CGI-программирования. Его поклонники особенно ценят возможность написания легко читаемых программ. Он сочетает в себе многие преимущества интерпретирующих языков, одно из главных - удобство разработки программ. При этом развитая логика и структура программ свойственна языкам компилирующего типа. Вы можете найти материалы об этом языке по адресу : http://www.Python.org.