- •3.1. Основы построения инструментальных средств. Технологии проектирования информационных систем и технологий и их перспективы развития.
- •Технологии проектирования информационных систем и технологий
- •3.2.Эффективность информационных технологий
- •Базовые Российские стандарты в области информационных технологий
- •Утверждаю
- •Стратегия развития информационного общества в Российской Федерации
- •Общие положения
- •Назначение и политико-правовая основа настоящей Стратегии
- •Цель, задачи и принципы развития информационного общества в Российской Федерации
- •Основные направления реализации настоящей Стратегии
- •Международное сотрудничество в области развития информационного общества
- •Реализация настоящей Стратегии
- •Контрольные значения показателей развития информационного общества в Российской Федерации на период до 2015 года
- •Этика в Интернете Правила этикета глобальной телекоммуникационной сети в режиме сервиса www
- •Этикет в режиме сервиса электронной почты
- •Этикет в режиме сервиса «чад», «форум» и «телеконференции»
|
|
Раздел 3
Инструментарий информационных технологий
|
Основы построения инструментальных средств. Технологии проектирования ИС и ИТ и их перспективы развития.
Эффективность информационных технологий.
3.1. Основы построения инструментальных средств. Технологии проектирования информационных систем и технологий и их перспективы развития.
Работа вычислительной техники в целом связана с программным продуктом. Весь программный продукт классифицируется следующим образом (рис.3.1).

Рис. 3.1. Классификация программного продукта.
Системный и прикладной программные продукты являются основными классами программных продуктов большей части пользователей. Современные системные программные продукты такие, как Операционные системы (ОС): Windows, Unix, Linux и др. Они работают с пользователем по следующему алгоритму (рис.3.2.).

Рис.3.2. Алгоритм работы операционных систем с пользователем.
Сетевые ОС отличаются от локальных ОС по различным ресурсам информационных средств и это можно увидеть на рис. 3.3. Так сетевая ОС значительно больше по своему объему, чем локальная, т.к. она размещается на сервере и на клиенте. На выделенных серверах устанавливаются операционные системы, специально оптимизированные для выполнения тех или иных сетевых функций, а у клиентов — специальные модули, встраиваемые в операционную систему рабочей станции и обеспечивающие связь с серверами. Решая задачу информационной безопасности, такое соединение сети называется «тонкий клиент».

Рис.3.3. Сетевая и локальные операционные ситемы.
Третий класс программного продукта называется инструментарий программирования. Этот программный продукт обеспечивает создания остальных прикладных и даже системных программных продуктов. Программный продукт часто в обиходе называют компьютерной программой.
Компьютерная
программа
– это набор инструкций для работы
различных средств
компьютера. Она выполняется на раличных языках программирования.

Рис.3.4. Классификация языков программирования
Первая попытка создать высоко-уровневый язык программирования принадлежит гениальному Конраду Цузе (конец 1940-х годов), разработавшему Plancalcul (планировщик вычислений). «Plancalcul родился исключительно как результат теоретической работы, без всякой связи с тем, появится или нет в обозримом будущем машины, подходящие к программам на Plancalcul». Эволюция программного обеспечения. Подобно тому, как в океане из плавающей мути откладываются геологические пласты, из специального программного обеспечения с течением времени образуются слои общего ПП.
Весь инструментарий деляться на директивный, декларативный, визуально-событийное и объекто - ориентированный. Это как правило, набор языков программирования. Под языком программирования будем понимать набор правил

Рис.3.5. Классификация устройств обеспечивающих работу языков программирования
(лексических, синтаксических и семантических) для составления компьютерной программы.
Языки программирования деляться на разные уровни. К низшему уровню относится: машинный язык, язык Ассемблера построенный на мнемонических командах вместо машинного кода. К языкам высшего уровня (ЯВУ) с развитием программрования стали относить структурные языки (рис.3.4). Активный период разработки языков и систем программирования приходится на 1960-е годы. За это десятилетие в мире родилось более тысячи разнообразных языков, как универсальных, так и специализированных, но выжили и доросли до XXI века дожили немногие, в том числе бессмертные Fotran, Basic, Algol, Cobol, Simula, Lisp и их потомки. Особенности функционирования ЯВУ заключается в том, что специальные устройства компиляторы или интерпретаторы переводят их в языки низкого уровня (рис.3.5).
Рассмотрим описание процесса моделирования и основные парадигмы программирования: императивное программирование (называемое также директивным или процедурным), декларативное (функциональное и логическое), визуально-событийное (новый подход) и объектно-ориентированное.
Основной перечень современных языков программирования представляет следующий набор:
директивное - процедурное программирование (Fortran, Basic, Cobol, Algol, Pascal, Ada, С, Logo, FoxPro);
декларативное - функциональное программирование (Lisp), логическое программирование (Prolog);
визуально-событийное программирование (Visual Basic, Delphi, Visual C++, Visual Java, Visual FoxPro);
объектно-ориентированное программирование (Simula, Smalltalk, Object Pascal, C++, Java, C#).
С развитием вычислительной техники все важнее становится роль компьютерного моделирования в решении прикладных и научных задач. Для проведения компьютерных экспериментов строится подходящая математическая модель и подбираются соответствующие средства разработки программного обеспечения. Выбор языка программирования оказывает огромное влияние на реализацию полученной модели. Родословная развития языков программирования представлена на рис.3.6.

Рис.3.6. Родословная основных высокоуровневых языков программирования.
Моделирование с помощью ЭВМ
О вопросах современного моделирования говориться в разделе 2. Однако с точки зрения программирования, при использовании современного инструмента, требуется пояснить применение языков программрования высшего уровня. Обратимся к истории. В 1870 г. английское Адмиралтейство спустило на воду новый броненосец "Кэптен". Корабль вышел в море и перевернулся. Погиб корабль и все находящиеся на нем люди. Это было совершенно неожиданно для всех, кроме английского ученого-кораблестроителя В. Рида, который предварительно провел исследования на модели броненосца и установил, что корабль опрокинется даже при небольшом волнении. Но ученому, проделывающему, как казалось, несерьезные опыты с "игрушкой", не поверили лорды из Адмиралтейства. И случилось непоправимое...
Модели и моделирование используются человечеством давно. С помощью моделей и модельных отношений развились разговорные языки, письменность, графика. Наскальные изображения наших предков, затем картины и книги - это модельные, информационные формы передачи знаний об окружающем мире последующим поколениям. Модели применяются при изучении сложных явлений, процессов, конструировании новых сооружений. Хорошо построенная модель, как правило, доступнее для исследования, нежели реальный объект. Более того, некоторые объекты вообще не могут быть изучены непосредственным образом: недопустимы, например, эксперименты с экономикой страны в познавательных целях; принципиально неосуществимы эксперименты с прошлым или, скажем, с планетами Солнечной системы и т. п.
Модель позволяет научиться правильно работать с объектом, апробируя различные варианты управления на его модели. Экспериментировать в этих целях с реальным объектом в лучшем случае бывает неудобно, а зачастую просто вредно или вообще невозможно в силу ряда причин (большой продолжительности эксперимента во времени, риска привести объект в нежелательное и необратимое состояние и т. п.)
Модель - это материальный или мысленно представляемый объект, замещающий в процессе изучения объект-оригинал, и сохраняющий значимые для данного исследования типичные его черты. Процесс построения модели называется моделированием, т.к.для этого используются языки высокого уровня. Другими словами, моделирование - это процесс изучения строения и свойств оригинала с помощью модели.
Компьютерная модель - это модель реального процесса или явления, реализованная компьютерными средствами. Если состояние системы меняется со временем, то модели называют динамическими, в противном случае - статическими.
Процессы
в системе могут протекать по-разному в
зависимости от условий, в которых
находится система. Следить за поведением
реальной системы при различных условиях
бывает трудно, а иногда и невозможно. В
таких случаях, построив модель, можно
многократно возвращаться к начальному
состоянию и наблюдать за ее поведением.
Этот метод исследования систем называется
имитационным
моделированием.
Примером имитационного моделирование
может служить вычисление числа
=
3,1415922653... методом Монте-Карло. Этот метод
позволяет определять площади и объемы
фигур (тел), которые сложно вычислить
другими методами. Предположим, что
требуется определить площадь круга.
Опишем вокруг него квадрат (площадь
которого, как известно, равна квадрату
его стороны) и будемслучайным
образом бросать в квадрат точки, проверяя
каждый раз, попала ли точка в круг или
нет. При большом числе точек отношение
площади круга к площади квадрата будет
стремиться к отношению числа точек,
попавших в круг, к общему числу брошенных
точек.
Теоретическая основа этого метода была известна давно, однако до появления компьютеров этот метод не мог найти сколько-нибудь широкого применения, ибо моделировать случайные величины вручную - очень трудоемкая работа. Название метода происходит от города Монте-Карло в княжестве Монако, знаменитого своими игорными домами, ибо одним из механических приборов для получения случайных величин является рулетка.
Следует заметить, что данный метод вычисления площади круга будет давать корректный результат только если точки будут не просто случайно, но еще и равномерно разбросанными по всему квадрату. Для моделирования равномерно распределенных в интервале от 0 до 1 случайных чисел используется датчик случайных чисел - специальная компьютерная программа. На самом деле эти числа определяются по некоторому алгоритму и уже в силу этого они не являются вполне случайными. Получаемые таким способом числа часто называют псевдослучайными. Вопрос о качестве датчиков случайных чисел весьма непрост, однако для решения не слишком сложных задач обычно достаточно возможностей датчиков, встроенных в большинство систем программирования и электронных таблиц.
Заметим, что располагая датчиком равномерно распределенных случайных чисел, генерирующим числа r из интервала [0; 1], легко получить равномерно распределенные случайные числа на произвольном интервале [a; b] по формуле
x=a+(b-a)*r.
Приведем пример: Задания 1. Разработайте модель случайного одномерного блуждания (модель "пьяницы"). Блуждание задается по правилу: если случайное число из отрезка [0;1] меньше 0,5, то делается шаг влево, в противном случае - вправо. Для реализации модели используйте электронную таблицу. Предположим, что в начальный момент объект наблюдения находится в точке с y-координатой равной y0. Если случайное число больше 0,5, то y-координата увеличивается на 1, в противном случае - уменьшается на 1. Задания 2. Постройте модель хаотического блуждания точки на плоскости с возможностью делать шаги влево-вправо-вверх-вниз. Результаты моделирования представить графически.
Для наглядности процесса блуждания постройте диаграмму, отражающую местоположение объекта. При пересчете таблицы датчики выдадут новые последовательности чисел и траектория блуждания изменится. На рисунках 3.7 приведены две случайные траектории блуждания, вдоль горизонтальной оси отложено число шагов. моделирование, в свою очередь, делится на физическое и аналоговое моделирование и др.(рис.3.8).
Физическим принято называть моделирование, при котором реальному объекту Различают материальное и идеальное моделирование. Материальное противопоставляется его увеличенная или уменьшенная копия, допускающая исследование (как правило, в лабораторных условиях) с помощью последующего перенесения свойств изучаемых процессов и явлений с модели на объект на основе теории подобия. Примерами моделей такого рода служат: в астрономии - планетарий, в архитектуре - макеты зданий, в самолетостроении - модели летательных аппаратов и т. п.
Аналоговое моделирование основано на аналогии процессов и явлений, имеющих различную физическую природу, но одинаково описываемых формально (одними и теми же математическими уравнениями).
От предметного моделирования принципиально отличается идеальное моделирование, которое основано не на материальной аналогии объекта и модели, а на аналогии идеальной, мыслимой. Основным типом идеального моделирования является знаковое моделирование.
Знаковым называется моделирование, использующее в качестве моделей знаковые преобразования какого-либо вида: схемы, графики, чертежи, формулы, наборы символов.
Важнейшим видом знакового моделирования является математическое моделирование, при котором исследование объекта осуществляется посредством модели, сформулированной на языке математики. Классическим примером математического


Рис.3.7. Результат моделирования хаотического блуждания точки.

Рис.3.8.Классификация методов моделирования.
моделирования является описание и исследование законов механики Ньютона средствами математики.
Пример: Посмотрите на следующую запись и попробуйте определить, что скрывается за этими знаками:
a1x1+b1x2=c1 a2x1+b2x2=c2.
Ответы, полученные от людей, имеющих различные специальности, будут сильно различаться. Вот некоторые из возможных вариантов.
Математик: "Это система двух линейных алгебраических уравнений с двумя неизвестными, но что именно она выражает, сказать не могу".
Инженер-электрик: "Это уравнения электрического напряжения или токов с активными напряжениями".
Инженер-механик: "Это уравнения равновесия сил для системы рычагов или пружин".
Инженер-строитель: "Это уравнения, связывающие силы деформации в какой-то строительной конструкции".
Какой же из ответов правильный? Не удивляйтесь, но каждый из них в некотором смысле верен. Все зависит от того, что скрывается за постоянными коэффициентами a, b, c и символами неизвестных x1 и x2. Общая схема процесса моделирования выглядит так:
-
Объект -> Модель -> Изучение модели -> Знания об объекте
Для построения моделей используют два принципа: дедуктивный (от общего к частному) и индуктивный (от частного к общему). При первом подходе рассматривается частный случай общеизвестной фундаментальной модели, которая приспосабливается к условиям моделируемого объекта с учетом конкретных обстоятельств. Второй способ предполагает выдвижение гипотез, декомпозицию сложного объекта, анализ, а затем синтез. Здесь широко используется подобие, поиск аналогий, умозаключение с целью формирования каких-либо закономерностей в виде предположений о поведении системы.
Технология моделирования требует от исследователя умения корректно формулировать проблемы и задачи, прогнозировать результаты, проводить разумные оценки, выделять главные и второстепенные факторы для построения моделей, находить аналогии и выражать их на языке математики.
В современном мире все шире применяется процесс компьютерного моделирования, подразумевающий использование вычислительной техники для проведения экспериментов с моделью.
Этапы решения этой задачи на компьютеревыглядят так:
Первый этап – постановка задачи.
Второй этап – математическое моделирование.
Третий этап – алгоритмизация задачи.
Четвертый этап – программирование.
Пятый этап – ввод программы и исходных данных в компьютер.
Шестой этап – тестирование и отладка программы.
Седьмой этап – выполнение отлаженной программы и анализ результатов.
Парадигмы программирования
Парадигмы
программирования требуют от исследователя
правильно выбрать инструмент
программирования т.е. язык высокого
уровня и соблюсти все необходимые
условия моделирования, так чтобы
созданная модель была адекватной своего
объекта. В СССР эти вопросы успешно
решали М
ихаил
Романович Шура-Бура и А.П. Ершов –
создатели первых отечественных систем
автоматизации программирования для
ЭВМ «БЭСМ» и «Стрела» (1954-1956 годы).
Как было показано выше классификация языков программирования делятся на:
директивные (directive), называемые также процедурными (procedural) или императивными (imperative),
декларативные (declarative) языки,
объектно-ориентированные (object-oriented).
А также в последнее время все чаще обращаются к визуально-ситуационным (визуально-событийное программирование Visual Basic, Delphi, Visual C++, Visual Java, Visual FoxPro) языкам программирования высокого уровня. Этот класс ЯВУ позволяет наблюдать процесс исследования в динамики и результаты представлять в различной графической форме.
К директивным языкам относятся такие классические языки программирования, как Algol, Fortran, Basic, Pascal, C. Наиболее существенными классами декларативных языков являются функциональные (functional) или аппликативные, и логические (logic) языки. К категории функциональных языков относятся, например, Lisp и Haskell. Самым известным языком логического программирования является Prolog (Пролог). Среди объектно-ориентированных языков программирования (языков ООП) отметим C++, Java, Python и Ruby.
Отложим пока обсуждение концепции ООП и поговорим о различии между первыми двумя парадигмами. Главное заключается в следующем: декларативная программа заявляет (декларирует), что должно быть достигнуто в качестве цели, а директивная предписывает, как ее достичь.
Поясним это на следующем примере. Предположим, вам надо пройти в городе из пункта А в пункт Б. Декларативная программа - это план города, в котором указаны оба пункта, плюс правила уличного движения. Руководствуясь этими правилами и планом города, курьер сам найдет путь от пункта А к пункту Б.
Директивная программа - это список команд примерно такого рода: от пункта А по ул. Садовой на север до площади Славы, оттуда по ул. Пушкина два квартала, потом повернуть направо и идти до Театрального переулка, по этому переулку налево по правой стороне до дома 20, который и есть пункт Б.
В директивной программе действия задаются явными командами, подготовленными ее составителем. Исполнитель же просто им следует. Хотя команды в различных языках директивного программирования и выглядят по-разному, все они сводятся либо к присваиванию какой-нибудь переменной некоторого значения, либо к выбору следующей команды, которая должна будет выполняться. Присваиванию может предшествовать выполнение ряда арифметических и иных операций, вычисляющих требуемое значение, а команды выбора реализуются в виде условных операторов и операторор повторения (циклов).
Для классических директивных языков характерно, что последовательность выполняемых команд совершенно однозначно определяется ее входными данными. Как говорят, поведение исполнителя императивной программы полностью детерминировано.
Декларативные программы не предписывают выполнять определенную последовательность действий, в них лишь дается разрешение совершать их. Исполнитель должен сам найти способ достижения поставленной перед ним составителем программы (программистом) цели, причем зачастую это можно сделать различными способами - детерминированность в данном случае отсутствует.
Нельзя сказать, что один язык лучше другого только потому, что в нем есть возможности, которые в другом отсутствуют. Здесь более важно не то, какими возможностями обладает язык, а то, насколько имеющиеся в нем возможности поддерживают избранный стиль программирования для решения определенного круга задач.
Объектно-ориентированное программирование
Объектно-ориентированное
программирование (ООП) - это результат
естественной эволюции более ранних
методологий программирования. Потребность
в ООП связана со стремительным усложнением
разрабатываемых программ и, как следствие,
их недостаточной надежностью. Модульное
программирование, рассмотренное выше,
оказалось не способным решить эту
проблему. Первым ЯВУ в этой области стал
Basic.
Этапы
его развития представлены на рис.3.9.

Рис.3.9.Схема развития языка Basic

Язык Basic был разработан в 1964 г. в Дармутском колледже в г. Хановере (Darmouth College, Hanover), штат Нью-Хемпшир. Авторы языка Basic. стоит Джон Кемени (Kemeny, John G.; 1926-1993), сидит ТомасКурц (Kurtz, Thomas E.; р. 1928)
Следующим наиболее массовым ЯВУ стал Паскаль. Министерство Образование России определило его как рубежным уровнем для присвоения обучаемому высшего образования. Схема развития ЯВУ представлена на рис 3.10.

Рис.3.10. Схема развития языка Паскаль

Член комитета по Алголу-68 Никлаус Вирт (Wirth, Niklaus; р. 1934) был против принятия переусложненного стандарта. В знак доказательства своей правоты он разработал в 1971 г. простой и ясный алголоподобный язык, предназначенный прежде всего для обучения студентов в Федеральном техническом университете в Швейцарии. В честь изобретателя первой вычислительной машины Вирт назвал язык Паскалем.
Н
овую
жизнь языкуPascal
дал Филипп Кан (Kahn,
Philippe;
р. 1938) – создатель компилятора Turbo
Pascal
для IBM
PC
и основатель компании Borland
(1984 г.)
Среда разработки Delphi фирмы Borland объединила передовые достижения технологии программирования: объектное расширение языка Pascal, визуально- событийное проектирование, модульное структурирование и раздельная компиляция.
Новым подходом в программирование заявил о себе ЯВУ Си (С) (рис3.11).
Практически все современные языки программирования, независимо от принадлежности к тому или иному стилю (директивному или декларативному), поддерживают концепцию ООП. Среди них C++, Java, Ruby и Haskell. Существуют и версии объектно-ориентированного Пролога.

Рис.3.11.Схема развития языка Си

Язык
Си был создан Деннисом Ричи (Ritchie, Dennis
M.; р. 1941) в 1973 году в Bell Labs в ходе разработки
операционной системы UNIX (слева). Он
развивал язык Би (B), который основывался
на созданном в Кембриджском университете
языке BCPL (от Basic Combined Programming
Language), который в свою очередь был потомком
Алгола-60. Бьярн Страуструп (Stroustrup, Bjarne;
р. 1950) ввел в язык С объекты и превратил
его в С++ (справа).
Можно сказать, что ООП - это моделирование объектов посредством иерархически связанных классов. При этом малозначащие детали объекта скрыты от нас, и если мы даем команду какому-то объекту, то он "знает", как ее выполнить. Фундаментальной концепцией в ООП является понятие обязанности или ответственности за выполнение действия.
Все объекты являются представителями, или экземплярами, классов. Метод, активизируемый объектом в ответ на сообщение, определяется классом, к которому принадлежит получатель сообщения. Все объекты одного класса используют одни и те же методы в ответ на одинаковые сообщения.
Классы представляются в виде иерархической древовидной структуры, в которой классы с более общими чертами располагаются в корне дерева, а специализированные классы и в конечном итоге индивидумы располагаются в ветвях.
Итак, в основе ООП лежат три основных понятия: инкапсуляция (сокрытие данных в классе или методе); наследование; полиморфизм.
Инкапсуляцию можно представить, как защитную оболочку вокруг кода данных, с которыми этот код работает. Оболочка задает поведение и защищает код от произвольного доступа извне.
Наследование - это процесс, в результате которого один тип наследует свойства другого типа.
Полиморфизм - это концепция, позволяющая иметь различные реализации для одного и того же метода, которые будут выбираться в зависимости от типа объекта, переданного методу при вызове.
Пример: Для иллюстрации некоторых принципов ООП приведем небольшую программу на языке Ruby, который тоже поддерживает объектно-ориентированный стиль программирования.
Поместите в файл с именем life.rb фрагмент кода, расположенный ниже.
class Animal
def breath #Дыхание
print "все животные дышат: вдохнули и выдохнули\n"
end
end
class Cat<Animal
def bark # Подать голос
print "Mew Mew, я кошка. \n"
end
end
class Dog
def bark # Подать голос
print "Bow Wow, я собака. \n"
end
end
class Bird
def lay_egg
print "Яйцо снесено\n"
end
def fly
print "Я птица, я лечу!!!\n"
end
end
class Penguin<Bird
def fly
print "Пингвины не летают!!!\n"
end
end
# Создаем объекты разных классов
pochi = Dog.new
pochi.bark
tama = Cat.new
tama.breath
tama.bark
macaw = Bird.new
macaw.lay_egg
macaw.fly
penguin = Penguin.new
penguin.lay_egg
penguin.fly
Для запуска этой программы выполните в окне shell команду
ruby life.rb
Классическая логика и язык Пролог
![]()
Логические
языки, как и следует из их названия, для
цели передачи смысла программ используют
средства математической логики. Сама
по себе логика была изобретена как
инструмент человеческой мысли, позволяющий
упорядочить знания и получить из них
соответствующие выводы. Поэтому идея
использования принципов математической
логики при составлении компьютерных
программ кажется довольно естественной.
Схема развития ЯВУ Prolog
представлена на рис3.12.
Рис.3.12. Схема развития ЯВУ Prolog

Prolog
= PROgramming
for
LOGic
Теоретические основы языка были разработаны Робертом Ковальским (Kowalski, Robert) в Эдинбургском университете (Шотландия) в конце 1960-х годов (слева)
Первая практическая реализация языка осуществлена Аленом Кольмари (Colmerauer, Alain ) в Марсельском университете (Франция) в 1972 г. (справа)
Ранее мы уже познакомились с частью логики, называемой исчислением высказываний. Но исчисление высказываний не дает возможности выразить многие факты и рассуждения, которыми пользуются в обыденной жизни. Например, рассмотрим классическое рассуждение:
Все люди смертны (p); Сократ - человек (q);
следовательно, (->) Сократ смертен (r).
Это рассуждение верное, но его невозможно доказать в рамках теории высказываний. Мы можем записать формулу (p&&q)->r, но доказать ее истинность уже не сможем. Таким образом, логика высказываний не позволяет достаточно точно выразить рассматриваемое рассуждение. Это связано с тем, что она рассматривает каждое высказывание как неделимый объект, в то время как многие из высказываний зависят от неких параметров.
Исчисление предикатов является обобщением исчисления высказываний, позволяющим использовать параметры (называемые также аргументами или переменными) в высказываниях. В терминах теории предикатов наше рассуждение можно записать так: Для всех x, если x является человеком, то x является смертным; Сократ является человеком;(следовательно) Сократ является смертным.
Изучение исчисления предикатов не является нашей задачей, однако, для того, чтобы применять язык логического программирования, не обязательно знать логику предикатов: она уже встроена в него. Достаточно изучить сам язык и привыкнуть к его выразительным средствам.
Программа на языке Пролог представляет собой набор фактов и (возможно) правил. Если программа содержит только факты, то ее называют база данных. Если она содержит еще и правила, то часто используют термин база знаний.
Для запуска Пролога, наберите в командной строке pl и нажмите Enter. На экране появится приглашение для ввода запросов:
?-
Запрос (вопрос) вводится после приглашения и обязательно заканчивается точкой, например,
?- 5+4<3.
No
Пролог анализирует запрос и выдает ответ Yes (Да) в случае истинности утверждения и No (Нет) в противном случае или когда ответ не может быть найден.
Хранят программы на языке Пролог в текстовых файлах, чаще всего имеющих расширение pl, например, example1.pl. Для того чтобы Пролог мог оперировать информацией, содержащейся в файле, он должен ознакомится с его содержимым (проконсультироваться с ним). Это можно сделать несколькими способами. При использовании первого варианта в квадратных скобках записывается имя файла (без pl), например,
?- [example1].
В случае удачного завершения этой операции будет выдано сообщение, аналогичное следующему:
% example1 compiled 0.00 sec, 612 bytes
Yes
В противном случае будет выдан список ошибок (ERROR) и/или предупреждений (Warning).
Второй способ состоит в вызове встроенного предиката consult, которому в качестве аргумента передается имя файла (также без расширения), например:
?- consult(example1).
Расширение pl часто используется для файлов, содержащих программы на языке программирования Perl, поэтому можно встретить и другие расширения для файлов с программами на Прологе. Для загрузки файлов с расширениями, отличными от pl, все имя файла следует обязательно заключать в апострофы:
?- consult('example2.prolog').
?- ['example2.prolog'].
Обе эти команды добавляют факты и правила из указанного файла в базу данных Пролога. Можно загружать несколько файлов одновременно. В этом случае они перечисляются через запятую, например,
?- [example1, 'example2.prolog'].
Важно помнить, что все запросы должны заканчиваться точкой. Если вы забудете ее поставить, то Пролог выведет символ '|' и будет ожидать дальнейшего ввода. В этом случае надо ввести точку и нажать клавишу Enter:
?- [example1]
| .
Yes
Создание программ для работы в сети Интернет требует учета ряда особенностей, которые не столь значимы при "обычном" программировании. Прежде всего это проблемы безопасности - необходима защита компьютера пользователя от потенциально опасных действий полученной из сети программы. Вторым важным моментом является требование межплатформенности используемого языка - программы должны работать у каждого из пользователей сети Интернет вне зависимости от типа установленной на компьютере ОС.
Объектно-ориентированный язык Javaбыл разработан с учетом этих и других особенностей программирования в Интернет. Знакомству с ним и посвящена основная часть этой главы. Важно понимать, что излагаемый ниже материал не является курсом объектно-ориентированного программирования на языкеJava, а лишь иллюстрирует тесную взаимосвязь языков мира ООП. Далее рассматриваются как общие черты языковRubyиJava, так и наиболее важные их различия. При этом основное внимание уделяется проблеме перевода разобранных в предыдущей главе программ на языкJava.Знакомство с аплитами - разновидностью программ, предназначенными специально для работы в сети, а так же в различной литературе рассказывается об основных встроенных классах языкаJava Script– еще одного языка Интернета. Развитие ЯВУ идет в ногу с развитием вычислительной техникой, и новое поколение ЭВМ требует новых ЯВУ.
На современном этапе развития японцами заявлена новая Концепция ЭВМ V поколения, которая имеет следующие отличия:
новая технология производства микросхем, знаменующая переход от кремния к арсениду галлия, и дающая возможность на порядок повысить быстродействие основных логических элементов;
новая архитектура (не фон-неймановская);
новые способы ввода-вывода информации — распознавание и синтез речи и образов;
отказ от традиционных алгоритмических языков программирования (Фортран, Алгол и т. п.) в пользу декларативных;
ориентация на задачи искусственного интеллекта с автоматическим поиском решения на основе логического вывода.
Структура ЭВМ V Поколения приведена на рис 3.13.


