Необхідність у вивченні розширення мови haskell для виробництва


10

Основна мова Haskell - це дуже просто. Виходячи з фону ОО, головна складність полягає в адаптації до чистої функціональної парадигми.

Під час вивчення "базового" Haskell, я завжди розглядав розширення мови як іграшки для людей з CS або як експерименти для майбутніх версій мови (як from future import ???у python).

Однак, коли я почав переглядати веб-рамки, такі як Yesod, я виявив, що багато файлів вихідних файлів потребують між 3 та 4 розширеннями. Деякі виглядають досить просто (StringOverload). Інші насправді залякують (GADT, Type Famililies, Template Haskell). Їх документація посилається на науково-дослідні роботи, що страшно для тих, хто очікує навчитися «просто» новій бібліотеці.

Чи потрібно вивчити розширення мови GHC, щоб бути продуктивними в Haskell? Якби ви найняли розробника Haskell для виробничого додатка, ви б попросили таких знань?


Дивіться також: stackoverflow.com/a/10849782/894284

Відповіді:


7

Чи потрібно вивчити розширення мови GHC, щоб бути продуктивними в Haskell?

Так. І це справедливо для будь-якої мови / інструменту. За допомогою основних / базових знань ви можете вирішити проблеми онлайн-конкурсу, це може бути невеликий університетський проект, але, безумовно, не реальна заявка у світі.

Якби ви найняли розробника Haskell для виробничої програми, ви б попросили таких знань?

Від цього зараз залежить, чи є у вас якась людина, яка може поділитися цими знаннями. Якщо так, то ця людина може підсилити нового працівника. Якщо ні, то ви повинні спочатку отримати таку людину з знаннями. І знову це стосується нових технологій.

Ви, звичайно, також можете спробувати найняти людей, які мають такі глибокі знання в Haskell. Але, оскільки Haskell є відносно новим у галузі та вважає, що навколо нього було зроблено дуже мало комерційних проектів, знайти таку людину буде важко. Ефективним способом створити в Haskell команду професіоналів буде найняти людей, які знали основні та готові працювати в Haskell, а потім їх навчати.


Я збирався протестувати, але тоді я побачив, що Haskell Real World викладає багато мов. Спасибі за вашу відповідь.
Саймон Бергот

2
"І це справедливо для будь-якої мови / інструменту" - це абсолютно помилково. Скажімо, візьміть такі мови, як Java, C #, C ++ - жодна з них не має розширень мови, які зазвичай зустрічаються в коді додатків у реальному світі. Якщо вам потрібно використовувати мовні розширення щоразу, коли вам потрібно писати що-небудь менш тривіальне, ніж "рішення проблем онлайн-конкурсу", на мою думку, з мовою специфіки щось не так.
Малькольм

@Malcolm Чому ви вважаєте, "Якщо вам доводиться використовувати розширення мови кожен раз, коли вам потрібно писати що-небудь менш тривіальне, ніж" рішення проблем онлайн-конкурсу ", на мою думку, в мові є щось дуже не так". бути правдою? Яка характеристика розширення, що робить його негативним? Я використовую ghc та надані розширення. Додавання розширення до існуючого проекту здається настільки ж обтяжливим, як і додавання іншої бібліотеки.
Даворак

2
@Davorak Тому що замість однієї мови у нас є мільйон різних комбінацій розширень, і ви нічого не знаєте про те, чи збирається код збирати на певному компіляторі. Розширення роблять код не портативним. А також це спричиняє мову для вивчення, оскільки замість одного набору функцій, якими користуються всі, є величезна кількість додаткових функцій, і ви не маєте поняття, які саме ви повинні знати та використовувати, а які існувати просто бо дослідники розважаються.
Малькольм

2
@Davorak Саме про цю проблему я говорю: всі використовують GHC, оскільки це єдиний досі підтримуваний компілятор. Інші компілятори не можуть іти в ногу, тому ніхто не може їх використовувати, і мало причин інвестувати в них. Щодо бібліотек: ви вибираєте бібліотеки для проблеми та працюєте лише з ними. Скажімо, якщо вам потрібно прочитати XML, вам знадобиться лише одна бібліотека для читання XML. З розширеннями, однак, не очевидно, коли вам це потрібно. Хоча проблеми з бібліотеками теж є. Скажімо, у Java є просто масиви та колекції, а в Haskell є безліч бібліотек масивів.
Малькольм
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.