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

Clojure

  • master

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

    Spritz 24 марта 2015 г. 23: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

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

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

    перенёс

  • Sinkler

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

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

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

  • master

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

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

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

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

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

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

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

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

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Sinkler

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

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

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

  • adw0rd

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

    Spritz 26 марта 2015 г. 14: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

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Sinkler

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

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

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

  • phpdude

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

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

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

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

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

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

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

    Спустя 217 сек.

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

  • mathete

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

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

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

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

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

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

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

  • rusostryakov94

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 20 июля 2020 г. 21:41, спустя 1914 дней 3 часа 7 минут

    Очень люблю играть в казинос. оно приносит мне море удовольствия и наслаждения. Приходя домой после работы - это отличный способ отдохнуть и заработать денег!!! Могу посоветовать отличный сайт для игр https://roxcasino-games.com/igrovoj-zal/](https://roxcasino-games.com/igrovoj-zal/)

  • dodoro51

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 14 октября 2020 г. 11:05, спустя 85 дней 13 часов 24 минуты

    best travel agencyYour text to link here...
      A man was going to the house of some rich person. As he went along the road, he saw a box of good apples at the side of the road. He said, "I do not want to eat those apples; for the rich man will give me much food; he will give me very nice food to eat." Then he took the apples and threw them away into the dust.
      He went on and came to a river. The river had become very big; so he could not go over it. He waited for some time; then he said, "I cannot go to the rich man's house today, for I cannot get over the river."
      He began to go home. He had eaten no food that day. He began to want food. He came to the apples, and he was glad to take them out of the dust and eat them.

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