Среда, 27.11.2024
Ukrainiancontet.at.ua
Меню сайта
Категории раздела
Програмування [35]
Мови веб-програмування [5]
О компании [0]
Новости игры
Статистика

Онлайн всего: 4
Гостей: 4
Пользователей: 0
Главная » 2015 » Октябрь » 25 » Чистота мови програмування
22:30
Чистота мови програмування
Чистота (щодо мови програмування) — відсутність побічних ефектів. Мова програмування є чистим у тому випадку, якщо всі функції в програмах цієї мови є чистими.

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

Ще однією важливою перевагою чистих функціональних мов є паралелізм. Оскільки всі функції для обчислень використовують тільки свої параметри, можна організувати обчислення незалежних функцій у довільному порядку або паралельно, на результат обчислень це не вплине. Паралелізм може бути організований не тільки на рівні компілятора мови, але і на рівні архітектури технічних засобів. Існують експериментальні комп'ютери, засновані на подібних архітектур, наприклад Lisp-машина.

Найбільш серйозною сферою застосування мов програмування, в якій постійно присутні побічні ефекти у функціях, є введення-виведення. Можна вважати, що будь-яка операція вводу даних від користувача є дією з побічним ефектом, тому що не можна заздалегідь сказати, що саме користувач введе в якості значень параметрів, що використовуються в обчислювальному процесі. Хоча деякі дослідники і вчені-теоретики стверджують, що введення-висновок не можна розглядати в якості прикладу наявності побічних ефектів, тому що по суті введення-виведення — це зміна оточення програми, але в будь-якому випадку введення-виведення робить використовують його функції недетерминированными.

У чистому функціональному програмуванні оператор присвоювання відсутня, об'єкти можна редагувати і знищувати, можна тільки створювати нові шляхом декомпозиції і синтезу існуючих. Про непотрібних об'єктах подбає вбудований в будь-транслятор функціонального мови збирач сміття. Завдяки цьому в чистих функціональних мовах всі функції вільні від побічних ефектів. Однак це не заважає цим мовам імітувати деякі корисні імперативні властивості, такі, як обробка виключень і змінні (деструктивно) масиви. Для цього існують спеціальні методи.

Однак деякі причини наявності функцій з побічними ефектами повністю прибрати з функціональних мов програмування не можна, оскільки в такому випадку такі мови були б занадто обмежені в практичному застосуванні. У першу чергу це відноситься саме до введення-висновку. Складно уявити собі повноцінний мову програмування, де немає можливості здійснювати введення даних від користувача в інтерактивному режимі, а також здійснювати вивід даних для користувача.

Для забезпечення можливості використання таких технологій, як введення-виведення, без применшення властивості чистоти, у багатьох функціональних мовами програмування, в тому числі і в мові Haskell, використовується спеціальний механізм, названий «монадою». Монади як би обгортають необхідні імперативні властивості, не допускаючи їх змішування з чистим функціонального синтаксису мови. Використання монад дозволило реалізувати всі ті вузькі місця, які регламентували наявність побічних ефектів у функціях.

Так, наприклад, для забезпечення введення-виведення в мові Haskell реалізована стандартна монада IO, поза якою неможливо виконати жодної операції вводу-виводу. Такими ж властивостями володіють і всі інші стандартні монади, реалізовані для мови Haskell.
Категория: Програмування | Просмотров: 414 | Добавил: Admin | Теги: Чистота мови програмування | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Вход на сайт

Поиск
Интернет
Здоровье
Афиша
Ситуация на восток
Религия
Архив записей
Каталог сайтов Всего.RU
Рейтинг@Mail.ru
Copyright Ukrainiancontet.at.ua © 2024
uCozЯндекс.Метрика