Объектно-ориентированное программирование в Haskell

Текст ниже - только для программистов

Похоже, что я окончательно влюбился в этот язык (совсем как в этом рассказе). Это не удивительно. Например, оказывается, что объектно ориентированное программирование можно реализовать в рамках хаскеля. Оно - всего лишь часть того, что можно делать на этом языке - потрясающе.

Делается это так - определяем новый тип данных data DataObject - он определяет свойства объектов. Определяем новый класс типов (х.з. как оно на русский переводится) class DataClass - он определяет функции, которые разделяют все типы данного класса. Далее делаем DataObject экземпляром DataClass - instance DataClass DataObject. И все, теперь у нас есть данные обладающие определенным набором свойств и реализующие определенный набор методов.

Вдобавок можно реализовать наследование, если определить новый тип, включить в него DataObject и сделать его экземпляром DataClass. Можно делать классы шаблоны, потому что типы хаскеля могут быть параметрическими.

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

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

6 Комментарии:

  1. Хаскел - это всего лишь proof of concept vs mind games. Его никто и никогда не станет рассматривать как серьёзный "взрослый" язык.

    ОтветитьУдалить
  2. Хаскель очень молодой язык, дай ему время и он станет очень даже коммерческим. Уже сейчас количество библиотек для хаскеля огромно, есть библиотеки на любой вкус. Питонщики (я тоже люблю питон) говорят, что питон идет with batteries included, про хаскель можно сказать тоже самое, смотри - http://hackage.haskell.org

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

    ОтветитьУдалить
  3. А я знал, что и тебе понравится! :-)

    Кстати, обязательная ссылка по теме — OOP vs type classes. Очень хорошее сравнение ООП-подходов и классово-типового. Я давно думал по-русски об этом написать. В частности, там есть и про два типа наследования (интерфейсов и реализаций), и про имитацию ОО-наследования.

    ОтветитьУдалить
  4. Сергей,

    Спасибо за ссылку, почитаю :) Сайт у хаскеля жутко неудобный - нет понятной структуры. Вики - зло.

    ОтветитьУдалить
  5. У них ещё и регистрация в вики неавтоматическая ;-)

    Кстати, обсуждение, можно ли сделать страничку лучше не так давно было в хаскель-кафе. В принципе, есть толковые предложения. Нужны добровольцы, готовые перенести всё на новый сервер, обновить движок и сделать нужные шаблоны. Настоящее же содержимое страницы отражает востребованность материала сообществом (измерили на старом сайте). Словом, сайт оптимизирован под нужды (и привычки!) сообщества, а не новичков (avoid success at all costs).

    ОтветитьУдалить
  6. Hello!! :)
    Wow... Haskell....!!! Как раз вникаю в него. Если подскажешь пару русскоязычных книг/мануалов, буду очень признателен!!!

    ОтветитьУдалить