Домой / Инструкции / К серверным языкам программирования можно отнести. Введение в серверное программирование. Чем веб-программирование отличается от обычного программирования

К серверным языкам программирования можно отнести. Введение в серверное программирование. Чем веб-программирование отличается от обычного программирования

Для решения задачи необходимо сделать следующее:

1. спроектировать ресурс, который бы смог быстро обрабатывать и передавать данные;

2. выбрать базу данных для хранения информации;

3. разработать карту сайта для отображения данных.

Все вышеперечисленные задачи неоднократно решались огромным количеством программистов. Поэтому такие задачи можно считать типовыми. А для решения типовых задач можно использовать типовые решения, которые часто называют шаблонами или паттернами.

Серверные языки программирования

PHP - это широко распространённый открытый язык скриптинга (сценариев) общего назначения, который создан специально для Web и который можно внедрять в HTML. Его синтаксис происходит от C, Java и Perl и лёгок для понимания и изучения.

Необходимо обратить внимание на отличие способа совмещения выполняемого кода и презентационной части в скрипта на языке PHP от скриптов, написанных на языках Perl или C - вместо написания программы с большим количеством команд для вывода HTML, пишется HTML-скрипт с некоторым количеством встроенного кода для выполнения каких-либо действий (в данном случае - для вывода некоторого текста). Код PHP заключён в специальные начальный и конечный тэги, что позволяет входить в и выходить из "режима PHP", причём делать это именно там, где это необходимо.

PHP отличается от других подобных языков, тем, что его интерпретатор встраивается непосредственно в web-сервер, обслуживающий клиентские запросы и результат выполнения скрипта в виде сформированного документа в формате HTML, отсылается непосредственно запросившему его клиенту в сеансе сетевого соединения, инициированным web-браузером, отправившим исходный запрос. Конечный пользователь не имеет возможности определить исходный код PHP скрипта, что тем самым повышает надёжность от атак злоумышленников, и способствует недоступности данных извне. Также существует возможность скрыть тип выполняемых запросов, а следовательно и язык, на котором написан скрипт приложения, от пользователя, специально сконфигурировав web-сервер. В этом случае злоумышленнику предоставляется меньше возможностей по определению программного окружения в котором работает серверное приложение. Данный способ совершенно не влияет на конечную производительность web-приложения и всячески приветствуется .

Важным качеством PHP является то, что он предельно прост для новичка в программировании, и, в тоже время, предлагает программисту-профессионалу широчайший спектр API для работы с различными видами данных.

Главной целью создателей этого языка являлась попытка дать web-разработчикам возможность быстро создавать динамически генерируемые страницы для web, сосредоточившись над выполнением самой задачи, но при необходимости, предоставить средства для создания и обработки сложных структур данных и обрабатывающих их алгоритмов.

PHP в основном сориентирован на серверный скриптинг, поэтому может делать всё то, что делают CGI-программы: сбор данных форм, динамическую генерацию содержимого страницы или приём и отправку cookie. Но функциональность PHP намного шире.

Скрипты PHP главным образом применяются в следующих сферах:

Серверный скриптинг. Это наиболее традиционная и главная сфера применения PHP. Для выполнения этой работы необходимы три вещи. Разборщик кода PHP (CGI или серверный модуль), web-сервер и web-браузер. Сервер должен быть запущен и должен иметь соединение с инсталлированным и сконфигурированным PHP. Можно получить вывод PHP-программы в web-браузер, просматривая PHP-страницу на сервере.

Скриптинг командной строки. Можно создать и запустить PHP-скрипт на выполнение без сервера или браузера. Для этого необходим только разборщик PHP. Этот тип использования идеально подходит для регулярного выполнения скрипта с помощью программы cron (в *nix или Linux) или Task Scheduler (в Windows). Эти скрипты можно использовать также для задач простейшего текстового процессинга/обработки.

Клиентские GUI-приложения. PHP, возможно, не самый лучший язык для написания оконных приложений, но, при хороших знаниях PHP и необходимости использовать некоторые продвинутые возможности PHP в клиентских приложениях, можно также применять PHP-GTK для создания таких программ. Имеется также возможность создавать кроссплатформенные приложения. PHP-GTK является расширением PHP, отсутствующим в основном дистрибутиве.

PHP может использоваться на всех крупных операционных системах (ОС), включая Linux, многие варианты Unix (HP-UX, Solaris, OpenBSD и Mac OS X), Microsoft Windows, RISC OS и, возможно, другие, что не создает проблем при переходе от платформы к платформе. PHP имеет поддержку для большинства существующих web-серверов. Это ApacheHTTPD, Microsoft IIS, nginx и многие другие. Для большинства этих серверов PHP имеет модули. В других, поддерживающих стандарт CGI, PHP может работать как CGI-процессор.

Следуя из написанного выше, можно сделать вывод, что с помощью PHP можно получить свободу выбора ОС и web-сервера. Более того, можно также выбрать использование процедурного или объектно-ориентированного варианта программирования или их сочетания. Хотя не всякая стандартная возможность OOП реализована в текущей версии PHP, многие библиотеки кодов и большие приложения (включая библиотеку PEAR) написаны только с использованием OOП-кода.

В PHP программист не имеет ограничений в выводе ориентируясь только на HTML. PHP может выводить изображения, PDF-файлы, скрипты на языке JavaScript, клипы Adobe Flash (используя расширения libswf и Ming), генерируемые на лету. Легко можно выводить любой текст, включая XHTML, и любой другой XML-файл. PHP может автоматически генерировать эти файлы и сохранять их в файловой системе, формируя серверный кэш для динамического содержимого, или создания отчётов .

Одна из наиболее сильных и привлекательных черт PHP - поддержка им большого количества баз данных (БД). Создать web-страницу, работающую с БД невероятно легко.

Список поддерживаемых PHP библиотек доступа к БД достаточно широк и включает следующие популярные серверы и форматы:

PHP поддерживает взаимодействие с другими службами по таким протоколам, как LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (под Windows) и множество других. В случае отсутствия непосредственной программной реализации того или иного сетевого протокола в PHP, существует возможность открыть обычный сетевой сокет и взаимодействовать с удаленным сервисом согласно его протоколу . Другой популярной технологией серверного скриптования является ASP. ASP по своей сути не является языком программирования, это акроним для Active Server Pages, в действительности, в программах ASP используется VBScript или JScript. Наибольшим недостатком ASP является то, что он сам по себе является проприетарной системой, которая используется исключительно на Microsoft Internet Information Server (IIS). Это ограничивает его применение серверами на платформе Windows.

Считается, что ASP громоздок и работает медленнее, чем PHP, а также менее устойчив к внешним атакам. Одним из преимуществ ASP можно считать использование языка программирования VBScript для написания сценариев, который, относительно легко освоить, будучи знакомым с программированием на Visual Basic. Так-же поддержка ASP по умолчанию встроена в web-сервер IIS, что упрощает подготовительную стадию разработки приложений с его использованием .

Еще одной интересной альтернативой PHP является язык программирования Perl. Наиболее важным преимуществом PHP по сравнению с Perl является то, что PHP был разработан для скриптинга на web, а перед Perl ставились более широкие задачи, в том числе и скриптинг на web, поэтому он получился намного более сложным. Главное отличие работы интерпретаторов PHP и Perl - постоянное присутствие в памяти первого интерпретатора, через который просто проходят скрипты по мере их вызова, а сформированная HTML страница - отсылается клиенту. Второй интерпретатор загружается в память и выгружается по мере необходимости, причём для каждого скрипта вызывается один интерпретатор, что может повлиять на производительность сервера.

Гибкость и сложность синтаксиса Perl облегчает написание кода, но делает его трудно читаемым. PHP имеет более однозначный и строгий формат без потери гибкости. PHP легче встраивается в существующий HTML, нежели Perl. PHP имеет почти такую же хорошую функциональность, что и Perl: конструкции, синтаксис и т д. без усложнения Perl. PHP развивается быстрее Perl, с каждой новой версией приобретает новые функции и более гибкий синтаксис, а также улучшается стабильность и безопасность. Это подтверждает тот факт, что в глобальной сети сейчас присутствует множество проектов, которые написаны на PHP и работают быстро, без сбоев. Попробуем обобщить всё, что касается преимуществ PHP, которых нет в Perl:

Контекстно-зависимые include, которые видят переменные верхнего уровня;

Расширенные теги - что и называется удобным встраиванием в HTML;

Высокая скорость работы с БД и огромное количество поддерживаемых баз данных, где Perl по скорости проигрывает;

Встроенная поддержка XML в PHP;

Возможность менять заголовки ответа в любого места программы, даже после того как уже были отправлены некоторые данные, за счёт буферизованного вывода;

Быстрые темпы развития и поддержка огромным количеством пользователей в Internet;

Очень широкий выбор готовых каркасов приложений (фреймворков), позволяющих достаточно легко создавать сложные системы, обеспечивая в дальнейшем простую поддержку.

В последнее время также стали популярны некоторые новые языки программирования, как Ruby или Python, но они, как правило ориентированы на работу со своими каркасами приложений, такими как Ruby On Rails или Django, а поэтому применяются для создания полноценных сложных приложений, нежели для написания простых скриптов и требуют развертывания сервера приложений, работающим в связке в web-сервером, обслуживающим HTTP запросы. То же касается и достаточно старых технологий с применением языка Java, таких как JavaServletes или менее абстрактными JavaServerPages.

Ниже приведены результаты анализа преимуществ и недостатков (табл. 2.1).

Таблица 2.1 - Сравнение технологий серверного скриптинга

Бурно развивающийся раздел программирования, ориентированный на разработку динамических Internet приложений. Языки веб программирования это соответственно языки, которые в основном предназначены для работы с интернет технологиями. Языки веб… … Википедия

Запрос «сайт» перенаправляется сюда; см. также другие значения. Веб сайт (от англ. website: web «паутина», «сеть» и site «место», букв. «место в сети») или просто сайт в компьютерной сети объединённая под одним адресом (доменным … Википедия

Это совокупность средств, при помощи которых пользователь взаимодействует с веб сайтом или веб приложением через браузер. Веб интерфейсы получили широкое распространение в связи с ростом популярности всемирной паутины и соответственно… … Википедия

Веб приложение клиент серверное приложение, в котором клиентом выступает браузер, а сервером веб сервер. Логика веб приложения распределена между сервером и клиентом, хранение данных осуществляется, преимущественно, на сервере, обмен… … Википедия

У этого термина существуют и другие значения, см. Служба. Веб служба Веб служба, веб сервис (англ. web service) идентифицируемая веб адресом программная система со стандартизированными интерфейсами. Веб службы могут взаимодействовать… … Википедия

Развитие Интернет сделало веб браузеры доминирующим ПО для доступа к содержанию, приложениям и системам по всему миру. В компаниях уже сложилась тенденция предоставлять своим сотрудникам, партнерам и клиентам доступ ко всем типам информации и… … Википедия

Веб разработка процесс создания веб сайта или веб приложения. Термин включает в себя веб дизайн, программирование для веб на стороне клиента и сервера, а также конфигурирование веб сервера. Содержание 1 Основные этапы веб разработки … Википедия

Веб разработка процесс создания веб сайта или веб приложения. Термин включает разработку приложений электронной коммерции, веб дизайн, программирование для веб на стороне клиента и сервера, а также конфигурирование веб сервера. Содержание 1… … Википедия

Является инструментом для отделения содержимого от визуального представления в веб дизайне, для массового создания веб документов. Это основной компонент системы веб шаблонов (англ.)русск.. Веб шаблоны используют для создания сайтов любого… … Википедия

Веб мастер человек, занимающийся разработкой веб сайтов в Интернете или корпоративных приложений в интернете. Веб мастер это «управляющий» сайтом. В зависимости от размера коллектива разработчиков, он может объединять в себе… … Википедия

Книги

  • Веб-программирование для чайников , Никхил Абрахам. Хотите научиться программированию, но не знаете, с чего начать? Эта книга - именно то, что вам нужно! Ознакомьтесь с возможностями языков программирования HTML, CSS, JavaScript, Ruby и…
  • Веб-программирование для мобильных устройств , Фиртман М.. Каждый сайт создает мобильную версию для отображения на карманных устройствах. На наших глазах формируется новый огромный рынок. Чтобы извлечь из этого максимальную пользу веб-разработчик…

Заранее признателен за комментарии, оценки и поправки (с учетом, что целевая аудитория - чайники).

Если всем пользователям при любых обстоятельствах требуется показывать одно и тоже, то соответствующий файл можно просто положить на сервер, но обычно этого недостаточно и хочется какого-то разнообразия. В таком случае на сервере нужно запустить программу, которая будет создавать HTML-текст необходимый в данном конкретном случае. Написание этих «серверных» программ (скриптов) и есть в общем-то основное дело веб-разработки, именно в них обычно скрывается 90% сложности и стоимости любого проекта. Т. к. программа выполняется на нашем сервере, а не на компьютере пользователя, то выбор инструментария полностью за нами и нет какого-то одного языка, на котором такие программы пишутся.

Первое и самое принципиальное решение, которое следует принять - операционная система нашего сервера. Теоретически это может быть что угодно, на практике в России в 93% случаев используют Unix, в 6.99% - Windows, в 0.01% - что-то иное. Я не совсем объективен, но не вижу ни одного аргумента в пользу Windows и два в пользу Unix, соответственно рекомендую всегда выбирать его. Аргумент первый: то, что более распространено, всегда удобнее, проще найти хостинг, проще найти специалиста, проще найти готовое решение какой-то подзадачи. Аргумент второй: стоимость лицензий на Windows/MS SQL/...; деньги там не запредельные, но всё же отличные от нуля. Если в качестве ОС мы выбрали Unix, то следующий естественный вопрос - какую его реализацию использовать - абсолютно незначителен и может быть решен исходя из личных предпочтений системного администратора.

Второе принципиальное решение - язык программирования. Выбор тут достаточно велик. Во-первых, есть целый класс языков, идеально подходящих для типичных задач web-программирования (а один из них специально для него и придуман) - "скриптовые языки". Сейчас это как минимум PHP, Perl, Ruby и Python. Именно на них написано подавляющее большинство сайтов от простейших интернет-магазинов до vkontakte.ru, например. По возможностям, удобству, производительности, средствам разработки, каким-то другим теоретическим показателям они примерно равны между собой, основная разница в наличии программистов. Прямо сейчас замеренные показатели рынка таковы: на 100 резюме PHP-программистов в России приходится 10 Perl и по 2-3 Ruby и Python-резюме. С другой стороны, из всех людей, которые называют себя PHP-программистами, к коду на пушечный выстрел нельзя подпускать 80%, для перловиков этот показатель в районе половины, а для Ruby и Python и того меньше. Понятно, что первые цифры объективны и взяты с рабочих сайтов, а вторые условная субъективная оценка и прямо перемножать их нельзя, но в любом случае, количество и программистов, и хороших программистов упорядочено именно в таком порядке: PHP, Perl, Ruby или Python, а средний их уровень в прямо противоположном. Таким образом, если у нас промышленный проект, с большим количеством разработчиков и текучкой кадров, то из Web-языков выбирать нужно PHP (допустимо использование Perl в случае каких-то очень важных локальных причин). Если же проект короткий, программист точно будет один и не будет меняться никогда, то выбор можно доверить ему, при этом выбор Ruby/Python может даже оказаться оптимистичным фактором.

Кроме рассмотренных близнецов-братьев скриптовых языков (выбор между которыми чисто социальный), есть языки и другие, имеющие другие технические характеристики и соответственно другие ниши для применения.

Язык C. Язык, требующий максимальной аккуратности программиста, наиболее сложный в поиске ошибок, с наименьшим количеством доступных готовых решений и с самой низкой скоростью разработки. Все эти минусы он компенсирует только одним плюсом: производительностью, которая на несколько порядков лучше производительности PHP и его аналогов. В принципе, железо сейчас дешевое, а рабочая сила дорогая, плюс этот важен достаточно редко. Условно, если в проекте предполагается менее миллиона показов в сутки, то про C можно забыть смело, но, если показов больше, о нем следует только думать, а не принимать безоговорчно. На C написан, например, счетчик liveinternet.ru.

Язык С++. Обладает всеми теми же недостатками, что и С, но в менее явной форме, взамен дает соизмеримую, но меньшую производительность. Обычно применяется там, где производительность всё же требуется, а бизнес-логика очень сложна и находится на грани научности. Классический пример - поисковые сервисы. Важный недостаток, не дающий ему полностью вытеснить С на его нише, это большая свобода для неподдерживаемого кода. Как и в случае табличной верстки, на С все пишут примерно одинаково, и если код удовлетворяет формальным и проверяемым требованиям качества (не допускает утечки памяти, корректно обрабатывает ошибки и т. п.), то он скорее всего будет на вполне приемлемом уровне и по неформализуемым, но важным характеристикам типа «понятности» и «связности». А вот на C++ можно соблюдая все формальные требования написать, как великолепно, так и отвратительно. И естественно второе встречается чаще.

Язык Java. С технической точки зрения отличается от C++ примерно так же, как C++ отличается от C. Т. е. переход от C++ на Java это потеря ещё половины порядка производительности, но новый выигрыш в скорости разработки и библиотека готовых решений уже соизмерима со скриптовыми языками. С точки зрения социальной, количество программистов на Java меньше и количества программистов на C++, и количества программистов на PHP, при этом они в среднем дороже и, на мой субъективный взгляд, в среднем хуже тех и других. Причина такого странного расклада - в довольно большом рынке Java-разработки корпоративных систем, который с одной стороны поднимает зарплаты, а с другой прививает свою культуру и подход к программированию, который только вреден в вебе. В итоге, я не вижу ни одной ситуации, когда применение Java в веб-разработке было бы обосновано. (Но тем не менее odnoklassniki.ru написаны именно на Java и успешно работают.)

Если мы успели совершить ошибку и выбрали в качестве операционной системы Windows, то кроме перечисленных языков (все они в принципе больше ориентированы на Unix, но могут быть использованы везде) появляются ещё два варианта: это VBScript (некий аналог PHP) и C# (аналог Java). Т. к. я не вижу выигрыша от Windows, то и их рекомендовать не могу.

Перечисленными вариантами многообразие серверных языков программирования не ограничивается, но суммарная популярность всего остального близка к нулю и рациональных причин для выбора экзотики я не знаю.

Все существующие (по крайней мере все популярные) инструменты универсальны. На каждом из них можно реализовать абсолютно всё что угодно, вопрос только в том, что с некоторыми инструментами это будет быстрее и дешевле, а с другими дороже и медленнее. В принципе, никто не запрещает использовать в одном проекте два разных серверных языка, но обычно это приводит к ухудшению управляемости проекта - мы зависим от двух специалистов (или двух групп специалистов) вместо одного, которые кроме собственно проектной работы должны тратить усилия на согласование как чисто социальное (общение между собой), так и техническое. Единственное оправдывающее себя исключение это связка одного из скриптовых языков с кем-то из пары C/C++. «Поверхностная» часть кода, отвечающая за интерфейс, пишется на скриптовом, а наиболее критичная к производительности внутренняя - на С или С++. При этом соотношение между частями в разных проектах может быть совершенно разным. Например, ulov-umov.ru представляет из себя очень алгоритмически сложный C++ проект, реализующий по сути собственную поисковую систему и небольшую Perl-обертку, рисующую пользовательский интерфейс из буквально 10 страниц. А внутри полностью PHP-шного readme.ru есть один маленький C-шный модуль, который по готовым данным быстро-быстро рисует информеры. Важно, что производительный язык всегда «внутри», а уж какую долю от объёма он занимает - зависит от локальных факторов.

Языки программирования, на основе которых лежит любой сайт, можно вместить всего в две категории: клиентские и серверные.

Серверные языки программирования

Чтобы понять, как работают серверные языки веб-программирования, заходим на любой сайт. Сервер, который мы посетили, на своей стороне обрабатывает информацию, а потом выдает ее нам, но уже в виде HTML. Страница кода со скриптом не видна посетителю.

Здесь нужно понимать, что обработка скриптов ведется на сервере и скорость выдачи результата зависит только от характеристик сервера и пропускной способности каналов связи. Такие языки программирования немного сложнее, чем клиентские, но и имеют больше возможностей для реализации задуманного.

Серверные языки рассчитаны на работу с так называемыми базами данных. В них встроены свои библиотеки, которые нужны для считывания, редактирования и сохранения информации.

К серверным web языкам программирования относятся такие языки, как PHP , Perl , ASP.NET, Java , Python , Groovy , Ruby . Для работы с ними вполне достаточно установить на персональном компьютере локальный сервер.

Такие языки нужны для приема и хранения информации на сервере. Для примера можно оценить социальные сети, где хранятся фотографии, списки подарков, сообщения и т.д.

Клиентские языки программирования

Здесь метод обработки запросов немного другой. При заходе на сайт браузер принимает с сервера определенную программу – скрипт, который выполняется соответственно в вашем браузере. В общем, все клиентские языки выполняются с вашей стороны окна, в браузере.

У клиентских языков есть свои преимущества и недостатки. Для основного сервера это плюс, так как не нужно загружаться выполнением скриптов, а недостаток в том, что ваш браузер может просто не справиться с выданным скриптом. Это, в основном, касается устаревших браузеров или их неправильной установки. К таким языкам web программирования относятся

Предположим, Вы сделали простой Html-сайт и Вам хочется узнать мнение посетителей о размещённом контенте. Что для этого нужно? — правильно: дать возможность посетителям оставлять свои комментарии. Средствами HTML, или CSS этого достичь не удасться. И вот тут на помощь и приходят программы (их ещё называют скриптами) созданные при помощи языков веб-программирования.

Получается: веб-программированием можно назвать создание специальных программ для их использования в сети интернет. Существует довольно много языков программирования: C++, Perl, Java, Php, JavaScript, Python, Visual Basic и другие.

Сложность языков программирования различна. Чем сложнее язык программирования, тем больше у него возможностей. На более сложных языках пишутся и более сложные веб-приложения. Все языки программирования можно разделить на два лагеря: серверные и клиентские.

Поговорим немного о терминах. Вся информация в сети интернет хранится на удалённых компьютерах, которые называют серверами. Противоположной стороной выступают пользователи сети, ищущие нужную им информацию, их принято называть клиентам.

Клиентские языки программирования

Самые распространённые из них — JavaScript и Visual Basic. Особенность таких языков заложена в их названии. Программы, написанные на клиентских языках программирования обрабатываются на клиентском компьютере. Говоря проще, скрипты обрабатывает браузер, стоящий на Вашем компе. Из этой особенности вытекают их плюсы и минусы.

Самым большим плюсом является то, что нет необходимости отправлять веб-документ для обработки на сервер. Эта особенность значительно повышает скорость чтения скрипта. Уменьшается трафик,что экономит деньги и снижается нагрузка на сервер. Так же нет надобности ставить дополнительное программное обеспечение для обработки скриптов, т.к. их обрабатывают браузеры.

Недостатки клиентских языков программирования также вытекают из особенностей. Разные браузеры могут интерпретировать скрипты, исходя из своих индивидуальных предпочтений. Поэтому, результаты показа одних и тех же документов могут отличаться. Хотя, последнее время работа различных браузеров всё более унифицируется. Так же к недостаткам можно отнести и открытость кода таких языков для пользователей.

Серверные языки программирования

Серверные языки программирования соответственно работают на стороне сервера. Во взаимодействии с базами данных они поддерживают связь между пользователем и сервером. Получая запрос с адресом веб-документа от браузера, серверные программы связываются с базой данных. БД отдаёт информацию о веб-странице скриптам сервера, и те обработав её, отсылают для интерпретации браузеру клиента, который и выводит результат совместной работы на монитор.

Упрощённая схема такой работы изображена на рисунке.