Реферат По истории информатики на тему " Концепция современных технологий программирования"
Вид материала | Реферат |
- Реферат По истории информатики на тему " Философские проблемы информатики", 141.31kb.
- Реферат По истории информатики на тему " История развития технологий web 0 и Wikipedia", 138.92kb.
- Реферат По истории информатики на тему " История развития методов и технологий проектирования, 173.19kb.
- Реферат По истории информатики на тему, 147.73kb.
- Реферат По истории информатики на тему, 316.82kb.
- Реферат По истории информатики на тему, 200.63kb.
- Реферат По истории информатики на тему, 180.86kb.
- Реферат По истории информатики на тему " Электронная коммерция", 323.12kb.
- Реферат По истории информатики на тему " Эволюция понятия «информация»", 151.89kb.
- Реферат По истории информатики на тему " История развития операционных систем", 415.46kb.
Санкт Петербургский государственный университет информационных технологий механики и оптики
Реферат
По истории информатики на тему
“Концепция современных технологий программирования”
-
Аспирант:
Королева О. Ю.
Кафедра:
МиПЧС
Специальность:
05.13.19
Санкт-Петербург
2009 г.
Оглавление
Введение 4
1.Классификация языков программирования 6
2.История развития программирования 9
3.Технологии программирования 12
4.Современные технологии программирования 17
Заключение 24
Список литературы 26
Введение
С глубокой древности известны попытки создать устройства, ускоряющие и облегчающие процесс вычислений. Еще древние греки и римляне применяли приспособление, подобное счетам, — абак. Такие устройства были известны и в странах Древнего Востока. В XVII в. немецкие ученые В. Шиккард (1623), Г.Лейбниц (1673) и французский ученый Б. Паскаль (1642) создали механические вычислительные устройства — предшественники всем известного арифмометра. Вычислительные машины совершенствовались в течение нескольких веков. Но при этом не применялось понятие «программа и программирование».
На начальном этапе составлением программ для ЭВМ занимались сами изготовители вычислительных машин. Постепенно, с развитием техники, этот процесс из рутинной работы превратился в интеллектуальную деятельность, сравнимую с искусством, т. к. трудоемкое, ручное составление программ было подобно решению сложных комбинационных задач, которое требовало научных знаний и мастерства.
С 1970—1980-х гг. программирование как новая научная дисциплина занималась методами разработки программных продуктов. Оно включает комплекс вопросов, связанных с написанием спецификаций, проектированием, кодированием, тестированием и функционированием программ для ЭВМ.
Сейчас уровень программирования определяется четырьмя взаимосвязанными факторами развития: возможностями компьютеров, теорией и языками, искусством и технологией программирования.
Процесс развития компьютерных технологий породил процесс появления новых разнообразных технологий программирования и проектирования которые представляют собой систему языков программирования - специальный набор знаков, на которых пишут команды для управления компьютером.
Выделяют две основные группы: языки низкого уровня - языки программирования предназначенные для определенного типа компьютера и отражающие его внутренний машинный код – машинно-ориентированные языки; языки высокого уровня - это языки программирования, предназначенные для удовлетворения требований программиста; они не зависят от внутренних машинных кодов компьютера любого типа. Языки высокого уровня используют для решения проблем и поэтому их часто называют проблемно-ориентированными языками
- ^
Классификация языков программирования
Прежде чем приступить к описанию технологий программирования необходимо остановиться на таком вопросе как классификация языков программирования, поскольку именно на этом основывается тот или иной способ решения поставленной программисту задачи.
Выделяют два основных вида языков программирования: машинно - ориентированные языки и машинно - независимые языки.
^ 1.1 Машинно - ориентированные языки – наборы операторов изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.). По степени автоматического программирования машинно-ориентированные языки подразделяются на классы.
- Машинный язык (МЯ) - тот, который определен для каждого отдельного компьютера и осуществляет выполнение указываемых операций над определяемыми ими (компьютерами) операндами, поэтому МЯ является командным.
- Языки Символического Кодирования (далее ЯСК), так же, как и МЯ, являются командными. Однако коды операций и адреса в машинных командах, представляющие собой последовательность двоичных (во внутреннем коде) или восьмеричных (часто используемых при написании программ) цифр, в ЯСК заменены на символы (идентификаторы), форма написания которых помогает программисту легче запоминать смысловое содержание операции. Это обеспечивает существенное уменьшение числа ошибок при составлении программ.
- Автокоды - языки, включающие в себя все возможности ЯСК, посредством расширенного введения макрокоманд - достаточно часто использующиеся командные последовательности, которые соответствуют определенным процедурам преобразования информации. Эффективная реализация таких процедур обеспечивается оформлением их в виде специальных макрокоманд и включением последних в язык программирования, доступный программисту. Макрокоманды переводятся в машинные команды двумя путями – расстановкой и генерированием. В постановочной системе содержатся «остовы» - серии команд, реализующих требуемую функцию, обозначенную макрокомандой. Макрокоманды обеспечивают передачу фактических параметров, которые в процессе трансляции вставляются в «остов» программы, превращая её в реальную машинную программу.
В системе с генерацией имеются специальные программы, анализирующие макрокоманду, которые определяют, какую функцию необходимо выполнить и формируют необходимую последовательность команд, реализующих данную функцию.
1.2 Машинно – независимые языки – это средство описания алгоритмов решения задач и информации, подлежащей обработке. Они удобны в использовании для широкого круга пользователей и не требуют от них знания особенностей организации функционирования ЭВМ и ВС.
Подобные языки получили название высокоуровневых языков программирования. Программы, составляемые на таких языках, представляют собой последовательности операторов, структурированные согласно правилам рассматриваемого языка (задачи, сегменты, блоки и т.д.). Операторы языка описывают действия, которые должна выполнять система после трансляции программы на МЯ.
Следовательно, командные последовательности (процедуры, подпрограммы), часто используемые в машинных программах, представлены в высокоуровневых языках отдельными операторами. Таким оброзом программист получает возможность не расписывать в деталях вычислительный процесс на уровне машинных команд, а сосредоточиться на основных особенностях алгоритма.
- Проблемно – ориентированные языки
Эти языки, языки ориентированны на решение определенных проблем. Они должны обеспечить программиста средствами, позволяющими коротко и четко формулировать задачу и получать результаты в требуемой форме. Проблемных языков очень много, например: Фортран, Алгол – языки, созданные для решения математических задач; Simula, Слэнг - для моделирования; Лисп, Снобол – для работы со списочными структурами.
- Универсальные языки были созданы для широкого круга задач: коммерческих, научных, моделирования и т.д. Первый универсальный язык был разработан фирмой IBM, ставший в последовательности языков Пл/1. Второй по мощности универсальный язык называется Алгол-68. Он позволяет работать с символами, разрядами, числами с фиксированной и плавающей запятой. Пл/1 имеет развитую систему операторов для управления форматами, для работы с полями переменной длины, с данными организованными в сложные структуры, и для эффективного использования каналов связи. Язык учитывает включенные во многие машины возможности прерывания и имеет соответствующие операторы. Предусмотрена возможность параллельного выполнение участков программ. Программы в Пл/1 компилируются с помощью автоматических процедур. Язык использует многие свойства Фортрана, Алгола, Кобола. Однако он допускает не только динамическое, но и управляемое и статистическое распределения памяти.
- Диалоговые языки - программные средства, обеспечивающие оперативное взаимодействие человека с ЭВМ.
Необходимость обеспечения оперативного взаимодействия с пользователем потребовала сохранения в памяти ЭВМ копии исходной программы даже после получения объектной программы в машинных кодах. При внесении изменений в программу с использованием диалогового языка система программирования с помощью специальных таблиц устанавливает взаимосвязь структур исходной и объектной программ. Это позволяет осуществить требуемые редакционные изменения в объектной программе.
Одним из примеров диалоговых языков является ^ Бэйсик, который использует обозначения подобные обычным математическим выражениям.
- Непроцедурные языки составляют группу языков, описывающих организацию данных, обрабатываемых по фиксированным алгоритмам (табличные языки и генераторы отчетов), и языков связи с операционными системами.
Позволяя четко описывать как задачу, так и необходимые для её решения действия, таблицы решений дают возможность в наглядной форме определить, какие условия должны быть выполнены прежде чем переходить к какому-либо действию. Одна таблица решений, описывающая некоторую ситуацию, содержит все возможные блок-схемы реализаций алгоритмов решения.
Табличные методы легко осваиваются специалистами любых профессий. Программы, составленные на табличном языке, удобно описывают сложные ситуации, возникающие при системном анализе.
- ^
История развития программирования
С появлением цифровых программно-управляемых машин родилась новая область прикладной математики — программирование. Как область науки и профессия она возникла в 1950-х гг. Первоначально программы составлялись вручную на машинных языках (в машинных кодах). Программы были громоздки, их отладка — очень трудоемка. Для упрощения приемов и методов составления и отладки программ были созданы мнемокоды, по структуре близкие к машинному языку и использующие символьную адресацию. Ассемблеры переводили программу, записанную в мнемокоде, на машинный язык и, расширенные макрокомандами, используются и в настоящее время. Далее были созданы автокоды, которые можно применять на различных машинах, и позволившие обмениваться программами.
До конца 1950-х гг. ЭВМ основным элементом конструкции были электронные лампы (1-е поколение). В этот период развитие идеологии и техники программирования шло за счет достижений американских ученых Дж. фон Неймана, сформулировавшего основные принципы построения ЭВМ, и Дж. Бэкуса, под руководством которого в 1954 г. был создан Fortran (Formula Translation) — первый язык программирования высокого уровня, используемый до настоящего времени в разных модификациях. Так, в 1965 г. в Дартмутском колледже Д. Кэмэни и Т. Куртцем была разработана упрощенная версия Фортрана — Basic.
Достижения в области электроники и микроэлектроники позволили заменить элементную базу ЭВМ на более совершенную. В конце 1950-х гг. громоздкие электронные лампы заменяют полупроводниками (миниатюрными транзисторами). Появляются ЭВМ II поколения; затем примерно через 10 лет — ЭВМ III поколения на интегральных схемах; еще через 10 лет — ЭВМ IV поколения на больших интегральных схемах (БИС).
В 1953 г. А.А. Ляпуновым был предложен операторный метод программирования, который заключался в автоматизации программирования, а алгоритм решения задачи представлялся в виде совокупности операторов, образующих логическую схему задачи. Схемы позволяли расчленить громоздкий процесс составления программы, части которой составлялись по формальным правилам, а затем объединялись в целое.
В США в 1954 г. стал применяться алгебраический подход, совпадающий, по существу, с операторным методом. В 1956 г. корпорацией IBM разработана универсальная ПП Фортран для автоматического программирования на ЭВМ IBM/704.
В этот период по мере накопления опыта и теоретического осмысления совершенствовались языки программирования. В 1958—1960 гг. в Европе был создан ALGOL, который породил целую серию алголоподобных языков: Algol W, (1967), Algol 68, Pascal (Н. Вирт, 1970 г.), С (Д. Ритчи и Б. Керниган, 1972 г.), Ada (под руководством Ж. Ишбиа, 1979 г.), C++ (1983). В 1961-1962 гг. Дж. Маккарти в Массачусетском технологическом институте был создан язык функционального программирования Lisp, открывший в программировании одно из альтернативных направлений, предложенных Дж. фон Нейманом.
На начало 1970-х гг. существовало более 700 языков высокого уровня и около 300 трансляторов для автоматизации программирования.
Усложнение структуры ЭВМ привело (в 1953 г. для машин II-го поколения) к созданию операционных систем (ОС) — специальных управляющих программ для организации и решения задач на ЭВМ. Например, мониторная система МТИ, созданная в Массачусетском технологическом институте, обеспечивала пакетную обработку, т. е. непрерывное, последовательное прохождение через ЭВМ многих групп (пакетов) заданий и пользование библиотекой служебных программ, хранимой в машине. Это позволило совместить операции по запуску с выполнением программ.
Для ПЭВМ к настоящему времени разработаны ОС: MS DOS, Windows, ОС/2, Z/OC, МасОС, Unix, Linux и др. Широкое распространение получили ОС MS DOS и Windows, имеющие развитый интерфейс и широкий набор приложений, позволяющих последовательное выполнение заданий из пакета, обработку различной информации во многих сферах человеческой деятельности.
В период 1970—1980-х гг. развитие теоретических исследований оформило программирование как самостоятельную научную дисциплину, занимающуюся методами разработки программного обеспечения (ПО).
В истории развития промышленного программирования большую роль сыграл программист и бизнесмен Билл Гейтс (Gates William Henry, p. в 1955 г.). Его история очень поучительна для начинающих программистов. В 1972 г. Билл Гейтс и его школьный товарищ Пол Аллен основали компанию по анализу уличного движения «Трэф-О-Дейта» и использовали для обработки данных компьютеры с микропроцессором 8008 — первым из знаменитого ряда микропроцессоров компании «Intel». Будучи студентом Гарвардского университета, в 1975 г. он совместно с Алленом написал для компьютера Altair (фирмы M1TS) интерпретатор — программу - переводчик с языка программирования на язык машинных кодов. Они заключили с владельцем фирмы соглашение, по которому их программы распространялись вместе с компьютерами. Товарищи основали компанию «Microsoft».
- ^
Технологии программирования
3.1 Структурное программирование
В 1965 г. итальянцы Бом и Джакопини предложили использовать в качестве базовых алгоритмических элементов следование, ветвление и цикл. Почти в то же время к аналогичным выводам пришел голландский ученый Э. Дийкстра, заложивший основы структурного программирования. В 1970-х гг. эта методология оформилась, и корпорация IBM сообщила о применении в разработке программного обеспечения «Усовершенствованных методов программирования», одним из компонентов которых являлась технология нисходящего структурного программирования (структурного программирования), основу которого составляет следующее:
• сложная задача разбивается на простые, функционально управляемые задачи, каждая задача имеет один вход и один выход; управляющий поток программы состоит из совокупности элементарных функциональных подзадач;
• управляющие структуры просты, т. е. логическая задача должна состоять из минимальной, функционально полной совокупности достаточно простых управляющих структур;
• программа разрабатывается поэтапно, на каждом этапе решается ограниченное число точно поставленных задач.
Обычно при составлении схемы алгоритма процесс вычисления идет сверху вниз, возвращаясь назад только в циклах, что позволяет анализировать алгоритм как обычный текст, т.е. сверху вниз. Если технологию разработки алгоритмов «сверху - вниз» совместить с использованием только структурных схем, то получится новая технология, которая называется структурным программированием сверху – вниз (нисходящим), идея которого заключается в том, что структура программы должна отражать структуру решаемой задачи, чтобы алгоритм решения был ясно виден из исходного текста. Для этого надо иметь средства для создания программы не только с помощью трех простых операторов (следование, ветвление и цикл), но и с помощью средств, более точно отражающих конкретную структуру алгоритма. С этой целью в программирование введено понятие подпрограммы — набора операторов, выполняющих нужное действие и не зависящих от других частей исходного кода. Программа разбивается на множество мелких подпрограмм, каждая из которых выполняет одно из действий, предусмотренных исходным заданием. Комбинируя эти подпрограммы, удается формировать итоговый алгоритм уже не из простых операторов, а из законченных блоков кода, имеющих определенную смысловую нагрузку, причем обращаться к таким блокам можно по названиям. Получается, что подпрограммы — это новые операторы или операции языка, определяемые программистом.
Такой подход удобен тем, что позволяет человеку постоянно мыслить на предметном уровне, не опускаясь до конкретных операторов и переменных. Кроме того, появляется возможность некоторые подпрограммы не реализовывать сразу, а временно откладывать, пока не будут закончены другие части.
Очень важная характеристика подпрограмм — это возможность их повторного использования. С интегрированными системами программирования поставляются большие библиотеки стандартных подпрограмм, которые позволяют значительно повысить производительность труда за счет использования чужой работы по созданию часто применяемых подпрограмм.
Подпрограммы бывают двух видов — процедуры и функции. Отличаются они тем, что процедура просто выполняет группу операторов, а функция вдобавок вычисляет некоторое значение и передает его обратно в главную программу (возвращает значение). Это значение имеет определенный тип (говорят, что функция имеет такой-то тип).
Чтобы работа подпрограммы имела смысл, ей надо получить данные из внешней программы, которая эту подпрограмму вызывает. Данные передаются подпрограмме в виде параметров или аргументов, которые обычно описываются в ее заголовке так же, как переменные.
3.2 Событийно-ориентированное программирование
С активным распространением системы Windows и появлением визуальных RAD-сред широкую популярность приобрел событийный подход к созданию программ — событийно-ориентированное программирование.
Структура программы, созданной с помощью событийного программирования, следующая. Главная часть представляет собой один бесконечный цикл, который опрашивает Windows, следя за появлением нового сообщения. При его обнаружении вызывается подпрограмма, ответственная за обработку соответствующего события (обрабатываются не все события, их сотни, а только нужные), и подобный цикл опроса продолжается, пока не будет получено сообщение «Завершить работу»,
События могут быть пользовательскими, возникшими в результате действий пользователя, системными, возникающими в операционной системе (например, сообщения от таймера), и программными, генерируемыми самой программой (например, обнаружена ошибка и ее надо обработать).
Событийное программирование является развитием идей нисходящего проектирования, когда постепенно определяются и детализируются реакции программы на различные события.
3.3 Модульное программирование
Данная технология заключается в следующем:
• функциональная декомпозиция (разбиение) задачи на самостоятельные подзадачи — модули, связанные только входными и выходными данными;
• модуль представляет собой «черный ящик», позволяющий разрабатывать части программ одного проекта на разных языках программирования, а затем с помощью компоновочных средств объединять их в единый загрузочный модуль;
• должно быть ясное понимание назначения всех модулей задачи и их оптимального сочетания;
• с помощью комментариев должно описываться назначение всех переменных модуля.
3.4 Объектно-ориентированное программирование.
Развитие идей структурного и событийного программирования существенно подняло производительность труда программистов и позволило в разумные сроки (несколько месяцев) создавать приложения объемом в сотни тысяч строк. На смену им в начале 1990-х гг. пришло объектно-ориентированное программирование (ООП). Его можно рассматривать как модульное программирование нового уровня, когда вместо механического объединения процедур и данных главным становится их смысловая связь. Объект рассматривается как логическая единица, которая содержит данные и правила (методы) их обработки. Объектно-ориентированный язык создает «программное окружение» в виде множества независимых объектов, каждый из которых отличается своими свойствами и способами взаимодействия с другими объектами. Программист задает совокупность операций, описывая структуру обмена сообщениями между объектами. Как правило, он «не заглядывает» внутрь объектов, но при необходимости может изменять элементы внутри объектов или формировать новые.
Реальные объекты окружающего мира обладают тремя базовыми характеристиками: они имеют набор свойств, способны разными методами изменять эти свойства и реагировать на события, возникающие как в окружающем мире, так и внутри самого объекта. Именно в таком виде в языках программирования и реализовано понятие объекта как совокупности свойств (структур данных, характерных для этого объекта), методов их обработки (подпрограмм изменения свойств) и событий, на которые данный объект может реагировать и которые приводят, как правило, к изменению свойств объекта.
Объекты могут иметь идентичную структуру и отличаться только значениями свойств. В таких случаях в программе создается новый тип, основанный на единой структуре объекта (по аналогии с тем, как создаются новые типы для структур данных). Он называется классом, а каждый конкретный объект, имеющий структуру этого класса, называется экземпляром класса.
Описание нового класса похоже на описание новой структуры данных, только к полям (свойствам) добавляются методы — подпрограммы.
При определении подпрограмм, принадлежащих конкретному классу, его методов, в заголовке подпрограммы перед ее названием явно указывается, к какому классу она принадлежит.
Класс — это тип данных, такой же, как любой другой базовый или сложный тип. На его основе можно описывать конкретные объекты (экземпляры классов).
ООП основано на трех важнейших принципах (инкапсуляция, наследование, полиморфизм), придающих объектам новые свойства. Инкапсуляция — объединение в единое целое данных и алгоритмов их обработки. Данные здесь — поля объекта, а алгоритмы — объектные методы. Наследование — свойство объектов порождать своих потомков. Объект-потомок автоматически наследует все поля и методы, может дополнять объекты новыми полями, заменять и дополнять методы. Полиморфизм — свойство родственных объектов решать схожие по смыслу проблемы разными способами.
Идея использования программных объектов исследовалась в течение ряда лет разными учеными. Одним из первых языков этого типа считают Simula-67. А в 1972 г. появился язык Smoltalk, разработанный Аланом Кеем, утвердивший статус ООП.
На современном этапе развиваются инструментальные среды и системы визуального программирования для создания программ на языках высокого уровня: (Turbo Pascal, Delphi, Visual Basic, C++Builder и др.).
3.5 Компонентного программирования (КП)
Развитие основных принципов объектно-ориентированного программирования получило с появлением компонентного программирования (КП) — динамический процесс без жестких правил, выполняющийся в основном для распределенной разработки (программирования) распределенных систем. Суть КП в том, что независимые проектировщики, программисты разрабатывают независимые компоненты (отдельные части) единой системы, распределенные по множеству узлов большой сети. Эти части могут принадлежать разным собственникам и управляться организационно независимыми администраторами.
В КП компонент рассматривается как хранилище (в виде DLL-или ЕХЕ файлов) для одного или нескольких классов. Классы распространяются в бинарном виде, а не в виде исходного кода. Предоставление доступа к методам класса осуществляется через строго определенные интерфейсы по протоколу. Это снимает проблему несовместимости компиляторов, обеспечивая без перекомпиляции смену версий классов в разных приложениях. Интерфейсы задают содержание сервиса и являются посредником между клиентом и сервером.
Фирма Microsoft создала технологии для распределенной разработки распределенных систем, такие как COM (Component Object Model), COM+, NET. Разработаны и другие технологии: CORBA (консорциума OMG), JAVA (компании Sun Microsystem) и др.
- ^
Современные технологии программирования
В конце 1980-х гг. в Японии и США появились проекты ЭВМ V поколения, реализованные в конце 1990-х гг. Прогресс в программировании был связан с прогрессом в архитектуре вычислительных систем, отходом от фон-неймановской концепции, с достижениями в области искусственного интеллекта. Революционные изменения в элементной базе ЭВМ связываются с исследованиями по биоэлектронике.
Независимость языков высокого уровня от ЭВМ вовлекла в сферу алгоритмизации задач специалистов различных отраслей знаний, позволила использовать многочисленные стандартные типовые программы, а программистам — устранять дублирование в написании программ для различных типов ЭВМ и значительно повысить производительность труда.
На современном этапе программирование включает комплекс вопросов, связанных с написанием спецификаций (условий задач), проектированием, кодированием, тестированием и функционированием программ для ЭВМ. Современное ПО для ЭВМ имеет сложную структуру и включает, как правило, ОС, трансляторы с различных языков, текстовые программы контроля и диагностики, набор обслуживающих программ. Например, японские ученые для проектирования систем ПО разрабатывают идею «кольцевой структуры» шести уровней: 1-й (внутренний) — программы для аппаратуры; 2-й — ядро ОС; 3-й — программы сопряжения; 4-й — часть ОС, ориентированная на пользователя; 5-й — системы программирования; 6-й (внешний) — программы пользователя.
Согласно этим проектам научных исследований процесс создания программных средств будет значительно упрощаться путем автоматизации синтеза по спецификациям исходных требований на естественных языках.
4.1 CASE системы
Широкое применение структурных и объектно-ориентированных методов программирования с использованием графических моделей объединялось отсутствием инструментальных средств. Это породило потребность в программно-технологических средствах специального класса — CASE (Computer Aided Software Engineering), реализующих технологию создания и сопровождения программного обеспечения (ПО) различных систем.
Предпосылки для появления CASE-технологий возникли к концу 1980-х гг. Первоначально термин «CASE» применялся только к вопросам автоматизации разработки ПО, теперь программная инженерия имеет более широкое значение для разработки систем в целом. В CASE-технологии входит разработка и внедрение языков высокого уровня, методов структурного и модульного программирования, языков проектирования и средств их поддержки, формальных и неформальных языков описания системных требований.
Представление о CASE - комплексах связано в нашем сознании с чем - то, не имеющим отношения к обычному программированию.В Америке из - за сильнейшнй конкуренции CASE - средства используются подавляющим большинством фирм - разработчиков программного обеспечения. Мощный толчок CASE - средства получили в пору внедрения объекто - ориентированной технологии разработки ПО, когда старого, проверенного временем метода проектирования "сверху вниз" стало явно недостаточно. К тому же появились технологии объектного моделирования Booch, OMT, UML, сами по себе весьма сложные для привязки к языкам программирования, чтобы оперировать ими вручную. Сегодня лидирующей в мире CASE-системой считается Rational Rose корпорации Rational Software. Система Rational Rose нацелена на создание модулей с использованием языка Unified Modeling Language (UML).
4.2 Индустрия искусственного интеллекта.
Идея переложить на ЭВМ функции составителей алгоритмов и программистов дала новые возможности развитию сферы искусственного интеллекта, которая должна была создавать методы автоматического решения интеллектуальных задач. Формализация знаний, которые есть у профессионалов в разных областях, накопление их в базах знаний, реализованных на ЭВМ, стали основанием для создания экспертных систем. На основе баз знаний работают и ЭВМ V поколения, и интеллектуальные роботы, и экспертные системы. Эти системы могут не только найти решение той или иной задачи, но и объяснить, как оно получено. Появилась возможность манипулировать знаниями, иметь знания о знаниях — метазнания. Знания, хранящиеся в системе, стали объектом ее собственных исследований.
Бум, возникший в конце семидесятых годов в области изучения искусственного интеллекта и приведший к созданию новой отрасли промышленности, не случаен, его вызвали следующие причины:
Первая - угроза всеобщей мобилизации населения земного шара в программисты привела к идее пятого поколения ЭВМ. Но создание таких ЭВМ требует разработки средств автоматического выполнения функций алгоритмиста и программиста, то есть интеллектуальных функций по формализации задач и составлению программ для их решения. А это уже сфера искусственного интеллекта, ибо одно из толкований целей этой науки состоит как раз в утверждении, что она должна создавать методы автоматического решения задач, считающихся в человеческом понимании интеллектуальными. Это означает, что создание ЭВМ пятого поколения невозможно без использования достижений, накопленных в искусственном интеллекте;
Вторая - развитие робототехнических малолюдных или безлюдных производств. На современных промышленных предприятиях происходит активное внедрение автоматических систем, в которых широко используются интеллектуальные роботы. Прогресс в этой области во многом зависит от того, насколько роботы могут хранить в своей памяти необходимую сумму знаний о профессии, которой они овладевают;
Третья - необходимость передавать на ЭВМ задачи из плохо структурированных проблемных областей. Именно для них нужно автоматизировать труд алгоритмиста, его способность формализовать то, что с трудом поддается формализации. Путь решения этой проблемы - формализация знаний, которые есть у профессионалов в данной проблемной области, но хранятся в их памяти в виде неформализованных соображений, умений и навыков. Такие профессионалы являются экспертами своего дела, а получаемые от них знания обычно называют экспертными. Если в базу знаний системы заложить знания подобного типа, то система будет называться экспертной.
4.3 Экспертные систем.
Экспертные системы могут не только найти решение той или иной задачи, но и объяснить пользователю, как и почему оно получено. Это означает, что в экспертных системах реализована возможность "самоанализа", в них появилась возможность рассуждать о знаниях и манипулировать ими. А значит, появилась и возможность иметь знания о знаниях, т.е. метазнания. С их помощью в экспертных системах стала возможной оценка знаний с точки зрения их полноты и корректности, а также реализуется "функция любопытства", связанная с активным поиском связей между хранящимися в памяти знаниями, их классификацией и пополнением за счет разнообразных логических процедур.
В экспертных системах сделан важный шаг - знания, хранящиеся в системе, стали объектом ее собственных исследований.
Потенциально человек способен к овладению любым видом интеллектуальной деятельности. Он может научиться играть и в шахматы, и в морской бой, и в любые другие игры, ибо он обладает универсальными метапроцедурами, позволяющими ему создать процедуры решения конкретных интеллектуальных задач.
Развитие теории искусственного интеллекта в конце шестидесятых годов началось с осознания именно этого факта. У новой науки появился свой специфический объект исследований и моделирования - универсальные метапроцедуры программирования интеллектуальной деятельности. В их числе имеются метапроцедуры общения, обучения, анализа воспринимаемой системой информации и многие другие. Но, несомненно, центральное место здесь занимают те метапроцедуры, которые связаны с накоплением знаний и использовании их при решении интеллектуальных задач. Именно эти метапроцедуры находят свое воплощение в экспертных системах.
Существующие сейчас экспертные системы принято делить на два класса: консультационные и исследовательские. Первые призваны давать советы, когда у пользователя возникает необходимость в них, а вторые - помогать исследователю решать интересующие его научные задачи.
Система общения позволяет вводить в экспертную систему информацию на, ограниченном рамками профессиональной области, естественном языке и организует ведение диалога с пользователем. Эта система сообщает пользователю о непонятных для нее словах, о допущенных им ошибках, предлагает наборы действий, которые пользователь при желании может выполнить. Если пользователь еще не освоил "этику приема", то в дело включается блок обучения; в диалоговом режиме он постепенно обучает пользователя с общению с ЭВМ, учит его, используя примеры, решению задач. Пользователь может обращаться к этому учителю, когда захочет, - система всегда найдет время для пояснения непонятных пользователю моментов.
В экспертной системе существует специальный комплекс средств, с помощью которых в базе знаний наводится необходимый порядок. Информация здесь классифицируется, обобщается, оценивается ее непротиворечивость, отдельные информационные единицы объединяются связями различного типа. Другими словами, в базе знаний возникает структурированная модель проблемной области, в которой отражены все ее особенности, закономерности и способы решения задач. Всеми этими процедурами заведует система поддержки базы знаний.
Почти так же, как и консультативные, устроены исследовательские экспертные системы, но в них имеются еще и блоки, в которых выполняются все необходимые для специалиста расчеты. Можно сказать, что экспертные системы такого типа - это симбиоз ЭВМ пятого поколения и консультационных экспертных систем
4.4. Сетевое программирование
Мощным толчком в развитии новых направлений в программировании послужило объединение компьютерных и телекоммуникационных технологий.
За рубежом в 1960-х гг. появились первые вычислительные сети, с которых началась техническая и технологическая революция, т. к. была предпринята попытка объединить технологию сбора, хранения, передачи и обработки информации на ЭВМ с техникой связи. В Европе в те годы были созданы международные сети EIN и Евронет, затем появились национальные сети. В 1972 г. в Вене была создана сеть МИПСА, к которой присоединились в 1979 г. 17 стран Европы, СССР, США, Канада и Япония. В 1980-х гг. в нашей стране была создана система телеобработки статистической информации, обслуживающая государственные и республиканские органы статистики. С 1980-х гг. развивается программирование для локальных вычислительных сетей (ЛВС) – коммуникационных систем, поддерживаемых внутри некоторой ограниченной территории, работающих под управлением сетевых ОС (например NetWare компании «Novell»).
Глобальные вычислительные сети — это сети, использующие информационные ресурсы ЛВС, расположенных на большом расстоянии друг от друга. Наиболее популярной является сеть Интернет, представляющая собой общемировую совкупность сетей, связывающая между собой миллионы компьютеров.
Сети позволили эффективно использовать аппаратные средства, программные средства и такие многопользовательские системы, как электронная почта, информационные системы на основе баз данных, телеконференции и др. Особой популярностью пользуется система WWW (World Wide Web) — Всемирная паутина, т. е. всемирная распределенная база гипертекстовых документов. Пользователи, используя для программирования язык гипертекстовой разметки HTML, создают свои сайты любой тематики и легко могут получать многообразную информацию, общаться с миллионами пользователей компьютеров. В будущем планируется массовое использование так называемых информационных роботов (Knowbot) — новых систем поиска и обработки информации в сети, в основе которых имеются уже элементы экспертных систем, позволяющих анализировать искомую информацию и готовить ее для выдачи в форме презентаций.
С Интернетом тесно связаны понятия «киберпространство» и «виртуальная реальность». Киберпростраиством называют совокупность всех систем компьютерных коммуникаций и потоков информации, циркулирующих в мировых сетях. Виртуальная реальность — фантастический мир, создаваемый на экране компьютера, образы реального мира и процессов, в нем происходящих. С этими объектами и процессами можно работать как с реальными, проводить различные исследования, имитировать всевозможные ситуации, создавать прекрасные тренажеры для применения полученных навыков в реальности. Поле деятельности для программистов огромное, поэтому общество заинтересовано в высококвалифицированных специалистах этого профиля.
Заключение
На сегодняшний день информационные технологии находятся на том уровне, что само понятие программирование потеряло свой первоначальный смысл - … Необходимость в умении писать сложные программы при решении прикладных задач, проектировании различных систем уже не так высока как на заре эпохи компьютеризации. Пройдя долгий и сложный путь, став самостоятельной наукой, взяв за основную единицу описания – объект, программирование превратилось в некую систему, которая освобождает проблемного пользователя или прикладного программиста от необходимости написания программ решения своих задач на неудобном для него языке машинных команд и предоставляют им возможность использовать специальные языки более высокого уровня.
Теперь достаточно воспользоваться удобной системой проектирования, содержащей готовые модули в виде исполнимых функций и процедур… и практически любой опытный пользователь может получить решение своей задачи, получить нужную модель того или иного процесса. Так же появилась возможность проводить экспертные оценки полученных результатов. Таким образом на ряду с ростом уровня технологий программирования наблюдается сокращение необходимости участия человека в процессе написания программ.
Исследования в области искусственного интеллекта, нанотехнологий, биоэлектроники – все это лишний раз подтверждает сказанное выше! Каким будет наш мир? Покажет время…
^
Список литературы
Березин Б.И., Березин С.Б. Начальный курс программирования/ М., 1996 г.
- Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на C++, 2-е изд./ Перевод с английского – М.: «Издательство Бином», С-Пб.: «Невский диалект», 1999 г. – 560 с., ил. books.dore.ru/bs/flbid1160.php
- Ваулин А.С. Языки программирования/ 1993 г.
- Вендеров А.М. CASE-технологии. Современные методы и средства проектирования информационных систем. М.: Диалог-МГУ, 1998.
- Трофимов С.А. CASE-технологии: практическая работа в Ration Rose/ М., ЗАО «Издательство БИНОМ», 2001 г.