русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Краткость и простота

Программы на функциональных языках обычно намного короче и проще, чем те же са­мые программы на императивных языках. Сравним программы на C и на функциональном языке Haskell на примере сортировки списка быстрым методом Хоара (пример, уже ставший классическим при описании преимуществ функциональных языков).

Пример 1.1. Быстрая сортировка Хоара на C.

void quickSort (int a[], int l, int r)

{

int i = l;

int j = r;

int x = a[(l + r) / 2];

do

{

while (a[i] < x) i++;

while (x < a[j]) j--;

if (i <= j)

{

int temp = a[i];

a[i++] = a[j];

a[j--] = temp;

}

}

while (i <= j);

if (l < j) quickSort (a, l, j);

if (i < r) quickSort (a, i, r);

}

Пример 1.2. Быстрая сортировка Хоара на языке Haskell.

quickSort [] = []

quickSort (h : t) = quickSort [y | y <- t, y < h] ++ [h] ++ quickSort [y | y <- t, y >= h]

Пример 1.2 следует читать так:

1. Если список пуст, то результатом также будет пустой список.

2. Иначе (если список не пуст) выделяется голова (первый элемент) и хвост (список из ос­тавшихся элементов, который может быть пустым). В этом случае результатом будет яв­ляться конкатенация (сращивание) отсортированного списка из всех элементов хвоста, ко­торые меньше либо равны голове, списка из самой головы и списка из всех элементов хвос­та, которые больше головы.

Как видно, даже на таком простом примере функциональный стиль программирования вы­игрывает и по количеству написанного кода и по его элегантности.

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

Ещё одним полезным свойством позволяющим сократить программу является встроен­ный механизм сопоставления с образцом. Это позволяет описывать функции как индук­тивные определения. Например:

Пример 1.3. Определение N-ого числа Фибоначчи.

fibb (0) = 1

fibb (1) = 1

fibb (N) = fibb (N – 2) + fibb (N – 1)

Механизм сопоставления с образцом будет рассмотрен в дальнейших лекциях, однако здесь видно, что функциональные языки выходят на более абстрактный уровень, чем традиционные императивные языки (здесь не рассматривается объектно-ориентированная па­радигма и её расширения).

Просмотров: 532


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.