Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Анализ социально–экономических показателей.

Поиск

Имитационное моделирование процессов на территории.

Анализ криминальной обстановки. На анализируемой территории ГИС выделяют районы с повышенным уровнем преступности.

Транспортная задача и т.п. ГИС позволяют находить оптимальные маршруты движения транспорта по заданным критериям (кратчайшее расстояние, численность пассажиров).

ГИС могут изучаться в качестве «инструментария» представителями различных профессий. Вы можете наглядно ознакомиться с возможностями ГИС-технологий, если выберете директорию DEMO, которая лежит на G:\GRINVIEW\APPLICATIONS\ и просмотрите графические файлы.

 

Вопрос№ 59

Классификация языков программирования.

Процедурное программирование

Процедурный подход к обработке информации возник на заре программирования. Именно с этим стилем программирования связано все развитие вычислительной техники. Несмотря на прогресс технологии, большинство современных компьютеров построены по тем же принципам, что и машины 40-х годов. В их основе лежит так называемая архитектура фон Неймана, названная в честь американского ученого Дж. фон Неймана, впервые изложившего принципиальные положения архитектуры ЭВМ во второй половине 40-х годов.

Основные принципы архитектуры фон Неймана состоят в следующем:

1. ЭВМ состоит из процессора, памяти и внешних устройств;

2. единственным источником активности (не считая стартового и аварийного вмешательства человека) в ЭВМ является процессор, который, в свою очередь, управляется программой, находящейся в памяти машины;

3. память машины может быть представлена как последовательность дискретных ячеек, каждая из которых имеет свой адрес; каждая ячейка хранит команду программы или некоторую единицу обрабатываемой информации, причем и то и другое выглядят одинаково (машинное слово);

4. в любой момент времени процессор выполняет одну команду программы, адрес которой находится в специальном регистре процессора - счетчике команд;

5. обработка информации происходит только в регистрах процессора; информацию в процессор можно ввести из любой ячейки памяти или внешнего устройства, или наоборот, направить в любую ячейку или на внешнее устройство;

6. в каждой команде программы зашифрованы следующие предписания: из каких ячеек памяти взять обрабатываемую информацию; какие совершить операции с взятой информацией; в какие ячейки памяти направить полученную информацию; как изменить содержимое счетчика команд, чтобы знать, откуда взять для выполнения следующую команду;

7. машина выполняет программу команда за командой в соответствии с изменением содержимого счетчика команд и расположением команд в памяти, пока не получит команду остановиться.

Развитие процедурных языков определялось особенностями вычислительной машины Дж. фон Неймана; способы представления знаний и задач, а также методов их решения были ориентированы на экономию ресурсов. При этом интеллектуальный комфорт пользователя был проигнорирован. Программа разрабатывается в терминах тех действий, которые она должна выполнять. Основная единица программы - процедура - последовательность операторов, выполняющая определенный вспомогательный алгоритм. Процедуры могут вызывать другие процедуры, вместе они работают по определенному алгоритму, ведущему к решению задачи. Кроме понятия оператор в основе процедурного языка лежит понятие операнд - данные, которые обрабатываются при помощи операторов. Типы операндов: простой, массив, структуры. Типы операторов: присваивания, условных операций, итерации.

Программа, написанная на процедурном языке, явно указывает способ получения результата, но не сам результат.

Существует большое число процедурных языков программирования. Это - Algol, Fortran, Pascal, С, Basic и др.

Функциональное программирование

Применение ЭВМ для решения задач искусственного интеллекта и обработки текстов привело к созданию функциональных языков. Эти языки имеют хорошо проработанное математическое основание - l-исчисление. Функция в математике - отображение объектов из множества величин (области определения функции или домена) в объекты другого множества (область значений функции). Переменные в функциональной программе рассматриваются как переменные в математике: если они существуют, то имеют какую-то величину, и эта величина не может измениться. Функциональная программа описывает, что должно быть вычислено, то есть является просто выражением, определенным в терминах заранее заданных функций и функций, определенных пользователем. Величина этого выражения является результатом программы. Таким образом, здесь отсутствует состояние программы и предыстория вычислений. Первым языком функционального программирования является созданный в начале 1960-х годов язык ЛИСП (LISP - LISt Processing). В отличие от процедурных языков, в которых действия в основном выражаются в виде итерации - повтора какого-либо фрагмента программы несколько раз, в ЛИСП вычисления производятся с помощью рекурсии - вызова функцией самой себя, а основная структура данных - это список.

Логическое программирование

Математическая логика использует отточенный формальный язык для представления знаний об объектах той или иной предметной области, включая явные средства выражения гипотез и суждений. Подобные качества роднят логику и искусство программирования. Идея непосредственного применения логики в качестве средства программирования возникла практически одновременно с первыми процедурными языками. Главная особенность такого подхода состоит в том, что программа (логическая) состоит из набора утверждений (аксиом), а вычисление, выполняемое под управлением такой программы, представляет собой логический вывод некоторого целевого утверждения - искомого результата. Вывод производится из аксиом программы по правилам математической логики, причем эти правила применяются автоматически, программист не должен их специально указывать.

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

Серьезные практические результаты в области логического программирования появились только в 70-е годы после того, как была подготовлена достаточная теоретическая база и достигнут значительный прогресс в развитии вычислительной техники. К этому времени после целой череды экспериментальных языков группой Алана Колмероэ в Марселе была создана (еще неэффективная) реализация языка, заменившего последовательные вычисления машины фон Неймана на логический вывод. Новый язык, названный Прологом (Программирование л огическое), предназначался для анализа текстов, написанных на естественном языке, т.е. для решения задач, обычно относимых к области искусственного интеллекта. Приблизительно в те же годы были разработаны и теоретические основы нового направления в программировании. Основные результаты в этой области принадлежат Алану Робинсону и Роберту Ковальскому. Первая реализация Пролога, выполненная кстати на Фортране, заинтересовала специалистов, но не получила широкого распространения по причине низкой эффективности. Мешал распространению Пролога и накопившийся к этому времени у специалистов (в основном американских) общий скепсис по отношению к идее логического программирования, поскольку все реализации предшественников Пролога были также неэффективны.

Настоящая революция в этой области произошла в конце 70-х, когда Дэвид Уоррен из Эдинбургского университета создал первый компилятор для языка Пролог. Этот компилятор работал настолько эффективно, что скепсис специалистов немедленно сменился всеобщим энтузиазмом. С тех пор и до настоящего времени направление логического программирования успешно развивается и поддерживается как профессионалами, так и просто любителями программирования.



Поделиться:


Последнее изменение этой страницы: 2016-04-07; просмотров: 570; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.28.97 (0.009 с.)