Навколо Haskell дуже багато шуму, проте важко отримати інформацію про те, як він використовується в реальних програмах. Які найпопулярніші проекти / звичаї Haskell і чому він вирішує ці проблеми?
Навколо Haskell дуже багато шуму, проте важко отримати інформацію про те, як він використовується в реальних програмах. Які найпопулярніші проекти / звичаї Haskell і чому він вирішує ці проблеми?
Відповіді:
Які існують у цій мові вживання?
Швидкий розвиток додатків.
Якщо ви хочете знати "чому Haskell?", То вам потрібно врахувати переваги функціональних мов програмування (взяті з https://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming ):
Функціональні програми, як правило, набагато коротше, ніж їхні імперативні мовні колеги. Часто це призводить до підвищення продуктивності програміста
FP заохочує швидке прототипування. Я вважаю, що це найкраща парадигма розробки програмного забезпечення для ExtremeProgrammers ... але що я знаю?
FP є модульним у вимірі функціональності, де ObjectOrientedProgramming є модульним у розмірі різних компонентів.
Можливість мати свій торт і їсти його. Уявіть, що у вас є складна система OO, що обробляє повідомлення - кожен компонент може змінювати стан залежно від повідомлення, а потім пересилати повідомлення до деяких об'єктів, на які він має посилання. Хіба не було б занадто круто, щоб можна було легко повернути кожну зміну, якби якийсь об'єкт глибоко в ієрархії викликів вирішив, що повідомлення є помилковим? Як щодо історії історії різних держав?
Багато завдань з ведення господарства, зроблених для вас: деконструкція структур даних (PatternMatching), зберігання змінних прив’язок (LexicalScope із закриттями), сильне введення тексту (TypeInference), GarbageCollection, розподілення пам’яті, чи використовувати коробку (покажчик на значення) або без коробки (значення безпосередньо ) представництво ...
Безпечна багатопотокова редакція! Змінювані структури даних не підпадають під умови перегонів даних, а отже, не повинні бути захищені замками. Якщо ви завжди виділяєте нові об'єкти, а не деструктивно маніпулюєте існуючими, блокування може бути приховано в системі виділення та GarbageCollection.
Крім цього Haskell має свої переваги, такі як:
1 / 0
як перший елемент списку, і він все одно буде працювати, якщо ви використовували лише другий елемент.Ви можете перевірити наступні посилання:
x = 5;
гарантує, що після його виконання, x
містить значення 5
.
operator =
називається. І це гарантує те, що станеться, якщо ви не визначите anoperator =
Я думаю, що люди на цій посаді пропускають найважливіший момент для тих, хто ніколи не використовував функціональну мову програмування: розширення своєї думки. Якщо ви новачок у функціональному програмуванні, то Haskell змусить задуматися так, як ви ніколи раніше не думали. Як результат, ваше програмування в інших областях та інших мовах покращиться. Скільки? Важко оцінити.
Є одна гарна відповідь на те, для чого корисна мова загального призначення, як Haskell: написання програм загалом.
Для того, для чого це використовується на практиці, у мене є три підходи до встановлення цього:
Вказує, що це добре для графіки, мереж, програмування систем, структур даних, баз даних, розробки, обробки тексту ...
І нарешті, моя думка щодо того, що це насправді сильне:
Я сподіваюсь, що це дасть вам зрозуміти, наскільки широке ваше запитання, якщо на нього потрібно відповісти з якоюсь конкретністю.
З Вікна Haskell :
Haskell має широкий спектр використання на комерційній основі - від аерокосмічної та оборонної, до фінансів, до веб-стартапів, фірм, що займаються дизайном обладнання та виробників газонокосарок. На цій сторінці зібрані ресурси щодо промислового використання Haskell.
Згідно з Вікіпедією, мова Haskell була створена з необхідності консолідації існуючих функціональних мов у загальну мову, яка могла бути використана для майбутніх досліджень функціонально-мовного дизайну.
Виходячи з наявної інформації, очевидно, що вона переросла своє первісне призначення і використовується набагато більше, ніж для досліджень. Зараз він вважається функціональною мовою програмування загального призначення.
Якщо ви все ще запитуєте себе: "Навіщо мені це використовувати?", То прочитайте " Навіщо це використовувати?" розділ Введення Вікі Haskell.
Haskell - мова програмування загального призначення. Він може бути використаний для будь-якого використання будь-якої іншої мови. Вас не обмежує нічого, крім власної фантазії. Щодо того, для чого він підходить? Ну, майже все. Є кілька завдань, в яких функціональна мова не перевершує.
І так, я Рейн із Dreamincode. :)
Я також хотів би зазначити, що у випадку, якщо ви не читали сторінку Вікіпедії, функціональне програмування є парадигмою, як об'єктно-орієнтоване програмування - парадигма. Про всяк випадок, коли ви цього не знали. Haskell також функціональний у тому сенсі, що він працює; він досить добре працює на це.
Тільки тому, що мова не є об'єктно-орієнтованою мовою, це не означає, що мова нічим не обмежена. Haskell - мова програмування загального призначення, і така ж загальна мета, як і Java.
У мене класно, фейсбук створив автоматизований інструмент для переписування PHP-коду. Вони аналізують джерело на абстрактне синтаксичне дерево, роблять деякі перетворення:
if ($f == false) -> if (false == $f)
Я не знаю чому, але, здається, це їхній особливий стиль, і тоді вони досить роздруковують його.
https://github.com/facebook/lex-pass
Ми використовуємо haskell для створення малих доменних мов. Величезна кількість обробки даних. Веб-розробка. Веб-павуки. Тестування додатків. Написання сценаріїв системного адміністрування. Сценарії вихідного дня, які спілкуються з іншими сторонами. Сценарії моніторингу (у нас є DSL, який чудово працює разом з munin, значно полегшує написання правильного коду монітора для ваших програм.)
Насправді всі речі. Це просто повсякденна мова загального призначення з деякими дуже потужними та корисними функціями, якщо ви трохи схильні до математики.
false
зліва, я не бачу сенсу використовувати інструмент, щоб зробити це автоматично: якщо у вас уже є ==
оператор, то ви вже знаєте, що у вас немає помилки, яка в цій частині lex-pass призначений для того, щоб зловити, і якщо у вас =
замість цього немає надійного способу сказати, навмисно це чи ні.
З Haskell :
Haskell - це стандартизована, загальноприйнята, чисто функціональна мова програмування , що відрізняється не суворою семантикою та сильною статичною типізацією. Він названий на честь логіка Хаскелла Крірі.
В основному Haskell можна використовувати для створення майже всього, що ви зазвичай створювали, використовуючи інші мови загального призначення (наприклад, C #, Java, C, C ++ тощо).
Це досить гарне джерело для інформації про Haskell та його використання: