Хотя бы раз попробую оправдать свой ник и поучаствую в челендже ++++++++++[>++++++++++<-]>[->+>[-]>[-]++++++++++<<[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>[<+>-]>[-]>[<+<+>>-]+<[>-<[-]]>[>-<<<++++++++++>>-]<<[>+>+<<-]>>>+<[>[>+>+<<-]>[<+>-]<<-]>[-]>>[>>+>+<<<-]>>>[<<<+>>>-]<<+>[<->[>++++++++++<[->-[>+>>]>[+[-<+>]>+>>]<<<<<]>[-]++++++++[<++++++>-]>[<<+>>-]>[<<+>>-]<<]>]<[->>++++++++[<++++++>-]]<[.[-]<]<[-]<<<<---------->+<[>-<[-]+++++++++.[-]]>[[-]++++++++++.[-]]<<<<]
P.S. Ужимать код не пытался, главное, что вообще работает.
Как только речь заходит об эмодзи и их сочетаниях, в памяти должны всплывать такие слова, как code point, сурогатная пара, графема. Тысячи статей про отличия букв, байт, нормализацию юникода и прочее. Кстати, при простом гуглении разделения по графемам в js находится, например: github.com/orling/grapheme-splitter
Это всё к тому, что надо знать разные тонкости, а так же иметь банальный IT кругозор чтобы знать, что спросить у гугла. В этом смысле задачка отличная.
Более того, с учётом реализации any_of, предложенной выше, она ещё и медленнее. Она перебирает все элементы, а не останавливается на первом удовлетворяющем, как цикл. Так что зависит от реальных данных, а на общий случай нужны как минимум бенчмарки.
Спасибо за статью, тема ranges не частый гость на хабре.
Не могли бы вы уточнить, что вам не нравится в коде, который упомянут в заключении? Да, ваш вариант короче, но при чём здесь эффективность? Алгоритмическая сложность одинаковая, особого оверхеда я тоже не вижу. В чём проблема?
Почему-то представил себе антиутопию, в которой люди борются за право оставаться людьми, введя специальные курсы в школах для прохождения капчи. Что-то основанное на задачах, которые мозг решает лучше процессора, но уже настолько сложное, что нетренированный человек не в состоянии это сделать. И постоянная гонка со слабым ИИ за эффективность. Учись или сольёшься с безликой массой людей и роботов.
Есть неплохое выступление Мейерса, в котором он разбирает странности C++ www.youtube.com/watch?v=KAWA1DuvCnQ
Так вот он акцентирует внимание на том, что всё это не плохо, это не идиоты в комитете, у всего есть нормальное объяснение, почему именно так, а не иначе. Да, C++ сложен, но и задача, которую он перед собой ставит не тривиальна. Сложная задача не решается просто. Совсем отдельный вопрос, актуальна ли задача и нельзя ли было взять нишу поуже.
Раз уж тут собрались знатоки clang-format, то посмею задать вопрос не совсем в тему статьи. Есть ли какой-нибудь способ объяснить ему несколько допустимых вариантов форматирования? Самый простой пример — разрешить делать однострочные функции, но если в коде уже есть перенос, то не трогать его? Это вкусовщина, но уже привык делать однострочными только конструкции вида return smth; и никогда не заталкивать никакую логику. Кстати, встречал и полностью обратное — однострочные if разрешены, но return всегда должен быть перенесён, чтобы проще было искать точки выхода. Ну или есть ли другие форматилки, которые оставляют свободу выбора?
Простите, что встреваю со своими тараканами, Julia действительно хорошо подходит для задач обработки данных и статистики, но не могу не порекомендовать язык D.
Вы получите: производительность C, можно не возиться с аллокациями (а можно и возиться, если это оправдано), хорошая библиотека алгоритмов (std.algorithm), mir — одна из самых быстрых либ для матриц, алгоритмов и линейной алгебры, во многом вдохновлена numpy, и много-много всего.
Круто! Я бы не стал делать макрос, а оставил бы вариант *in*:
if (auto res = "true" *in* some_map)
Для этого придётся сделать глобальную переменную in, зато она уже нормально включается в namespace. Понятно, что сама она состояние хранить не сможет, нужно на первом умножении создавать временное значение и хранить ключ там.
У видео есть одно «неоспоримое» преимущество — его легче и быстрее записывать чем печатный текст.
Спорное утверждение. Экспромтом может и быстрее, но что-то проработанное сначала надо написать, а потом уже записывать на видео. По крайней мере качественный контент на ютубе явно не экспромт, а хорошо подготовленное выступление. А уж с монтажом и свистелками это ещё дольше.
Мда, а где хоть какие-то доказательства того что называется мифом или его опровержение? Выше уже отметили, что человек может неверно оценивать свою предрасположенность. Кроме того утверждается, что люди называют тот способ, который им «нравится». Но ведь даже при отсутствии разницы в тестах есть разница в мотивации. Мотивация исследуемых неизвестна, а в реальной школе это основная проблема. Дети способны запоминать гораздо больше, чем дают в школах, но «не хотят».
А потом можно будет и нормальные захоронения устроить, как сейчас на Земле. Тем более, что всё короткоживущее распадётся и фонить будет уже не так сильно.
Что на Луне, что на Марсе очень холодно, так что хотя бы с охлаждением нагревающихся отходов проблем не будет.
Совершенно неверно. Там как бы нет атмосферы (у Марса очень разреженная), тепло отводить некуда. Грунт — очень плохой проводник, сверху вакуум, так что греться будет.
При этом я не понимаю проблемы. Отвезите подальше, да складируйте. В ближайшие сотни лет Марс не будет заселён хоть сколько-то плотно, чтобы такие склады представляли угрозу.
А для этого нужны профессиональные программисты в штате. У совсем больших лабораторий и объединений есть профессиональные программисты. Тот же CERN публикует очень качественные библиотеки. С моей колокольни выбор выглядит так:
Нужно перемолоть кучу данных с максимальной скоростью? — C, C++, D.
Нужно посчитать статистику и работать с табличными данными? — R, Julia.
Нужна символьная арифметика с выводами — Matlab.
Исследуете теорию языков программирования — Haskel.
Не хочется запариваться со всем этим — Python. Если вдруг не хватит производительности зовём суровых сишников, они вынесут нагруженные функции в натив. Многие базовые уже вынесли, поэтому проблемы скорости возникают всё реже и реже.
Выше уже написали про неумение пользоваться плюсовым дебагером и не буду повторяться. Главное делать правильный вывод из этой статьи. Многие комментаторы восприняли тезис «С++ это очень плохо, питон хорошо», а на самом деле выводом должно быть: «Порог вхождения в программирование на питоне намного ниже, поэтому для непрофессионального программиста он лучше, чем С++». С++, как и Delphi, является отличным языком в руках того, кто очень хорошо его знает и умеет пользоваться инструментарием. Плюсы карают тех, кто подходит к ним как дилетант. Питон поощряет дилетантов, но платить за это приходится скоростью и областью применения.
И просто от себя советую автору и всем учёным посмотреть в сторону D. Он быстр, как С++, но гораздо добрее к новичкам. Слышал много положительных отзывов от переехавших на D c питона.
Тогда была проблема найти информацию. Сейчас есть проблема не проще — отфильтровать информацию. Сложно начинать, когда тебе со всех сторон предлагают совершенно разные пути и никто не может объяснить, чем они отличаются. Я начинал программировать на спектруме (и это в 2000 году!) с одной книгой в руках и отлично вас понимаю. Но ещё я учусь программировать сейчас и считаю проблему поиска качественной информации не менее важной. Я находил фактические ошибки в самой рекомендуемой книге по изучению python, я вижу полнейшее безумие советов в каналах по JS и не вижу тенденций к улучшению. Неверные знания хуже их отсутствия. Поэтому наставник нужен как никогда.
++++++++++[>++++++++++<-]>[->+>[-]>[-]++++++++++<<[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>[<+>-]>[-]>[<+<+>>-]+<[>-<[-]]>[>-<<<++++++++++>>-]<<[>+>+<<-]>>>+<[>[>+>+<<-]>[<+>-]<<-]>[-]>>[>>+>+<<<-]>>>[<<<+>>>-]<<+>[<->[>++++++++++<[->-[>+>>]>[+[-<+>]>+>>]<<<<<]>[-]++++++++[<++++++>-]>[<<+>>-]>[<<+>>-]<<]>]<[->>++++++++[<++++++>-]]<[.[-]<]<[-]<<<<---------->+<[>-<[-]+++++++++.[-]]>[[-]++++++++++.[-]]<<<<]
P.S. Ужимать код не пытался, главное, что вообще работает.
Это всё к тому, что надо знать разные тонкости, а так же иметь банальный IT кругозор чтобы знать, что спросить у гугла. В этом смысле задачка отличная.
Не могли бы вы уточнить, что вам не нравится в коде, который упомянут в заключении? Да, ваш вариант короче, но при чём здесь эффективность? Алгоритмическая сложность одинаковая, особого оверхеда я тоже не вижу. В чём проблема?
Так вот он акцентирует внимание на том, что всё это не плохо, это не идиоты в комитете, у всего есть нормальное объяснение, почему именно так, а не иначе. Да, C++ сложен, но и задача, которую он перед собой ставит не тривиальна. Сложная задача не решается просто. Совсем отдельный вопрос, актуальна ли задача и нельзя ли было взять нишу поуже.
Вы получите: производительность C, можно не возиться с аллокациями (а можно и возиться, если это оправдано), хорошая библиотека алгоритмов (std.algorithm), mir — одна из самых быстрых либ для матриц, алгоритмов и линейной алгебры, во многом вдохновлена numpy, и много-много всего.
Для этого придётся сделать глобальную переменную in, зато она уже нормально включается в namespace. Понятно, что сама она состояние хранить не сможет, нужно на первом умножении создавать временное значение и хранить ключ там.
geektimes.com/post/301133/#comment_10804917
Спорное утверждение. Экспромтом может и быстрее, но что-то проработанное сначала надо написать, а потом уже записывать на видео. По крайней мере качественный контент на ютубе явно не экспромт, а хорошо подготовленное выступление. А уж с монтажом и свистелками это ещё дольше.
Совершенно неверно. Там как бы нет атмосферы (у Марса очень разреженная), тепло отводить некуда. Грунт — очень плохой проводник, сверху вакуум, так что греться будет.
При этом я не понимаю проблемы. Отвезите подальше, да складируйте. В ближайшие сотни лет Марс не будет заселён хоть сколько-то плотно, чтобы такие склады представляли угрозу.
А для этого нужны профессиональные программисты в штате. У совсем больших лабораторий и объединений есть профессиональные программисты. Тот же CERN публикует очень качественные библиотеки. С моей колокольни выбор выглядит так:
Нужно перемолоть кучу данных с максимальной скоростью? — C, C++, D.
Нужно посчитать статистику и работать с табличными данными? — R, Julia.
Нужна символьная арифметика с выводами — Matlab.
Исследуете теорию языков программирования — Haskel.
Не хочется запариваться со всем этим — Python. Если вдруг не хватит производительности зовём суровых сишников, они вынесут нагруженные функции в натив. Многие базовые уже вынесли, поэтому проблемы скорости возникают всё реже и реже.
И просто от себя советую автору и всем учёным посмотреть в сторону D. Он быстр, как С++, но гораздо добрее к новичкам. Слышал много положительных отзывов от переехавших на D c питона.