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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    76,81 Кб
  • Опубликовано:
    2013-07-07
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

ОГЛАВЛЕНИЕ

ВВЕДЕНИЕ

1. HTML

1.1 Структура HTML-документа

1.2 Варианты DOCTYPE для HTML 4.01

1.3 Варианты DOCTYPE для HTML 5

2. JavaScript

2.1 Предпосылки

2.2 Возможности языка

2.2.1 Структура языка. Ядро ECMAScript

2.2 Встраивание в веб-страницы. Расположение внутри страницы

2.3 Область применения Веб-приложения

2.4 Браузерные операционные системы WebOS

2.5 Виджеты. Элемент интерфейса

2.6 Офисные приложения

2.7 Библиотеки JavaScript

2.8 Связь с другими языками. Взаимное влияние

2.9 Безопасность

3. Perl

4. PHP

Список литературы

ВВЕДЕНИЕ

Сайт (от англ. <#"657173.files/image001.jpg">

Пример сеанса eyeOS

JavaScript широко используется в браузерных операционных системах <#"657173.files/image002.jpg">

Исходный код и скриншот JavaScript-программы, созданной с помощью Seed

JavaScript используется для написания прикладного ПО <http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D0%BA%D0%BB%D0%B0%D0%B4%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5>. Например, 16,4% исходного кода Mozilla Firefox <http://ru.wikipedia.org/wiki/Mozilla_Firefox> написано на JavaScript.Chrome OS <http://ru.wikipedia.org/wiki/Google_Chrome_OS> в качестве прикладного ПО использует веб-приложения <http://ru.wikipedia.org/wiki/%D0%92%D0%B5%D0%B1-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5>.

В окружении рабочего стола GNOME <http://ru.wikipedia.org/wiki/GNOME> имеется возможность создавать на JavaScript программы, оперирующие с библиотеками GNOME при помощи Gjs <http://ru.wikipedia.org/w/index.php?title=Gjs&action=edit&redlink=1>, Seed <http://ru.wikipedia.org/w/index.php?title=Seed&action=edit&redlink=1> (англ. <http://en.wikipedia.org/wiki/Seed_%28programming%29>).

Манипуляция объектами приложений

JavaScript также находит применение в качестве скриптового языка доступа к объектам приложений. Платформа Mozilla (XUL <http://ru.wikipedia.org/wiki/XUL>/Gecko <http://ru.wikipedia.org/wiki/Gecko_%28%D0%B4%D0%B2%D0%B8%D0%B6%D0%BE%D0%BA%29>) использует JavaScript. Среди сторонних продуктов, например, Java <http://ru.wikipedia.org/wiki/Sun_Java_Runtime_Environment>, начиная с версии 6, содержит встроенный интерпретатор JavaScript на базе Rhino <http://ru.wikipedia.org/wiki/Rhino>. Сценарии JavaScript поддерживаются в таких приложениях Adobe, как Adobe Photoshop <http://ru.wikipedia.org/wiki/Adobe_Photoshop>, Adobe Dreamweaver <http://ru.wikipedia.org/wiki/Adobe_Dreamweaver>, Adobe Illustrator <http://ru.wikipedia.org/wiki/Adobe_Illustrator> и Adobe InDesign <http://ru.wikipedia.org/wiki/Adobe_InDesign>.

 

.6 Офисные приложения

JavaScript используется в офисных приложениях <http://ru.wikipedia.org/wiki/%D0%9E%D1%84%D0%B8%D1%81%D0%BD%D1%8B%D0%B9_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82> для автоматизации рутинных действий, написания макросов <http://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D0%BA%D1%80%D0%BE%D1%81>, организации доступа со стороны веб-служб.

Microsoft Office

В Excel Services <http://ru.wikipedia.org/wiki/SharePoint> 2010 добавились два новых интерфейса программирования приложений: REST <http://ru.wikipedia.org/wiki/REST> API и JavaScript Object Model (JSOM <http://ru.wikipedia.org/w/index.php?title=JSOM&action=edit&redlink=1>).Services 2010 REST API позволяет осуществлять доступ к объектам рабочих книг, таким как таблицы, диаграммы и именованные серии данных; получать изображения, HTML, Atom <http://ru.wikipedia.org/wiki/Atom>, рабочие книги; устанавливать значения и обновлять вычисления перед запрашиванием элементов.даёт возможность реагировать на действия пользователя в отношении Excel Web Access (EWA <http://ru.wikipedia.org/w/index.php?title=EWA&action=edit&redlink=1>), программно взаимодействовать с составляющими EWA. Использование JSOM осуществляется при помощи помещения кода JavaScript на страницу, содержащую компоненты EWA.

OpenOffice.org

JavaScript - один из языков программирования, используемых для написания макросов в приложениях, входящих в состав OpenOffice.org. В OpenOffice.org интегрирован интерпретатор JavaScript Rhino. По состоянию на декабрь 2009 года поддержка JavaScript носила ограниченный характер. Ограничения, присущие разработке макросов OpenOffice.org на JavaScript:

среда выполнения JavaScript поддерживает загрузку лишь тех классов Java, которые развёрнуты сценарием JavaScript;

среда выполнения JavaScript не предоставляет сообщения об ошибках, произошедших во время выполнения скрипта;

ещё не реализована поддержка интерактивной разработки JavaScript-сценариев.

В OpenOffice.org имеется редактор и отладчик JavaScript-сценариев.

 

.7 Библиотеки JavaScript


Для обеспечения высокого уровня абстракции <http://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D0%BE%D0%B9_%D0%B0%D0%B1%D1%81%D1%82%D1%80%D0%B0%D0%B3%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F> и достижения приемлемой степени кросс-браузерности <http://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%BE%D1%81%D1%81-%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80%D0%BD%D0%BE%D1%81%D1%82%D1%8C> при разработке веб-приложений используются библиотеки JavaScript. Они представляют собой набор многократно используемых объектов и функций.

Среди известных JavaScript библиотек можно отметить Adobe life <http://ru.wikipedia.org/w/index.php?title=Adobe_life&action=edit&redlink=1>, Dojo <http://ru.wikipedia.org/wiki/Dojo> Toolkit, Extjs <http://ru.wikipedia.org/wiki/Extjs>, jQuery <http://ru.wikipedia.org/wiki/JQuery>, Mootools <http://ru.wikipedia.org/wiki/Mootools>, Prototype <http://ru.wikipedia.org/wiki/Prototype_%28%D1%84%D1%80%D0%B5%D0%B9%D0%BC%D0%B2%D0%BE%D1%80%D0%BA%29>, Qooxdoo <http://ru.wikipedia.org/w/index.php?title=Qooxdoo&action=edit&redlink=1> (англ. <http://en.wikipedia.org/wiki/Qooxdoo>), Underscore <http://ru.wikipedia.org/wiki/Underscore>.

В JavaScript доступ к отладчикам становится особенно полезным при разработке крупных нетривиальных программ из-за различий в реализациях разных браузеров (в частности, в отношении объектной модели документа <http://ru.wikipedia.org/wiki/Document_Object_Model>). Полезно иметь доступ к отладчику для каждого из браузеров, в которых будет работать веб-приложение <http://ru.wikipedia.org/wiki/%D0%92%D0%B5%D0%B1-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5>.

По состоянию на ноябрь 2009 года, Internet Explorer <http://ru.wikipedia.org/wiki/Internet_Explorer>, Firefox <http://ru.wikipedia.org/wiki/Firefox>, Safari <http://ru.wikipedia.org/wiki/Safari>, Google Chrome <http://ru.wikipedia.org/wiki/Google_Chrome>, а также Opera <http://ru.wikipedia.org/wiki/Opera> имеют отладчики сценариев.Explorer имеет три отладчика: Microsoft Visual Studio <http://ru.wikipedia.org/wiki/Microsoft_Visual_Studio> - самый полный из них, за ним следует Microsoft Script Editor <http://ru.wikipedia.org/w/index.php?title=Microsoft_Script_Editor&action=edit&redlink=1> (англ. <http://en.wikipedia.org/wiki/Microsoft_Script_Editor>) (компонент Microsoft Office <http://ru.wikipedia.org/wiki/Microsoft_Office>), и, наконец, свободный Microsoft Script Debugger, гораздо более простой, чем два других. Бесплатный Microsoft Visual Web Developer Express предоставляет ограниченную версию с отладочной функцией JavaScript в Microsoft Visual Studio. В восьмой версии в IE вместе с инструментами для разработчиков появился встроенный отладчик.

В Opera также имеется собственный отладчик - Opera Dragonfly <http://ru.wikipedia.org/wiki/Opera_Dragonfly>.

Разрабатываемые веб-приложения в Firefox можно отлаживать при помощи расширений Firebug <http://ru.wikipedia.org/wiki/Firebug>, Venkman <http://ru.wikipedia.org/w/index.php?title=Venkman&action=edit&redlink=1> (англ. <http://en.wikipedia.org/wiki/Venkman>).

В Safari входит отладчик JavaScript WebKit Web Inspector <http://ru.wikipedia.org/w/index.php?title=WebKit_Web_Inspector&action=edit&redlink=1>. Этот же отладчик доступен и в других браузерах, использующих WebKit <http://ru.wikipedia.org/wiki/WebKit>: Google Chrome, Arora <http://ru.wikipedia.org/wiki/Arora>, Rekonq <http://ru.wikipedia.org/wiki/Rekonq>, Midori <http://ru.wikipedia.org/wiki/Midori_%28%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80%29> и др.

Средства тестирования

Большинство фреймворков автоматизированного тестирования <http://ru.wikipedia.org/w/index.php?title=%D0%A4%D1%80%D0%B5%D0%B9%D0%BC%D0%B2%D0%BE%D1%80%D0%BA_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F&action=edit&redlink=1> (англ. <http://en.wikipedia.org/wiki/Test_automation_framework>) JavaScript-кода предполагают запуск тестов в браузере. Это осуществляется при помощи HTML-страницы, являющейся контекстом тестирования <http://ru.wikipedia.org/w/index.php?title=%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%BA%D1%81%D1%82_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F&action=edit&redlink=1> (англ. <http://en.wikipedia.org/wiki/Test_fixture>), которая, в свою очередь загружает всё необходимое для осуществления тестирования. Первыми такими фреймворками были JsUnit <http://ru.wikipedia.org/w/index.php?title=JsUnit&action=edit&redlink=1> (англ. <http://en.wikipedia.org/wiki/JSUnit>) (создан в 2001 году), Selenium <http://ru.wikipedia.org/wiki/Selenium> (создан в 2004 году). Альтернатива - запуск тестов из командной строки. В этом случае используются окружения, отличные от браузера, например, Rhino. Одним из первых инструментов такого рода является Crosscheck, позволяющий тестировать код, эмулируя поведение Internet Explorer 6 и Firefox версий 1.0 и 1.5. Другой пример фреймворка автоматизированного тестирования JavaScript-кода, не использующего браузер для запуска тестов - библиотека env.js, созданная Джоном Резигом. Она использует Rhino и при этом содержит эмуляцию окружения браузера и DOM.Ridge, плагин к фреймворку веб-приложений Ruby on Rails <http://ru.wikipedia.org/wiki/Ruby_on_Rails>, позволяет осуществлять модульное тестирование <http://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5> JavaScript-кода как в браузере, так и вне его. Это достигается за счёт использования фреймворка автоматизированного тестирования Screw.Unit и Rhino с env.js.

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

Сходным образом ведёт себя Selenium Remote Control, входящий во фреймворк автоматизированного тестирования Selenium: он включает в себя сервер, запускающий и завершающий браузеры и действующий как HTTP-прокси для запросов к ним. Кроме того, в Selenium содержится Selenium Grid, позволяющий осуществлять одновременное тестирование JavaScript-кода на разных компьютерах с разными окружениями, уменьшая время выполнения тестов. Testswarm, имеющее поддержку фреймворков автоматизированного тестирования JavaScript-кода QUnit (библиотека jQuery <http://ru.wikipedia.org/wiki/JQuery>), UnitTestJS (библиотека Prototype <http://ru.wikipedia.org/wiki/Prototype_%28%D1%84%D1%80%D0%B5%D0%B9%D0%BC%D0%B2%D0%BE%D1%80%D0%BA%29>), JSSpec (библиотека MooTools <http://ru.wikipedia.org/wiki/MooTools>), JsUnit, Selenium и Dojo Objective Harness, представляет собой распределённое средство поддержки непрерывной интеграции <http://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%BF%D1%80%D0%B5%D1%80%D1%8B%D0%B2%D0%BD%D0%B0%D1%8F_%D0%B8%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F>.

Негативное свойство, которым может обладать фреймворк автоматизированного тестирования JavaScript-кода - наличие зависимостей. Это создаёт риск отказа в работе тестируемого кода, успешно проходящего тесты, в среде с отсутствием этих зависимостей. Например, исходная версия JsUnitTest, фреймворка, созданного и использовавшегося для тестирования библиотеки Prototype, зависела от самой Prototype, изменяющего свойства объектов в глобальной области видимости. Включение в библиотеку JavaScript <http://ru.wikipedia.org/wiki/%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_JavaScript> инструмента тестирования - распространённая практика. Так YUI Test 3 является частью Yahoo! UI Library <http://ru.wikipedia.org/wiki/Yahoo%21_UI_Library> и может быть безопасно использован для тестирования произвольного JavaScript-кода. QUnit - фреймворк автоматизированного тестирования, созданный разработчиками jQuery.

 

.8 Связь с другими языками

 

Взаимное влияние

Стандартизация JavaScript потребовала уйти от проблем с торговыми марками, поэтому стандарт ECMA 262 называет язык ECMAScript, три редакции которого были опубликованы с начала работы над ним в ноябре 1996 года.

Objective-J <http://ru.wikipedia.org/wiki/Objective-J> - это строгое компактное надмножество JavaScript, в котором к JavaScript добавлено:

традиционное наследование,

динамическая диспетчеризация методов <http://ru.wikipedia.org/w/index.php?title=%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%B4%D0%B8%D1%81%D0%BF%D0%B5%D1%82%D1%87%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%B2&action=edit&redlink=1> в стиле Smalltalk <http://ru.wikipedia.org/wiki/Smalltalk>/Objective-C <http://ru.wikipedia.org/wiki/Objective-C>,

псевдостатичная типизация.<http://ru.wikipedia.org/wiki/VBScript> от Microsoft <http://ru.wikipedia.org/wiki/Microsoft>, подобно JavaScript, может выполняться на стороне клиента в веб-страницах. VBScript имеет синтаксис, производный от Visual Basic <http://ru.wikipedia.org/wiki/Visual_Basic> и поддерживается только в Internet Explorer <http://ru.wikipedia.org/wiki/Internet_Explorer>.<http://ru.wikipedia.org/wiki/JSON>, или объектная нотация JavaScript, это формат обмена данными общего назначения, определённый как подмножество JavaScript.<http://ru.wikipedia.org/wiki/Scheme> также является родственным JavaScript языком, поскольку оба представляют богатые возможности функционального программирования: JavaScript является динамическим языком, поддерживает гибкие массивы, может легко симулировать s-выражения, имеет поддержку лямбда-выражений <http://ru.wikipedia.org/wiki/%D0%9B%D1%8F%D0%BC%D0%B1%D0%B4%D0%B0-%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F>.

Взаимодействие

В некоторых языках программирования существуют средства поддержки взаимодействия с JavaScript-кодом.

Для PHP <http://ru.wikipedia.org/wiki/PHP> имеется пакет HTML_Javascript, предоставляющий интерфейс создания простых JavaScript-программ.

Соответствующий пакет для TCL <http://ru.wikipedia.org/wiki/TCL> называется :javascript. Он предоставляет команды генерации кода HTML и JavaScript.

Пакет для Perl <http://ru.wikipedia.org/wiki/Perl> Data::JavaScript позволяет переносить структуры данных Perl в JavaScript-код.

На сегодняшний день поддержку JavaScript обеспечивают современные версии всех наиболее часто используемых браузеров. В Internet Explorer <http://ru.wikipedia.org/wiki/Internet_Explorer>, Mozilla Firefox <http://ru.wikipedia.org/wiki/Mozilla_Firefox>, Safari <http://ru.wikipedia.org/wiki/Safari>, Google Chrome <http://ru.wikipedia.org/wiki/Google_Chrome>, Opera <http://ru.wikipedia.org/wiki/Opera> имеется полная поддержка третьей редакции ECMA-262. При этом в Mozilla Firefox предпринята попытка осуществления поддержки четвёртой редакции спецификации, а первым браузером, в котором появилась неполная поддержка спецификации 3.1, явился Internet Explorer 8.

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

По мнению создателя языка, поддержка в Internet Explorer компанией Microsoft одного из существующих и применяющихся в других браузерах быстрых движков JavaScript <http://ru.wikipedia.org/wiki/%D0%94%D0%B2%D0%B8%D0%B6%D0%BE%D0%BA_JavaScript> способно привести к появлению приложений, работающих с трёхмерной графикой <http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D1%91%D1%85%D0%BC%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0>, написанных на JavaScript 3D-игр, использованию JavaScript в задачах, в которых ранее применялась технология Adobe Flash <http://ru.wikipedia.org/wiki/Adobe_Flash>.

 

2.9 Безопасность

позволяет потенциальным авторам вредоносного кода запускать его на любом компьютере сети: для этого достаточно открыть на нём веб-страницу. Это обуславливает наличие двух принципиальных ограничений:

JavaScript-программы выполняются в песочнице <http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0_%28%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C%29>, в которой они могут выполнять только ограниченный круг действий, а не задачи программирования общего назначения (например, создание файлов, работа с сокетами <http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D0%BA%D0%B5%D1%82_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D1%8B%D0%B9_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%29>),

для JavaScript-кода применяется политика общего происхождения, в соответствии с которой скрипт, встроенный в страницу, не может получить доступ к ряду свойств объектов другой страницы (в частности, к большинству свойств объекта document) при отличии в протоколе <http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D1%8B_%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%87%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85>, хосте <http://ru.wikipedia.org/wiki/%D0%A5%D0%BE%D1%81%D1%82> и номере порта <http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%80%D1%82_%28TCP/IP%29> этих страниц.

Помимо этого, разработчики браузеров вносят дополнительные ограничения в ответ на имеющие место злоупотребления. Так появился, в частности, запрет на открытие окна, размер одной стороны которого меньше ста пикселей <http://ru.wikipedia.org/wiki/%D0%9F%D0%B8%D0%BA%D1%81%D0%B5%D0%BB>.

Межсайтовые уязвимости

Общая проблема, касающаяся JavaScript - межсайтовый скриптинг <http://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B8%D0%BD%D0%B3> или XSS, нарушение политики общего происхождения. Уязвимости XSS имеют место в ситуациях, когда злоумышленник имеет возможность поместить скрипт на страницу, демонстрирующуюся пользователю. В этом случае скрипт получает доступ к сайту с правами этого пользователя, что в ряде случаев открывает возможность отсылки конфиденциальной информации, осуществление нежелательных транзакций <http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B0%D0%BD%D0%B7%D0%B0%D0%BA%D1%86%D0%B8%D1%8F_%28%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0%29>.

Уязвимости XSS также происходят из-за ошибок, допущенных разработчиками браузеров.

Другим типом межсайтовой уязвимости является подделка межсайтовых запросов или CSRF. Она заключается в возможности сайта злоумышленника заставить браузер пользователя осуществить нежелательное действие на целевом сайте (например, банковский перевод денег). Такая возможность имеется, если целевой сайт полагается только на HTTP cookie <http://ru.wikipedia.org/wiki/HTTP_cookie> или запросы авторизации. В этом случае запросы, инициализированные кодом сайта злоумышленника, выполняются так же как запросы пользователя, если он авторизован <http://ru.wikipedia.org/wiki/%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F> на целевом сайте. Одним из средств защиты от CSRF является осуществление аутентификации <http://ru.wikipedia.org/wiki/%D0%90%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F> при любом запросе, который приводит к необратимым последствиям. Также может помочь анализ HTTP referer <http://ru.wikipedia.org/wiki/HTTP_referer>.

3. Perl

Perl - это процедурный язык программирования - универсальный инструмент для решения очень широкого круга задач. Perl не разрабатывался специально для Web-программирования. Perl, как и любой полноценный язык, имеет некоторое ядро - набор функций и правил, которые не зависят от платформы, операционной системы и прочих обстоятельств. Код Perl мобилен и переносим и везде одинаков.

Различия дистрибутивов Perl схожих версий сводятся наличием установленных модулей. Perl предоставляет программисту ограниченный набор стандартных инструментов. Это дисциплинирует программиста и облегчает обмен кодом и опытом. При этом, программист совсем не скован и всегда может получить требуемые возможности, подключив соответствующий модуль. Perl является зрелым языком. Мало подвержен всяческим багфиксам и изменениям. Снабжен развитыми средствами разработки. Все "детские" ошибки Perl пережил еще более чем 10 лет назад.

Perl обеспечивает более высокую производительность в веб-разработках, только если использовать не CGI-подход, а mod_perl. Большинство провайдеров не предоставят вам такой возможности. Perl представляет минимум функций в своем ядре.

Чтобы расширить функционал языка требуется подключать дополнительные модули. Большинство других языков имеют гораздо больше встроенных функций. Perl имеет собственную систему документирования и снабжён прекрасной документацией на английском языке.

Перегрузка операторов возможна, но является очень ограниченной и искусственной надстройкой. В Perl исключения можно эмулировать, при помощи таких модулей, как Error.pm и Exception.pm, не входящих в стандартную поставку. Они основаны на умелом использовании eval/die, но это весьма искусственный приём, который никак не может обеспечить требуемой гибкости современного объектно-ориентированного языка.

В Perl все переменные глобальны, если не указано иное. Но чаще всего требуется именно иное. В Perl аргументы функций задаются в магическом массиве.

4. PHP


PHP псевдообъектный язык программирование и изначально предназначался для разработки Web-приложений. Он пытается сочетать мощь полноценного языка и преимущества узкоспециального средства. В поисках компромисса, PHP приобретает целый ряд спорных качеств. PHP не является полноценным языком программирования и практически не имеет своего ядра. Отсюда проистекает целый ряд особенностей PHP. Набор функций PHP, который оказывается в распоряжении программиста, практически полностью зависит от провайдера. («Правильные» провайдеры всегда пишут, с какими опциями был собран их PHP.) Эта разница весьма ощутима. Например, если сайт разработан с использованием Smarty, то он заработает далеко не на всяком хостинге. И происходит это только потому, что аппарат Smarty использует POSIX-расширение механизма регулярных выражений. Если ваше PHP-приложение написано с использованием функций, которых хостер не предоставляет, или вы использовали библиотеки, которые зависят от таких функций, то расширить набор функций PHP самостоятельно чаще всего нельзя. PHP предоставляет (потенциально) великое множество функций. На настоящий момент их более 3000. На реальном хостинге вы обнаружите около 1000 из них. Такой широкий набор выразительных средств не идёт на пользу языку. Разные программисты знают разные наборы операторов. Это затрудняет чтение чужого кода, обмен кодом и совместную разработку. PHP относительно молодой язык. Подвержен частым багфиксам и дополнениям. В PHP механизм указателей находится в зачаточном состоянии. В PHP не предусмотрена такая структура данных, как массив. В этом смысле PHP находится на уровне awk. Одним словом, PHP ещё долго будет меняться, создавая множество проблем разработчикам. При ведении именно Web-разработок, PHP обнаруживает ряд существенных преимуществ. Во-первых, интерпретатор PHP интегрируется в Web-сервер, что в разы увеличивает производительность. Во-вторых, Web-приложения на PHP проще отлаживать. Сообщения об ошибках часто выдаются клиенту, а не пишутся в error_log. В-третьих, PHP имеет широкий набор встроенных функций, для работы по протоколу HTTP. Однако, почти все эти преимущества оборачиваются серьёзными проблемами с точки зрения безопасности ресурса. То, что PHP встроен в сервер, затрудняет диагностику источника атак. PHP даёт большую свободу разработчику -- PHP-скрипт может быть размещён в любой директории сервера. Но это тоже создаёт дополнительные риски. Во многих случаях, по невнимательности разработчиков, посетитель сервера получает возможность «залить» на сервер не только картинки и другие безобидные файлы, но PHP-скрипты, а это уже очень серьёзная опасность. То, что PHP выдаёт сообщения об ошибках в ответ на HTTP-запрос, удобно для разработчика. Но с точки зрения безопасности это решение мне всегда казалось спорным, ведь любой посетитель вашего сайта может узнать об ошибках в ваших программах. А злоумышленнику может оказаться достаточно узнать версию вашего PHP, чтобы «сломать» ваш ресурс. Преимуществом документации PHP является то, что она переведена на русский язык. К недостаткам я бы отнёс её необъятность. Основной проблемой PHP является то, что этот язык позволяет смешивать HTML-код и PHP-код. Фактически, это смешение данных и кода. Человечество уже десятки лет назад осознало, что код и данные следует разделять. Для этого найдено множество изящных решений, от хедеров и конфигурационных файлов, до шаблонов и обособленных хранилищ данных. В этом смысле PHP представляется шагом назад; каким-то старорождённым. Если посмотреть на это с прикладной точки зрения, то ничего хорошего мы тоже не увидим. Объединение HTML- и PHP-кода не улучшает читабельность ни того, ни другого. Соответственно, сопровождение, модернизация и модификация программ тоже затрудняются. Но существуют недостатки, «встроенные» в сам язык. Так, например, представляется очень неудобным то, как регламентируется передача параметров функциям. Будет ли параметр передан по значению или по ссылке определяется не при вызове функции, а при её создании. Вызов же выглядит одинаково и в том и в другом случае. Это удобно, если автором всеx функций являетесь вы сами, и вы хорошо помните прототипы ваших функций. Но при активной работе в команде это приводит к путанице. Точно также обстоит дело и с функциями, возвращающими указатели. Это самый большой из тех недостатков PHP, которые никак нельзя обойти.

ЗАКЛЮЧЕНИЕ

В данной курсовой работе рассмотрены языки программирования (HTML, JavaScript, Perl, PHP) по web-разработке. Каждая из них актуальна и пользуется спросом как у программистов, так и простых людей не имеющих навыков в этой среде, но желающих саздать свой сайт.

JavaScript обычно используется как встраиваемый язык для программного доступа к объектам приложений <http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0>. Наиболее широкое применение находит в браузерах <http://ru.wikipedia.org/wiki/%D0%91%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80> как язык сценариев для придания интерактивности <http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D1%81%D1%82%D1%8C> веб-страницам <http://ru.wikipedia.org/wiki/%D0%92%D0%B5%D0%B1-%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0>. Основные архитектурные черты: динамическая типизация <http://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%82%D0%B8%D0%BF%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F>, слабая типизация, автоматическое управление памятью <http://ru.wikipedia.org/wiki/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%BC%D1%83%D1%81%D0%BE%D1%80%D0%B0>, прототипное программирование <http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D1%82%D0%B8%D0%BF%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5>, функции как объекты первого класса <http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82_%D0%BF%D0%B5%D1%80%D0%B2%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0>.

На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при этом лёгким для использования непрограммистами <http://ru.wiktionary.org/wiki/%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C-%D0%BD%D0%B5%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82>. Языком JavaScript не владеет какая-либо компания или организация, что отличает его от ряда языков программирования, используемых в веб-разработке<http://ru.wikipedia.org/wiki/JavaScript>.

Perl - это процедурный язык программирования, универсальный инструмент для решения очень широкого круга задач. Perl предоставляет программисту ограниченный набор стандартных инструментов. Это дисциплинирует программиста и облегчает обмен кодом и опытом. При этом, программист совсем не скован и всегда может получить требуемые возможности, подключив соответствующий модуль.псевдообъектный язык программирование и изначально предназначался для разработки Web-приложений. При ведении именно Web-разработок, PHP обнаруживает ряд существенных преимуществ. Во-первых, интерпретатор PHP интегрируется в Web-сервер, что в разы увеличивает производительность. Во-вторых, Web-приложения на PHP проще отлаживать. Сообщения об ошибках часто выдаются клиенту, а не пишутся в error_log. В-третьих, PHP имеет широкий набор встроенных функций, для работы по протоколу HTTP

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

Список литературы


1. Александровский А.Д. Создание Web-страниц с использованием JavaScript. - М.: ДМК, 1998.

2.      Матросов А., Сергеев А., Чаунин М. HTML 4.0. - СПб.: БХВ-

Санкт-Петербург, 2000.

.   Беспалько В.П. Образование и обучение с участием компьютеров. - М.: Изд. Московского психолого-социального института, 2002. - 352 с.

4.      Захарова И.Г. Информационные технологии в образовании: учебное пособие для студентов высших учебных заведений. - 3-е изд., - М.: «Академия», 2007. - 192 с.

.        Зимина О.В., Кириллов А.И. Печатные и электронные учебники в современном высшем образовании: Теория, методика, практика. М.: «МЭИ», 2003, - 167 с.

.        Красильников И.В. Информационные аспекты разработки и применения в ВУЗе электронных учебных пособий. Монография. М.: «РХТУ», 2007. - 114 с.


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!