«УТВЕРЖДАЮ Зав. кафедрой АСУ, профессор А.М. Кориков СОВРЕМЕННЫЕ КОМПЬЮТЕРНЫЕ ТЕХНОЛОГИИ Учебное пособие теория, самостоятельная и индивидуальная работа студента Учебное пособие для студентов уровня основной ...»
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение высшего
профессионального образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ»
УТВЕРЖДАЮ
Зав. кафедрой АСУ, профессор А.М. Кориков
СОВРЕМЕННЫЕ КОМПЬЮТЕРНЫЕ ТЕХНОЛОГИИ
Учебное пособие теория, самостоятельная и индивидуальная работа студента Учебное пособие для студентов уровня основной образовательной программы магистратура направления подготовки 010400.68 «Прикладная математика и информатика»профиля Математическое и программное обеспечение вычислительных комплексов и компьютерных сетей Разработчик доцент кафедры АСУ В.Г. Резник Резник В.Г.
Современные компьютерные технологии. Теория, самостоятельная и индивидуальная работа студента: Учебное пособие. – Томск, ТУСУР, 2012. – 64с.
Учебное пособие предназначено для изучения магистрами второго года обучения теоретического материала в формате лекций, а также самостоятельной и индивидуальной работы по дисциплине «Современные компьютерные технологии» на уровне основной образовательной программы магистратура направления подготовки 010400.68 «Прикладная математика и информатика»
профиля «Математическое и программное обеспечение вычислительных комплексов и компьютерных сетей».
СОДЕРЖАНИЕ
ВВЕДЕНИЕ …………………………….…………
1 СОСТОЯНИЕ И ТЕНДЕНЦИИ РАЗВИТИЯ СОВРЕМЕННЫХ КОМПЬЮТЕРНЫХ
ТЕХНОЛОГИЙ …1.1 Идейные парадигмы и развитие аппаратных средств компьютеров …
1.2 Многоуровневая организация ВТ и автоматизированное управление …
1.3 Распределенные системы и идеи «виртуализации» …
1.4 Рекомендуемая литература для самостоятельной подготовки …
1.5 Вопросы для самостоятельного контроля знаний …
2 ВЫЧИСЛИТЕЛЬНЫЕ ТЕХНОЛОГИИ …
2.1 Парадигма вычислительной технологии …
2.2 Технологии расчетов и моделирования …
2.3 Интегрированные системы научных и инженерных расчетов …
2.4 Рекомендуемая литература для самостоятельной подготовки …
2.5 Вопросы для самостоятельного контроля знаний …
3 ТЕХНОЛОГИИ ХРАНЕНИЯ ИНФОРМАЦИИ …
3.1 Парадигма информационного подхода …
3.2 Инструментальные средства хранения данных …
3.3 Системы и технологии проектирования БД …
3.4 Рекомендуемая литература для самостоятельной подготовки …
3.5 Вопросы для самостоятельного контроля знаний …
4 ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ ТЕХНОЛОГИИ …
4.1 Парадигма объектного подхода …
4.2 Виртуальные машины и технологии …
4.3 Инструментальные средства разработки …
4.4 Рекомендуемая литература для самостоятельной подготовки …
4.5 Вопросы для самостоятельного контроля знаний …
5 ОФИСНЫЕ ТЕХНОЛОГИИ …
5.1 Офисный набор приложений …
5.2 Системы документооборота …
5.3 Интеграция офисных приложений и СУБД …
5.4 Рекомендуемая литература для самостоятельной подготовки …
5.5 Вопросы для самостоятельного контроля знаний …
6 ТЕХНОЛОГИИ АВТОМАТИЗИРОВАННОГО УПРАВЛЕНИЯ …
6.1 Компьютерные технологии в промышленности …
6.2 CALS-технологии …
6.3 Промышленные шины предприятия …
6.4 Рекомендуемая литература для самостоятельной подготовки …
6.5 Вопросы для самостоятельного контроля знаний …
7 ТЕХНОЛОГИИ ВЗАИМОДЕЙСТВИЯ ОТКРЫТЫХ СИСТЕМ …
7.1 Парадигма взаимодействия открытых систем …
7.2 Компьютерные сети и телекоммуникации …
7.3 Интеграция сетевых и объектно-ориентированных технологий …
7.4 Рекомендуемая литература для самостоятельной подготовки …
7.5 Вопросы для самостоятельного контроля знаний …
8 СЕРВИСНЫЕ ТЕХНОЛОГИИ …
8.1 Парадигма сервисных технологий …
8.2 WWW-технологии и проект SOA …
8.3 Облачные вычисления и «виртуализация» …
8.4 Рекомендуемая литература для самостоятельной подготовки …
8.5 Вопросы для самостоятельного контроля знаний …
9 ИНТЕЛЛЕКТУАЛЬНЫЕ СИСТЕМЫ И ТЕХНОЛОГИИ …
9.1 Интеллектуальные информационные технологии …
9.2 Системы искусственного интеллекта …
9.3 Робототехника …
9.4 Рекомендуемая литература для самостоятельной подготовки …
9.5 Вопросы для самостоятельного контроля знаний …
10 САМОСТОЯТЕЛЬНАЯ И ИНДИВИДУАЛЬНАЯ РАБОТА СТУДЕНТОВ ….................. 10.1 СРС по учебной теме 1
10.2 СРС по учебной теме 2
10.3 СРС по учебной теме 3 …
10.4 СРС по учебной теме 4 …
10.5 СРС по учебной теме 5 …
10.6 СРС по учебной теме 6
10.7 СРС по учебной теме 7
10.8 СРС по учебной теме 8
10.9 СРС по учебной теме 9
10.10 Список тем для курсового проектирования …
ВВЕДЕНИЕ
Рассматриваемое учебное пособие содержит теоретический материал, необходимый для изучения дисциплины «Современные компьютерные технологии» (СКТ), а также методические рекомендации по самостоятельной и индивидуальной работе студентов.Данное учебное пособие опирается на учебный план основной образовательной программы магистратура направления подготовки 010400.68 «Прикладная математика и информатика» профиля «Математическое и программное обеспечение вычислительных комплексов и компьютерных сетей». Согласно этому плану, студент-магистрант проходит лекционный курс обучения в объеме 18 часов, проводит лабораторные работы в объеме часов, получает прикладные навыки на практических занятиях в объеме 18 часов и завершает обучение по данной дисциплине, выполняя курсовую работу (проект).
Необходимость написания данного учебного пособия обусловлена требованиями Федерального Государственного образовательного стандарта высшего профессионального образования (ФГОС ВПО) третьего поколения, утвержденного Приказом Министерства образования и науки Российской Федерации от 20 мая 2010 г. N 545. Эти требования, при ограниченных временных ресурсах на обучение, ставят необходимым систематизацию большого количества теоретического материала по современным технологиям, который, в основном, содержится в журнальных публикациях или на специализированных сайтах сети Интернет. Если еще учесть требование, что не менее 40% лекционного времени должно отводится на интерактивное общение студентов и преподавателя, то повышенные требования к темпам самостоятельной подготовки студента обосновывают создание учебного пособия, способного обеспечить такую работу.
Поскольку высокие требования ФГОС ВПО предъявляет к практическим навыкам обучающихся, то все учебные работы по дисциплине, включающие лабораторные работы, практические занятия и курсовое проектирование, проводятся на базе «Учебного программного комплекса кафедры АСУ» (УПК АСУ), созданного на основе операционной системы (ОС) Linux дистрибутива Xubuntu. Данный УПК входит в состав вычислительного комплекса кафедры АСУ, включающего в себя распределенный доступ к общим файловым ресурсам кафедры и вычислительным средствам компьютерного кластера кафедры.
Последовательность и изложение материала данного учебного пособия предполагает, что студент:
• успешно изучает теоретическую часть данного курса;
• успешно осваивает практические навыки работы с вычислительными технологиями • проводит систематическую предварительную самостоятельную работу по разделам • завершает отдельные разделы обучения подготовкой письменных отчетов и защитой курсового проекта на уровне дифференцированного зачета.
Данное учебно пособие содержит десять разделов, девять из которых содержат обзоры теоретический части курса, включающие рекомендуемую литературу для самостоятельной подготовки, а также вопросы для самостоятельного контроля знаний. Последний, десятый раздел, содержит методические рекомендации по каждому из предыдущих разделов, а также список тем для курсового проектирования обучающихся по данной дисциплине.
Вся методическая последовательность изложения теоретического материала данного курса, представленного со второго по девятый разделы, отражают концептуальные взгляды автора на историческую последовательность зарождения и развития современных компьютерных технологий. Не претендуя на строгую научность, подобный субъективный подход позволяет провести осмысленную укрупненную систематизацию самих технологий по мере того, как эти технологии стали активно проявляться в современном социуме.
Первая раздел данного учебного пособия является введением в теоретическую часть данной дисциплины. В нем отражены цели и задачи дисциплины, а также выделены основные наиболее значимые идейные парадигмы, которые реализуются современными компьютерными технологиями.
Второй раздел посвящен вычислительным технологиям, которые являются идейными представлениями «классических технологий» применения средств вычислительной техники.
Третий раздел пособия раскрывает технологии, которые существенно расширили горизонты возможного применения ЭВМ. Хранение информации, как самостоятельного продукта ЭВМ, с возможностью их последующего широкого использования в обществе, дало новый толчек идеям, которые сейчас известны как информационные технологиями.
Четвертый раздел описывает объектно-ориентированные технологии, которые окончательно перевели технологии обработки информации в статус производственных технологий. Информационные объекты стали продуктом, который можно производить, продавать и потреблять.
Пятый раздел дает описание офисных технологий как базового элемента применения ЭВМ на новом уровне индивидуального и коллективного использования вычислительной техники. Появляется основа для интеграции различных технологий и массовое их применение.
Шестой и седьмой разделы можно изучать в любом порядке. Сложно отделить автоматизацию производства от технологий применения сетей ЭВМ. Выбранная последовательность обоснована тем, что современное производство интегрирует в себе все достижения предыдущих технологий и, одновременно, является заказчиком этих технологий.
С другой стороны, технологии взаимодействия открытых систем, из второстепенных идейных и технологических средств по объединению компьютеров, превратились в общую самостоятельную парадигму применения других информационных технологий, а также порождают самостоятельные технологические направления применения ЭВМ.
Восьмой раздел содержит описание отдельных наиболее значимых аспектов современных достижений компьютерных технологий и тенденций их развития. На данном уровне объектами производства выступают уже не отдельные информационные объекты, целые информационные технологии. Налицо попытка монополизировать отдельные компьютерные технологии с целью их последующего коммерческого использования.
Наконец, девятый раздел посвящен интеллектуальным системам и технологиям. Хотя работы в этом направлении ведутся достаточно давно, следует признать, что многие достижения здесь ждут своего расцвета, когда появятся сопутствующие технологии адекватные поставленным задачам.
1 СОСТОЯНИЕ И ТЕНДЕНЦИИ РАЗВИТИЯ
СОВРЕМЕННЫХ КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ
Целью дисциплины является изложение накопленных знаний по современным компьютерным технологиям, отражающим достижения науки и техники в области развития вычислительной техники и программного обеспечения. Совокупность этих знаний отражена в большом количестве публикаций распределенных по различным журнальным статьям или электронным ресурсам специализированных сайтов Интернет. Тем не менее, у обучающихся должны быть сформированы в данной области знаний как общекультурные, так и профессиональные компетенции. И хотя сами компетенции выражены достаточно абстрактно, их следует знать максимально конкретно.Общекультурные компетенции (ОК):
• способностью использовать углубленные теоретические и практические знания в области прикладной математики и информатики (ОК-3);
• способностью самостоятельно приобретать с помощью информационных технологий и использовать в практической деятельности новые знания и умения, в том числе, в новых областях знаний, непосредственно не связанных со сферой деятельности, расширять и углублять свое научное мировоззрение (ОК-4);
• способностью порождать новые идеи и демонстрировать навыки самостоятельной научно-исследовательской работы и работы в научном коллективе (ОК-5);
• способностью совершенствовать и развивать свой интеллектуальный и общекультурный уровень, добиваться нравственного и физического совершенствования своей личности (ОК-6);
Профессиональные компетенции (ПК):
• способностью разрабатывать концептуальные и теоретические модели решаемых научных проблем и задач (ПК-2);
• способностью углубленного анализа проблем, постановки и обоснования задач научной и проектно-технологической деятельности (ПК-3);
• способностью разрабатывать аналитические обзоры состояния области прикладной математики и информационных технологий по профильной направленности ООП магистратуры (ПК-10).
Обобщая основную цель обучения данного курса, можно четко сформулировать, что в результате изучения дисциплины обучающийся должен:
• Знать основные парадигмы обработки информации, формирующие современные компьютерные технологии; историческое развитие концепций обработки информации;
примеры конкретных систем, демонстрирующих последние достижения в области компьютерных технологий.
• Уметь использовать современные интегрированные офисные технологии и системы разработки программного обеспечения.
• Владеть инструментальными средствами, предоставляемыми современными компьютерными системами и комплексами.
Исходя из этих целей, можно определить, что задачей дисциплины является формирование у обучающихся теоретических представлений о парадигмах и технологиях использования вычислительной техники в современном обществе, а также приобретение ими навыков использования современных технологий на практике.
Решение этой задачи достигается комплексным применением следующих подходов:
изучением теоретической части дисциплины в объеме 18 часов;
выполнением лабораторных работ в объеме 36 часов;
проведением практических занятий в объеме 18 часов;
индивидуальной разработкой курсового проекта (работы) в пределах 8 часов аудиторных занятий.
Теоретическая часть данного раздела излагает следующие вопросы:
Идейные парадигмы компьютерных технологий в их органической связи с технологическими достижениями в плане развития аппаратных средств ЭВМ.
Идеи многоуровневой организации вычислительных систем в проекции задач автоматизации и автоматического управления.
Идеи построения распределенные систем обработки данных совмещенных с идеями «виртуализации».
Большое количество компьютерных технологий, которые нам демонстрируют реклама и Интернет, скрывают и искажают как научную, так и практическую значимость современных технологических достижений в области применения средств вычислительной (цифровой) техники. Следует различать идейную часть технологий, которая является основой для формирования парадигм развития технологий на определенный исторический период времени, и современные технологии, которые определяют последние достижения промышленности или являются уже неотъемлемой частью современного социума.
Первая, идейная часть, создается как отражение кризисного состояния текущего момента развития технологий с целью создания перспективного вектора движения к новым достижениям.
Вторая, реализованная часть технологий, служит мерой технологических достижений социума и базой для его дальнейшего развития.
Чтобы адекватно ориентироваться во всем многообразии современных компьютерных технологий, сначала ограничимся рассмотрением только цифровых вычислительных систем, а затем выберем критерии классификации, по которым будем сравнивать и упорядочивать отдельные технологии. Количество таких критериев должно быть небольшим и они должны быть наиболее значимыми в текущий момент времени.
Чтобы не впадать в крайности и не вызывать справедливый огонь критики, в качестве критериев выберем некоторые аспекты тенденций, присущих текущему развитию технологий. Эти аспекты следующие:
1. Исторический аспект развития компьютерных технологий (КТ), отражающий их временную компоненту развития;
2. Модульный аспект создания КТ, отражающий общие закономерности создания сложных систем;
3. Централизующий аспект тенденций модификации КТ, отражающий диалектическую противоположность модульному аспекту, в плане более длительного временного цикла развития.
Исторический аспект развития КТ отражает изменение во времени идейных парадигм этих технологий. Очевидно, что новые парадигмы возникали в моменты кризисных ситуаций, требующих существенного изменения теоретических представлений на подходы к созданию технических и программных средств цифровой вычислительной техники. С другой стороны, известные технологические революции в создании аппаратных средств компьютеров, известные как переход от релейной и ламповой технологий к полупроводниковой элементной базе, а затем к микросхемам, сами по себе обеспечили появление и реализацию на практике новых парадигм. Такое положение дел привело к тому, что новые технологии стали порождать другие технологии. В результате компьютерные технологии стали менять качество, становиться популярными и проникать во все сферы социума.
Рассматривая развитие КТ в историческом аспекте, можно легко выделить последовательность следующих технологических достижений [1 - 9]:
• Вычислительные технологии, — когда компьютер рассматривался как мощный калькулятор, способный обеспечить решение многих расчетных задач.
• Технологии хранения информации, — когда потребности работы, в первую очередь со сложными экономическими моделями, потребовали технологии проектирования предметной области данных для вычислений, а затем и создание технологий управления этими данными (СУБД).
• Объектно-ориентированные технологии возникли как закономерное изменение концептуальной основы программирования при создании все более сложных программных систем.
• Технологии автоматизированного управления стали естественным интегратором предшествующих технологий, которые обеспечили промышленное производство управленческим аспектом КТ и обеспечили себе экономическую основу развития.
• Технологии взаимодействия открытых систем, после ряда существенных модификаций, заняли самостоятельное место как базовая основа современных технологических решений вычислительных проектов.
• Офисные технологии интересны тем, что они обеспечили массовое внедрение персональных КТ.
• Сервисные технологии отражают новое качество, демонстрирующее собой массовые общественные КТ, а также новые качественные тенденции применения этих КТ, изменяющие первоначальную тенденцию разделения вычислительных систем на их объединение на коммерческой основе.
• Интеллектуальные системы и технологии отражают собой современное и будущее компьютеризованное сообщество социума.
Перечисленная выше последовательность технологических достижений достаточно точно отражает временной характер практической актуализации соответствующих идей и принята за основу при изложении теоретического материала данного учебного пособия.
Единственное исключение сделано для офисных технологий, описание которых перенесено с шестой позиции на четвертую. Это сделано из методических соображений для более полного согласования теоретического материала и практических работ по данному курсу.
Модульный аспект создания компьютерных технологий отражает общие тенденции изменений, присущие развитию сложных систем.
Поскольку развитие любой системы, связанное с увеличением числа ее элементов, порождает как минимум n! бинарных отношений, то увеличение числа этих отношений создает проблемы, которые разрешаются двумя основными способами:
1. потребности управления одних элементов другими, приводит к вертикальной декомпозиции системы на уровни подчинения;
2. потребности специализации внутри уровня, приводят к выделению подсистем по модальностям некоторого общего признака.
Таким образом, данный аспект является крайне важным при анализе всех КТ.
Централизующий аспект тенденций модификации КТ является важнейшим фактором современности. Его значение обусловлено двумя причинами:
• общественная значимость и сложность сопровождения технологических систем, которая не может обслуживаться малыми организационными структурами;
• стремление корпоративных и государственных монополизировать ведущие технологии с целью максимального извлечения экономической или политической Подобные тенденции обязательно должны учитываться при анализе и последующем использовании соответствующих КТ.
1.2 Многоуровневая организация ВТ и автоматизированное управление С тех пор, как академик В.М. Глушков показал, что в любом устройстве обработки информации можно выделить операционный и управляющий автоматы, соединенные каналами обратной связи, идеи модульного построения ЭВМ стали активно внедряться в практические реализации.
В соответствии с принципом модульности, ЭВМ стала представляться иерархической многоуровневой системой, состоящей из множества виртуальных машин со своим языком программирования. Классическая 6-уровневая архитектура такой ЭВМ показана на рис. 1.1.
Рис. 1.1. Классическая многоуровневая архитектура ЭВМ Здесь, уровень 0 – это аппаратное обеспечение машины. Это – цифровой логический уровень, объектами которого являются вентили.
Сами вентили состоят из аналоговых компонентов, таких как транзисторы, но они могут быть точно смоделированы как цифровые устройства. Каждый такой вентиль:
• имеет один или несколько цифровых входов (сигналов), представляющих 0 или 1;
• вычисляет простые функции таких сигналов как «И» или «ИЛИ».
Несколько вентилей формируют 1 бит памяти, который может содержать 0 или 1.
Биты памяти, объединенные в группы, например, 8, 16, 32 или 64, формируют регистры.
Каждый регистр может содержать одно двоичное число до определенного предела.
Из вентилей также может состоять сам компьютер.
В дальнейшем, многоуровневая организация стала широко применяться и в других технологиях. Например, хорошо известна 7-уровневая модель взаимодействия открытых систем (ВОС), ставшая международным стандартом для архитектуры сетевых технологий.
Другой пример, - 3-уровневая иерархическая модель АСУ, содержащая:
• верхний уровень — АСУП — АСУ предприятия;
• средний уровень — АСУПП — АСУ производственными процессами;
• нижний уровень — АСУТП — АСУ технологическими процессами.
1.3 Распределенные системы и идеи «виртуализации»
Первые технологии, ориентированные на парадигму вычислений, потребовали создание теоретических моделей, которые бы адекватно отражали существующие представления о возможностях применения ЭВМ. Такой моделью стала архитектура систем обработки данных (СОД), показанная на рис. 1.2.
Рис. 1.2. Классическая структура классификации систем обработки данных Характерной чертой модели СОД является разделение компьютерных архитектур на сосредоточенные системы, когда связь между ЭВМ рассматривается как часть самой компьютерной архитектуры, и распределенные системы, в которых отдельные ЭВМ или их части связаны средствами телекоммуникаций или сети.
Со временем, технические и программные средства развились настолько, что работа в сети перестала вызывать какие-либо технологические затруднения. Это сильно снизило «проблемность» создания распределенных систем и сделало актуальными проблемы другого качества. Одной из таких проблем является идея «виртуализации», которая предполагает, что доступ к вычислительным ресурсам в некоторой достаточно общей вычислительной системе осуществляется через заранее известные виртуальные (мнимые) адреса, реально не соответствующие конкретным физическим адресам.
Примером реализации такой идеи является технология «облачных вычислений», которая интенсивно рекламируется группой разработчиков при активном участии корпорации Microsoft.
1.4 Рекомендуемая литература для самостоятельной подготовки 1. Бройдо В.Л., Ильина О.П. Архитектура ЭВМ и систем: Учебник для вузов. – СПб.:
Питер, 2006. - 712с. (46 экз.) 2. Бройдо В.Л. Вычислительные системы, сети и телекоммуникации: Учебное пособие для вузов. – СПб.: Питер, 2006. - 702с. (30 экз.) 3. Таненбаум Э. Архитектура компьютера. – СПб.: Питер, 2007. - 843с. (1 экз.) 4. Гордеев А.В. Операционные системы: учебное пособие для вузов. СПб.: Питер, 2004. 415с. (17 экз.) 5. Гордеев А.В. Системное программное обеспечение: учебное пособие для вузов.
СПб.: Питер, 2001. 736с. (43 экз.) 6. Бойченко И.В. Программное обеспечение сетей ЭВМ. - Томск: ТМЦДО, 2005. - 294 с.
7. Достоверный и правдоподобный вывод в интеллектуальных системах : учебное пособие для вузов / В. Н. Вагин, Е. Ю. Головина, А. А. Загорянская, М. В. Фомина;
Ред. Д. А. Поспелов. - М. : Физматлит, 2004. - 704 с. (101 экз.) 8. Антамошин А. Н. Интеллектуальные системы управления организационнотехническими системами. - М. : Горячая линия-Телеком, 2006. - 160 с. (70 экз.) 9. Андрейчиков А.В. Интеллектуальные информационные системы: Учебник для вузов. М.: Финансы и статистика, 2006. - 423с. (20 экз.) 1.5 Вопросы для самостоятельного контроля знаний 1. Каковы идейные парадигмы, определяющие историческое развитие компьютерных технологий?
2. Каким образом проявляется технологическая революция развития аппаратных средств цифровой вычислительной техники?
3. Чем вызваны идеи многоуровневой организации компьютерных технологий?
4. В чем заключается различие подходов автоматического и автоматизированного управлений?
5. Каковы тенденции применения идеи распределенных систем?
6. В чем суть идеи «виртуализации»?
2 ВЫЧИСЛИТЕЛЬНЫЕ ТЕХНОЛОГИИ
Вычислительные технологии возникли и остаются тем концептуальным набором достижений современного социума, который неразрывно связывает себя с цифровой вычислительной техникой, именуемой как электронные вычислительные машины (ЭВМ).Чтобы раскрыть этот набор концепций, в данном разделе учебного пособия рассматриваются следующие вопросы:
• Парадигма «программа-массив».
• Компьютер как вычислитель.
• Операционные системы и системы разработки программного обеспечения.
• Технологии расчетов и моделирования.
• Интегрированные системы научных и инженерных исследований.
• Системы Mathematica, Maple, Mathcad, MATLAB, Simulink.
Все вычислительные технологии неразрывно связаны с технологическим ходом развития вычислительной техники, в котором традиционно выделяется соответствующая историческая последовательность этапов. Особый интерес в этой последовательности представляют первые три этапа, обеспечившие формирование рассматриваемых концепций:
• Нулевое поколение (1492-1945) — механическая эра, включая электромеханические устройства вычислений;
• Первое поколение (1937,1945 -1953,1955) — электронные лампы, первые ЭВМ;
• Второе поколение(1954,1955 -1962,1965) — полупроводники и транзисторы.
Соответствующие технологические достижения в развитии аппаратных средств цифровой вычислительной техники (ВТ) с полным основанием позволили говорить о специализированных объектах для вычислений — компьютерах. Стали формироваться образы, которые в виде тезисов провозглашали: «Компьютер — это супер дорогие счеты». В более позднее время, с появлением микросхем, стали говорить «Компьютер — это большой калькулятор».
Такая направленность мышления вызвана основными потребностями социума в сложных и затратных вычислениях:
• для научных исследований, включая астрономию, географию, исследование космоса и • для военных целей, включая создание новых видов вооружений и широкомасштабного применения этих вооружений;
• для сложных экономических расчетов;
• для создания, развития и практического применения «ядерных технологий».
Общество накопило множество вычислительных задач и создало математический аппарат для их решения. Вычислительные машины стали обеспечивать технологическую основу для их решения. Задачи стали, с тем или иным переменным успехом, решаться, повышая свою социальную значимость. Все это и определило основную социальную направленность использования вычислительной техники.
Имеющийся социальный заказ стимулировал развитие специализированных областей математики, которые стали назваться как — вычислительная математика. Соответственно, возникла потребность в математике, которая бы обеспечивала расчеты, технологически отличные от методов расчетов на базе вычислителей нулевого поколения.
Наконец, социум стал формировать профессии, которые связаны исключительно с трудовой деятельностью, ориентированной на применение компьютеров.
Соответствующая профессиональная деятельность стала формировать мышление, создавать теории и реализовывать на практике продукцию, которая применима только для собственных профессиональных нужд этих технологий.
Все, сказанное выше, позволяет говорить об отдельном технологическом направлении использования ВТ — о вычислительных технологиях.
2.1 Парадигма вычислительной технологии В рамках упомянутого выше социального процесса, сформировалась профессия программист. Программист стал элитой, которая была призвана сформировать ту профессиональную прослойку общества, что обеспечит потребности социума в плане решения вычислительных задач. Как элита, формируемая из ученых и научно-технических специалистов высокой квалификации, программисты стали формировать теоретические и технологические парадигмы, адекватные поколению имеющихся аппаратных средств ВТ.
Первой такой парадигмой стала концепция «Программа-массив». Она была основной концепцией, вплоть до середины 60-х годов XX-го века.
Суть этой технологической парадигмы в том, что технология использования ЭВМ разбивается на три основных этапа:
• подготовка и ввод в ЭВМ исходных данных;
• обработка исходных данных программной или программным модулем;
• вывод результатов вычислений на внешние носители (хранители) информации ЭВМ и последующая интерпретация результатов работы программы.
Технологическое расширение этой парадигмы можно представить как множество программ, обеспечивающих решение сложной задачи, целостной по своей целевой значимости.
Основные технологические характеристики парадигмы «программа-массив»:
программы «плоские», а данные и код находятся в одном адресном пространстве и не разделены между собой;
программные модули (программы) - слабо связаны и только: через данные и процесс запуска отдельных программ;
значимость программы оценивается количеством операторов (кода программы);
направленность алгоритмов — исключительно расчетная;
насыщенность программ деталями, далекими от прикладной направленности Очевидно, что недостатки, присущие парадигме «программа-массив», стали очень быстро сказываться при усложнении программных систем. Это потребовало некоторого пересмотра классического подхода к парадигме и внесение ряда технологических изменений в пределах существующих потребностей применения ЭВМ. Возникло стремление:
• уменьшить излишнюю информационную загруженность программ;
• перейти от машинного кода к ассемблеру, макросам, мнемоникам;
• учесть специфическое не машинное восприятие человека при написании и анализе • обеспечить уменьшение объема исходного кода программ;
повысить надежность и функциональную наполненность разрабатываемого программного обеспечения (ПО).
Основным технологическим подходом, сохранившемся до настоящего времени, стало разделение программ по специализации:
• системное ПО;
• прикладное ПО;
• инструментальные средства разработки ПО.
Если системное ПО было объектом внимания достаточно узкого круга системных программистов, то прикладное ПО и инструментальные средства разработки, получившие аббревиатуру IDE, стали достоянием широких масс специалистов, применяющих технологические достижения ВТ. Именно стремительное развитие IDE - Integrated Development Environment и, связанных с ними языков программирования, обеспечили разработку вычислительных систем моделирования, инженерных и научных расчетов.
Со временем, системное ПО, являясь, по сути, вспомогательным, стало оказывать все большее и большее влияние на современные вычислительные технологии. Это связано с широким многообразием архитектур современных средств ВТ.
Сразу следует отметить, что системное ПО, во многом, является закрытым и непонятным для прикладного программиста. Так было всегда, и так будет в дальнейшем. А для аргументации этого заявления, нужно учесть, что системное ПО является:
• оторванным от прикладного алгоритмического характера приложений;
• более абстрактным по функциональному назначению, по сравнению с конкретными приложениями;
• самостоятельными технологическими объектами, порождающими новые технологии.
Основные собственные проблемы системного ПО, которые активно проецируются на прикладное ПО, это:
• проблемы модульности систем;
• проблемы именования ресурсов;
• проблемы доступа к ресурсам.
Далее, перейдем к рассмотрению ряда практических реализаций вычислительных технологий, являющихся представителями двух актуализированных направлений:
• вычислительным расчетам и моделированию;
• интегрированным системам научных и инженерных расчетов.
2.2 Технологии расчетов и моделирования Классический вариант парадигмы «программа-массив» очень быстро зашел в тупик, по причине сложности отношений между отдельными программами, а также из-за отсутствия согласованности этих программ по форматам представления данных. Чтобы решить эту проблему:
• стали создаваться языки, более высокого уровня чем ассемблер, с развитыми средствами типизации данных;
• стали создаваться библиотеки программ, позволяющие объединять и хранить, для последующего использования, наиболее общие и полезные программные модули.
Со временем, эти подходы тоже исчерпали себя по причинам:
несогласованности интерфейсов и различное качество библиотек от различных поставщиков ПО;
неспособность или коммерческая нецелесообразность создания и сопровождения библиотек ПО для множества меняющихся архитектур ВТ.
Тем не менее, потребности в поддержке сложных математически расчетов и компьютерного моделирования постоянно возрастали, что привело к созданию множества проектов, реализованных на коммерческой основе. Ряд таких проектов просуществовали до настоящего времени и продолжают успешно использоваться как отдельные системы.
Далее, мы рассмотрим два таких проекта: систему Mathematica и систему Maple.
Система Mathematica Mathematica — позицирует себя как система компьютерной алгебры, созданная компанией Wolfram Research. [1, 2].
Появившаяся в 1988 году, эта система содержит множество функций как для численных расчетов, так и для аналитических преобразований. Кроме того, эта система поддерживает:
• работу с графикой и звуком, включая построение двух- и трехмерных графиков • рисование произвольных геометрических фигур;
• экспорт и импорт изображений и звука.
Чтобы более наглядно представить потенциал этой системы, рассмотрим список ее возможностей по отдельным направлениям.
Аналитические преобразования • Решение систем полиномиальных и тригонометрических уравнений, неравенств, а также трансцендентных уравнений, сводящихся к ним.
• Решение рекуррентных уравнений.
• Упрощение выражения.
• Нахождение пределов.
• Интегрирование и дифференцирование функций.
• Нахождение конечных и бесконечных сумм и произведений.
• Решение дифференциальных уравнений и уравнений в частных производных.
• Преобразования Фурье, Лапласа и Z-преобразование.
• Преобразование функции в ряд Тейлора, операции с рядами Тейлора: сложение, умножение, композиция, получение обратной функции и другие.
• Вейвлет-анализ.
Численные расчеты Вычисление значений обычных и специальных функций с произвольной точностью.
Решение систем уравнений.
Нахождение пределов.
Интегрирование и дифференцирование.
Нахождение сумм и произведений.
Решение дифференциальных уравнений и уравнений в частных производных.
• Полиномиальная интерполяция функции от произвольного числа аргументов по набору известных значений.
• Преобразования Фурье и Лапласа, а также Z-преобразование.
Теория чисел Определение простого числа по его порядковому номеру, определение количества простых чисел, не превосходящих данное.
Дискретное преобразование Фурье.
Разложение числа на простые множители, нахождение наибольшего общего делителя (НОД) и наименьшего общего кратного (НОК).
Линейная алгебра • Операции с матрицами: сложение, умножение, нахождение обратной матрицы, умножение на вектор, вычисление экспоненты, получение определителя.
• Поиск собственных значений и собственных векторов.
Графика и звук • Построение графиков функций, параметрических кривых и поверхностей.
• Построение геометрических фигур: ломаных, кругов, прямоугольников и других.
• Воспроизведение звука, график которого задается аналитической функцией или набором точек.
• Импорт и экспорт звука и графики, во многих растровых форматах.
• Построение и манипулирование графами.
Разработка программного обеспечения • Автоматическое генерирование С кода и его компоновка.
• Автоматическое преобразование компилируемых программ системы Mathematica в С код для автономного или интегрированного использования.
• Использование SymbolicC для создания, обработки и оптимизации С кода.
• Интеграция внешних динамических библиотек.
• Поддержка CUDA и OpenCL.
Таким образом, система Mathematica обеспечивает не только достаточно полный набор математических преобразований, но и включает в себя поддержку многих вспомогательных технологий, таких как: работа с графикой и звуком; реализация и оптимизация языков программирования; использование для вычислений различных аппаратных специализированных цифровых вычислителей.
Чтобы полностью раскрыть возможности этой системы, рассмотрим подробнее упомянутые технологии.
Технология CUDA или Compute Unified Device Architecture [3].
Это - программно-аппаратная архитектура, позволяющая производить вычисления с использованием графических процессоров NVIDIA, поддерживающих технологию GPGPU.
Сама технология GPGPU позволяет производить произвольные вычисления на видеокартах, начиная с чипа NVIDIA восьмого поколения — G80. Эта технология присутствует во всех последующих сериях графических чипов, которые используются в семействах ускорителей GeForce, Quadro и NVidia Tesla.
Создана система разработки CUDA SDK, которая позволяет программистам писать программы на специальном упрощенном диалекте языка С, включать специальные функции в текст программ на C, дает возможность организовывать доступ к набору инструкций графического ускорителя, управлять его памятью, организовывать на нем сложные параллельные вычисления.
Технология OpenCL или Open Computing Language [4].
Это - фреймворк для написания прогамм, связанных с параллельными вычислениями на различных графических процессорах (GPU) и центральных процессорах (CPU). В него входят язык программирования, который базируется на стандарте С99, и API. OpenCL является полностью открытым стандартом, реализующим технологию GPGPU.
Технология GPGPU или General-purpose graphics processing units: «GPU общего назначения» [5].
Это — техника применения программируемых шейдерных (схем затенения) блоков и растровых конвейеров, что позволяет разработчикам ПО использовать потоковые процессоры для не графических данных.
Технология OpenGL или Open Graphics Library [6].
Это - открытая графическая библиотека и графическая API-спецификация, определяющая независимый от языка программирования и платформы, программный интерфейс для написания приложений, которые используют двумерную и трёхмерную компьютерную графику. Включает более 250 функций для рисования сложных трёхмерных сцен из простых примитивов. Используется при создании компьютерных игр, САПР, виртуальной реальности и визуализации в научных исследованиях.
На платформе MS Windows конкурирует с технологией Direct3D.
OpenAL или Open Audio Library. [7].
Это — свободно распространяемый межплатформенный API для работы с аудиоданными. Его особенностью является работа со звуком в 3D пространстве и использование эффектов EAX.
Поддерживается компанией Creative.
Дополнительно к заимствованным внешним языкам прогаммирования, система Mathematica использует собственный интерпретируемый язык функционального программирования с одноименным названием. Язык Mathematica допускает, так называемые, отложенные вычисления, используя оператор определения «:=». Можно даже сказать, что система Mathematica написана на самом языке Mathematica.
Рассмотрим на конкретных примерах некоторые особенности этого языка.
Функциональное программирование Пример кода, который последовательно 5 раз применяет функцию f:
NestList[f, x, 5] Результатом будет список из аргумента x, одного, двух, трёх и так далее до пяти применений функции f к этому аргументу, всего 6 элементов списка:
{x, f[x], f[f[x]], f[f[f[x]]], f[f[f[f[x]]]], f[f[f[f[f[x]]]]]} Пример 3-х кратного применения конкретной функции Sin[x + 1] имеет вид:
NestList[Sin[# + 1] &, x, 3] Результатом будет:
{x, Sin[1 + x], Sin[1 + Sin[1 + x]], Sin[1 + Sin[1 + Sin[1 + x]]]} Процедурное программирование Mathematica также поддерживает процедурный стиль программирования:
Здесь, точка с запятой отделяет различные последовательные команды. Для осуществления стандартных циклов есть функции Do, While, For. Условные выражения осуществляются посредством функций If, Which, Switch.
Таким образом, будучи изначально функциональным языком программирование Mathematica, тем не менее, имеет функции, которые позволяют писать код очень близкий к стандартным процедурным языкам программирования.
Программирование посредством задания правил В системе Mathematica также можно задавать правила работы с теми или иными выражениями. Таким образом, можно определять объекты подобно тому как это обычно делается в математике, задавая их свойства посредством правил:
Результат:
Объектно-ориентированное программирование Mathematica позволяет явно задавать определения, связанные с определенным объектом, реализуя, тем самым, возможность использования объектно-ориентированного стиля программирования:
h /: f[h[x_], x_] := hf[x];
h /: p_[h[x_]] := ph[f, x];
h /: h[x_] + h[y_] := hsum[x, y];
Вычисляя с данными определениями:
h[a] + h[b] + p[h[r]] + h[h[x]] результатом будет:
hsum[a, b] + ph[f, r] + ph[f, x] Система Maple Другим примером систем расчетов и моделирования, которую мы кратко рассмотрим, является Maple [8, 9].
Maple - программный пакет системы компьютерной алгебры, который с 1984 года выпускается компанией Waterloo Maple Inc.
Система Maple предназначена для символьных вычислений, хотя имеет ряд средств и для численного решения дифференциальных уравнений и нахождения интегралов. Она обладает развитыми программными графическими средствами и имеет собственный язык программирования, напоминающий ООП Паскаль. Последняя, зафиксированная мной версия Maple 16, выпущена 28 марта 1012 года.
Сама система реализуется через подразделение Maplesoft, которое продает как студенческую, так и профессиональные версии Maple, с существенной разницей в цене: 99 $ и 1995 $, соответственно.
Недавние студенческие версии, начиная с шестой, не имели вычислительных ограничений, но поставлялись с меньшим объемом печатной документации.
Следует отметить, что так же различаются студенческая и профессиональная версии пакета Mathematica.
2.3 Интегрированные системы научных и инженерных расчетов Несмотря на большие возможности систем Mathematica и Maple, всегда была и возрастает потребность в интегрированных пакетах, которые бы обеспечивали инженерные и научные расчеты с минимальными затратами на программирование.
Далее, мы рассмотрим три таких системы: Mathcad, MATLAB и Simulink.
Система Mathcad Mathcad - система компьютерной алгебры, которая относится к классу систем автоматизированного проектирования. Она ориентированна на подготовку интерактивных документов с вычислениями и визуальным сопровождением. Отличается легкостью использования и применения для коллективной работы. Имеет простой и интуитивный для использования интерфейс пользователя. Для ввода формул и данных можно задействовать как клавиатуру, так и специальные панели инструментов.
Первоначально Mathcad был задуман и написан в Массачусетском технологическом институте (MIT) Алленом Разводом [10]. Первая версия системы появилась в 1986 году.
Сейчас Mathcad выпускается корпораций PTC (Parametric Technology Corporation) [11], которая в 2010 году выпустила версию 15.0 этой системы.
На примере системы Mathcad хорошо видно как технологически развивалась парадигма «программа-массив». От примитивного взаимодействия между программами через результаты отдельных вычислений, сохраняемых в собственных уникальных форматах, идет унификация программных модулей в специализированные библиотеки. Затем, наблюдается переход к системам, связанным единой прикладной направленностью. Далее, эти системы начинают ориентироваться отдельные технологические достижения, которые напрямую не связаны с прикладным назначением этих систем. Наблюдается интеграция и включение в себя отдельных технологий, которые ассоциируются современными достижениями компьютерных технологий.
Версии Mathcad, до 13.1 включительно, основаны на подмножестве системы компьютерной алгебры Maple (MKM, Maple Kernel Mathsoft) [8].
Начиная с 14 версии, используется символьное ядро MuPAD [12]. Работа осуществляется в пределах рабочего листа, на котором уравнения и выражения отображаются графически, в противовес текстовой записи в языках программирования. При создании документов-приложений используется принцип WISIWYG, - What You See Is What You Get: «что видишь, то и получаешь»).
Пкблично, Mathcad позицируется как программа ориентированая на пользователей непрограммистов, но Mathcad также используется в сложных проектах, позволяющих визуализировать результаты математического моделирования. Для этого используются распределенные вычисления и традиционные языки программирования. Также Mathcad используется в крупных инженерных проектах, где значение имеет трассируемость и соответствие стандартам.
С другой стороны, Mathcad удобно использовать для обучения, вычислений и инженерных расчетов. Открытая архитектура приложения сочетается с технологиями.NET и XML. Это позволяют легко интегрировать Mathcad во многие ИТ-структуры и инженерные приложения. Есть возможность создания электронных книг e-Book. Количество пользователей в мире оценивается около 1.8 млн.
Mathcad содержит множество операторов и встроенных функций для решения различных технических задач. Программа позволяет выполнять численные и символьные вычисления, производить операции со скалярными величинами, векторами и матрицами, автоматически переводить одни единицы измерения в другие.
Среди возможностей Mathcad можно выделить:
• Решение дифференциальных уравнений, в том числе и численными методами.
• Построение двумерных и трёхмерных графиков функций в разных системах координат: контурные, векторные и другие.
• Использование греческого алфавита как в уравнениях, так и в тексте.
• Выполнение вычислений в символьном режиме.
• Выполнение операций с векторами и матрицами.
• Символьное решение систем уравнений.
• Аппроксимация кривых.
• Выполнение подпрограмм.
• Поиск корней многочленов и функций.
• Проведение статистических расчетов и работа с распределением вероятностей.
• Поиск собственных чисел и векторов.
• Вычисления с единицами измерения.
• Интеграция с системами САПР и использование результатов вычислений в качестве управляющих параметров.
С помощью Mathcad инженеры могут документировать все вычисления в процессе их проведения.
С другой стороны, версии Mathcad могут отличатся комплектацией и лицензией пользователя. В разное время поставлялись версии Mathcad Professional, Mathcad Premium, Mathcad Enterprise Edition, отличаются комплектацией. Для академических пользователей предназначена версия Mathcad Academic Professor, которая обладает полной функциональностью, но отличается лицензией пользователя и имеет соответственно меньшую стоимость. Было также время, когда выпускались упрощенные и заметно «урезанные» студенческие версии этой системы.
Дальнейшее развитие технология Mathcad получила при создании Mathcad Application Server (MAS). Суть технологии MAS - в реализации удаленного доступа к программному обеспечению Mathcad или к уже готовым Mathcad-документам через WWW-интерфейс: технология Web Calc. Теперь пользователь MAS не нуждается в покупке Mathcad. Ему не требуется скачивать и запускать exe-файлы, хотя это не исключается и определяется уровнем доступа.
Система MATLAB MATLAB или «Matrix Laboratory» [13, 14]. Это — пакет прикладных программ для решения задач технических вычислений и одноименный язык программирования, используемый в этом пакете.
Считается, что MATLAB используют более 1000000 инженерных и научных работников. Он работает на большинстве современных операционных систем, включая Linux, Mac OS, Solaris и MS Windows.
MATLAB как язык программирования был разработан Кливером Моулером (Cleve Moler) в конце 70-х годов.
Целью разработки служила задача дать университетским студентам возможность использования программных библиотек Linpack и EISPACK без необходимости изучения языка Fortran.
Поскольку новый язык быстро распространился среди других университетов и был с интересом воспринят учеными, работающими в области прикладной математики, то он был переписан на языке С, а в 1984 году была основана компания MathWorks для дальнейшего развития [14].
Первоначально MATLAB предназначался для проектирования систем управления, но быстро завоевал популярность во многих других научных и инженерных областях. Он стал широко использоваться и в образовании для преподавания линейной алгебры и численных методов.
MATLAB является высокоуровневым интерпретируемым языком программирования, включающим основанные на матрицах структуры данных, широкий спектр функций, интегрированную среду разработки, объектно-ориентированные возможности и интерфейсы к программам, написанным на других языках программирования.
Программы, написанные на MATLAB, бывают двух типов - функции и скрипты.
Функции имеют входные и выходные аргументы, а также собственное рабочее пространство для хранения промежуточных результатов вычислений и переменных.
Скрипты же используют общее рабочее пространство.
Как скрипты, так и функции не компилируются в машинный код и сохраняются в виде текстовых файлов. Существует также возможность сохранять так называемые pre-parsed программы: функции и скрипты, обработанные в вид, удобный для машинного исполнения.
В общем случае такие программы выполняются быстрее обычных, особенно если функция содержит команды построения графиков.
Основной особенностью языка MATLAB являются его широкие возможности по работе с матрицами, которые выражены лозунгом: «думай векторно» (Think vectorized).
MATLAB предоставляет пользователю большое количество функций для анализа данных, которые покрывают практически все области математики, в частности:
• Матрицы и линейная алгебра — алгебра матриц, линейные уравнения, собственные значения и вектора, сингулярности, факторизация матриц и другие.
• Многочлены и интерполяция — корни многочленов, операции над многочленами и их дифференцирование, интерполяция и экстраполяция кривых, и другие.
• Математическая статистика и анализ данных — статистические функции, статистическая регрессия, цифровая фильтрация, быстрое преобразование Фурье и • Обработка данных — набор специальных функций, включая построение графиков, оптимизацию, поиск нулей, численное интегрирование, в квадратурах, и другие.
• Дифференциальные уравнения - решение дифференциальных и дифференциальноалгебраических уравнений, дифференциальных уравнений с запаздыванием, уравнений с ограничениями, уравнений в частных производных и другие.
• Разреженные матрицы — специальный класс данных пакета MATLAB, использующийся в специализированных приложениях.
• Целочисленная арифметика — выполнение операций целочисленной арифметики в среде MATLAB.
Следует отметить, что пакет MATLAB включает интерфейс взаимодействия с внешними приложениями, написанными на языках С и Fortran. Осуществляется это взаимодействие через MEX-файлы.
MEX-файлы представляют собой динамически подключаемые библиотеки, которые могут быть загружены и исполнены интерпретатором, встроенным в MATLAB. Существует также возможность вызова подпрограмм, написанных на C или Fortran из MATLAB, как будто это встроенные функции пакета. MEX-процедуры имеют также возможность вызывать встроенные команды MATLAB.
Система Simulink Программа Simulink является приложением к пакету MATLAB [14, 15].
При моделировании с использованием Simulink реализуется принцип визуального программирования, в соответствии с которым, пользователь на экране из библиотеки стандартных блоков создает модель устройства и осуществляет расчеты. При этом, в отличие от классических способов моделирования, пользователю не нужно досконально изучать язык программирования и численные методы математики. Ему достаточно общих знаний требующихся при работе на компьютере и, естественно, знаний той предметной области в которой он работает.
Simulink является достаточно самостоятельным инструментом MATLAB и при работе с ним совсем не требуется знать сам MATLAB и остальные его приложения.
С другой стороны доступ к функциям MATLAB и другим его инструментам остается открытым и их можно использовать в Simulink.
Часть входящих в состав пакетов имеет инструменты, встраиваемые в Simulink, например, LTI-Viewer приложения Control System Toolbox – пакета для разработки систем управления. Имеются также дополнительные библиотеки блоков для разных областей применения, например, Power System Blockset – моделирование электротехнических устройств, Digital Signal Processing Blockset – набор блоков для разработки цифровых устройств и т.д).
При работе с Simulink пользователь имеет возможность модернизировать библиотечные блоки, создавать свои собственные, а также составлять новые библиотеки блоков. При моделировании, пользователь может выбирать метод решения дифференциальных уравнений, а также способ изменения модельного времени, с фиксированным или переменным шагом. В ходе моделирования имеется возможность следить за процессами, происходящими в системе. Для этого используются специальные устройства наблюдения, входящие в состав библиотеки Simulink. Результаты моделирования могут быть представлены в виде графиков или таблиц.
Основное преимущество Simulink заключается также в том, что он позволяет пополнять библиотеки блоков с помощью подпрограмм написанных как на языке MATLAB, так и на языках С++, Fortran и Ada.
2.4 Рекомендуемая литература для самостоятельной подготовки 1. Wolfram Research — Википедия. - http://ru.wikipedia.org/wiki/Wolfram_Research.
2. Wolfram Research: Mathematica, Научная и Техническая Программа. http://www.wolfram.com/.
3. CUDA — Википедия. - http://ru.wikipedia.org/wiki/CUDA.
4. OpenCL — Википедия. - http://ru.wikipedia.org/wiki/OpenCL.
5. GPGPU — Википедия. - http://ru.wikipedia.org/wiki/GPGPU.
6. OpenGL — Википедия. - http://ru.wikipedia.org/wiki/OpenGL.
7. OpenAL — Википедия. - http://ru.wikipedia.org/wiki/OpenAL.
8. Maple — Википедия. - http://ru.wikipedia.org/wiki/Maple.
9. Maplesoft. - http://www.maplesoft.com/.
10. Mathcad — Википедия. - http://ru.wikipedia.org/wiki/Mathcad.
11. PTC — PTC Mathcad — Engineering Calculations Software. http://www.ptc.com/product/mathcad/.
12. MuPAD 3.0: заявка на лидерство. http://ko.com.ua/mupad_3_0_zayavka_na_liderstvo_17785.
13. MATLAB — Википедия. - http://ru.wikipedia.org/wiki/MATLAB.
14. MathWorks — MATLAB and Simulink for Technical Computing. http://www.mathworks.com/.
15. Сообщество пользователей MATLAB и Simulink. - http://matlab.exponenta.ru/.
2.5 Вопросы для самостоятельного контроля знаний 1. В чем состоит историческая значимость парадигмы «программа-массив»?
2. Каковы концептуальные ограничения представлений о компьютере как сложном многофункциональном вычислителе?
3. Какова роль операционные систем и систем разработки программного обеспечения в развитии вычислительных технологий?
4. Какова значимость технологий расчетов и моделирования в общей концепции вычислительных технологий?
5. Каково назначение и особенности реализации интегрированных систем научных и инженерных исследований?
6. Каково назначение и основные характеристики проекта Mathematica?
7. Каково назначение и основные характеристики проекта Maple?
8. Каково назначение и основные характеристики проекта Mathcad?
9. Каково назначение и основные характеристики проекта MATLAB?
10. Каково назначение и основные характеристики проекта Simulink?
3 ТЕХНОЛОГИИ ХРАНЕНИЯ ИНФОРМАЦИИ
Несмотря на потрясающие достижения вычислительных технологий, парадигма «Программа-массив» стала не только искаженно отображать концептуальные стремления теоретиков программирования и применения средств ВТ в социуме, но и существенно тормозить эти стремления.Первые успехи применения цифровых средств ВТ в промышленности, потребовали создание и внедрение в социум, новой парадигмы, адекватной новым задачам автоматизации производства. Такая парадигма была создана и получила первоначальное название «Информационный подход». В дальнейшем, стали развиваться другие интерпретации этой идеи. Мы рассмотрим одну из таких интерпретаций, которую назовем «Технологии хранения информации».
Несмотря на кажущуюся «узость» такой интерпретации, в данном разделе учебного пособия будет показано, что на самом деле такой взгляд имеет место быть и подтверждается целым рядом системных решений, которые сохраняют самостоятельное технологическое направление развития программного обеспечения средств цифровой ВТ.
Непосредственно, в данном разделе рассматриваются следующие вопросы:
• Парадигма информационного подхода.
• Технологии структурирования и формализованного описания предметной области.
• Универсальные способы представления, хранения и обработки информации.
• СУБД. Системы и технологии проектирования.
• Конкретные технологии ADO.NET, MS SQL Server, Oracle.
3.1 Парадигма информационного подхода Как было показано в предыдущем разделе, основной технологический прорыв в сфере создания и применения компьютеров, обусловлен первыми тремя этапами их развития:
• Нулевым поколением (1492-1945), подготовившим и накопившим потенциал для создания цифровых средств ВТ;
• Первым поколением (1937,1945 - 1953,1955), реализовавшим первые ЭВМ на базе электронных ламп;
• Вторым поколением (1954,1955 - 1962,1965), которое на базе полупроводников и транзисторов, не только реализовало модульные конструкции ЭВМ, но и обеспечило широкие возможности внедрения средств ВТ в производство.
Главенствующая парадигма «Программа-массив», породившая бурное развитие «Вычислительных технологий», стала очень быстро себя исчерпывать. Следует отметить, парадигма «Программа-массив» породила три основные проблемы:
• проблему сложного взаимодействия большого количества программ;
• проблему подготовки и ввода большого количества исходных данных;
• проблему сохранения результатов расчетов и последующую их обработку.
Как стремление решить перечисленные проблемы, стала интенсивно развиваться парадигма «Информационного подхода». Первоначально она была сформулирована и стала развиваться как «Технология проектирования предметной области». Такой подход обоснован реальными задачами промышленности по автоматизации задач управления производством.
Проектировщики автоматизированных систем управления (АСУ) столкнулись с явным фактором преобладания значимости типизации и хранения данных над фактором сложности самих вычислений. Этот идейный антагонизм концептуальной парадигме вычислительных технологий создал объективные условия для появления и развития нового технологического направления. В теоретическом плане были выделены две компоненты такой технологии:
• технологии описания предметной области, предполагающие теоретическое изучение сложных, в том числе и социальных объектов, и документирование этих описаний;
• технологии универсального, применительно к ЭВМ, представления данных, разработки универсальных средств хранения и манипулирования этими данными, а также разработки универсальных (машинных) языков, обеспечивающих инструменты программирования, применительно к этим универсальным преставлениям данных.
Первая компонента этих технологий, со временем, стала интегрироваться с другими традиционными подходами и называться просто проектированием.
Вторая компонента технологий сформировала собственное технологическое направление и стала называться системами управления базами данных (СУБД).
Со временем появись и смешанные технологии, которые обеспечили автоматизацию проектирования информационных систем.
Чтобы подробнее раскрыть данную тему, кратко рассмотрим ряд качественных свойств, которые присущи сложным программно-техническим системам. Такими свойствами являются: переносимость и интероперабельность информационных систем.
Продукты, которые сегодня принято называть информационными системами, появились много лет назад.
В основе первых информационных систем находились мэйнфреймы компании IBM, файловая систем ОС/360, а впоследствии ранние СУБД типа IMS и IDMS. Эти системы прожили долгую и полезную жизнь, многие из них до сих пор эксплуатируются.
С другой стороны, полная ориентация на аппаратные средства и программное обеспечение корпорации IBM породила серьезную проблему "унаследованных систем" (legacy systems). Это связано с тем, что производственный процесс не позволяет прекратить или даже приостановить использование морально устаревших систем, чтобы перевести их на новую технологию. Многие серьезные исследователи сегодня заняты попытками решить эту проблему.
Серьезность проблемы унаследованных систем очевидно показывает, что информационные системы и лежащие в их основе базы данных являются слишком ответственными и дорогими продуктами, чтобы можно было позволить себе их переделку при смене аппаратной платформы или даже системного программного обеспечения. Это касается, главным образом, операционной системы и СУБД.
Для решения этой проблемы, программный продукт должен обладать свойствами легкой переносимости с одной аппаратно-программной платформы на другую. Это не означает, что при переносе не могут потребоваться какие-нибудь изменения в исходных текстах; главное, чтобы такие изменения не означали переделки системы.
Другим естественным требованием к современным информационным системам является способность наращивания их возможностей за счет использования дополнительно разработанных, а еще гораздо лучше, уже существующих программных компонентов. Этого требует обеспечение свойства, называемого интероперабельностью.
Интероперабельность - соблюдение определенных правил, а также привлечение дополнительных программных средств, обеспечивающих возможность взаимодействия независимо разработанных программных модулей, подсистем или даже функционально завершенных программных систем.
Возникает естественный вопрос: «Каким образом можно одновременно удовлетворить оба эти требования уже на стадии проектирования и разработки информационной системы?».
Ответ может быть следующий: следуйте принципам Открытых Систем. Другими словами, максимально строго придерживайтесь международных или общепризнанных фактических стандартов во всех необходимых областях.
Какие же стандарты следует иметь в виду при разработке информационной системы сегодня.
При использовании текущей технологии, информационная система пишется на некотором языке программирования, в нее встраиваются операторы языка SQL и, наконец, включаются какие-либо вызовы библиотечных функций операционной системы. Значит прежде всего, следует обращать внимание на степень стандартизации используемого языка программирования.
На сегодняшний день, приняты международные стандарты языков Фортран, Паскаль, Ада, Си и, совсем недавно, Си++.
Очевидно, что Фортран, даже в своем наиболее развитом виде Фортран-95, не является языком, подходящим для программирования информационных систем.
Паскаль не удобен тем, что в его стандарт не включены средства раздельной компиляции. Следовательно, его использование - вряд ли разумно и практично.
Язык Ада пригоден для любых целей. На нем можно писать и информационные системы, что и делают американские и некоторые отечественные военные. Недостаток его неоправданная «громоздкость».
Наиболее хороший стандарт, на сегодняшний день, существует для языка Си. Опыт многих лет, прошедших после принятия стандарта, показывает, что, при использовании стандарта Си ANSI/ISO, проблемы переноса программ, связанные с особенностями аппаратуры или компиляторов практически не возникают.
Важной вехой является факт принятия стандарта языка Си++. Это означает, что можно говорить уже о мобильном программировании на Си++, в том же смысле, в котором можно говорить об этом сегодня по отношению к Си.
Завершим рассуждения о стандартизации языков, упомянув вопросы взаимодействия с базами данных, которые традиционно связываются сейчас с языком SQL. Деликатность этих вопросов вызвана тем, что SQL с самого своего зарождения являлся сложным языком со смешанной декларативно-процедурной семантикой и далеко не идеальным синтаксисом.
Тем не менее, судьба распорядилась так, что именно SQL, несмотря на наличие других кандидатов, стал практически единственным используемым языком реляционных баз данных.
Сейчас имеется два общепринятых стандарта SQL: SQL/89 и SQL/92.
Стандарт SQL/89 отражает все особенности первых попыток стандартизации, когда многие важные аспекты в нем - не определены или отданы на определение в реализации. С другой стороны, большинство современных коммерческих реляционных СУБД на самом деле соответствуют стандарту SQL/89.
Стандарт SQL/92 является существенно более продвинутым, но язык SQL/ настолько сложен, что возникают вопросы о его практической целесообразности. Тем не менее, имеется практическая возможность создания достаточно переносимых программ с использованием SQL/89. Для этого нужно максимально локализовать те части программы, которые содержат не стандартизованные конструкции, и стараться не использовать расширения языка, предлагаемые в конкретной реализации.
Аналогичная ситуация существует и в области операционных систем.
Существующий сегодня набор стандартов происходит от интерфейсов операционной системы Unix: SVID, POSIX, XPG и другие. В большинстве современных ОС эти стандарты поддерживаются, но, как правило, любая ОС содержит множество дополнительных средств.
Поэтому, если стремиться к достижению переносимости приложения, следует стараться ограничить себя минимально достаточным набором стандартных средств. В случае, когда нестандартное решение некоторой операционной системы позволяет существенно оптимизировать работу информационной системы, разумно предельно локализовать те места программы, в которых это решение используется.
Сказанное выше, позволяет поговорить о middleware: «системных» или «полусистемных» средствах поддержки интероперабельности программных компонентов, начиная от средств межпроцессных взаимодействий. Такие средства, проходя через сетевой механизм вызова удаленных процедур, заканчиваются средствами Common Object Request Broker Architecture (CORBA).
Завершая рассмотрение вопросов создания переносимых и интероперабельных информационных систем, необходимо упомянуть о профилях или профайлах стандартов, в окружении которых разрабатывается система. Чем правильнее выбран профиль, тем более вероятно, что системе удастся прожить долгую и счастливую жизнь.
Таким образом, первые шаги информационного подхода подняли большой пласт проблем, многие из которых еще только требовали своего решения. Это позволило сосредоточить усилия на создании технологий, обеспечивающих массовое и долговременное хранение данных, доступных, в дальнейшем, для решения научных и производственных задач. Эти технологии оформились в самостоятельное направление, обобщенно обозначаемое как СУБД.
3.2 Инструментальные средства хранения данных Очень быстро технологическое направление, призванное создавать инструментальные средства хранения данных, управления данными и доступа к ним, стало отдельной технологий, которая стала называться СУБД или системы управления базами данных. Были сформированы три основные базовые модели представления данных, которые проявляли свои специфические черты и стали развиваться практически независимо:
• иерархическая модель закрепилась за файловыми системами и языками программирования: представление и описание объектов, ООП и другие;
• реляционная модель, традиционно ассоциированная с таблицами и имеющая достаточно развитый математический аппарат, стала обслуживать все широкие потребности промышленности и социума;
• сетевая модель, как наиболее сложная и обобщающая модель, стала предметом будущих перспективных исследований в области искусственного интеллекта и технологий управления данными.
Фактически все современные практически используемые СУБД ассоциируются, прежде всего, с реляционной моделью. Реляционная модель стала современной технологической парадигмой представления, хранения и управления данными, которая, ментально, ассоциируется с языком SQL.
Сам язык SQL рассматривается и представлен в двух ипостасях (сущностях):
• язык структурированных запросов - собственно сам SQL, ориентированный на клиента СУБД;
язык процедурных расширений, предназначенный для программирования самой СУБД на стороне сервера.
Поскольку сам язык SQL не является языком программирования, в общепринятом смысле, поскольку не имеет средств для автоматизации операций с данными, каждый производитель СУБД стал вводить свои процедурные расширения:
• хранимые процедуры - stored procedures;
• процедурные языки-«надстройки», позволяющие программировать «внутри» СУБД.
Практически в каждой современной СУБД применяется свой процедурный язык. Со временем был введен стандарт для процедурных расширений, который был представлен спецификацией SQL/PSM: Persistent Stored Modules или, - постоянно хранимые модули.
Имеется также международный стандарт ANSI - ISO/IEC 9075-4:2003, который регулирует эту проблему.
Перечень процедурных расширений для наиболее популярных сейчас СУБД приведен в следующей таблице 3.1.
Таблица 3.1. - Наиболее популярные процедурные расширения языка SQL.
InterBase/Firebird PSQL Procedural SQL IBM DB2 SQL PL хранимые процедуры могут писаться на обычных языках MS SQL Server/ Sybase ASE MySQL SQL/PSM SQL/Persistent Stored Module.
Oracle PL/SQL Procedural Language/SQL, который основан на языке Ада.
PostgreSQL PL/pgSQL Сейчас корпорации Microsoft и Oracle, являющиеся известными производителями СУБД, внесли дополнительные изменения в свои процедурные расширения SQL, в основном для написания тригеров баз данных (БД):
• Microsoft включила язык C#;
• Oracle включила язык Java.
Основное преимущество и популярность реляционной модели — это ассоциация ее с табличной формой представления данных:
• это — удобно для запросов к СУБД;
• это — удобно для формирования отчетной документации.
С другой стороны, основные недостатки реляционной модели:
избыточность представления и хранения данных;
значительные расходы ресурсов на поиск и извлечение данных;
сложные и затратные механизмы сортировки данных.
Перечисленные недостатки, в свою очередь, породили собственные технологии проектирования баз данных:
• в теоретическом плане были разработаны правила (шаблоны), получившие название нормальных форм (пять НФ);
• в плане создания баз данных появились специализированные интегрированные системы разработки, уникальные для каждого производителя СУБД.
Такая парадоксальная ситуация сложилась как по многим причинам «корпоративной технологической замкнутости» самих разработок, так и из стремления монополизировать большинство сопутствующих технологий в процессе конкурентной борьбы. Соответственно, все это отразилось и на инструментальных средствах проектирования информационных систем, которые стали входить, как часть общей технологической цепочки, в системы разработки программного обеспечения, контролируемые производителями СУБД.
3.3 Системы и технологии проектирования БД Конкретные технологии хранения информации рассмотрим на примерах разработок двух конкурирующих между собой корпораций: Oracle и Microsoft.
Начнем с корпорации Oracle — как безусловном лидере данного технологического направления.
Oracle или Oracle Corporation: это - американская корпорация, являющаяся крупнейшим в мире разработчиком программного обеспечения для организаций, а также крупным поставщиком серверного оборудования [1 - 3].
Компания специализируется на выпуске СУБД, связующего программного обеспечения и бизнес-приложений: ERP- и CRM-систем, а также специализированных отраслевых приложений.
Наиболее известный продукт компании — Oracle Database, который она выпускает с момента своего основания.
Сама компания основана в 1977 году. Имеет подразделения в более чем 145 странах.
По состоянию на 2011 год, насчитывает 108 тыс. сотрудников. Штаб-квартира корпорации расположена в США: штат Калифорния, рядом с городом Сан-Франциско.
В 1992 году компания выпустила 7-ю версию своей СУБД Oracle Database, в которой поддерживались триггеры, хранимые процедуры и декларативные ограничения целостности.
В 1994 году, ею приобретается у фирмы DEC подразделение, разрабатывающее СУБД Rdb и все права на этот продукт, начиная с этого времени поставлять несколько систем управления базами данных.
В 1995 году компания приобретает компанию-разработчика первой в истории многомерной СУБД Express и инструментарий OLAP на ее основе. В этом же году, корпорация вошла на рынок связующего программного обеспечения, выпустив Oracle Web Application Server и объявив стратегические интересы в развитии технологий для трехуровневой архитектуры информационных систем. Уже в 1997 году была выпущена версия 8 СУБД Oracle Database, в которой поддержаны элементы объектно-ориентированного проектирования и программирования, начиная с этого момента компания позиционирует продукт как одновременно объектно-ориентированной и реляционной СУБД.
В 1998 году Oracle стала первой производительницей интегрированных ERP-пакетов и оборудовала свой комплект бизнес-приложений веб-доступом. В результате, любую операцию в ERP-системе стало возможно осуществлять из браузера. В следующем году «интернет-стратегия» нашда отражение в наименованиях продуктов Oracle Database и Oracle Application Server, выпущеных с суффиксом «i» после номера версии - 8i. Заявлены приоритеты во встраивании обработки XML на стороне СУБД и встраивании Java-машины в СУБД.
В результате поглощения в 2010 году корпорации Sun Microsystems, к Oracle перешли активы MySQL AB и свободно распространяемая СУБД MySQL, которая стала отмечаеться как свободная альтернатива Microsoft SQL Server. К Oracle также перешла значительная часть активов, связанная технологиями Java: языком, платформами J2ME, J2SE, J2SE, виртуальной машиной HotSpot.
Oracle всегда активно использовал технологии Java в своих продуктах: в СУБД была включена виртуальная машина Java собственной разработки Aurora JVM; выпускается средство разработки на Java - JDeveloper. С начала 2000-х годов была выпущена большая серия связующего ПО, поддерживающего стандарты Java, а также было проявлено активное участие в проекте Java Community Process.
Следует отметить, что корпорация Oracle выпускает достаточно широкий спектр средств разработки. Непосредственно на разработку приложений Java ориентированы следующие средства:
• JDeveloper — одна из первых разработок инструментальных систем для Java;
• NetBeans - унаследованный актив от Sun Microsystems;
• Entperise Pack for Eclipse - коллекция надстроек и расширений IDE Eclipse для нужд разработки J2EE.
Пионерские технологии Oracle, во многом, связаны с серией средств разработки Designer/Developer, включающих Oracle Forms и Oracle Reports. Долгое время это были основные среды разработки для Oracle E-Business Suite. В настоящее время эти средства еше поддерживаются, но разработчикам предоставляются средства миграции унаследованных Forms-приложений на платформу J2EE.
Среди свободных средств разработки, выпускаемых компанией, следует отметить:
• Apex - свободный программный каркас быстрой разработки веб-приложений, встроенный в СУБД;
• SQL Developer - бесплатное средство разработки и отладки для SQL и PL/SQL.
Теперь перейдем к рассмотрению технологий корпорации Microsoft, которые в плане нашей тематики представлены СУБД MS SQL Server и, во-многом заимствованными у конкурентов, теоретическими и практическими изысканиями, известными под общим названием ADO.NET.
Microsoft SQL Server — система управления реляционными СУБД, разработанная корпорацией Microsoft [4, 5]. Использует основной язык запросов - Transact-SQL, который был создан совместно Microsoft и Sybase.
Transact-SQL, сокращенно T-SQL, является реализацией стандарта ANSI/ISO по структурированному языку запросов SQL с расширениями. Он используется для работы с базами данных размером от персональных до крупных баз данных масштаба предприятия.
Конкурирует с другими СУБД в этом сегменте рынка.
Рассматривая историю вопроса, следует обратиться к 1988 году, когда был анонсирован новый продукт Ashton-Tate/Microsoft SQL Server. Через четыре года, в начале 1992 года, команда разработчиков SQL Server оказалась на распутье:
• С одной стороны, уже имелась клиентская база SQL Server, использующая операционную систему OS/2, которые ждали 32-битную версию SQL Server.
С другой стороны, не было точно известно, когда же выйдет OS/2 2.0. Представители IBM заявляли, что выпуск новой версии состоится осенью 1992 года. Многие воспринимали эти слова со скепсисом.
В июле 1993 года Microsoft выпустила Windows NT 3.1 и, в течение 30 дней после ее выхода, команда разработчиков SQL Server выпустила первую версию Microsoft SQL Server для Windows NT. Выход был весьма успешен: росли продажи как самой СУБД, так и ОС для нее.
Далее, разработка версии SQL Server 2005, получившей кодовое обозначение Yukon, началась параллельно с подготовкой 64-битной версии SQL Server 2000 под кодовым названием Liberty:
• Liberty по функционалу представляла собой ту же самую 32-битную версию, которая отличалась лишь большими возможностями масштабирования.
• Новый функционал должен был реализоваться в составе Yukon.
Подобные интриги всегда были свойственны корпорации Microsoft и часто приводили к серьезной критике этой корпорации. Выйдя на рынок СУБД гораздо позже, чем корпорация Oracle, Microsoft создала язык T-SQL ориентируясь на стандарт SQL-92. Язык T-SQL сразу стал использовать дополнительный синтаксис для хранимых процедур и обеспечивать поддержку транзакций СУБД с управляющим приложением.
С целью подготовки кадрового состава своих клиентов и популяризации своей продукции, компания выпустила продукт - Microsoft SQL Server Express, который является бесплатно распространяемой версией SQL Server.
Данная версия имеет ряд технических ограничений, которые делают ее непригодной для развертывания больших баз данных. С другой стороны, она вполне годится для ведения программных комплексов в масштабах небольшой компании. Она содержит полноценную поддержку новых типов данных, включая XML-спецификации, и является полноценным сервером СУБД. Поскольку он также включает все необходимые компоненты программирования и поддержку национальных алфавитов и Unicode, он используется в приложениях при проектировании информационных систем или для самостоятельного изучения. Нет никаких препятствий для дальнейшего развертывания накопленной базы данных на более функциональных типах Microsoft SQL Server. В 2007 году Microsoft даже выпустила отдельную утилиту с графическим интерфейсом для администрирования данной версии, которая также доступна для бесплатного скачивания с сайта корпорации.
Следует отметить, что корпорация Microsoft является пионером многих маркетинговых начинаний, которые, во-многом, и обеспечили ее коммерческий успех. Часто это приводило к серьезным юридическим проблемам, заслуженно портящим ее репутацию.
Но, в данном случае, предложение социуму бесплатных версий своих продуктов, является новшеством, которое подхватили многие разработчики программных систем.
Непосредственно по отношению Microsoft SQL Server Express следует учесть следующие ограничения:
• поддерживается 1 процессор, но система может быть установлена на любой сервер;
• используется только 1 Гб адресуемой памяти;
• максимальный размер базы данных не превышает 4 Гб;
• нет возможности экспорта/импорта данных;
• В версиях 2008 и 2008 R2 отсутствует встроенный планировщик заданий Agent SQL Server, но имеется возможность создавать скрипты с командами на языке T-SQL.
3.4 Рекомендуемая литература для самостоятельной подготовки 1. Oracle - Википедия. - http://ru.wikipedia.org/wiki/Oracle.
2. Oracle. - http://www.oracle.com/index.html.
3. О компании Oracle. - http://www.oracle.com/ru/corporate/index.htm.
4. Microsoft SQL Server - Википедия. - http://ru.wikipedia.org/wiki/Microsoft_SQL_Server.
5. Business Intellegence. - http://www.microsoft.com/en-us/sqlserver/default.aspx.
3.5 Вопросы для самостоятельного контроля знаний 1. В чем суть и значимость парадигмы информационного подхода?
2. Какие наиболее известны технологии структурирования и формализованного описания предметной области?
3. Что представляют собой универсальные способы представления, хранения и обработки информации?
4. Что такое СУБД?
5. Какие известны технологии проектирования информационных систем?
6. Что такое технология ADO.NET и как она связана с MS SQL Server?
7. Какие известны информационные технологии корпорации Oracle?
8. Какие особенности работы с СУБД имеются в языке Java?
4 ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ ТЕХНОЛОНИИ
В то время как, технологии хранения информации, замкнувшись сами в себе, стали развиваться обособленно, предоставляя лишь интерфейсы доступа к хранилищам информации, проблемы программирования постоянно находились на острие внимания социума.Программирование неразрывно связано с языками программирования, на которых человек пишет программы. Кардинальное различие между человеческим восприятием и эффективностью кодирования программ всегда было предметом разработки различных технологий, повышающих эффективность этой сферы деятельности.
Революционные прорывы, произошедшие в технологиях создания аппаратных средств цифровой ВТ, окончательно развернули технологические подходы к программированию в сторону создания языков высокого уровня и использования интегрированных инструментальных средств разработки, которые переложили большинство проблем подготовки программного обеспечения на специализированное ПО компьютеров.
Чтобы подробнее и комплексно раскрыть эту проблематику, в данном разделе рассмотрим следующие вопросы:
• Парадигма объектного подхода.
• Объектно-ориентированное программирование.
• Виртуальные машины. Java Virtual Machine. Технология.NET.
• Компонентное программирование.
• Инструментальные среды разработки.
4.1 Парадигма объектного подхода В реальном мире человек выделяет:
материальные объекты живой и неживой природы;
полевые энергетические структуры, способные взаимодействовать с материальными Объекты живой природы, наделенные психикой, называются субъектами.
Обобщенное же понятие объект используется в науке и социуме, - как нечто целостное, которое:
• выделяется некоторыми границами и называется именами;
• обладает свойствами и, возможно, активным действием;
• подвергается, хотя бы чисто теоретически, некоторым действиям, которые Все более интенсивное развитие компьютерных технологий и все более интенсивное их проникновение в социум породило большое разнообразие самих технологий. Возникла необходимость адаптировать многие теоретические концепции и практические приемы их использования к природной ментальности человека. В результате возникла необходимость в парадигме и технологиях объектного подхода.
В компьютерных технологиях, под естественным базовым объектом, следует рассматривать программу:
• программа существует в среде, образованной аппаратной частью компьютера и операционной среды ОС;
программа имеет целевое (прикладное) назначение;
программу можно назвать и выполнять с ней действия, характерные для действий с объектами реального мира.
Для формирования парадигмы объектного подхода следует отметить два важнейших состояний программы как объекта:
• статическое состояние программы, в котором она рассматривается как файл некоторой файловой системы; в таком состоянии к ней применимы концепции парадигмы «проектирования предметной области»;
• динамическое состояние программы, когда она существует в среде ОС как процесс;
в таком состоянии к ней применимы концепции парадигмы «программа-массив».
Фактически, парадигма объектного подхода должна объеденить (синтезировать) в единое целое противоречия, обусловленные статическим и динамическим состояниями программы, и породить технологии, оптимальным образом компенсирующие недостатки указанных противоречий.
Поскольку программа является элементарной единицей всех компьютерных технологий, то развитие парадигмы объектного подхода идет в двух направлениях:
• во-внутрь, посредством декомпозиции самой программы;
• во-вне, посредством синтеза приложений на базе имеющихся программ.
Компьютерные технологии, связанные с декомпозицией программы:
теоретическое оформление концепции объектно-ориентированного программирования разработка новых языков программирования и преобразование старых языков, обеспечивающих ООП;
разработка инструментальных средств, способных реализовать технологию ООП.
Компьютерные технологии, связанные с интеграцией (синтезом) программ:
теоретическое оформление концепций архитектур вычислительных комплексов (ВК), вычислительных систем (ВС) и рассредоточенных архитектур СОД;
разработка языков, поддерживающих компонентное программирование;
разработка технологий интегрированных систем на базе плагинов и архитектуры Поскольку компьютерные технологии, связанные с декомпозицией программы, нашли свое воплощение в языках, поддерживающих концепции ООП, базовым понятием такого подхода является понятие объекта.
Объект - это мыслимая или реальная сущность, обладающая отличительными характеристиками, важными в некоторой предметной области:
• обладающими уникальной идентичностью;
• выделяющиеся четко определенным поведением;
• имеющие точно определяемое состояние.
Уникальность (identity), это — мета-свойство объекта, позволяющее определить, указывают ли две ссылки на один и тот же объект или на разные объекты.
Поведение (behavior), это - действия и реакции объекта:
• выраженные в терминах передачи сообщений и изменения состояния;
• видимые извне и воспроизводимые активность объекта.
Состояние (state), это - совокупный результат поведения объекта, понимаемый как одно из стабильных условий, в которых объект может существовать, и охарактеризованных количественно.
В любой момент времени состояние объекта включает в себя:
• перечень свойств объекта - статическая часть состояния;
• текущие значения этих свойств - обычно динамическая часть состояния.
Концептуально, ООП призвано усилить семантическую выразительность языков программирования.
Как парадигма, ООП должно постоянно формировать у программиста объектные представления предметной области.
Фактически, ООП увеличивает в каждой программе мета-описательную часть предметной области, слабое присутствие которой является недостатком предыдущих парадигм.
Практически, ООП формализует теоретические представления о технологии создания программного обеспечения, которые недостаточно или неявно присутствуют в познавательной деятельности человека.