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


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



ЗНАЕТЕ ЛИ ВЫ?

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



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

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

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

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

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

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

Объектно-ориентированное программирование

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

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

Основные идеи объектно-ориентированного подхода опираются на следующие положения:

1. программа представляет собой модель некоторого реального процесса, части реального мира.

2. модель реального мира или его части может быть описана как совокупность взаимодействующих между собой объектов.

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

4. Взаимодействие между объектами осуществляется посылкой специальных сообщений от одного объекта к другому. Сообщение, полученное объектом, может потребовать выполнения определенных действий, например, изменения состояния объекта.

5. Объекты, описанные одним и тем же набором параметров и способные выполнять один и тот же набор действий представляют собой класс однотипных объектов.

Три основных достоинства ООП: упрощение проектирования; ускорение разработки за счет многократного использования готовых модулей; легкость модификации.

Общим предком практически всех используемых сегодня объектных и объектно-ориентированных языков является Simula, созданный в 1960 году Далем, Мюрхогом и Ныгардом. Существенно, что Simula, предназначенная для описания систем и моделирования, ввела дисциплину написания программ, отражающую словарь предметной области.

Практически все объектно-ориентированные языки программирования являются развивающимися языками, их стандарты регулярно уточняются и расширяются. Следствием этого развития являются неизбежные различия во входных языках компиляторов различных систем программирования. Наиболее распространенными в настоящее время являются системы программирования Microsoft C++, Microsoft Visual C++ и системы программирования фирмы Borland International.

Компьютеры. Поколения ЭВМ.

Слово компьютер английское. Computer - вычислитель, синоним в русском языке - электронная вычислительная машина (ЭВМ).

Представление о поколениях компьютеров можно получить из таблицы [7]

Поколения компьютеров

1 поколение, после 1946 года

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

Для ввода-вывода данных использовались перфоленты и перфокарты, магнитные ленты и печатающие устройства.

Была реализована концепция хранимой программы. Быстродействие (операций в секунду)- 10-20 тыс. Программное обеспечение- Машинные языки. Примеры: ENIAC (США)

МЭСМ (СССР)

Поколение, после 1955 года

Особенности: Замена электронных ламп как основных компонентов компьютера на транзисторы. Компьютеры стали более надежными, быстродействие их повысилось, потребление энергии уменьшилось. С появлением памяти на магнитных сердечниках цикл ее работы уменьшился до десятков микросекунд.

Главный принцип структуры - централизация.

Появились высокопроизводительные устройства для работы с магнитными лентами, устройства памяти на магнитных дисках. Быстродействие (операций в секунду)- 100-500 тыс. Примеры: IBM 701 (США)

БЭСМ-6, БЭСМ-4, Минск-22, Минск-32 (СССР)

Поколение, после 1964 года

Особенности: Компьютеры проектировались на основе интегральных схем малой степени интеграции (МИС - 10-100 компонентов на кристалл) и средней степени интеграции (СИС - 100-1000 компонентов на кристалл).

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

В конце 60-х появились мини-компьютеры. В 1971 году появился первый микропроцессор. Быстродействие (операций в секунду)- порядка 1 млн. Программное обеспечение: операционные системы (управление памятью, устройствами ввода-вывода и другими ресурсами), режим разделения времени Примеры: IBM 360 (США), ЕС 1030, 1060 (СССР).

Поколение, после 1975 года

Особенности: Использование при создании компьютеров больших интегральных схем (БИС - 1000-100000 компонентов на кристалл) и сверхбольших интегральных схем (СБИС - 100000-10000000 компонентов на кристалл). Началом данного поколения считают 1975 год - фирма Amdahl Corp. выпустила шесть компьютеров AMDAHL 470 V/6, в которых были применены БИС в качестве элементной базы.

Стали использоваться быстродействующие системы памяти на интегральных схемах - МОП ЗУПВ емкостью в несколько мегабайт. В случае выключения машины данные, содержащиеся в МОП ЗУПВ, сохраняются путем автоматического переноса на диск. При включении машины запуск системы осуществляется при помощи хранимой в ПЗУ (постоянное запоминающее устройство) программы самозагрузки, обеспечивающей выгрузку операционной системы и резидентного программного обеспечения в МОП ЗУПВ.

В середине 70-х появились первые персональные компьютеры.. Быстродействие (операций в секунду)- десятки и сотни млн. Программное обеспечение: Базы и банки данных. Примеры: Суперкомпьютеры (многопроцессорная архитектура и использование принципа параллелизма), ПЭВМ.

Поколение, после 1982 года

Особенности: Главный упор при создании компьютеров сделан на их «интеллектуальность», внимание акцентируется не столько на элементной базе, сколько на переходе от архитектуры, ориентированной на обработку данных, к архитектуре, ориентированной на обработку знаний.

Обработка знаний - использование и обработка компьютером знаний, которыми владеет человек для решения проблем и принятия решений.

 



Поделиться:


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

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