Все сообщения за число: 2005-12-31

Предупреждение: уберите от мониторов детей и беременных женщин!

Я вот тут недавно совсем упоминал, что  я устал от программирования. А сейчас понял. Я устал не от программирования вообще. А от того программирования которым мне приходится заниматься  последние годы .
Однотипны скуууууууучные задачи, я их делал такое количество раз что это не скучно, от этого тошнит. И задачи ведь совсем ни причём. А кто мне мешает заняться  чем-то более интересным? Общее отупение после работы отмазкой не является  :)

Ладно. Это преамбула. Переходим к амбуле.

Решил я поддаться локальной моде и посмотреть на язык Haskell. Что это такое?
Ууууу.
Читать начинаем отсюда www.haskell.org . Есть ещё немного устаревший русскоязычный сайт www.haskell.ru, с него тоже можно начинать читать. Так вот из перевода описания:

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

Вас это как и меня вдохновило ? ;) - Тогда продолжаем читать дальше. Пока мало понятно но идея сама-по себе красива. Есть русскоязычное комунити в LJ [info]ru_lambda , где группа энтузиастов пытается совместно изучать этот язык. Есть даже irc канал. Ссылка на него в ЖЖ.

Ну.. приступаем? Я вот никогда не имел дела с функциональным языком общего назначения. И мне страшно любопытно. Если вы, как и я, не знаете разницу между функциональным языком и императивным - то вводная статья avva должна помочь (рекомендую к прочтению), цитата:

Функциональные языки ставят во главу угла функцию - подразумевая тут математическое понятие функции более, чем "функции", знакомые нам из императивных (или частично императивных) языков. Что такое функция с математической точки зрения? Некое правило, ставящее в соответствие любому аргументу, или любому набору из нескольких аргументов, фиксированное значение; при этом главнейшим является тот факт, что в ответ на один и тот же аргумент функция всегда даст одно и то же значение, сколько раз её не вычисляй. Это свойство называется однозначность или определённость функции.
Попробуем себя ограничить и сказать: мы хотим функции, как в C (со списком аргументов и возвратным значением), но чтобы они больше походили на математические функции. Это не значит, что они будут работать именно с числами (математические функции тоже работают не только с числами, впрочем); в первую очередь это значит, что мы ограничим то, что они могут делать. Скажем, что единственным смыслом существования функции должно быть вычисление её значения, и ничто больше. Всё то, что функция на C может делать кроме этого - менять значение всяких переменных вне самой себя, писать в какие-то файлы, вообще менять что-то в окружающей среде - назовём побочными эффектами (side effects) и запретим - наши функции не должны этого делать. Всё, что наши функции делают - вычисляют то, что они должны вычислять, и возвращают; естественно, для этого они могут пользоваться какими-то своими временными переменными, вызывать другие функции (что очень важно), итд. итп. - но не менять ничего: только вычислить и вернуть. Более того, потребуем, чтобы функции наши были однозначно определёнными: одни и те же аргументы должны всегда привести к одному и тому же результату.
   
Кроме всего прочего есть Google, есть Yet Another Haskell Tutorial, и есть куча реализаций. А вы знаете... что на этой штуке написали реализацию 6го Perl'a,  или web-сервер, или ....
А Знаете ... - А мне уже интересно :) А вам ?
Just for fun.

 


Copyright © Egor Tyurin (electroCat) 2003-2011. По всем вопросам обращаться electrocat#electrocat.ru.
Разрешается использовать материалы сайта в личных целях и публиковать статьи с обязательным указанием автора и ссылки на сайт.