Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (2)

Наибольший вклад в теги

Все теги (19)

Лучшие ответы пользователя

Все ответы (6)
  • Лисп или хаскел?

    Начнём с того, что Лисп не функциональный. Тем, кто приходит в Лисп из мира императивных языков может так казаться, но я пришел в Лисп после Хаскела и я тебе точно говорю, Лисп - не функциональный.
    Теперь по теме - оба языка крайне интересны и способны взорвать мозг, но Хаскел вставляет сильнее, он действительно заумный и изобилует супер-дупер новыми изощренными технологиями программирования (Аппликативные функторы, комбинаторы, монады, ленивые вычисления), но что тебе действительно взорвёт мозг - это чистота языка (нельзя совершать побочные эффекты т.е. не напишешь в консоль где хочешь, не присвоишь значение переменной), отсутствие циклов и декларативность (ты не пишешь "как", а пишешь "что" представляет из себя задача). Но это только в начале. Когда освоишься, оказывается, что Хаскел очень выразителен и краток. Но есть у него и минусы - он очень сложен, ОЧЕНЬ. Серьезно, даже через пол года, у тебя по-прежнему будут проблемы. Уверен, 95% хаскелистов не объяснят в подробности, как работает Hello world на хаскеле, который выглядит так:
    main::IO ()
    main = do
    putStrLn "Hello world!"

    выглядит не сложно, но вот что скрывается под водой: все вычисления происходят в монаде IO т.к. только в ней разрешены побочные эффекты. Побочный эффект (действие ввода-вывода) выполняется только тогда, когда вернётся в main т.к. побочные эффекты разрешены только в main (поэтому и только в монаде IO т.к. main возвращает IO () ). Что такое IO ()? Это как бы список действий, которые туда запихиваются и объединяются в цепочку, чтобы быть последовательными (вне монады порядок выполнения твоих инструкций не определён, счастливого дебага). Эти действия на самом деле не выполняются сразу, а представляют из себя "обещание" сделать это действие, которое реализуется как только что-то уже действующее не затребует результат, в нашем случае это консоль... в общем и это только верхушка айсберга, я еще про типы не говорил, про извлечение и упаковку в монаду, про отображения множеств, карринг и тд.
    В общем хаскел это интересно, но очень сложно. Даже если не пообломаешь зубы, у тебя очень долго будут проблемы с дебагом, с пониманием всяких астральных техник, которые плодятся день и ночь, вроде стрелок или линз. Да и понять чужой код на хаскеле часто очень сложно, потому что каждый считает, что просто обязан применить все заумные штуки, которые он знает, ведь разве не для этого он учил хаскел? А ведь потом люди будут читать это...
    Теперь пара слов о Лиспе - тут у меня меньше опыта, но идея такая - это программируемый язык программирования. Кроме того, что в нём есть макросы - специальные инструменты, чтобы писать программу которая напишет программу, так и сам язык представляет из себя синтаксическое дерево в своём первозданном виде, что открывает безграничные возможности в метапрограммировании. В общем идея такая - этот язык в умелых руках становится абсолютно чем захочешь. Нравится хаскел и ФП? Отлично, сейчас реализуем. Хочешь ленивые вычисления? На! Хочешь классы? Вот! Хочешь логическое программирование? Держи! При всём этом язык крайне прост, может даже проще Си.
    Так, что я тебе посоветую? Наверное, начинай с Хаскела - он тащит за собой огромную теоретическую базу и целый арсенал таких приёмов программирования, которые тебе и не снились. Выучишь, освоишься - подумай о лиспе. Но! Тебе в любом случае нужно будет ставить Emacs - это самая лучшая среда для этих обоих языков, а Emacs конфигурируется на Emacs Lisp, так что у тебя будет возможность на него посмотреть. Посмотри видео по емаксу https://www.youtube.com/playlist?list=PLECBtie1W1t... (там и про Emacs Lisp есть глава), потом качаешь "Хаскел во имя добра" и "О хаскел по-человечески" и читаешь их параллельно - в первой хорошее мягкое введение, а во второй практика - она нужна сразу, чтобы хотябы знать, как создать проект с помощью cabal и собрать его, а то Липовача пол книги в интерпретаторе сидит.
    Ответ написан
    1 комментарий
  • Есть ли у виртуальных машин, таких как VirtualBox, API для работы с IO?

    VNSB18E1
    @VNSB18E1 Автор вопроса
    Ну я вроде подразобрался, но решения пока окончательного не нашел - да, апи есть, оно описано в доке на sdk, которое можно скачать отсюда, там в docs всё написано на первых страницах, есть пара примеров на java и python. Примерно выглядит всё так - есть api, доступное через сеть (или "как бы через сеть", localhost) и есть api, построенное как com - т.е. полностью локальное. Само API похоже на winapi - там есть всё, что нужно, дока по классам занимает около 300стр. Сам sdk написан на си\с++ , также есть "клей" для java и python. Для вэб версии вроде еще .net и php. Если вас интересуют другие языки - используйте либу в вашем любимом *language_name* которая сгенерит классы или другую обёртку на основе имеющегося WSDL (приложен к sdk). Вот с последним пока не разобрался.
    Ответ написан
    Комментировать
  • Как определить бота на сайте?

    Я сам частенько писал ботов на AutoIt и вот чего я боялся -
    • Что с ботом заговорят
    • Что админ заметит, что между событиями всегда строго один и тот же интервал
    • Что админ заметит, что при щелчке на кнопку всегда попадает курсором в строго один и тотже пиксель
    • Что изменится пользовательский интерфейс и бот начнет вытворять непотребства (причём обычно достаточно таких изменений, которые не заметны глазу, например заменить id кнопки или изменить цвет с #aaaaaa на #aaaaab)
    • Что админы заметят, что у меня онлайн стремится к 24ч в сутки
    • Что админы заметят, что, даже если у меня онлайн не 24ч, то он не совпадает с обычным для моего часового пояса временем активности пользователя (я же не ставил бота пока сам сидел за компом, поэтому он обычно работал по ночам)
    • Что админы подкинут какую нибудь шутку (например, вылезет сообщение посреди экрана) и бот затупит и тем спалится (например начнет тупо тыкать в одно и тоже место)
    Ответ написан
    7 комментариев
  • Как правильно собрать слово из битов?

    • Надеюсь, result вначале инициализируется нулём и обладает ёмкостью больше 16 бит (или беззнаковый)?
    • А вообще, по памяти, операция сдвига работает только с константами т.е. нельзя писать << i. Можно переделать так:
      for (iterator = 0; iterator < 16; iterator++){
      result = result<<1;
      if(state[iterator] > 0) result++;

      ну или ++ замени на "ИЛИ" с единицей. Можно даже делать "или" сразу со state[iterator]. Или заменить сдвиг умножением каунтера на 2 на каждой итерации (нужна отдельная переменная) и плюсовать его.
    Ответ написан
    3 комментария
  • Какой ЯП больше подойдет для создания ИНС?

    Не слушай этих ребят, они говорят python - потому что знают только питон, а кто говорит "любой" тот знает только Си, от силы. А тебе подойдет Erlang - это язык, специально разработанный для работы в распределенных системах, вот даже сразу книга есть, объясняющая, почему Erlang - отличный вариант для построения нейросетей. Если он не попрёт по каким то моментам, смотри в сторону языков, реализующих модель акторов, например, Elixir, Scala, Go, Clojure.
    P.S. Pyton вообще не такой плохой вариант, но не лучший. Оптимальный, только если не хочешь заморачиваться с новыми аскетичными языками.
    Ответ написан
    3 комментария

Лучшие вопросы пользователя

Все вопросы (3)