ФорумПрограммированиеФункциональные языкиLisp → Clojure

Clojure

  • master

    Сообщения: 3236 Репутация: N Группа: Джедаи

    Spritz 24 марта 2015 г. 16:56

    Clojure: Элитные языки программирования [my-clojure.blogspot.ru]

    Спустя 110 сек.

    Этот топик нужно переместить в Lisp

    Спустя 74 сек.

    Элитные языки программирования
    На этот пост меня подвигли рассуждения Майкла Фогуса (автора "The Joy of Clojure") о том, что такое "программерская элита".
    Фогус очень разумно объясняет, что не язык программирования является признаком "элитности" программиста. Даже Java может казаться сложной и непонятной тем, кто ее не знает. И даже Haskell будет простым и удобным тем, кто разобрался с этим языком.
    Более того, действительно крутые программисты, с которыми Фогусу довелось иметь дело, работали даже с таким позорным убожеством, как С++, и тем не менее умудрялись быть очень-очень продуктивными.
    Элитными могут быть, пожалуй, только программерские задачи, решить которые может лишь очень малый процент программистов. Т.е. не мега-навыки делают программиста "элитой", а, в первую очередь, крайне сложные проблемы, которые этот программист решает. Само собой, для решения сложных задач нужно иметь уровень профессионализма намного выше среднего, а также подходящие инструменты.
    Выбор языка программирования для решения нетривиальных задач -- это уже следствие сложности самих задач. Язык программирования тогда "подходит" для задачи, когда упрощает ее решение, а не тогда, когда конкретный программист знает язык лучше или любит его больше. Clojure -- один из таких языков. Его "функциональность", макросы, гомоиконный синтаксис, STM, REPL, Swank -- все это предназначено для упрощения решения именно сложных задач.
    Впринципе, согласен с тем, что написал Фогус. Clojure не просто располагает к экспериментированию, а прямо навязывает такой "экспериментаторский" стиль разработки. Вспомните, как нас учили программировать в школе и универе? Задачи часто решались на бумажке, нередко рисовали блок-схемы алгоритмов. Везде, где я работал, любили UML и много "планировали" перед тем, как приступить к кодированию. В Clojure -- все наоборот. Думать заранее, конечно, тоже нужно, но конспектируется "планируемое" решение не в блок-схемах или псевдокоде, а прямо на Clojure.
    Т.е. вначале может и возьмешь бумажку с ручкой, но уже через минуту думаешь: "Какого чёрта?", открываешь Emacs, Slime REPL и пробуешь все уже там. Заработало? Сохраняешь в файл с исходником. Не заработало? Пробуешь дальше, не перезагружая программу. Все вычисленные данные, все переменные -- все остается; прямо в работающей программе можно переопределить любые функции и значения. Создается ощущение, что попал не просто в debug-режим, а будто только в таком режиме и работаешь.
    На днях я экспериментировал с алогритмом Support Vector Machine, хотел научить классификатор по набору прилагательных от личать хорошие отзывы от плохих. С ресурса kinopark.by скачал все комментарии ко всем фильмам и рассортировал на два кластера: положительные отзывы и отрицательные (суммарно получилось окло 18Мб чистого текста). Выбрал все прилагательные (без окончаний) из каждого комментария; каждый комментарий закодировал дескриптором, содержащим 1 или 0 для каждого прилагательного из всего множества. Получился вектор размерностью около 10000. Вот такие-то вектора и скармливал классификатору на обучение.
    Все это я делал только исключительно на Clojure. Все это, включая загрузку и разбор страниц с комментариями, заняло около 300 строк кода. За все время мне ни разу не потребовался дебаггер, и даже в голову не пришло писать unit-тесты (зачем, ведь функция каждый раз "пробуется" в REPL-е перед попаданием в исходник). И я не могу себе представить инструмента, более удобного для таких задач, чем Clojure.

    Использованные библиотеки:
    1.clj-http;
    2.clj-tagsoup;
    3.libsvm.

    не всё полезно, что в swap полезло
  • Sinkler

    Сообщения: 8083 Репутация: N Группа: в ухо

    Spritz 24 марта 2015 г. 17:01, спустя 5 минут 51 секунду

    перенёс

  • Sinkler

    Сообщения: 8083 Репутация: N Группа: в ухо

    Spritz 25 марта 2015 г. 16:36, спустя 23 часа 34 минуты 22 секунды

    а есть какой-нибудь скринкаст как это выглядит в реальности?

  • master

    Сообщения: 3236 Репутация: N Группа: Джедаи

    Spritz 25 марта 2015 г. 20:46, спустя 4 часа 10 минут 13 секунд

    а есть какой-нибудь скринкаст как это выглядит в реальности?

    @Sinkler, в исходном посте в комментариях

    не всё полезно, что в swap полезло
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 26 марта 2015 г. 7:03, спустя 10 часов 17 минут 26 секунд

    Ну кложа это лисп на яве, понятно что лисп сам по себе пиздат и что ява и плюсы это шлак.

    adw/0
  • Sinkler

    Сообщения: 8083 Репутация: N Группа: в ухо

    Spritz 26 марта 2015 г. 7:05, спустя 1 минуту 29 секунд

    как-то незаметно настали времена, когда все перестали париться и стали называть джаву явой)

  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 26 марта 2015 г. 7:06, спустя 1 минуту 7 секунд

    а есть какой-нибудь скринкаст как это выглядит в реальности?

    @Sinkler, в исходном посте в комментариях

    вот

    Alex Ott4 октября 2011 г., 14:06

    Вот скринкаст работы с ClojureScript REPL (http://vimeo.com/29535884
    )

    Вот скринкасты про кложуру (решение небольших задачек): http://vimeo.com/channels/fulldisclojure

    А вот screencast про Clojure/SLIME, etc. http://vimeo.com/9770382

    adw/0
  • Sinkler

    Сообщения: 8083 Репутация: N Группа: в ухо

    Spritz 26 марта 2015 г. 7:08, спустя 1 минуту 37 секунд

    да, спасибо, гляну позже!

  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 26 марта 2015 г. 9:00, спустя 1 час 51 минуту 47 секунд

    прочитал текст вначале, хорошая реклама :)

    Сапожник без сапог
  • lekafe

    Сообщения: 149 Репутация: N Группа: Адекваты

    Spritz 27 марта 2015 г. 1:52, спустя 16 часов 52 минуты 33 секунды

    какой уёбищный маркетинг

    Спустя 217 сек.

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

  • mathete

    Сообщения: 435 Репутация: N Группа: Джедаи

    Spritz 24 апреля 2015 г. 11:34, спустя 28 дней 9 часов 41 минуту

    Везде, где я работал, любили UML и много "планировали" перед тем, как приступить к кодированию. В Clojure -- все наоборот.

    Я правильно читаю - "мне не везло с работой, а как взял Clojure все вокруг перестали быть мудаками"?

    За все время мне ни разу не потребовался дебаггер, и даже в голову не пришло писать unit-тесты (зачем, ведь функция каждый раз "пробуется" в REPL-е перед попаданием в исходник)

    Квалификация автора одиозна. Я бы не взял даже джуниором. Дальше, естественно не читал.

    Хули это вообще делает в интернете? Что это за парадигма - "я попробовал в интерпретаторе - тесты нахер не нужны"? Такие долбоёбы позорят отрасль и ФП в частности.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!