Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 25
Текст из файла (страница 25)
Разработка языка 1ауа началась в 1991 г, Группа программистов (Сгееп Теащ) из компании 5 ни М 1сгозуз(ешз под руководством Джеймса Госл инга ()ашеэ Соэ11пй) занималась разработкой языка для использования в цифровых бытовых устройствах'. Летом 1992 г, была создана рабочая версия, но группа опередила свое время, так как в тот момент промышленность еще не была готова к использованию этого языка. В 1993 г. появился туеЪ-браузер Мова)с, что привело к распространению Интер- нета, вышедшего из стен академических лабораторий, по всему миру. Программи- сты из группы Сгееп Теаш сразу же осознали, какую роль может сыграть создан- ный ими язык для расширения возможностей тчеЬ-браузеров.
При помощи браузера Мова(с, в котором использовались адреса ()йодля нави- гации в сети и код НТМ1. для отображения туеЬ-страниц, пользователь мог отыс- кивать нужные ему страницы и загружать информацию с удаленных сайгон. (Эта тема рассматривается в главе 12.) Тем не менее оставались нерешеннылти три про- блемы, ограничивающие возможность доступа пользователей к Ю'тгтг%'. 1. Скорость передачи на компьютер пользователя в 1993 г. ограничивалась примерно 33 000 бит/с (сейчас она составляет примерно 50 000 бит(с).
2. Если какой-либо сайт был достаточно популярен, то при одновременном обращении к нему большого количества пользователей скорость его работы значительно уменьшалась. 3. Для передачи по сети разных типов тееЪ-объектов (текстового документа, графического, аудио- или видеообъекта) требовался отдельный протокол, поддерживаемый каждым чуеЬ-браузероы. Новый формат объектов мог быть использован только после того, как соответствующий протокол был включен во все браузеры, Пока пользователь ждал появления очередной порции информации с серве- ра, его компьютер фактически простаивал без дела. Чтобы обойти первые два из перечисленных ограничений, было предложено некоторую часть обработки ин- формации перенести на компьютер пользователя, тем самым разгрузив туеЬ-сер- вер. Этого можно было достичь посредством небольшой программы-приложе- ния, которая загружается с туеЬ-сервера и выполняется на локальном компьютере, за счет чего сервер может обслуживать большее количество пользователей од- новременно, Такая программа называется апплет (арр!ег).
Аналогично можно загрузить с туеЬ-сервера на локальный компьютер апплет, позволякзщий обраба- тывать новый тип протокола, необходимый для передачи определенного туеЬ- объекта. По мнению программистов компании 5пп, разработанный ими язык мог бы стать ценным дополнением к тчеЬ-технологиям. Но для эффективности его использова- ния требовалось выполнение нескольких условий. 1. Независимость от машинной архитектуры. тзт'еЬ-сервер не имеет информации о том, на какал~ компьютере установлен браузер пользователя.
Для ре- Этот язык известен под названием ОаŠ— 1!рнчеч. науч, ред. 88 Глава 2. Влияние машинной архитектуры щения этой задачи был сконструирован виртуальный компьютер 1ача, и апплет мог быть скомпилирован в виде последовательности байт-кодов для данного виртуального компьютера. Таким образом, апплеты )ача могли выполняться на любом браузере, в который встроена виртуальная машина .) ача.
2. Г>езопасностъ. Для того чтобы язык )ага стал общепринятым языком тчеЬ- программирования, необходимо было обеспечить выполнение с его помощью требований безопасности, имеющих решающее значение для пользователей сети. В частности, шеЬ-сервер не должен иметьдоступа к информации, расположенной на клиентском компьютере, и тем более эта информация не должна передаваться обратно на сервер, Если бы у серверов имелась такая возможность, пользователи весьма неохотно использовали бы незнакомые тчеЬ-сайты, что значительно затормозило бы развитие сети. В 1994 г. компания 5пп разработала браузер Ног)ага, чтобы продемонстрировать возможности содержащегося в нем виртуального колшьютера )ага, И наконец, 23 мая 1995 г. Марк Андерсен (Маге Апг)егззеп), один из основателей компании Кегэсаре Сошшцп1саг1оп, которая в то время контролировала 70 Ж рынка в области тчеЬ-браузеров, обьявил о включении виртуального компьютера )ага в браузер Ь1егзсаре.
С этого момента язык )ага приобрел значительную популярность. Хотя исходно он был предназначен для выполнения апплетов в и еЪ-браузере, область его применения расширилась до того, что он стал одним из наиболее распространенных языков. Он все чаще заменяет С и С++ в качестве первого языка программирования, изучаемого и используемого студентами. Краткий обзор языка. $1зык ) ача похож на С и С++. Их взаилгосвязь становится понятной, если проследить историю создания этих языков. Язык С был разработан в 70-х гг. как язык создания операционных систем (в основном системы 1)Ы! Х). Разработчикам языка хотелось, чтобы он обеспечивал возможность доступа к архитектуре базового аппаратного компьютера.
Когда Страуструп (5ггоцзггпр) разрабатывал язык С++, он позаимствовал концепцию класса из языка 51шц1а и концепцию наследования из языка 5ша1!га1)г. Тем не менее язык С, ставший основой С++, не был при этолг модифицирован и его полезные для системного программирования свойства были перенесены в С++, Когда программисты компании Бцп разрабатывали )ага, они сохранили основные синтаксические структуры, концепции классов и наследования, имеющиеся в С++, но отказались от некоторых необязательных свойств. В результате язык )ача оказался более компактным, чем С++, но с более рациональнымн синтаксисом и семантикой.
По большей части )ача напоминает С++ без тяжелого наследия С, которое обусловливает слабость многих программ на языке С++. Данные в )ага строго типизированы; в частности, целочисленный, логический и символьный типы принадлежат к различным типам данных. Также отдельным типом данных являются массивы, а строковый тип данных в) ага — это не просто массив символов. Все эти свойства позволяют компилятору )ача более полно отслеживать ошибки в программах. Количество способов выполнения некоторых действий уменьшилось.
Например, вызов метода — единственный способ подключения подпрограмм. Поскольку 2,3. Рекомендуемая литература 88 все объекты являются экземплярами каких-либо классов, то отпадает необходимость в специальных вызовах функций или процедур. Структурные объекты з1 госг также не нужны, так как тот же эффект достигается при помощи переменных экземпляра, или полей, в определении классов. В языке 1ауа неявным образом присутствуют указатели, но соответствующий тип данных отсутствует.
Это означает, что от пользователя скрыты все проблемы с фрагментацией памяти, ссылками на несуществующие объекты и другие неприятности, связанные с указателями. Распределение памяти для указателей происходит неявным образом во время создания объектов класса и выполнения операции яен. Для создания программы на языке 1ата в первую очередь создается файл иия файлалача.
Имя файла должно совпадать с именем класса, создаваемого в данной программе. Когда программа написана, вызывается ком пилятор1ауа. В результате компиляции получается файл с названием и ля файла.с1аэз, солержащий байт- колы. Этот файл можно выполнить с помощью интерпретатора 1ауа (виртуальная машина 1ата), Можно сказать, что язык 1 ага является лостаточно простым языком: он имеет ту же ясную структуру, что и С++, и при этом лишен той неуклюжести, которая свойственна С. Тем не менее эффективность выполнения программ на 1аха несколько ниже, так как многие из структур языка нуждаются в проверке во время выполнения программы. К тому же, поскольку программы на 1аха чаще всего интерпретируются как апплеты в виртуальной машине 1ауа, скорость выполнения программ на 1ата несколько ниже, чем скорость выполнения программ, написанных на компилируемых языках.
Но при оценке 1ауа надо помнить об основной области применения этого языка: поскольку он создавался для ч~еЬ-браузеров, потери в скорости выполнения фактически не влияют на результат. Причина этого в том, что скорость передачи информации по сети и скорость обработки и отображения информации на мониторе компьютера все равно ниже скорости работы компьютера пользователя. Поэтому большая часть времени тратится на ожидание очередной порции информации, запрошенной на сервере.
2.3. Рекомендуемая литература В данном разделе не обсуждалась альтернативная архитектура компьютера, основанная на принципах, радикально отличающихся от принципов организации компьютера фон Неймана. Обзорную информацию по этому вопросу вы найдете в главе 11. Критика архитектуры фон Неймана и альтернативные предложения представлены в лекции Вакуса 115~, прочитанной при вручении ему премии Тьюринга. В настоящее время все большее значение приобретает параллельная архитектура и обьединение большого количества компьютеров, работающих параллельно, в единую систему, что позволяет увеличить эффективность.
Об экспериментальных исследованиях в области компьютерной архитектуры можно прочитать в январском выпуске 1ЕЕЕ Сошршег за 1991 г., а также в ~77~, Глава 2. Влияние машинной архитектуры 90 мирования. Что является исполняемой формой программы (иначе говоря, что представляет собой результат работы транслятора)? Какие виды трансляций происходят при преобразовании различных выражений и операторов в пх исполняемую форму? Какая программная интерпретация необходима при выполнении программы? Является ли интерпретатор программно-моделируемым? Какие из примитивных операций требуют программной интерпретации? 2.
Исследуйте свой собственный компьютер: какова структура виртуального компьютера, определяемого операционной системой? Чем этот компьютер отличается от аппаратного? Ограничивает ли операционная система использование аппаратных средств (например, существуют ли какие-либо аппаратные инструкции, которые становятся недоступными для использования в пользовательских программах, выполняемых определяемым операционной системой виртуальным компьютером)? Какие новые возможности, требующие сложного программного моделирования при реализации в базовом аппаратном компьютере, непосредственно обеспечиваются виртуальным компьютером, определяемым операционной системой (например, ввод-вывод)? Операционная система позволяет программисту использовать виртуальный компьютер, который может сильно отличаться от базового аппаратного компьютера.
Основные преимушества этого виртуального компьютера таковы, Пользователь взаимодействует с более простым компьютером, чем базовый (в частности, возможности ввода-вывода виртуального компьютера проще и мощнее). Он также защищает компьютерную систему от пользователя: так как каждый пользователь может быть изолирован в отдельном виртуальном компьютере, то любые его ошибки затронут только один этот виртуальный компьютер и не повлияют на работу всей компьютерной системы н лругих пользователей. Кроме того, виртуальный компьютер позволяет операционной системе более эффективно распределять системные ресурсы между пользователями.