• Интервалы: грядущая эволюция C++
    +2
    Более того, с учётом реализации any_of, предложенной выше, она ещё и медленнее. Она перебирает все элементы, а не останавливается на первом удовлетворяющем, как цикл. Так что зависит от реальных данных, а на общий случай нужны как минимум бенчмарки.
  • Интервалы: грядущая эволюция C++
    0
    Спасибо за статью, тема ranges не частый гость на хабре.
    Не могли бы вы уточнить, что вам не нравится в коде, который упомянут в заключении? Да, ваш вариант короче, но при чём здесь эффективность? Алгоритмическая сложность одинаковая, особого оверхеда я тоже не вижу. В чём проблема?
  • Почему капчи стали такими сложными
    +4
    Почему-то представил себе антиутопию, в которой люди борются за право оставаться людьми, введя специальные курсы в школах для прохождения капчи. Что-то основанное на задачах, которые мозг решает лучше процессора, но уже настолько сложное, что нетренированный человек не в состоянии это сделать. И постоянная гонка со слабым ИИ за эффективность. Учись или сольёшься с безликой массой людей и роботов.
  • Инициализация в С++ действительно безумна. Лучше начинать с Си
    +8
    Есть неплохое выступление Мейерса, в котором он разбирает странности C++ www.youtube.com/watch?v=KAWA1DuvCnQ
    Так вот он акцентирует внимание на том, что всё это не плохо, это не идиоты в комитете, у всего есть нормальное объяснение, почему именно так, а не иначе. Да, C++ сложен, но и задача, которую он перед собой ставит не тривиальна. Сложная задача не решается просто. Совсем отдельный вопрос, актуальна ли задача и нельзя ли было взять нишу поуже.
  • Форматирование исходного кода в Linux средствами ClangFormat: проблемы и решение
    0
    Раз уж тут собрались знатоки clang-format, то посмею задать вопрос не совсем в тему статьи. Есть ли какой-нибудь способ объяснить ему несколько допустимых вариантов форматирования? Самый простой пример — разрешить делать однострочные функции, но если в коде уже есть перенос, то не трогать его? Это вкусовщина, но уже привык делать однострочными только конструкции вида return smth; и никогда не заталкивать никакую логику. Кстати, встречал и полностью обратное — однострочные if разрешены, но return всегда должен быть перенесён, чтобы проще было искать точки выхода. Ну или есть ли другие форматилки, которые оставляют свободу выбора?
  • Как на D писать под ARM
    0
    Радует, что ldc стал нормально из коробки работать на arm. В прошлый раз я был вынужден использовать gdc, а он отстаёт по поддержке фич языка.
  • Как я с Python на Julia переходил (и зачем)
    +2
    Простите, что встреваю со своими тараканами, Julia действительно хорошо подходит для задач обработки данных и статистики, но не могу не порекомендовать язык D.
    Вы получите: производительность C, можно не возиться с аллокациями (а можно и возиться, если это оправдано), хорошая библиотека алгоритмов (std.algorithm), mir — одна из самых быстрых либ для матриц, алгоритмов и линейной алгебры, во многом вдохновлена numpy, и много-много всего.
  • Реализация оператора in в С++
    +1
    Круто! Я бы не стал делать макрос, а оставил бы вариант *in*:
    if (auto res = "true" *in* some_map)

    Для этого придётся сделать глобальную переменную in, зато она уже нормально включается в namespace. Понятно, что сама она состояние хранить не сможет, нужно на первом умножении создавать временное значение и хранить ключ там.
  • Почему человеческий мозг так эффективен?
    0
    Не поделитесь выводами? Я не смог из этой статьи сделать никаких выводов относительно эволюции мозга.
  • Миф о предпочтительном стиле обучения
    0
    Промахнулся с ответом:
    geektimes.com/post/301133/#comment_10804917
  • Миф о предпочтительном стиле обучения
    0
    У видео есть одно «неоспоримое» преимущество — его легче и быстрее записывать чем печатный текст.

    Спорное утверждение. Экспромтом может и быстрее, но что-то проработанное сначала надо написать, а потом уже записывать на видео. По крайней мере качественный контент на ютубе явно не экспромт, а хорошо подготовленное выступление. А уж с монтажом и свистелками это ещё дольше.
  • Миф о предпочтительном стиле обучения
    +1
    Мда, а где хоть какие-то доказательства того что называется мифом или его опровержение? Выше уже отметили, что человек может неверно оценивать свою предрасположенность. Кроме того утверждается, что люди называют тот способ, который им «нравится». Но ведь даже при отсутствии разницы в тестах есть разница в мотивации. Мотивация исследуемых неизвестна, а в реальной школе это основная проблема. Дети способны запоминать гораздо больше, чем дают в школах, но «не хотят».
  • У NASA есть работающий космический реактор Kilopower, но нет плана утилизации радиоактивных отходов
    +3
    А потом можно будет и нормальные захоронения устроить, как сейчас на Земле. Тем более, что всё короткоживущее распадётся и фонить будет уже не так сильно.
  • У NASA есть работающий космический реактор Kilopower, но нет плана утилизации радиоактивных отходов
    +3
    Что на Луне, что на Марсе очень холодно, так что хотя бы с охлаждением нагревающихся отходов проблем не будет.

    Совершенно неверно. Там как бы нет атмосферы (у Марса очень разреженная), тепло отводить некуда. Грунт — очень плохой проводник, сверху вакуум, так что греться будет.
    При этом я не понимаю проблемы. Отвезите подальше, да складируйте. В ближайшие сотни лет Марс не будет заселён хоть сколько-то плотно, чтобы такие склады представляли угрозу.
  • Python, Delphi и C++ глазами учёного
    +1
    Что тут выбрать из букета?

    А для этого нужны профессиональные программисты в штате. У совсем больших лабораторий и объединений есть профессиональные программисты. Тот же CERN публикует очень качественные библиотеки. С моей колокольни выбор выглядит так:
    Нужно перемолоть кучу данных с максимальной скоростью? — C, C++, D.
    Нужно посчитать статистику и работать с табличными данными? — R, Julia.
    Нужна символьная арифметика с выводами — Matlab.
    Исследуете теорию языков программирования — Haskel.
    Не хочется запариваться со всем этим — Python. Если вдруг не хватит производительности зовём суровых сишников, они вынесут нагруженные функции в натив. Многие базовые уже вынесли, поэтому проблемы скорости возникают всё реже и реже.
  • Python, Delphi и C++ глазами учёного
    +2
    Выше уже написали про неумение пользоваться плюсовым дебагером и не буду повторяться. Главное делать правильный вывод из этой статьи. Многие комментаторы восприняли тезис «С++ это очень плохо, питон хорошо», а на самом деле выводом должно быть: «Порог вхождения в программирование на питоне намного ниже, поэтому для непрофессионального программиста он лучше, чем С++». С++, как и Delphi, является отличным языком в руках того, кто очень хорошо его знает и умеет пользоваться инструментарием. Плюсы карают тех, кто подходит к ним как дилетант. Питон поощряет дилетантов, но платить за это приходится скоростью и областью применения.
    И просто от себя советую автору и всем учёным посмотреть в сторону D. Он быстр, как С++, но гораздо добрее к новичкам. Слышал много положительных отзывов от переехавших на D c питона.
  • Кто убил джуниора?
    +19
    Тогда была проблема найти информацию. Сейчас есть проблема не проще — отфильтровать информацию. Сложно начинать, когда тебе со всех сторон предлагают совершенно разные пути и никто не может объяснить, чем они отличаются. Я начинал программировать на спектруме (и это в 2000 году!) с одной книгой в руках и отлично вас понимаю. Но ещё я учусь программировать сейчас и считаю проблему поиска качественной информации не менее важной. Я находил фактические ошибки в самой рекомендуемой книге по изучению python, я вижу полнейшее безумие советов в каналах по JS и не вижу тенденций к улучшению. Неверные знания хуже их отсутствия. Поэтому наставник нужен как никогда.
  • Распутное средневековье
    +5
    Люди, хватит издеваться над человеком. Я тоже считаю позицию Zloy_starik крайне странной, но не вижу в ней причин для гонения и издевательств. Подобными высказываниями вы принижаете себя сильнее, чем его. Каждый имеет право на любую точку зрения и каждый имеет правое её высказывать. У вас есть право с ней не соглашаться, но нет права открыто насмехаться и унижать человека.
  • Использование Boost.Asio с Coroutines TS
    +1
    Спасибо за статью, пример взаимодействия с asio лучше любой синтетики.
    <holywar_mode="on"/>
    Сколько уже копий сломано об эти корутины, но мне до сих пор не понятно. В бусте уже были нормальные корутины, что мешало внести в язык что-то похожее на boost::context? С чего вдруг предлагаемая модель обёрток над промисами лучше, чем корутины со стеком? Вот теперь придумывают, как использовать asio, хотя он уже работал с бустовыми корутинами.
    <holywar_mode="off"/>
  • Поиграть в создателя всего сущего
    +1
    Очень интересно, спасибо за статью. В вашу модель просто просятся автокаталитические процессы (например). Для демонстрации на клеточном автомате достаточно, чтобы жизнь потребляла ресурс и размножалась (это у вас есть) и происходило медленное восстановление ресурса, когда его никто не потребляет. Уже такая система может порождать очень интересные циклы и узоры. С некоторыми параметрами можно получать интересные деревья, кольцевые структуры и много чего ещё. Скорее всего это пригодится для многоклеточной жизни.
  • Проблемы эгоистов: дорожные пробки и парадокс Браеса
    +1
    ИМХО, именно навигатор приводит к подобному поведению. В предложенной модели маршрут выбирается на основе загрузки всех дорог, а не только того, что может видеть водитель без навигатора. Ещё недавно, когда навигаторов не было, водители не были склонны к изменению маршрута, а ездили каждый день одинаково. Торопыги и таксисты были всегда, но даже они не имели полной картины, а объезжали локально видимые пробки.
    Однако, я согласен, что навигаторы могут решать проблему пробок. Сейчас навигаторы предлагаю то самое эгоистическое решение — как лично мне доехать быстрее, но они могут предлагать другой маршрут, чтобы все ехали быстрее. Боюсь только что реальность куда сложнее указанного парадокса, и построить оптимальный алгоритм вообще невозможно.
  • Выпуск#4: ITренировка — актуальные вопросы и задачи от ведущих компаний
    0
    Само упоминание цифры 14 — уже спойлер. Найти оптимальную стратегию не так сложно, и я думаю, что уважаемый ptyrss её знает. Потому как второе яйцо действительно кидается по одному этажу, не смотря на то, что стратегия первого сложнее. А вот доказать оптимальность и придти именно к 14, имхо, сложнее. Мне давали эту задачку, правда не в гугле, и к оптимуму пришлось придти перебором, хотя конечно же можно проще.
  • Полет на New Shepard от первого лица
    +2
    Они после такого будут ещё громче кричать, ведь теперь они видели, что Земля плоская. На видео закругление едва заметно и не противоречит ни идее с слегка выгнутым диском, ни оптическим иллюзиям. Говорить о шарообразности можно при полёте на несколько тысяч километров, где видна значительная часть планеты.
  • Рефлексия в C++14
    0
    Так в том и дело, что это не tuple, а любая структура. Преобразовать структуру в tuple не так-то просто без «этого домостроя». Можете предложить реализацию шаблона с таким объявлением?
    template <typename T>
    auto as_tuple(T&& t) -> tuple<Types...>;
    

    Здесь Types… — список типов полей структуры T. Для любого конкретного типа всё тривиально, а обобщённо? В статье описано, как это сделать, а где ещё есть что-то подобное? Это и называется открытием — что-то, что до недавнего времени казалось невозможным, ну или никто подобного не делал.
    boost::multiindex вообще мимо. Там тонны метапрограммирования, но к сабжу отношения не имеет.
  • Рефлексия в C++14
    +1
    Открытием я считаю возможность вот этого:
    flat_get<FieldIndex>(value);

    Да, это не runtime, это compile time reflection. От передаваемого value не требуется иметь специальные методы или перегружать специальные функции, или быть обработанным препроцессором. В то время как nlohmann json требует специальных методов.
    Приведённый вами пример с json j2 = {...} создаёт объект типа json, а не типизированную структуру. Настоящая сериализация на основе рефлексии это что-то подобное:
    MyCustomStruct obj = from_json<MyCustomStruct>("{member1:12, member2:[0.0, 3.14]}")

    Такое без препроцессора на C++ не сделать, но в статье показан приём, делающий нас на шаг ближе к желаемому. Имея итерацию по полям мы можем, потребовав каким-либо образом указать имена полей, решить задачу полностью.
  • Рефлексия в C++14
    +3
    Заглянул, не нашёл ничего, напоминающего рефлексию или автоматизацию. Как на основе обсуждаемой статьи сделать автоматическую сериализацию/десерализацию json я догадываюсь (хотя имена всё равно не вытащить, придётся делать ключами индексы и битовые представления типов). А в предложенном вами nlohmann json предлагается руками написать to_json и from_json.
  • Рефлексия в C++14
    +4
    А рефлексия это не обязательно строки. Это в первую очередь возможность, не глядя на типы, вытаскивать из объектов свойства. Да, в данном случае вытаскивать можно только по индексу. Но это уже даёт как минимум возможность итерироваться по полям произвольных структур, что уже достижение для C++.

    Тема очень крутая, за текст +100500! Не так часто происходят такие открытия.
    Придирка к языку статьи
    в русском языке используется «строка» кода, а не линия.
  • Сторонник «плоской Земли» проведет в субботу запуск ракеты
    +1
    Всё, что было рекомендовано до этого предложения. Возможно даже больше, все эксперименты не помню. Некоторое время назад я задался вопросом «в чём я верю науке, а что могу проверить?». Шарообразность земли была первым пунктом проверок. А потом ньютоновская механика. Дальше идти абсолютно фундаментально очень сложно, поэтому в биологии и антропогенезе, например, приходится гораздо больше доверять другим. Зато это даёт понимание откуда берётся необходимость научных рецензируемых журналов — абсолютно всё через себя пропустить невозможно.
  • Сторонник «плоской Земли» проведет в субботу запуск ракеты
    +3
    Строго говоря Эратосфен не доказывал шарообразность, он лишь предположил и исходя из предположения измерил радиус. Тем же методом, которым Эретосфен измерял радиус шара, современные плоскоземельщики измеряют расстояние до солнца.
    В том, что Земля — шар, не сомневался ещё Аристотель за сотню лет до измерений, да и он скорее всего не был автором идеи.
  • Сторонник «плоской Земли» проведет в субботу запуск ракеты
    +28
    Вы же можете провести множество экспериментов и не верить слухам! Изучите годичное движение звёзд, съездите на юг или на север, измерьте наклонение полярной звезды, сравните полученную широту с картой. Понаблюдайте на море за кораблями на горизонте. Сфотографируйте лунное затмение, посчитайте динамику изменения яркости, если просто круглой формы тени недостаточно. Попросите друзей из других часовых поясов поучаствовать в замерах высоты солнца. Есть миллион разных способов для косвенного подтверждения шарообразностии гарантированного опровержения плоской и практически любой другой формы Земли.
    Да, доказать шарообразность и исследовать форму сложно, но стремление к этому лучше, чем слухи.
  • Красим беззеркалку в инфракрасный цвет
    +1
    Во многих астрономических магазинах есть разнообразные фильтры, в том числе те, которые ставятся сразу на матрицу. В основном ориентированы на пропускание линии водорода 656нм. Соответствующий раздел астрофорума в помощь. Обычно это проворачивают с зеркалками Canon, так как они лучше подходят для астрофото, но та же беззеркалка Canon EOS M из поста матрцей не отличается от зеркалки 650D.
  • C++17
    +8
    Инициализаторы в if в C++ были очень давно. Не хватало возможности определить условие, отличное от приведения проинициализированной переменной к bool.
  • Симуляция физического мира
    0
    Либо их писали раки

    Как бы грубо не звучало, но скорее всего так. В физдвиижках давно научились правильно обрабатывать столкновения. Это же два бильярдных шара, там всё банально считается в лоб. Вывести формулы скоростей после соударения, да тут первокурсник справится! Главное правильно отследить момент удара, а не давать погружаться телам друг в друга за один кадр.
    Для любопытства это здорово, но планета — не материальная точка, у неё размер есть. Взаимодействия на сравнимых с размером дистанциях уже интереснее. Материальной точке пофиг, а протяжённые объекты получат приливной градиент. Внутри планеты тоже всё будет не так. Ровно в центре гравитация вообще 0, а не бесконечность как в формуле G*M/R^2.
    Моя мысль в том, что малые расстояния находятся за пределами применимости формул небесной механики, не надо пытаться добиваться точности от них.
  • Симуляция физического мира
    0
    leap-frog поможет на больших расстояниях, Луна перестанет стабильно удаляться. В вашем случае этого может не хватить, потому что рядом с нолём сила уходит в бесконечность и правильно проинтегрировать вряд ли получится. Методы более высоких порядков дадут выше точность, но всё равно ничего не гарантируют. Метод потенциалов, выше, осилит подобное.
    Но скорее всего в вашей задаче не нужна эта безумная точность в окрестности ноля, для небесной механики достаточно ограничить расстояние радиусом планет. При сближении на такое расстояние посчитать соударение шариков (неупругих с потерями на нагрев).
  • Симуляция физического мира
    0
    А как столкновение обрабатывали? Если это было именно столкновение, то уже 100 раз написано в множестве физдвижков и куча статей про это.
    Если же вы не обрабатывали это отдельно, а это был пролёт очень близко к центру масс, то всё ещё проще. Скорости около центров огромные, а влияние малейших изменений расстояния очень велико, поэтому любые погрешности (как метода, так и вычислительные) резко усиливаются. Выше писали про leap-frog, он не даст супер точности, но с энергией должно быть хорошо.
  • Симуляция физического мира
    0
    Вот за этим я всегда прихожу в комменты, за leap-frog первый раз слышу, хотя написал немало методов. Он очевиден и легко «изобретается», но не знал про его свойства.
    Рунге-Кутты 4 порядка всё же имеет 4-й порядок сходимости, соответственно O(h^4). Может вы имели в виду Рунге-Кутты 2-го порядка? Он действительно в 4 строчки.
  • Пора убить C#
    +2
    https://ru.wikipedia.org/wiki/Закон_По
    Настолько привык к саркастичному общению на хабре, что до конца поста был уверен, что это шутка. Особенно после "Пора убить веб", отличным ответом на который этот пост является.
    Не знаю как автор, но 67 читателей явно приняли всерьёз. Теперь я уже не знаю, было это троллингом или реальной точкой зрения.
  • Симуляция физического мира
    0
    Тоже хотел про это написать и даже был готов возмущаться, как так можно было написать. А потом подумал, как сделать симуляцию устойчивую к этой проблеме. Не поднять точность, а принципиально избавить метод от подобных ошибок. Конкретно эту задачу решить несложно — задача двух тел решается аналитически. А как быть с тремя телами? Пока могу придумать только количественные решения, например, методы высоких порядков сходимости (Р-К 4).
  • «Энтерпрайзная срамота» или как свести с ума разработчика на собеседовании
    0
    Вы видимо находите смешным использование слов вроде «точка останова». А я вот так не считаю и часто употребляю. Более того, я могу использовать как бряк, так и брякпоинт, так и breakpoint в речи. Но не надо забывать, что у всех слов есть другие значения и оттенки. Всему своё место. Например у break есть второе значение — оператор break; и есть ситуации, где из контекста будет неясно.
    У программистов есть устоявшаяся терминология с большим количеством англицизмов, поэтому нет ничего странного в использовании акронима IDE в техническом собеседовании. Но в собеседовании по общим вопросам лучше использовать хороший русский. А ещё лучше понять, на каком языке говорит кандидат и говорить на нём же.
  • Как может вызваться никогда не вызываемая функция?
    0
    Кстати да, очень жёсткий пример для публичного кода. Можно было ограничиться prinf(«FAIL»); Я вот сразу пошёл компилить и проверять. Хорошо хоть clang'ом скомпиленное не запускал. Из-под рута не сижу, но приятного мало и для юзера.