четверг, 16 декабря 2010 г.

Основной инструмент

Полтора-два года назад мне попался небольшой колым. Нужно было сделать параллельный сетевой сервер, который помогал пхпшной системе делать одну задачу быстро и правильно. Заказчик в выборе языка вообще никак не ограничивал, мог на чём угодно писать. Только нужно было похапешный плагин для интеграции  с моим чудом наваять.

Тогда я по работе писал на Си, Лиспом уже баловался. Выбрал C++, потому что Лиспа достаточно хорошо не знал, а Эрланг, который, как я слышал, хорошо подходит для всяких сетевых задач, вообще ни разу не использовал. И даже доки ради интереса не читал, а начинать читать в тот момент было страшновато: сроки поджимали. Зато был положительный опыт с boost::asio. Вернее, оно тогда просто asio было.

В общем-то, за неделю написал, и оно хорошо работало. Некоторое время убил на отладку падений: всё-таки, косяк в асинхронном паттерне asio со смартпойнтерами отловить сложно, кто писал, тот поймёт :)

Сейчас у меня основной инструмент, понятно, Лисп, программы на нём думаются, а с C++ уже лоб морщить надо. Ну так вот, сижу я сейчас и думаю, что сегодня такую поделку написал бы за вечер, ну за день максимум. Самое сложное, что там было - это эмуляция лямбд и сборщика мусора, а в Лиспе оно есть из коробки. И пользоваться этим несравненно удобнее. Впрочем, с заразой из мира ФП в виде функций высшего порядка в крестах тоже живётся легче. По-крайней мере, структура программы становится понятной, сконцентрированной вокруг логики, а не реализации, нет лапши. Синтаксис, конечно, всё портит, но что поделать?.. Синтаксис так и шепчет: "Забей на C++, пиши на языке помощнее" :)

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

6 комментариев:

  1. а что сподвигло на изучение лиспа? Я так понимаю до этого был большой опыт программирования на "обычных" языках

    ОтветитьУдалить
  2. Наличие шума про лисп. Если о чём-то не говорят и не пишут, то люди об этом и не узнают. Я про лисп услышал, попробовал, понравилось, теперь сам стараюсь шуметь :)

    ОтветитьУдалить
  3. А с какими лиспами приходилось иметь дело? И который из них больше по душе? Я вот грешным делом так очарован минимализмом Scheme, что CL кажется очень громоздким.

    ОтветитьУдалить
  4. "кресты"- очень остроумно. Буду теперь везде так говорить, чтобы прижилось. Потому что кресты они и есть кресты.

    ОтветитьУдалить
  5. 2yuridichesky: я работал только с Коммон Лиспом. На схему смотрел, но там, действительно, столько минимализма и столько бардака в поддержке нужных SRFI, что CL смотрелся лучше.

    ОтветитьУдалить
  6. В своё удовольствие интересуюсь ФП и после какого-нибудь Хаскеля или Эрланга (для души) возвращаться на C++ (для работы) несколько болезненно. Надеюсь, и у меня когда-нибудь функциональный язык будет основным инструментом.

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

Архив блога