home.social

#итераторы — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #итераторы, aggregated by home.social.

fetched live
  1. Ленивый LINQ: разбираем yield и ленивые вычисления по кирпичикам. Часть 2

    В первой части мы успешно вскрыли чёрный ящик LINQ: написали Where вручную, разобрались, как компилятор превращает yield return в конечные автоматы, и посмотрели на методы с частичной буферизацией. Но LINQ был бы не собой, если бы на этом всё закончилось. Во второй части переходим к «тяжёлой артиллерии» — OrderBy , GroupBy и Join . Эти методы вынуждены нарушить главный завет ленивых вычислений: они материализуют данные в памяти, прежде чем отдать хоть один элемент. Но как именно? После этой статьи LINQ перестанет быть чёрным ящиком: вы будете точно понимать, сколько памяти съест каждая цепочка методов и в каком порядке следует вызывать эту цепочку.

    habr.com/ru/articles/1075482/

    #net #linq #yield #c# #итераторы #компилятор #ленивые_вычисления #отложенное_выполнение #ienumerable #deffered_execution

  2. Ленивый LINQ: разбираем yield и ленивые вычисления по кирпичикам. Часть 2

    В первой части мы успешно вскрыли чёрный ящик LINQ: написали Where вручную, разобрались, как компилятор превращает yield return в конечные автоматы, и посмотрели на методы с частичной буферизацией. Но LINQ был бы не собой, если бы на этом всё закончилось. Во второй части переходим к «тяжёлой артиллерии» — OrderBy , GroupBy и Join . Эти методы вынуждены нарушить главный завет ленивых вычислений: они материализуют данные в памяти, прежде чем отдать хоть один элемент. Но как именно? После этой статьи LINQ перестанет быть чёрным ящиком: вы будете точно понимать, сколько памяти съест каждая цепочка методов и в каком порядке следует вызывать эту цепочку.

    habr.com/ru/articles/1062802/

    #net #linq #yield #c# #компилятор #итераторы #ленивые_вычисления #отложенное_выполнение #ienumerable #deffered_execution

  3. Ленивый LINQ: разбираем yield и ленивые вычисления по кирпичикам

    Каждый C#‑разработчик писал numbers.Where(x => x > 10).Select(x => x * 2) — и удивлялся, узнав, что эта строчка ничего не вычисляет. Цепочка спит, пока мы не начнём перебирать результат. За этим стоит конкретный механизм — отложенные вычисления, а в его основе лежит обычная фича языка: yield . Разбираем, как устроены ленивые методы LINQ изнутри — от ручной реализации Where без yield до того, во что этот yield разворачивается компилятором. А вы точно знаете, что происходит под капотом каждый раз, когда пишете .Where(...).Select(...) ? К статье приложен репозиторий с полной реализацией.

    habr.com/ru/articles/1061386/

    #C# #LINQ #yield #NET #отложенные_вычисления #deffered_execution #итераторы #IEnumerable #ленивые_вычисления #компилятор

  4. Зарядка для джависта

    Как-то раз на одном из программистских форумов я наткнулся на интересную задачку. Интересна она была тем, что требовалось рекурсивное решение на Java. Мне захотелось разобраться…

    habr.com/ru/articles/1040856/

    #коллекции #итераторы #рекурсия #функциональное_программирование

  5. Зарядка для джависта Как-то раз на одном из программистских форумов я наткнулся на интересную задачку. Инте...

    #коллекции #итераторы #рекурсия #функциональное #программирование

    Origin | Interest | Match
  6. Полный гайд по dunder-методам в Python (от новичка до профи)

    В Python всё — объект. Но как язык понимает, что делать при сложении двух классов через +, вызове len() или обращении к несуществующему атрибуту? Вся магия скрыта под капотом dunder-методов. Мы собрали полный гайд для разработчиков любого уровня: от правильной инициализации и перегрузки операторов до создания собственных дескрипторов, контекстных менеджеров и жесткой оптимизации памяти через slots . Никакой воды, только практика, живые примеры и то, что реально спрашивают на собеседованиях.

    habr.com/ru/articles/1033432/

    #ython #ООП #dunderметоды #магические_методы #метапрограммирование #дескрипторы #итераторы #генераторы #контекстные_менеджеры #Python_3

  7. itertools для тех, кто думал, что знает itertools

    Привет, Хабр! Модуль itertools мне известен многим вдоль и поперёк. Ну действительно, что там сложного? Пара функций вроде chain да product , и кажется, что ничего нового для себя уже не найти. Однако стоит копнуть глубже, и выясняется, что у itertools есть немало нюансов и даже новых возможностей, появившихся в свежих версиях. В этой статье рассмотрим многие функции itertools : от базовых до самых интересных. Понять силу итераторов

    habr.com/ru/companies/otus/art

    #python #программирование #itertools #итераторы

  8. Flat-контейнеры в C++

    Привет, Хабр! Еще в C++23 появились «плоские» ассоциативные контейнеры: std::flat_set , std::flat_map и их многоключевые аналоги. Проще говоря, это полные аналоги обычных std::set и std::map , но реализованные иначе – через упорядоченный последовательный контейнер (по умолчанию std::vector ). Зачем вообще понадобились эти штуки? Официальная причина – экономия памяти и выигрыш в производительности при чтении данных.

    habr.com/ru/companies/otus/art

    #C++ #c++23 #ассоциативные_контейнеры #производительность #оптимизация_памяти #бинарный_поиск #итераторы

  9. [Перевод] Ленивые вычисления в PHP: как генераторы и итераторы экономят память и ускоряют код

    Как обрабатывать миллионы строк в PHP и не убить память? Всё просто: генераторы и итераторы. Покажу, как ленивые вычисления экономят ресурсы, ускоряют код и упрощают работу с большими данными. С примерами, бенчмарками и разбором изнутри.

    habr.com/ru/articles/939814/

    #php #генераторы #итераторы #производительность #память #yield #iterator #ленивые_вычисления #оптимизация #большие_данные

  10. Что делает перечисления (enum) в Rust такими мощными?

    На примерах попробую показать, почему enum в Rust это несколько больше, чем обычно принято считать. Рассмотрю расширенное использование enum в типовых ситуациях. Сразу забегая вперед скажу, что в рамках статьи я не затрагиваю паттерны и мэтчинг. Первое, что приходит в голову, когда речь заходит об enum , — это идея: «А давайте заменим все константы на enum ». :) Желание логичное, давайте на него посмотрим...

    habr.com/ru/articles/899792/

    #rust #enum #num_enum #перечисления #итераторы #repr #strum #try_from

  11. Под чешуёй асинхронности: from yield to await

    В данной статье мы рассмотрим основы асинхронного программирования в python, фокусируясь на ключевых концепциях и их практическом применении. Мы начнем с изучения генераторов и итераторов — фундаментальных механизмов, лежащих в основе асинхронности python. Затем поговорим о потоках и процессах, чтобы понять, как они соотносятся с асинхронным подходом. Основная цель статьи — создание собственной упрощенной реализации asyncio, включая цикл событий, задачи и примитивы синхронизации. Это позволит глубже понять внутреннее устройство асинхронной разработки в python.

    habr.com/ru/articles/889490/

    #асинхронность #генераторы #итераторы #python #cpython #gaio #asyncio

  12. [Перевод] Почему итераторы в Go 1.23 многим так не нравятся

    ПРИМЕЧАНИЕ: данный пост является адаптацией следующего твита (однако абсолютно самодостаточен): x.com/TheGingerBill/status/180 TL;DR язык Go сейчас воспринимается как слишком “функциональный”, а не столь беззастенчиво императивный язык. Недавно мне попался в твиттере пост, демонстрирующий, как будут устроены итераторы в Go 1.23 (эта версия выйдет в августе 2024 года). У меня складывается впечатление, будто многим в сообществе это нововведение не нравится. Я решил высказаться по этому поводу с точки зрения проектировщика языков. Объединённый пул-реквест по данному предложению находится здесь: github.com/golang/go/issues/61 В нём подробно и глубоко объяснено, почему при проектировании языка были приняты именно одни решения, а не другие, поэтому рекомендую вам его прочитать, если язык Go вам знаком. Вот пример из исходного твита, который я тогда нашёл:

    habr.com/ru/articles/824018/

    #Go #Golang #функциональное_программирование #структуры_данных #итераторы

Share on Mastodon

Enter the server where you have an account.