Обзор языков программирования, как средств разработки CGI-программ
Целью данной главы является дать некоторый обзор различных языков программирования,
как инструментов для разработки CGI-скриптов. Показать их сильные и слабые стороны,
а также просто те или иные их особенности. Для начала, рассмотрим общие требования
к языку разработки CGI-скриптов. Для этого надо описать общую картину, рассказать о
том, где и в каких условиях живут сайты в Интернет. Сайты живут на железных серверах, так
называемых,
системных блоках. На одном системном блоке живет несколько сотен сайтов. Наиболее
распространенной платформой на сегодняшний день является Unix, а точнее две его
разновидности: Linux и FreeBSD. Linux - это для детей, что-то наподобие Windows.
Если хотите вдоволь натрахаться, увидить свой сервер повисшим, ломать голову, почему что-то работает
не так, как должно, то Linux к вашим услугам. Сейчас в меня полетят камни линуксоидов, но
простим им, ибо не ведают, что творят. Я сам когда-то был таким. Ну, а когда совсем пешком
под стол ходил, так вообще про WinNT и дядю Билла кричал, все оттого, что ничего
другого просто не видел. Так вот, самые продвинутые и умные работают
на FreeBSD.
Наш главный сервер с осени 1999 по весну 2001 года успешно проработал на машине с
процессором Pentium 120Mhz, 16Mb оперативной памяти и жестким диском 13Гб под управлением
FreeBSD3.3. На сервере было десятка два веб-сайтов с общей посещаемостью от 200 до 700 уникальных
посетителей в день. Сервер осуществлял доступ в Интернет для 15 машин. На данной машине
также находилось четыре модемных входных линии, через которые мы ходили в Интернет из дома.
Более 20 пользователей имели у нас почтовые ящики и ftp-доступ на 50Mb, а
также на сервере были установлены firewall, DNS, MySQL, Perl, велись квоты на использование
жесткого диска. Средняя загрузка сервера составляла менее одного
процента. И самое главное, он ни разу не повис и работал без перезагрузки по нескольку
месяцев. Перегружать его приходилось только по необходимости, например, из-за
перекомпилирования ядра. Суточный трафик зависит от пропускной способности канала и
популярности размещенных сайтов. Вполне нормальным является трафик в 1-2Гб, а в один и тот же
момент времени на сервере может находится 20-50 человек, что можно определить по числу
запущенных копий Apache. Анализируя все вышесказанное, делаем выводы:
- CGI-программа должна выполняться максимально быстро, чтобы не
загружать процессор. Помните, сайтов несколько сотен, на каждом сайте несколько
CGI-программ. Все они имеют равный приоритет и равное количество процессорного
времени.
- Средство разработки должно позволять интегрироваться CGI-программе со внешней средой,
получать доступ к переменным окружения, соединяться с базами данных, соединяться
с другими серверами по сети и т.п..
- В один и тот же момент времени может быть запущено
несколько экземпляров одной и той же CGI-программы, поэтому средство разработки
должно иметь возможность межпроцессорного взаимодействия.
- Важным фактором является переносимость, которая может быть
от версии к версии операционной системы и сопутствующего ПО,
например MySQL. Переносимость между клонами ОС FreeBSD <=> Linux.
Переносимость на принципиально другую платформу Unix <=> Windows.
На основании перечисленных требований составим сравнительную таблицу
характеристик для различных средств разработки.
Средство разработки | 1 | 2 | 3 | 4 |
Си | + | + | + | -+ |
С++ | -+ | + | + | -+ |
MS VisualС | + | + | + | - |
Delphi | -+ | + | + | - |
Java | - | - | - | + |
Unix Shell | - | + | - | - |
Perl | - | + | + | + |
PHP | - | + | - | + |
ASP | - | + | - | - |
И мы получаем интересную картину, что наиболее подходящим средством для разработки
CGI-приложений, являются чистый Си и Perl: причем, Си на первом месте.
Авторы многих книг по языку Perl упорно твердят,
вторя друг другу, что Perl, именно Perl и только Perl, является самым подходящим средством
для разработки программной составляющей веб-сайта. Такого рода авторы - технические писатели,
вероятно, не наблюдали, как один perl'овый форум может загружать до 60% ресурсов сервера.
Теперь представьте еще раз ситуацию, что у вас сотня сайтов. Меньше никак нельзя, просто
нерентабельно - зарплата системного администратора, оплата канала Интернет, затраты на амортизацию оборудования.
Если на нескольких сайтах одновременно начнется активность в форумах, то сервер
загнется.
Сам я являюсь сторонником языка Си, считая все остальные языки менее пригодными для
разработки CGI-программ. Это мнение, конечно, спорное. Есть программисты, которые считают,
что вообще все нужно писать на ассемблере или в машинных кодах. Это одна крайность.
Другие предпочитают объектно-ориентированный подход и признают только Delphi или С++.
Это другая крайность. Выбор инструмента для разработки должен определяться постановкой задачи.
При разработке больших информационных систем
иногда имеет смысл использовать несколько языков программирования. Так, например,
при разработке информационного портала Inforg (http://inforg.ru) мы применяли:
MS Visual C++ для разработки офлайновой части программного обеспечения,
Си для разр.аботки демона для FreeBSD и CGI-программ, Perl - для обработки
документов.
В данном параграфе дан небольшой обзор и авторский взгляд
на инструменты разработки веб-сайтов. Популярность Perl или PHP так велика, что
можно оспаривать правомерность их использования, но не умалчивать о них.
Данная книга ставит задачей освятить общие
методы и технологии разработки веб-сайтов. Рассмотреть применение технологий со
всеми инструментальными средствами не представляется возможным.
Если вы захотите изучить какой-либо язык, то в конце книги есть список литературы
и ссылки на Интернет-ресурсы.
|