Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
вопрос 2 ит.docx
Скачиваний:
1
Добавлен:
16.04.2019
Размер:
123.31 Кб
Скачать

1.3.4. Языки сценариев JavaScript

Язык JavaScript разрабатывался компанией Netscape как язык сценариев просмотра HTML-страниц. JavaScript является объектно-ориентированным языком. В целом язык ориентирован на встроенные объекты NetscapeNavigator: окна, формы, поля форм, элементы рабочих областей Navigator. Это сильно облегчает обучение языку и позволяет сразу писать интересные и полезные программы.

Используя JavaScript, можно организовать многооконный интерфейс с локальной справочной системой и встроенной графикой, возложив при этом многие вопросы проверки вводимых пользователем данных на JavaScript. По своим функциональным возможностям JavaScript довольно сильно уступает Java: можно организовать прокрутку текста, организовать открытие нового окна, запрограммировать калькулятор, но не более того.

VisualBasicScript

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

Так же, как VisualBasic облегчает разработку приложений для Windows, а VisualBasicforApplication (VBA) делает то же для приложений, базирующихся на MicrosoftOffice, VisualBasicScript (VBScript), дает в руки тех, кто создает Internet-приложения, аналогичный по мощности инструмент.

VBScript является простым подмножеством VisualBasicforApplication и, следовательно, полностью с ним совместим. Все эти три продукта можно рассматривать следующим образом: VisualBasic - полная интегрированная среда разработки, VisualBasicforApplication - инструмент для создания приложений, работающих в рамках MicrosoftOffice, VBScript - инструмент для написания приложений, функционирующих в программах, работающих в Internet.

VBScript позволяет разрабатывать клиентские приложения, автоматически загружаемые вместе с Web-страницей. Затем скрипты могут выполняться на клиентской ЭВМ как обычные программы. VBScript был разработан для применения в корпоративных Интранет-сетях как средство для создания приложений клиент-сервер. VBScript поддерживается броузером InternetExplorer, начиная с версии 3.0 на платформах Macintosh и Windows.

PERL

Объектно-ориентированный язык PERL (PracticalExtractionandReportLanguage) является переносимым, интерпретируемым языком, хорошо приспособленным для фильтрации и преобразования текста. Интерпретаторы PERL являются бесплатными программными продуктами. PERL находит широкое распространение в Internet в среде UNIX. Предшественники PERL - редактор sed и утилита awk. Язык в определенной части похож на С, но имеет и существенную специфику.

Язык PERL представляет программисту широкий спектр возможностей:

  • ассоциативные массивы;

  • автоматическое преобразование типов;

  • автоматическое изменение размера массивов;

  • поддержка регулярных выражений для разбора текста;

  • файловый ввод/вывод;

  • форматированный вывод с генерацией отчетов на основе шаблонов;

  • функции обработки списковых структур данных;

  • сетевые операции по сокетам.

Основное назначение PERL в Internet связано с разработкой серверных приложений на основе CGI.

Tcl/Tk

Пакет Tcl/Tk (ToolCommandLanguage / ToolKit) состоит из языка Tcl и Tk - средства для работы с библиотеками виджетов. Язык Tcl - это интерпретируемый язык сценариев, особенно удобный при написании пользовательских интерфейсов программ. В отличие от тяжеловесного Motif, Tcl/Tk может обходиться без C/C++.

Tcl разработан в SunMicrosystems, ориентирован на сетевые применения, платформно-независим (работает на всех Windows, Macintosh и Solaris 2.x) и имеет мощные механизмы защиты (тиклеты могут исполняться в безопасном окружении Safe-Tcl). Tcl/Tk будет работать в паре с Java, а не с C++. Tcl по применению расположится рядом с VisualBasic, а Tk, соответственно, рядом с ActiveX.

Sun выпустила семейство программ для работы с технологией Tcl/Tk. В основной пакет Tcl7.5 Tk4.1 входят две программы: оболочка командного интерпретатора SHELL и графический интерфейс разработки Wish, библиотека и документация. Наиболее популярен модуль расширения к NetscapeNavigator. Для работы он не требует пакета Tcl7.5 Tk4.1, при этом пользователь может не только исполнять тиклеты в окне NetscapeNavigator, но и встраивать Tcl-сценарии в свои Web-страницы. Мощная среда разработки графических интерфейсов SpecTcl (вместе cSpecJava) для работы требует пакет Tcl7.5 Tk4.1.

Редактор для гипертекстовой графики WebTkImagemapEditor для работы требует пакет Tcl7.5 Tk4.1. Компактный полнофункциональный HTTP-сервер TclWebServer целиком написан на Tcl (около 1000 строк кода), работает с CGI и использует безопасный режим SafeTcl.

Технологии программирования

«Технология — совокупность методов обработки, изготовления, изменения состояния, свойств, форм сырья, материала или полуфабриката в процессе производства или наука о способах воздействия на сырье, материалы или полуфабрикаты соответствующими орудиями производства» (Словарь иностранных слов). Приведем более подходящее определение. «Технология — это способ реализации людьми конкретного сложного процесса путем разделения его на систему последовательных взаимосвязанных процедур и операций, которые выполняются более или менее однозначно и имеют целью достижение высокой эффективности. Под процедурой понимается набор действий (операций), посредством которых осуществляется тот или иной главный процесс (или его отдельный этап), выражающий суть конкретной технологии, а операция — это непосредственное практическое решение задачи в рамках данной процедуры, т. е. однородная логически неделимая часть конкретного процесса». В нашем случае технология должна поддерживать все три этапа работы программиста, о которых речь шла выше, ибо технология в данном случае есть искусство, мастерство изготовления, конструирования систем обработки данных. Обычно, когда говорят о технологиях программирования, то имеют в виду этап разработки программ, первый и третий этапы не рассматриваются. Действительно, можно считать этот этап решающим, качественный выход на этом этапе обеспечивает достаточную простоту третьего этапа. Его часто трактуют как этап сопровождения, но мы вкладываем более широкий смысл — эволюционное изменение системы обработки данных. 2. Поговорим о простых и сложных программах. Первые имеют ограниченную область применения, разработаны и сопровождаются одним человеком. Они могут быть профессионально изготовлены, но так или иначе они обозримы, и их сложность не превышает интеллектуальные возможности человека. Но не все программы простые. Программы управления железнодорожными или воздушными сообщениями, системы управления базами данных, обеспечивающих параллельный доступ многих пользователей и т. д. — это другой класс программ по уровню их сложности. Считается, что сложность программ отнюдь не случайное свойство, скорее необходимое. Где пролегает граница между простым и сложным? Обычно сложность программ определяется количеством операторов исходного текста программы. Это условная градация, простая количественная мера, которую можно принять в качестве первого приближения. Известны разработки программ с менее 10000 операторами исходного текста, относящиеся по выполняемым функциям к сложным и даже сверхсложным (табл1). Таблица 1 Программа Количество операторов исходного текста (до) Простая 1 000 Средней сложности 10000 Сложная 100000 Сверхсложная 1 000 000 Гиперсложная 10 000 000 и более Ограничимся интуитивным пониманием простого и сложного. Философский анализ этих понятий применительно к программам — предмет отдельного разговора. Отметим еще одну особенность больших программ. Они имеют тенденцию к эволюции в процессе их использования. Это часто называют сопровождением, но сопровождение есть устранение ошибок, а эволюция подразумевает внесение в программу изменений, обусловленных изменяющимися требованиями к ней. Как «бороться» со сложностью? Принцип известен со времен древних греков — «разделяй и властвуй». Сложную задачу следует разделить на взаимосвязанные подзадачи. Последние в свою очередь опять разделяются на свои подзадачи — и т. д. Зачем? Во-первых, сложная задача (проблема, система) описывается некой иерархической структурой, во-вторых, определяются принципы ее декомпозиции и, в-третьих, так как каждый уровень — это определенный уровень абстрагирования, создается инструментарий для описания абстракций. Иерархия — это ранжированная, или упорядоченная, система абстракций, расположение частей или элементов целого в порядке от высшего к низшему. В результате деятельности программиста создается иерархическая структура из абстракций, а «абстракция — это такие существенные характеристики некоторого объекта, которые отличают его от всех других видов объектов и, таким образом, четко определяют особенности данного объекта с точки зрения дальнейшего рассмотрения и анализа». Г. Бруч разделяет абстракцию сущности объекта — объект представляет собой модель существенных сторон предметной области и абстракцию поведения — объект состоит из обобщенного множества операций, каждая из которых выполняет определенную функцию. Другими словами, сущность объекта мы описываем на уровне данных в программе, а поведение — действиями над этими данными. Выскажем еще один тезис. На наш взгляд, программа — это не что иное, как модель реальной действительности, реальной задачи, причем динамическая модель. 3. Коснемся истории развития технологий программирования. Операциональное программирование Этот этап развития технологий программирования характерен для ЭВМ первого поколения (с 1945 по 1959 год). Быстродействие ЭВМ этого поколения до 50 тысяч арифметических операций, объем оперативной памяти в лучшем случае несколько килобайтов ячеек. Ресурсы минимальны. Если сравнивать эти характеристики ЭВМ с современными компьютерами: быстродействие — миллиарды операций в секунду, объемы памяти — мегабайты, — то различие поразительно. ЭВМ того времени понимала только цифровые команды, и программа состояла из множества строк, состоящих из цифр, интерпретируемых центральным процессором. Например, 05 825 631 трактовалось как команда сложения двух чисел (код 05), записанных в ячейки с номерами 825 и 631. Минимальные ресурсы ЭВМ требовали строжайшей экономии оперативной памяти и эффективных алгоритмов обработки. Программа по взаимосвязи составных частей напоминала «спагетти». Надо отдать должное программистам того времени. Производительность их труда была очень низкая, так как им вручную необходимо было распределить все переменные своей программы в оперативной памяти (!). Следующий этап развития технологий программирования мало отличается от первого. Он связан с ЭВМ второго поколения. Появились языки программирования типа ассемблера и автокода. Теперь команда сложения записывалась с использованием мнемоники — ADD (английское сложить) PR1, ZET, где ADD — код команды, PR1, ZET — имена ячеек. Перевод программы (трансляция), записанной таким образом, в цифровое представление, а только такое понимает ЭВМ, осуществлялся с помощью специальных программ, называемых ассемблерами. Чем характеризуется этот этап развития технологий? Первый и третий этапы работы программиста не обсуждаются. Программа «собирается» из мелких деталей, отдельных операций и имеет достаточно простую структуру. Уровень абстрагирования — отдельное действие, принципы декомпозиции задачи отсутствуют, во всяком случае, о них не говорят. Существует разрыв между требованиями практики и возможностями программирования. Круг решаемых с помощью ЭВМ задач достаточно ограничен — в основном расчетные задачи. Третье поколение ЭВМ (именно к этому поколению относится известная — IBM/360) отличило использование интегральных схем. Большую роль начинают играть операционные системы, на которые возлагаются задачи управления работой компьютера. Операционные системы — ядро системного программного обеспечения. Развиваются языки программирования высокого уровня. Если первые версии FORTRAN I, ALGOL-58 обеспечивали запись математических формул и не более, то в новом поколении языков реализуются новые идеи: подпрограммы и раздельная компиляция (FORTRAN II); блочная структура и типы данных (ALGOL-60); описание данных и работа с файлами (COBOL); обработка списков и указатели (Lisp). В следующих версиях языков продолжается развитие: PL/1 (FORTRAN+ALGOL+COBOL), ALGOL-68 (преемник ALGOL-60), Pascal (развитие ALGOL-60), Simula (классы, абстрактные данные). Возможности языков программирования обеспечивают поддержку нисходящей технологии конструирования программ. Суть нисходящего конструирования программ состоит в разбивке большой задачи на меньшие подзадачи, которые могут рассматриваться отдельно. Основными правилами для успешного применения данной технологии являются: формализованное и строгое описание программистом входов функций и выходов всех модулей программы и системы; согласованная разработка структур данных и алгоритмов; ограничение на размер модулей. Нисходящая технология разработки программ не есть свод жестких правил, скорее это основной принцип, допускающий вариации в соответствии с конкретными особенностями решаемой задачи. В свое время в обширной литературе по этому поводу говорилось и о восходящей технологии. В этом случае решение (программа) как бы «складывалось из отдельных кирпичиков», из известных решений подзадач. Таким образом, данной технологией оговаривается определенный принцип декомпозиции и иерархическая структура программы. Важнейшей составляющей этой технологии является структурное программирование (языки программирования Паскаль, Модула-2). Профессор Э. Дейкстра был первым инициатором структурного программирования. В 1965 году он высказал предположение о том, что оператор GOTO мог бы быть исключен из языков программирования. Разумеется, структурное программирование представляет собой нечто большее, чем один лишь отказ от оператора GOTO. Структурное программирование — это некоторые принципы написания программ. Теоретическими основаниями структурного программирования являются: формальные системы теории вычислимости (операторные схемы программы А. А. Ляпунова, системы Поста, алгоритмы Маркова, исчисление Черча); анализ программ по нисходящей схеме, декомпозиция, основанная на разбивке задач по уровням. В классической работе Бома и Джакопини показано, что такая структура (иерархическая, разбитая на уровни) может быть реализована в языке, включающем только ограниченное число управляющих конструкций. Для реализации программ требуются три основных составляющих блока, которые показаны ниже. а) Функциональный блок или конструкция следования: б) Конструкция обобщенного цикла: в) Конструкция принятия двоичного или дихотомического решения: Характерные черты структурного стиля программирования: простота и ясность (программа легко читается и анализируется); использование только базовых конструкций; отсутствие сетевых структур в программе; отсутствие многоцелевых функциональных блоков; отсутствие неоправданно сложных арифметических и логических конструкций; расположение в строке программы не более одного оператора языка программирования; содержательность имен переменных. При этом процесс нисходящей разработки программы может продолжаться до тех пор, пока не будет достигнут уровень «атомарных» блоков, т. е. базовых конструкций (присваивания, if-then-else, do-while). Итак, если формулировать суть в сжатом виде, то в структурном программировании уточнен принцип декомпозиции задачи (в основном ее алгоритмического аспекта, управляющей компоненты, т. е. действий, однако уровень интеграции действий и данных «на совести» разработчика) и сделана попытка его строгой формализации. К нисходящей технологии следует отнести и то, что называется модульным программированием. Достаточно независимые фрагменты задачи оформляются как модули. Создаются библиотеки модулей, определяется механизм включения модулей в разрабатываемую программу. Модуль должен иметь строго определенный интерфейс и скрытую часть, одну точку входа и одну точку выхода. Из фольклора computer science — «модульность в программировании подобна честности в политике: каждый утверждает, что она — одно из его достоинств, но кажется, никто не знает, что она собой представляет, как ее привить, обрести или добиться». Дополнение. Следует отметить еще одно важное обстоятельство. В информатике существовали и существуют как бы два программирования: теоретическое и практическое. Естественно, без теоретического программирования не было бы практического, но если строго следовать первому, то любую часть программы следует строить математическими методами, доказывая правильность ее работы. Вопросы взаимного влияния этих подходов — предмет отдельного обсуждения. В данном учебнике речь идет в основном о практическом программировании. Однако следует отметить, что теоретическое программирование оказывает большое влияние на становление и развитие технологий практического программирования. ВЫВОДЫ. Структурная технология предоставляет в распоряжение разработчиков строгие формализованные методы описания программ и принимаемых технических решений. При этом использовалась наглядная графическая техника (схемы, диаграммы). Однако труд этот не был автоматизирован, а вручную невозможно разработать и графически представить строгие формальные спецификации программы, проверить их полноту и непротиворечивость и тем более изменить. Программы имеют последовательную структуру, идеи Э. Дейкстры реализованы в полной мере, что определило новый этап в развитии технологий. Но, несмотря на возможность конструирования структур данных различной сложности, данные и действия над данными по-прежнему разделены. Разрыв между потребностями практики и возможностями разработки (по времени, надежности, возможности внесения изменений на стадии эксплуатации) сложных программ в пределах данной технологической схемы сохранялся. Образная формулировка сути этого разрыва заключается в том, что «мы не знаем, как этого достичь, у нас нет инструментария для обеспечения процесса правильной разработки программы, но так примерно должна работать эта программа». Компьютеры четвертого поколения конструируются на основе больших интегральных схем (БИС) и сверхбольших (СБИС). Персональные компьютеры определяют лицо компьютеров этого поколения. Скорости обработки велики, так же как и объемы оперативной памяти. Технологии программирования, сделав виток, возвращаются на новом уровне развития к «детской игре в кубики». Если в период первого, второго поколений программа «собиралась» из отдельных операций, то на новом этапе развития программа собирается из объектов — кубиков, интегрирующих в единое целое данные и допустимые действия над этими данными — суть объектно-ориентированное программирование. Объектно-ориентированные языки программирования (языки программирования Турбо Паскаль, начиная с версии 5.5,Смоллток, C++) характеризуются тремя основополагающими идеями: инкапсуляцией, наследованием, полиморфизмом. Инкапсуляция. Сочетание данных с допустимыми действиями над этими данными приводит к «рождению» нового элемента в конструировании программы — объекта. «Рожденный ползать — летать не может» — и наш объект действует только так, как это в нем заложено, и только над тем, что в нем описано. Обращение к данным объекта не через его действия недопустимо. Наследование. Программист для решения определенного класса задач строит иерархию объектов, в которой, и это самое главное, каждый следующий производный объект имеет доступ (наследует) к данным и действиям всех своих предшественников («прародителей»). Характер связей между объектами вертикальный. Полиморфизм. Выделение некоторого действия, т. е. действие должно иметь имя, и создание средств использования действия объектами иерархии. Причем каждый объект реализует это действие так, как оно для него подходит. Например, есть множество геометрических фигур, образующих иерархию. Действие — перемещение по экрану. Мы видим «скачок» в технологии программирования, впервые действия и данные образуют нечто единое - новый уровень абстрагирования. Для характеристики объектно-ориентированной технологии проектирования программ обратимся к классической работе Г. Бруча. Этой технологии присущи определенные принципы абстрагирования и декомпозиции. Задача описывается некой иерархической структурой из классов. Основным инструментом построения такой структуры является реализация концепции наследования. Наследование означает такое соотношение между классами, когда один класс использует структурную или функциональную часть одного или нескольких других классов (соответственно простое и множественное наследование). Иными словами, наследование — это иерархия абстракций, в которой подклассы наследуют строение от одного или нескольких суперклассов. Логическое завершение в объектно-ориентированных системах получила концепция типизации, которая строится на понятии типов абстрактных данных. «Тип — это точное определение свойств строения или поведения, которое присуще некоторой совокупности объектов». При этом возможно определение как статических, так и динамических связей. Например, Турбо Паскалю присуща строгая типизация данных, при которой осуществляется контроль на соответствие типам данных. При этом связи статичны во времени — имена связываются с типами во время компиляции, и связь не изменяется во время работы программы. В объектно-ориентированных средах возможна динамическая связь. Это означает ситуацию, когда тип всех переменных и выражений определяется только во время исполнения программы. Это позволяет реализовать идею полиморфизма. Данное свойство является самым существенным в объектно-ориентированном программировании наряду со свойством реализации абстракций. Именно это свойство отличает объектно-ориентированное программирование от более традиционных методов программирования с использованием типов абстрактных данных. ВЫВОДЫ. Развитие технологии привело к созданию методов объектно-ориентированного анализа. Он мало отличается от структурного анализа. Если раньше результатом работы было алгоритмически-ориентированное решение задачи, то на настоящем этапе — это определение основных объектов и взаимодействий между ними. Первый этап работы программиста по-прежнему плохо формализован и не обеспечен необходимой поддержкой. На втором этапе за счет интеграции данных и действий над данными (инкапсуляции), строгого определения принципов декомпозиции (наследование и полиморфизм, модульность), ограничения доступа к данным объекта появилась возможность создания более надежных и качественных программ. Этапы тестирования и сопровождения упростились. Они в большей степени становятся инженерной работой. Структура конечного продукта (программы) последовательная, как и, в целом, процесс его разработки. Потребности практики по-прежнему не соответствуют имеющимся возможностям. Интенсивно развиваются сетевые технологии, системы обработки текстовой информации, мультимедийные программные системы и т. д.

Прикладное ПО:

Прикладным называется ПО, предназначенное для решения определенной целевой задачи из проблемной области. Часто такие программы называют приложениями. Спектр проблемных областей в настоящее время весьма широк.

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

К типовому прикладному ПО относят следующие программы:

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

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]