html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

Haskell: с чего начать?


Я думаю, что все постоянные читатели моего блога знают, что я являюсь умеренно-горячим приверженцем функционального программирования. Не то чтобы обо всем другом и слышать ничего не хочу — нет, просто я всегда ратую за разнообразие, возможности выбора, дискуссию и постоянный поиск лучшего, а значит, в конечном счете, за некую эволюцию методологий разработки. Культ личности мне также неприятен, как и культ отдельной методологии программирования, потому что в перспективе это однозначный путь к застою и маразму.

Продолжая эту просветительскую работу, я бы хотел остановиться сегодня на Haskell — замечательном функциональном языке программирования. Мне уже трижды прислали один и тот же вопрос: с чего начать (продолжить) изучать Haskell?

Наверное, пора дать короткий ответ-совет. Вот общий алгоритм захода в эту тему от меня.

0 этап — Введение. Haskell? Чо за хрень?

Хорошо известный в среде рекрутеров программистов парадокс, часто называемый как «Парадокс питона», и он формулируется примерно так:

Если компания выбирает в качестве основного языка программирования некий малораспространенный эзотерический язык программирования, то у такой компании наибольшие шансы получить самых лучших программистов на рынке. Почему? Дело в том, что наняться в такую «странную компанию» захотят в первую очередь те программисты, для которых изучение нового не проблема; те, для которых малоизвестное и труднодоступное не является препятствием; и, наконец, те, у кого достаточно высокая самооценка, чтобы предлагать себя в таких заведомо жестких условиях.

И главное: есть два типа программистов: те, кто учатся, чтобы получить хорошую работу, и они всегда выбирают мэинстрим, ибо это значительно повышает их шансы на трудоустройство; и те — кому просто нравится учиться чему-то новому, развиваться, и они всегда выбирают самое лучшее, что зачастую далеко не самое выгодное, как делают их коллеги-карьеристы. Итак, Парадокс питона утверждает, что начиная разработку на передовой экзотике, вы подобно пылесосу притянете вторую категорию программеров (верно и обратное, насчет компаний предлагающих работу).

Могу привести в качестве отвлеченного примера полностью аналогичного скрытного таргетирования фокус-групп с заданными свойствами, историю из своей недавней юности. Когда я ещё учился, у нас был припод "со странностями", который демонстративно при изложении матанализа никогда не обращал внимание на правую сторону аудитории. То есть в аудитории было два ряда — левый и правый, — и вот он читает лекцию, объясняет что-то, но при этом НИКОГДА не смотрит на правый ряд — всё внимание только на студентов с левого ряда. Также и с ответами на вопросы — правого ряда для него не существовало. Оттуда он ни-че-го не слышит.

В результате, с течением длительного времени я заметил интересную вещь: в нашей группе произошла автоматическая самоидентификация и фрагментация на тех, кому матанализ нужен и интересен (и они сразу занимали места на левом ряду, приняв правила этой странной игры), и тех — кому это нафиг не нужно, и они спешили занять места справа, ибо тут они были предоставлены сами себе. Эта сортировка произошла сама-собой, без каких-то дополнительных чрезвычайных усилий со стороны. Для препода, как я понял его мотивацию, это было очень удобно — он не тратил свои силы на посторонних в сущности людей, а сразу создавал условия для концентрации своих сил и внимания на тех, кому были нужны его знания. Для студентов-троечников — это тоже было выигрышной ситуацией.

Парадокс питона — это один из тех факторов, который делает тоже самое: он выделяет целевые группы среди программистов. Но это происходит не лобовыми методами (опросы, интервью, менеджмент), а гораздо более эффективными — косвенными, где возможность для «пускания пыли в глаза» гораздо меньше.

И всё это я рассказал лишь для того, чтобы вы не боялись изучать что-то новое и необычное, пусть это поведение и покажется вам иногда иррациональным. Есть вещи, которые мы делаем не ради денег, но для нашего саморазвития и нарабатывания скиллов, которые, в конечном счете, побочно решат проблему с зарабатыванием даже ещё более эффективно. Не беда что большинство пишет на PHP, путь это не будет для вас психологическим тормозом на пути изучения чего-то нового и важного для вас, например, того же Haskell. Поймите, что есть большая разница между тактикой и стратегий, и именно поэтому долгосрочные инвестиции всегда оказываются гораздо более выгодными.

Будем надеяться, что этими баснями я хотя бы отчасти снял внутренний тормоз у некоторых людей, от которых я слышал реакцию типа: «Haskell? Да кому он нафиг нужен?»

1 этап — ответ на вопрос «зачем тебе это надо?»

Для начала изучения нового языка стоит захотеть этого, для чего нужна настоящая мотивация. Как, например, для того, чтобы тебе встать, прямо сейчас одеться и сесть в трамвай, чтобы доехать до противоположного конца города — нужна серьезная мотивация и аргументация для такого энергоемкого поступка.

Сделать это «просто так» почти невозможно. Не верите — проверьте! Одна из причин, из-за чего все так плохо учились во времена моего обучения на физмате, заключается, по моему мнению в том, что довольно сложно понять зачем тебе нужна в повседневной жизни квантовая физика или некоторые пункты специальной теории относительности. Перед тем как предлагать такую груду рафинированно-абстрактных знаний, хорошо бы сначала изучающему загрузить в голову некую стоящую модель, в контексте которой ЭТО знание было бы ему полезным, необходимым и интересным. В данном случае оценки, диплом и прочие социальные ништяки наоборот полностью убивают ценность и прикладной характер этих знаний в глазах обучаемого.

Возвращаюсь к намеченной теме — я считаю, что начинать изучать новый язык программирования нужно ровно тогда, когда сформирована смысловая база для этого. Иначе говоря, в этом появляется свой субъективный, но емкий смысл. Я категорически против, когда ЭТО делают «потому что это круто» или тем более потому что «нужно получить в зачетке 5».

Итак, этап первый — поиск этого самого смысла для себя. Это должен сделать каждый сам, могу лишь дать некие отправные точки, вот их примеры:

2 этап — начинаем с основ

И только что-то поняв для себя, можно начинать качать вводные книги по теме, например собранные вот здесь. На русском, в качестве вводной книги я бы рекомендовал начать с очень удачной «14 занимательных эссе о языке Haskell и функциональном программировании». Конечно, при изучении любого языка нужен подручный справочник по нему, например вот этот: «Справочник по языку Haskell» от Душкина.

Haskell

Сухая академическая теория, для тех кто любит тщательность проработки деталей, доступна в одноименных книгах «Функциональное программирование» от Кубенского (все примеры в ней на писаны на Haskell), и «Функциональное программирование» — от Хендерсона.

После чего можно прочитать эту совсем свежую книжку Learn You a Haskell for Great Good!: A Beginner’s Guide (мне очень нравится издательство No Starch Press, все их книжки супер — как по содержанию, так и по критерию «нескучности изложения»). Вторая английская хорошая книга — опять для новичков: Haskell: The Craft of Functional Programming (2nd Edition).

3. Этап — поиск глубины и чувства нового языка

Третья стадия, — это уже копание вглубь. Тут я предлагаю немножко поломать традиционные шаблоны (а я это ох как люблю делать) и перейти к принципиально другому формату подачи информации: это не только разнообразит задачу изучения языка, но и задействует новые, доселе не активированные участки вашего головного мозга (особенно напряжем ваше растащенное программистское левое полушарие). Я имею в виду отличную видео-лекцию по Haskell от очень умного дядьки с английскими корнями.

Вот её выходные данные:

The Functional Programming Using Haskell course
(Language: English)
35 hours | 1280×720 | XviD — 1326Kbps 
25.00fps | Mp3 — 96Kbps | 20.06 GB

Haskell

Выкачать эту большую видео-лекцию можно вот тута. Советую поспешить, пока возмущенные правообладатели не сбежались и не прибили этот редкий архив нафиг (update: таки да, прибили его: аминь. Предлагаю всем заинтересованным воспользоваться этой мега-ссылкой).

4. Завершающий этап — практика

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

Haskell

Вот, примерно такой вот, отчасти очевидный для многих алгоритм я хотел дать всем желающим изучить Haskell, и не только. Дерзайте!

И в заключение немного юмора для приверженцев других языков программирования:

Haskell — священный язык программирования, дарованный шаманам Бубенлэнд их верховным божеством Комонада как универсальное средство для общения и духовного очищения, подходящее как божественным сущностям, так и (некоторым) простым смертным, переболевшим тяжёлыми стадиями интеллекта. Из-за своего происхождения язык всегда был функционально чист. В среднем обучение Haskell’у начинается в 10-12 лет. Своевременное начало обучения гарантирует, что вы достигнете третьего уровня Силы уже к 75 годам. Не стоит откладывать на следующую жизнь то, что можно по крайней мере начать в этой.
Читать дальше
Twitter
Одноклассники
Мой Мир

материал с blogerator.ru

109
    +91 surfers

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • pleshner
          • домен blogerator.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции