• Как можно улучшить это решение задачи FizzBuzz?

    @AlexSku
    не буду отвечать из-за модератора
    использовать show и map
    Ответ написан
    Комментировать
  • Как понять каррирование и частичное применение функции? В чём их различия?

    @AlexSku
    не буду отвечать из-за модератора
    1) скобки в описании типа расставляются вправо, так что может быть любое количество аргументов:
    fun:: a -> (a -> (a -> a))
    2) частичное применение означает, что функции можно скармливать аргументы по одному в любом количестве.
    (в режиме оператора можно подсунуть второй, а первый - потом).
    3) про каррирование. Есть вид передачи параметров в других языках fun(p1, p2, p3). На Haskell это передача одной группы (кортежа). Есть функции высшего порядка curry и uncurry, которые вашу функцию переводят в противоположный тип.
    Ответ написан
    Комментировать
  • Какой фактический размер у типа Int на платформе GHC, Windows 64?

    @mlyamasov Автор вопроса
    Отвечаю себе.
    Удалось найти облако с Windows Server 2019, 64 bit.
    В этом облаке скачал старую версию Haskell Platform.
    Новых версий Haskell Platform нет, вместо этого предлагают какое-то Chocolatey с регистрациями и СМС.
    В результате получил, что sizeOf (undefined :: Int) = 8.
    Ответ написан
    1 комментарий
  • Что такого хорошего в иммутабельности?

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

    Вот тупой пример:
    let today = now().date
    let tomorrow = today.addDays(1)
    assert(today != tomorrow)

    И вот если DateTime мутабельный, то мы можем словить ошибку в этой ситуации.
    Иммутабельность же позволяет на корню этого избежать.

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

    А отстутсвие сайд-эффектов позволяет делать вычисления ленивыми, и тоже даёт возможность безопасно распараллеливать, тк нет привязки к порядку операций.
    Ответ написан
    Комментировать
  • Что такого хорошего в иммутабельности?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    ну например можно эффективно переиспользовать и хранить структуры данных.

    вот например сложить 2 списка:
    в случае с иммутабельным чтоб создать третий общий список, тебе достаточно только ссылки указать где надо, на первый и второй список - оба списка у тебя будут переиспользоваться, а в память добавится только пару дополнительных ссылок (это вычислительно быстро и требует мало памяти).

    в случае с мутабельными списками - тебе нужно создать третий, копируя все элементы первого и второго, что затратно как по времени исполнения, так и по объему хранения.
    если ты в мутабельной структуре попробуешь тоже ссылочками сделать новую структуру, у тебя может получится такая ситуация, что уже ПОСЛЕ создания нового списка, при изменении в исходной структуре - эти изменения появятся в твоём новом списке, как неконтролируемое изменение, которое ты не выполнял.
    В итоге поскольку в иммутабельных структурах есть гарантии, что они будут не измены, то их можно переиспользовать при создании новых структур данных, мутабельные же нельзя.
    Ответ написан
    Комментировать
  • Opengl 4.* или vulkan?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    Поищите у себя папку C:\Program Files (x86)\VulkanRT и поймёте, что ждать драйверов не нужно, они уже у вас. Что это API говориться прямо Vulkan (API). Там же сказано, что "11 июля 2016 года Id Software выпустили патч для игры Doom (2016), в котором отрисовка графики и расчёт физических взаимодействий были переделаны с OpenGL на Vulkan".
    Ответ написан
    1 комментарий
  • Какие вы посоветуете книги по Хаскелю?

    myjcom
    @myjcom
    Сейчас потянуло на функциональное программирование. Выбрал Haskell как наиболее универсальный ЯП.

    Могу посоветовать больше чем книгу. Вот тут .
    Там тебе в первую очередь нужен раздел Общение в котором увидишь ссылки на телеграмм чаты.
    Тебе нужен @haskell_learn — чат для новичков
    И про книги те которые действительно стоит прочитать тебе там тоже расскажут, а можешь сразу спросить в основном канале @haskellru — основной хаскельный чат
    Ответ написан
    1 комментарий
  • С чего начать учить функциональное программирование "одноклеточному"?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Для начала вам даже не нужно думать и пытаться понять суть функционального/императивного подхода, т.к. без опыта это невозможно, да и с опытом многие путаются в этом. Да и неважно это. Можно прекрасно понимать суть вещей, но даже не знать, как это называется.
    Вам нужно определиться с тем, какая область программирования вам интересна(игры и другую математику отбросим): будь-то веб, десктоп, мобильная разработка, иное. Дальше нужно понять уровень абстракции, на котором вы хотите работать: низкоуровневые/высокоуровневые языки. Чем более низок уровень абстракции(даже на высокоуровневом языке), тем больше, как вы заметили, вы научитесь думать и обретёте понимание. Далее выбираете язык. Низкоуровневые я бы даже не рассматривал, но дело ваше. Изучаете основы: это как раз функции, типы данных, структуры, как с ними работать, зачем они вообще нужны. Любое программирование - это всегда работа с данными. Вот без понимания этого, включая терминологию, - никак. Далее какой-то мейнстримный фреймворк на этом языке. Далее опускаетесь снова к самому языку, углубляясь в тонкости.

    Может потом дополню, надоело печатать с мобилы.
    Ответ написан
    2 комментария
  • Минусы использования AsyncTask?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Почему нельзя? Можно! Но только не всегда :)
    АсинкТаски - для коротких асинхронный операций. Типичный пример - обращение к БД. Ни в коем случае не использовать для работы с сетью.
    Почему:
    1) АсинкТаски не привязаны к жизненному циклу активити. При пересоздании активити onPostExecute() выполнится, но активити будет не та (и она может утечь, что совсем не круто).
    2) Следствие 1 - довольно хорошо заморочиться надо, чтобы написать правильный код с АсинкТасками. Такой код становится негибким и неудобным.
    3) Без дополнительный усилий (executeOnExecutor) асинктаски ставятся в очередь и выполняются в отдельном потоке, но последовательно. Как следствие - тормоза UI там, где они используются правильно (например AsyncTaskLoader).
    Ответ написан
  • Как сделать защиту от возврата денег в android?

    Сам столкнулся с возвратом средств. У меня было урезанное бесплатное приложение и полнофункциональное/PRO платное. Спустя некоторое время кто-то где-то из пользователей прочухал, что можно покупать PRO, бекапить его, возвращать деньги и доставать из бекапа. Видимо где-то об этом разошлась инфа, резко посыпались такие возвраты. Защиты от этого нет. Пришлось заморачиваться и закрыть платное приложение, а в бесплатное ввести инаппы. Возвраты прекратились. Но действительно, нет такого в API эвента об отмене покупки.

    Поэтому для себя решил, что если ситуация повторится, буду у пользователя сохранять Order ID, тот который приходит при покупке в таком виде GPA.1234-5678-9012-3456. В Payments Merchant Center при отмене покупки я это увижу и после синхронизации приложения с сервером смогу у пользователя отменить покупку.
    Ответ написан
    3 комментария
  • Как тестировать проекты?

    @lyeskin
    Все просто - попытайтесь сломать Ваш код. Ну и когда что-то внедряете - проследите все связи, просто тщательней подходите к работе.
    Ответ написан
    Комментировать
  • Нужен совет по направлению развития начинающего программиста?

    @GaryH
    Мое ИМХО:
    с PHP, как и 1С, Basic - нельзя начинать: на них же и останешься, и останешься б*дло/г*вно-кодером. Последние несколько лет люди все активнее переходят с php - на python и ruby. Судя по статьям хабра, заказам на фрилансе, факту, что в нормальных учебных заведениях - преподают Python, который заметил Pascal/Delphi. Если и начинать - то с них. Здравый смысл порешал.

    перестань слушать советчиков начинать с C++/PHP и вообще тебе стоит забыть пыху, как страшный сон. "зачем ждать капусту, если есть картошка?" (c)


    делай перерывы - отдыхай. перестань в возводить прогерство во сверхценную идею, т.е. слижком многого возлагать/ожидать...
    Ответ написан
    8 комментариев
  • Нужен совет по направлению развития начинающего программиста?

    @dmitryKovalskiy
    программист средней руки
    За полтора месяца я выучил свой первый язык – Python
    А я выучил C++ за 21 день
    Но так, как я не планирую оставаться фронтенд разработчиком, то дальше хочу изучить javascript
    Вообще противоречите сами себе.
    По сути вопроса - очередной вопрос "Что делать дальше?". Выучите 1 платформу хорошо. Знаете Python? Доучите Django и разберитесь с вебом. Если будете хреново знать Python и PHP - не нужны будете никому. Если хорошо разберетесь с одним стеком технологий - надежды появятся. У вас только ни слова про математическую и алгоритмическую базу. Разберитесь с архитектурой программных продуктов, паттернами. SQL и нормальными формами базы данных. Чтобы пойти стажером - вы должны уметь красиво протащить данные от БД до клиента и красиво отрисовать их.
    Ответ написан
    Комментировать
  • В чем преимущество динамически типизированных языков?

    @beduin01
    На динамическом быстрее слепить прототип, но сложнее его дальше поддерживать.
    Гляньте вот тут: dlang.ru/why-d-is-better
    Ответ написан
    2 комментария
  • Что нужно для безболезненного перехода на linux?

    @feldwebel
    Да, ладно, что вы человека пугаете. Нынешние десктопные линуксы давно дружелюбнее к пользователю, чем та же 8-я винда.
    Ответ написан
    11 комментариев
  • Что нужно для безболезненного перехода на linux?

    @AVKor
    Удалить винду сразу, иначе будет тянуть загрузиться в неё.
    Ответ написан
    2 комментария
  • Из чего лепить смарт часы?

    GavriKos
    @GavriKos
    Начните с написания собственной оси под существующее железо.
    Ответ написан
    3 комментария
  • Как понять Python?

    BuriK666
    @BuriK666
    Компьютерный псих
    Ответ написан
    Комментировать
  • Почему все хотят django?

    @Vlad171
    Для меня самый главный аргумент в пользу Django - работающий портал за несколько дней! Он очень прост в освоении. Это то же, что сравнивать python с другими языками, со всеми его плюсами и минусами. И не соглашусь с тем что мало сторонних библиотек - под все свои нужды я все очень быстро нашел. Да и написать свое что-то очень просто. Плюс простота отладки.
    Ответ написан
    1 комментарий
  • Почему все хотят django?

    @bromzh
    Drugs-driven development
    1. Для джанги есть куча готовых батареек. Для типовых проектов вообще может получиться так, что своего кода будет минимум. а весь проект - использование нужных модулей.
    2. Чёткая структура проекта, новичку не надо будет изучать структуру, как в случае с тем же фласком
    3. Все компоненты джанги (ORM, шаблонизатор, админка) поддерживаются одной командой, меньше будет случаев, когда что-то отваливается из-за несовместимости версий

    Хотя я и сам выбрал бы фласк.
    Ответ написан
    2 комментария