• Где в России убивают больше всего? Анализ данных
    0

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

  • НЛО воровало аватарки здесь
    0
  • Какой язык программирования учить в 2020-м?
    0

    R? Дизайнеру? Какие там вообще были аргументы в его пользу?

  • Что нужно для создания хорошего подземелья в RPG?
    +3

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

  • Динамическая типизация — это не инструмент для разработки. Это чепуха (паршивая)
    +3

    Во-первых, в питоне нет проверки типов и честной типобезопасности: невозможность пресловутого 10 + '10' обеспечивается проверками в int.__add__ (насчёт конкретно int не уверен, мб и в коде CPython/PyPy, но для не-встроенных типов точно так). Вполне можно написать свой числовой тип, который умеет складываться со строками, датами и чёртом в ступе; ван Россум просто справедливо решил, что встроенным типам это не нужно.


    Во-вторых, свойства объектов (и типов (которые тоже объекты)) можно менять в рантайме. Если какой-нибудь my_type.__eq__ или my_type.__len__ может в самый неожиданный момент поменять семантику, то строгая статическая типизация не имеет смысла. Любые утверждения о том, какие у типов могут быть значения и какие над ними возможны операции, приобретают ссылочку мелким шрифтом "если только пользователь не залезет куда не надо".


    TL;DR Питон довольно убедительно изображает строгую типизацию (особенно на встроенных типах), но вообще-то у него нестрогая.

  • Юлия → Iuliia. Всё о транслитерации
    0

    Они "Алексей" в любой транслитерации читают как Алéкси, а "Борис" — как Бóрис. Скорее всего, это устоявшаяся форма произношения, вроде пресловутого Лондона-Ландона.

  • Юлия → Iuliia. Всё о транслитерации
    0

    В загране ALEKSEIY.

  • Уберите ваших детей от наших голубых экранов, или почему нельзя покупать Яндекс.Станцию для ребёнка
    0

    Ну снова здорово, расчехляем аргументы про "а если это дети увидят". Вайтлистить весь контент на свете, во-первых, технически нереально. Во-вторых, что важнее, бесполезно. Допустим, ютуб научился не отдавать в детском режиме матерные видео, насилие и прочую пропаганду гомосексуализма. Допустим даже, что яндекс аналогичным образом фильтрует весь остальной интернет. Проблема в том, что лично я про мат и секс (включая существование гомосексуализма) узнал примерно в детском саду от других детей и из (физических) книг. Их-то вы как вайтлистить предлагаете?

  • Умирает ли RuTracker? Анализируем раздачи
    0

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

  • Язык программирования karasic
    0

    С этим-то я согласен, я в принципе стараюсь писать маркдауном где только можно. Но этот человек считал, что конкретно конструкция ![]() уместна в комментариях внутри кода.

  • Язык программирования karasic
    0

    А как оно в случае тех же Point и Rect поступало с недостающими в источнике полями? Оставляло имеющиеся? Если так, то это, конечно, не присваивание, но вообще-то полезная операция для всяких грязных низкоуровневых дел. Такой типа отдалённый аналог прототипного наследования, но используемый по необходимости, а не при генерации структуры (и поэтому не требующий думать о том, кто кому наследник и как это всё разрешается).


    Если аналогичным образом определить операцию сложения, то те же виджеты композируются вообще красиво. Прототип виджета (стиль, логика) плюс точка (координаты), плюс пользовательская сессия (кодировка, локализация) плюс нечто, возвращённое базой данных (собственно содержимое) равно готовый элемент интерфейса. Можно ещё кидать исключение, когда несколько "родителей" имеют общие поля, тогда вообще целая парадигма получается.

  • Язык программирования karasic
    +6

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


    <think 0.2>
    a ?=> b
    
    # На трипл ведёт себя как а => b
    # На дабл ведёт себя как if random() <= 0.2 {a =>b}

    Более формально: значение присваивается с задаваемой пользователем вероятностью не выше 0.1 (всегда присваивает на дабл) и не ниже 0.01 (присваивает только на трипл). Вероятности ниже 0.01 не поддерживаются синтаксисом, т.к. настолько маловероятные события сложно покрыть юнит-тестами. Тем не менее, операции на квадрипл и меньшие вероятности могут быть импортированы из стандартной библиотеки. Распределение униформное, вероятность присваивания на дабл фиксированная для каждого пространства имён и задаётся оператором think <float>. Использование этого оператора несколько раз в одном пространстве имён является неопределённым поведением и кидает ворнинг.


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


    # Распределение бернулли
    <think P>
    0 => b
    1 ?=>> b
    # На дабл/трипл ведёт себя как 1 =>> b (или устаревший синтаксис b+=1)
    
    # Биномиальное распределение
    
    <think P>
    N => index
    while index > 0
        {
        0 => a
        1 ?=>> a
        -1 =>> index
        }

    Распределение Пуассона аппроксимируется биномиальным при достаточно высоком N. Аппроксимация нормального распределения выполняется с использованием алгоритмов метапрограммирования. Синтаксис этой аппроксимации слишком громоздок, чтобы поместиться в данном комменте. Но базовая идея состоит в том, что заданная пользователем операция многократно рекурсивно модифицируется таким образом, чтобы создать семейство различных распределений (по дефолту тысячу, но количество может быть определено аргументом компилятора). Затем из каждого распределения берётся по одному значению в том же диапазоне, что и исходная операция. Согласно Центральной предельной теореме, их среднее арифметическое распределено нормально.

  • Язык программирования karasic
    0

    Вот вы смеётесь, а кто-то на хабре мне неиронически доказывал, что писать комменты маркдауном и эмбеддить в них рисунки — это не только нормально, а даже и вполне удобно.

  • В софте всё восхитительно, но все недовольны
    0

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

  • В софте всё восхитительно, но все недовольны
    0

    Ваша правда, это меня питон приучил бесплатно перезапускать программу после каждой правки. Но вообще компиляция (или запуск вычислительно дорогого) может быть и на чём-то мощном удалённо; я скорее о том, что после двух десятилетий развития Win-экосистемы "ПК не для игр или вычислений" должно бы означать скорее "любая груда старых запчастей по дешёвке", чем "прошлогодняя игровая машина минус видеокарта". Как это, кстати, и обстоит на той же убунте и её форках.

  • В софте всё восхитительно, но все недовольны
    0

    Имеется в виду не "медиана между совсем уж днищем и топовыми игровыми машинами", а "железо, которое есть у большинства пользователей в реальном мире". Для России, во всяком случае, звучит реалистично; у меня на работе и в ноуте (который я и брал как легковесную рабочую машинку для командировок) стоит как раз что-то в этом духе.


    Очевидно, никто не собирается на таком железе тренировать нейросети или шевелить Плотву, но от почты/мессенджеров/офиса/IDE вполне можно требовать нормальной работы. Сложно представить, почему офисным работникам, которые в основном заняты перепиской и редактированием документов MS Office, должны требоваться 16 гигабайт памяти и SSD. Да и программистам тоже, у которых 90% работы по сути сводится к манипуляциям над текстовыми файлами (максимум в мегабайты размером) и гуглёжке.

  • Автоматический мастер подземелий
    0

    Немножко странная история жанра. Вот у нас предыстория, основатели, классики — а потом примерно к началу нулевых RPG умирают и ничего не происходит, вот разве что Wasteland II на кикстартере был. То есть ни BioWare после Baldur's Gate, ни Bethesda после Daggerfall ничего не выпускали, не говоря уже о более мелких студиях. DnD, потом книги-игры и парсерный IF, потом Фоллач/Бальдур — а потом сразу AI Dungeon. И к тому же совершенно не упоминаются японские РПГ и визуальные новеллы, которые развивались сами по себе.


    Можно, конечно, сказать, что нет никакого принципиального различия в нарративной структуре между ультимой и любой другой сюжетной игрой (хоть Skyrim, хоть "Бесконечным летом") — и там и там квесты, возможные решения и их последствия геймдизы/сценаристы прописывают вручную, не-рельсовость всё равно иллюзорная и достигается тем, сколько развилок на те рельсы добавлено. Но это совершенно упускает из виду игры, у которых симуляция мира достаточно сложная, чтобы сюжет возникал сам собой. Sims, Dwarf Fortress/Rimworld, Space Station 13, да и многие рогалики (напр Cave of Qud) имеют какую-никакую модель взаимоотношений с NPC.

  • Почему мы пишем программы такого низкого качества?
    0

    То есть получается, что целая Демократическая партия на довольно важный элемент своей инфраструктуры наскребла 60k и аж целых четырёх программистов? И начать разработку раньше чем за два месяца до дедлайна не сумела? И тестов в приближенных к боевым условиям не провела? Что-то мне подсказывает, что тут не в культуре стартапов проблема и не в спринтах.

  • Как Хабр взаимодействует с госорганами и другими заявителями. Transparency report за все года
    –2

    Он уже лет двадцать как "должен или рухнуть, или скатиться в полноценную диктатуру". И что-то как-то воз и ныне там.

  • bear_hug: игры в ASCII-арте на Python3.6+
    0

    В принципе реально. Лично я Lua не владею и писать на нём не собираюсь.

  • Чем программирование сегодня отличается от программирования 20 лет назад?
    0

    Всегда? Мне казалось, что выбор между логикой только в системах и логикой в компонентах и системах (entity-specific и non-entity specific соответственно) — скорее вопрос вкусов имплементирующего, чем ключевая часть паттерна.

  • Чем программирование сегодня отличается от программирования 20 лет назад?
    0

    Ну новой не стоит, ей лет 10 с небольшим. Но тут не про множественное наследование речь и даже не про миксины, а именно про чистую композицию. Сущность — это такая коробочка для компонентов, которая умеет только их добавлять и удалять, больше ничего. Ну, может быть, всякие полезные мелочи типа быстрой проверки наличия поддерживает. Компоненты — это куски игровой логики, применимые к конкретному объекту. А системы — это процессы, которые с ними происходят.


    Например, есть у нас в игре гравитация. GravitySystem раз в тик опрашивает все сущности: "Есть у тебя WeightComponent? Если нету — то и фиг с тобой. А если есть — то пусть твой PositionComponent ускорится вниз на 9.8". Потом рендерер опрашивает сущности, и если их PositionComponent в пределах видимости — то берёт ImageComponent.current_image (если это не 3D) и вывешивает его на экран. И вся остальная логика работает так же.

  • Чем программирование сегодня отличается от программирования 20 лет назад?
    +6

    Entity-Component-System в игровых движках, например в Unity. Имплементировано поверх ООП, конечно, с классами компонентов и прочим таким, не на базовых типах. Но игровые сущности именно что композируются (сущность с отдельными компонентами "Модель", "Позиция", "Контроллер поведения", "Механика повреждений" и т.д.), а не наследуются от базового GameCharacter, у которого на все эти случаи были бы методы/аттрибуты.

  • Эффект Кулешова в Disco Elysium: как контекст создает смысл
    0

    Его, по-вашему, говном стошнило? Это две принципиально разных субстанции, это я вам как биолог говорю.

  • Эффект Кулешова в Disco Elysium: как контекст создает смысл
    0

    Фраза Кима что-то на тему "Соберись", название мысли "Модель для сборки", текст — длинный прогон про первого в мире лего-копа, который может собрать сам себя.


    Мало того что вполне передаёт шутку, так ещё и рифмуется со всеми этими hobocop, apocalypse cop и прочими *cop — мыслями.

  • Эффект Кулешова в Disco Elysium: как контекст создает смысл
    +1

    Там скиллы прямо вклиниваются в диалог (как персонажи!) и что-то говорят. Физическая сила регулярно советует прописать собеседнику под дых, устойчивость к наркотикам призыавает этих самых наркотиков употребить, ну и так каждый скилл что-то своё.

  • Эффект Кулешова в Disco Elysium: как контекст создает смысл
    +2

    "Shot" — это в данном случае не "выстрел", а "кадр" или "план". И статья тащемта сводится к "в Disco Elysium сюжет работает очень круто, потому что для каждой мельчайшей фиговины есть пара-тройка как-то взаимосвязанных с ней других мелких фиговин, при этом система работает предсказуемым образом, и в результате мир выглядит живым и полноценным".

  • Грета Тунберг права? Самолеты VS поезда
    0

    На крупнотоннажном по идее атом может быть экономически жизнеспособен, нет?

  • Deep Fake Science, кризис воспроизводимости и откуда берутся пустые репозитории
    0

    Ваша правда, canis. Я почему-то думал, что в этой присказке только est не хватает.

  • Deep Fake Science, кризис воспроизводимости и откуда берутся пустые репозитории
    +4

    У нас в биологии (за исключением совсем уж консервативных классических областей — ботаники там какой-нибудь с "флористическими списками такого-то региона") статья пишется либо нормальная, либо на русском. Одно из двух. Русская пишется либо потому что горят дедлайны и отчётность, либо потому что тебя редакция лично вежливо попросила что-нибудь им отправить. Ну или потому что ты в принципе в английский не можешь, но тогда ты и работаешь так себе.


    Знаю, что с русскими журналами примерно так же у химиков и физиков (по крайней мере среди моих знакомых). У гуманитариев получше. В CS скорее всего хуже, потому что быть хорошим программистом и не понимать английского — это нонсенс.

  • Deep Fake Science, кризис воспроизводимости и откуда берутся пустые репозитории
    +6

    Тогда бы было слишком легко хакнуть наукометрию, нагенерировав сто тысяч корчевателей со ссылками друг на друга. Не могу найти ссылку, но вроде бы таким образом удавалось задрать до небес индекс Хирша по версии Google Scholar (а это отнюдь non penis canina est) для несуществующего учёного.


    "Горло" на входе в журнал делает очень важную штуку — отделяет действительно научные работы от фричества, откровенно косячных исследований, рандомного спама, повторов ранее опубликованного и прочего такого. Не уверен насчёт arxiv, но в его биологическом аналоге biorxiv фильтр гораздо менее строгий. Живые редакторы там есть, но они только проверяют, что публикуемое более-менее похоже на научный текст (а не рекламу, пиратские художественные книги и т.п.). Контроля качества нет.

  • Алексей Савватеев: Теоретико-игровая модель социального раскола (+ опрос по nginx)
    0

    Раз зашла речь о социальных связях и прочих взаимодействиях, прям напрашивается идея засунуть это дело в клеточный автомат, определённый на графе социальной сети. Это уже сделал кто?

  • Алексей Савватеев: Теоретико-игровая модель социального раскола (+ опрос по nginx)
    +1
    1. Хайпануть как минимум. Написать статью в том духе, что, дескать, свободу Сысоеву и Рамблер на фонарь, собрать на этом тонну кармы, лайков, просмотров или что там на вашей любимой площадке дают. Или даже зарплату, если вы журналист.


    2. Если вы вдруг менеджер крупной окологосударственной компании — пугать своих подчинённых тем, что с ними, если что, будет так же.


    3. Если вы вдруг адвокат — пугать своих клиентов тем, что с ними будет так же, и предлагать свою защиту.


    4. Если вы вдруг не-российский работодатель — примерно то же самое.



    Это только то, что за первые пять минут в голову пришло.

  • GitHub создал тысячелетнее хранилище, в котором сохранит Open Source-репозитории для потомков
    +1

    Вас обманули, оно не таяло и прекрасно себя чувствует

  • GitHub создал тысячелетнее хранилище, в котором сохранит Open Source-репозитории для потомков
    +1

    "Копировать было нельзя" — в смысле приватные какие-нибудь данные? Надо Terms and Conditions курить, но скорей всего кто залил пароли на гитхаб, тот сам дурак.

  • Ко дню рождения Юрия Кнорозова: изучаем основы письменности Майя
    +2

    Йода использует в основном нормальное английское SVO, иногда сбиваясь на OSV (напр. Patience you must have, my young padawan). Сказуемое у него никогда не в начале.

  • GitHub создал тысячелетнее хранилище, в котором сохранит Open Source-репозитории для потомков
    +17

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

  • О барицентрических координатах на пальцах
    0

    Барицентрические координаты ещё очень удобны для представления в двухмерном рисунке любых трёхэлементных векторов, суммирующихся в единицу. Например (соус):


    Quartet mapping


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

  • bear_hug: игры в ASCII-арте на Python3.6+
    +3

    Строго говоря да, чарсет CP437. А под капотом внутри питона вообще ЕМНИП UTF-8. Но обычно ASCII-артом называют любую символьную псевдографику, независимо от кодировки.

  • Простите, пользователи macOS, но Apple зашла слишком далеко
    0

    Caves of Qud у меня, помнится, года два назад прекрасно крашился под вайном. А Tangledeep безбожно лагал. Но у них, справедливости ради, Unity под капотом. У когмайнда — самописный движок на SDL, хоть и значительно более сложный, чем просто консольное окно.