|   |   | 
| 
 | Банда четырёх и прочие боги "настоящего программирования" | ☑ | ||
|---|---|---|---|---|
| 0
    
        Mort 01.03.17✎ 03:35 | 
        У нас один бог (ну или два), а там целая кодла. И среди них есть некие кто называются "банда четырех". Если ты не знаешь кто это такие, можешь на собеседование на кресты не соваться.
 В ходе изучения C# в рамках использования в Unity плотно пообщался с гуру использования C++ в QT. На каждый вопрос - используй тот или иной паттерн, особо часто описанный в книге вышеупомянутых четырёх. Ну и пресловутый MVC, конечно. После поверхностного изучения и применения на практике тех же "синглтонов" и "наблюдателей", как у тупого 1сника возникло смутное ощущение, что паттерны проектирования это просто средство в плохо проектированной среде не потерять концы. Может это конечно и обусловлено тем, что сложность всей программы в отличие от 1с взлетает шопц с каждой строчкой, но привкус ненатуральности остается. Вы как считаете? | |||
| 1
    
        Mort 01.03.17✎ 03:37 | ||||
| 2
    
        Неверный Параметр И 01.03.17✎ 03:50 | 
        Старая песня про то, что 1Сник не сталкивается с типовыми проблемами проектирования большого мира, поэтому архитектурные шаблоны вызывают у него оторопь, а все непонятное объявляется искусственным и ненатуральным.
 Там не "программа сложная", а мироздание другое. Jedem das Seine, чо. | |||
| 3
    
        Курцвейл 01.03.17✎ 05:30 | 
        (0) Изучал ООП. Про этих четырех не слышал.     | |||
| 4
    
        Курцвейл 01.03.17✎ 05:31 | 
        Хорошие спецы рекомендуют вот это - https://www.ozon.ru/person/253847/?group=div_book     | |||
| 5
    
        Курцвейл 01.03.17✎ 05:31 | ||||
| 6
    
        Курцвейл 01.03.17✎ 05:32 | 
        Кажется понял - речь о фабрике, патернах и прочей шелупони ООП.     | |||
| 7
    
        ILM гуру 01.03.17✎ 06:22 | 
        Это скорее всего кирпичи или блоки. Решаешь задачу, взял нужные паттерны набросал в них свой код получил меньший г-код, чем получил бы без них.     | |||
| 8
    
        Dmitry1c 01.03.17✎ 07:03 | 
        (0) GOF - это не для 1Це.     | |||
| 9
    
        NorthWind 01.03.17✎ 07:15 | 
        (0) Интересовался еще году в 2000. Познавательно. При работе в C++Builder пользовался.     | |||
| 10
    
        Shur1cIT 01.03.17✎ 07:58 | 
        Мне понравилась http://www.ozon.ru/context/detail/id/31079082/ достаточно простым не напряжным языком объясняют, более глубоко для меня не надо     | |||
| 11
    
        Asmody 01.03.17✎ 08:04 | 
        Вечно одинесники ноют, что они "жизнью обиженные". На самом деле, многие паттерны уже реализованы в платформе.     | |||
| 12
    
        1Снеговик гуру 01.03.17✎ 08:13 | 
        Вы о чем вообще? Опять заставляете чувствовать натуральных 1с-ников себя тупыми)     | |||
| 13
    
        1dvd 01.03.17✎ 08:19 | 
        Не толерантно напоминать одинеснекам, что они тупые. Это оскорбляет их чувства     | |||
| 14
    
        lock19 01.03.17✎ 08:19 | 
        При вдумчивом проектировании следование устоявшимся паттернам выходит само собой и можно даже ничего не знать ни о каких бандах паттернов.     | |||
| 15
    
        Это_mike 01.03.17✎ 08:29 | 
        (13) (12) 
 Теорема Бородатой Женщины -Соболя: Все одинэсники тупые -- Теорема БЖС в редакции Рупора: Все одинэсники тупые, в особенности те, кто считает себя умными, ибо сим лишь подтверждают свою тупость, равно и те, кто знают что они тупые, ибо думают, что раз они знают, что они тупые - на самом деле они умные, тем самым подтверждая свою тупость ... -- Дополнение к теореме БЖС Октябрьского Молота: если одинэсник в качестве критерия тупости-ума начинает мерять свою... простите... зарплату, то он считается еще и неудачником... Вообще, любой одинэсник, который задается вопросом - тупой он или умный - тупой. -- Доказательство теоремы БЖС (© Абырвалг): 1Сник = РТФМ+Т1С РТФМ = ПНХ+[:|||:] Т1С=LOL 1Сник = LOL+ПНХ+[:|||:] LOL = тупой смех ПНХ = пошел ты, тупой [:|||:] = ну сколько можно, тупой 1Сник = тупой смех+ пошел ты, тупой+ну сколько можно, тупой 1Сник = тупой(смех+ ну сколько можно + пошел ты) | |||
| 16
    
        NorthWind 01.03.17✎ 08:30 | 
        (14) в принципе да, но знать хотя бы простейшие типа одиночки или фабрики классов вреда не будет     | |||
| 17
    
        Shur1cIT 01.03.17✎ 08:34 | 
        (14) "вдумчивое проектирование" - это процесс озобретания велосипеда, зачем это делать когда уже за тебя всё придумали,лучше силы и время непосредственно на разработку потратить плюс остальным разработчикам будет понятно когда скажешь им тут задействован например такой то патерн и не придеться ломать голову что тут вообще такое.     | |||
| 18
    
        lock19 01.03.17✎ 08:37 | 
        (16) Можно просто читать чужой хороший код - там всё будет.     | |||
| 19
    
        Shur1cIT 01.03.17✎ 08:44 | 
        (18) даже нужно, но после того как прочитаешь про используемый патерн, просто разглядывая код не понимая для чего  не поймешь зачем тут столько абстрактных классов в цепочке или интерфейсов почему они так переплетены.     | |||
| 20
    
        ILM гуру 01.03.17✎ 08:45 | 
        Ветка  какая-то совсем не толерантная выходит0)) Я не вижу разницы или плюсов в GOF и С++ по  сравнению с 1С. За что деньги платят, с тем и работаем... 
 Ну не буду я синглетон или фабрику на 1С делать, а печатную форму для УПП на С++. Каждый сверчок, знай свой шесток. | |||
| 21
    
        Лефмихалыч 01.03.17✎ 08:48 | 
        (0) Паттерны - это средство не изобретать заново решения типовых задач. У 1сников паттерны тоже есть, только ни гораздо более высокоуровневые и их ни кому не пришло в голову систематизировать     | |||
| 22
    
        lock19 01.03.17✎ 08:55 | 
        (19) Код разглядывают имея целью разобраться в его работе чтобы модифицировать, или позаимствовать. Естественно возникают вопросы почему сделано именно так.
 https://taskinoor.wordpress.com/2011/09/21/the-abuse-of-design-patterns-in-writing-a-hello-world-program/ | |||
| 23
    
        DmitrO 01.03.17✎ 09:02 | 
        (21) точна! :)
 Главный паттерн 1сников - никогда не изменяй типовую конфигурацию. Главный паттерн TRUE 1сников - никогда не используй типовую конфигурацию. | |||
| 24
    
        Лефмихалыч 01.03.17✎ 09:05 | 
        (22) по-русски это можно выразить просто: "с дури можно и хрен сломать".
 В программировании нельзя слепо применять какой-то один подход ко всему. Всегда нужно чувствовать грань между адекватным решением и оверинженирингом. Наличием такого чувства профессиональный программист от копрокодера и отличается (в том числе - не только этим). | |||
| 25
    
        lock19 01.03.17✎ 09:14 | 
        (24) "Питер Норвиг утверждает, что 16 из 23 шаблонов, описанных в книге «Банды Четверых», в динамически-типизируемых языках реализуются существенно проще, чем в С++, либо оказываются незаметны. Пол Грэхэм считает саму идею шаблонов проектирования — антипаттерном, сигналом о том, что система не обладает достаточным уровнем абстракции, и необходима её тщательная переработка. Нетрудно видеть, что само определение шаблона как «готового решения, но не прямого обращения к библиотеке» по сути означает отказ от повторного использования в пользу дублирования. Это, очевидно, может быть неизбежным для сложных систем при использовании языков, не поддерживающих комбинаторы и полиморфизм типов, и это в принципе может быть исключено в языках, обладающих свойством гомоиконничности (хотя и не обязательно эффективно), так как любой шаблон может быть реализован в виде исполнимого кода"     | |||
| 26
    
        kyvv 01.03.17✎ 09:15 | 
        Кто может посоветовать книгу по 1С, написанную для программистов, а не для гуманитариев     | |||
| 27
    
        lock19 01.03.17✎ 09:15 | 
        (26) Кем она написана имеет значение? )     | |||
| 28
    
        Лефмихалыч 01.03.17✎ 09:16 | 
        (25) я не понимаю, как общаться, если ты своих слов не говоришь     | |||
| 29
    
        kyvv 01.03.17✎ 09:17 | 
        (27)Нет.     | |||
| 30
    
        Лефмихалыч 01.03.17✎ 09:17 | 
        (26) профессиональная разработка, которая теперь уже в двух или трех томах. У гумманитариев от нее мозг выкипает     | |||
| 31
    
        kyvv 01.03.17✎ 09:19 | 
        (30)Терминология там не совсем программистская.     | |||
| 32
    
        lock19 01.03.17✎ 09:20 | 
        (28) До сих пор говорил своими словами.
 Паттерны применять можно, а умеренно и с умом - нужно. | |||
| 33
    
        FIXXXL 01.03.17✎ 09:21 | 
        (21) а БСП это паттерны?     | |||
| 34
    
        Лефмихалыч 01.03.17✎ 09:22 | 
        (31) я не понимаю, чего ты хочешь. Что там не так с терминологией?     | |||
| 37
    
        Лефмихалыч 01.03.17✎ 09:22 | 
        (32) а, ну, вот так лучше, теперь я тебя понимаю.     | |||
| 38
    
        Бледно Золотистый 01.03.17✎ 09:22 | 
        (26) Эта книга - СП.     | |||
| 39
    
        kyvv 01.03.17✎ 09:24 | 
        (33)Там могут применяться паттерны, ИМХО.     | |||
| 40
    
        Kyon8 01.03.17✎ 09:24 | 
        Вообще 1С-ники ежедневно используют паттерн от "банды четырёх" Iterator, когда пишут цикл
 Для Каждого ... Из ... Цикл А так очень низкоуровневая и малополезная тема в плане 1С. В плане литературы по программированию (не по паттернам) мне понравилась книга "Совершенный код" Макконела, многое к 1С применимо (и есть краткий обзор этих самых паттернов). | |||
| 41
    
        Лефмихалыч 01.03.17✎ 09:24 | 
        (33) нет. БСП - это фрэймворк     | |||
| 42
    
        Лефмихалыч 01.03.17✎ 09:25 | 
        (40) нет, это просто цикл. А вот те, кто написал объекты платформы, которые можно в этот цикл пихать, вот они использовали паттерн iterator     | |||
| 43
    
        Лефмихалыч 01.03.17✎ 09:26 | 
        (40) у 1Сников паттерны тоже есть, но они гораздо более высокоуровневые. Например "партионное списание" или "срез последних на каждую дату"     | |||
| 44
    
        Kyon8 01.03.17✎ 09:29 | 
        (42) << нет, это просто цикл
 Это обход коллекции с помощью итератора, т.е. использование реализованного в платворме паттерна. | |||
| 45
    
        Fish гуру 01.03.17✎ 09:32 | 
        (0) "И среди них есть некие кто называются "банда четырех"" - Кто эти люди, и зачем о них знать?     | |||
| 46
    
        kyvv 01.03.17✎ 09:36 | 
        (45) Для внедренцев-сопровожденцев о них знать вредно, будешь чувствовать себя сам знаешь кем.     | |||
| 47
    
        Naf2017 01.03.17✎ 09:37 | ||||
| 48
    
        trdm 01.03.17✎ 09:37 | 
        (12) > Опять заставляете чувствовать натуральных 1с-ников себя тупыми)
 Невежество - не порок. Неприятно становится, если мнишь себя всезнайкой, а тут облом. | |||
| 49
    
        Naf2017 01.03.17✎ 09:39 | ||||
| 50
    
        Fish гуру 01.03.17✎ 09:46 | 
        (46) Я не про содержание, а конкретно про авторов. Что они совершили такого, что заслужили звания "богов"? Придумали новый ЯП? Совершили некий прорыв? Или тупо очередной систематизировали (как и многие до них) некие стандартные приёмы, известные и без них?     | |||
| 51
    
        Лефмихалыч 01.03.17✎ 09:52 | 
        (50) да, они придумали язык проектирования и этим совершили некий прорыв. А вот паттерны - это как раз систематизация.
 Другое дело, что все эти концепции немножечко слишком сложны для обычных человеческих мозгов и прорыв получился сильно академический и в обычных полях до сих пор процветают велосипед и костыли. | |||
| 52
    
        PCcomCat 01.03.17✎ 09:57 | 
        (50) Эти "боги" просто в отличие от остальных еще умеют описать приемы буковками, о которых и другие знают, не не умеют рассказывать. Как-то так... ;)     | |||
| 53
    
        kyvv 01.03.17✎ 10:03 | 
        (34)Если бы все было так, то не было бы (40...44). Ну как пример: объекты конфигурации и объекты базы данных, их связь с классами, и есть ли в 1С классы как класс.     | |||
| 54
    
        Asmody 01.03.17✎ 10:09 | 
        (42) (44) Выборка данных из результата запроса — в чистом виде итератор.     | |||
| 55
    
        Живой Ископаемый 01.03.17✎ 10:11 | 
        MVC в 1С используется. Практически в каждой форме объекта.
 Наблюдатель - аналогично, либо в Подписках на события(на уровне платформы), либо через Обработчик ожидания для формы (есть во многих последних типовых). | |||
| 56
    
        Лефмихалыч 01.03.17✎ 10:16 | 
        (54) но это не применение шаблонов. Говорить, что это есть применение шаблонов, это все равно, что говорить, что шаблоны проектирования применяет пользователь, который тыкает кнопку, по которой вызывается цикл "для каждого". Это ж ересь.
 Тем более, что наличие поведения у объекта не говорит о том, что при его разработке были применены шаблоны - может автор изобрел велосипед сам, ни чего не зная про шаблоны проектирования. | |||
| 57
    
        kyvv 01.03.17✎ 10:25 | 
        (56) Автор может "изобретать" велосипед, на шаблон это не влияет, шаблоны описаны до него. А вот сам велосипед может следовать неким шаблонам или нет. Если нет, то тогда можно говорить об изобретении.     | |||
| 58
    
        Живой Ископаемый 01.03.17✎ 10:28 | 
        А, делегирование в 1С постоянно используется. Во внешних печатных формах, в формах подбора.     | |||
| 59
    
        kyvv 01.03.17✎ 10:29 | 
        (57)+ Тыканье в кнопку - тоже шаблон, но к паттернам банды не имеющий никакого отношения.(ИМХО)     | |||
| 60
    
        kyvv 01.03.17✎ 10:38 | 
        Кстати, среди авторов упоминавшегося выше двухтомника нет ни одного профессионального программиста. Подход 1С в обучении хорош для гуманитариев, для технарей можно было бы поглубже копнуть. Профессиональные программисты могут, конечно, и сами разобраться, но их среди одинесников не так уж и много.     | |||
| 61
    
        Лефмихалыч 01.03.17✎ 10:49 | 
        а здесь, я вижу, много кто не понимает разницу меду
 [применять шаблоны проектирования при разработке программ] и [использовать код, при разработке которого применялись шаблоны проектирования] | |||
| 62
    
        Naf2017 01.03.17✎ 10:50 | 
        (54) кстати об итераторе:
 "Особенностью полноценно реализованного итератора является то, что код, использующий итератор, может ничего не знать о типе итерируемого агрегата." в 1С это не совсем так с выборками, сравним: //итерируем по таблице значений // или табличной части // или массиву структур //нам все равно Для каждого Стр из Нечто Цикл А = Стр.Чтото; КонецЦикла; //какой-то другой интерфейс итератора выборок //но почему? Пока Выборка.Следующий() Цикл А = Выборка.Количество(); //что? итератор обладает интерфейсом коллекции? | |||
| 63
    
        Mort 01.03.17✎ 11:02 | 
        Кстати в БСП используется, например, "наблюдатель". Подсистемы "сами" подписываются на события, которые происходят при старте системы.     | |||
| 64
    
        Жан Пердежон 01.03.17✎ 11:03 | 
        (62) потому что это фрагмент ADO переведенный на русский.     | |||
| 65
    
        Лефмихалыч 01.03.17✎ 11:05 | 
        (63) 1С - предметно-ориентированная платформа разработки. Большинство шаблонов проектирования, о которых речь в топике, для нее не имеют смысла, т.к. у них уровень абстракции существенно ниже, чем у платформы. Но у нее есть свои. Ни кто просто не дал себе труда их систематизировать.     | |||
| 66
    
        Mort 01.03.17✎ 11:17 | 
        (65) Языки низкого уровня это такие языки, где нужно уделять много внимания вещам, никак не связанным с программами на этом языке. (не помню кто сказал) вот я и думаю шо все эти шаблоны как подпорки на более высокий уровень.
 (54) По поводу итераторов, недавеча ознакомился с адской конструкцией C# "iEnumerator - yield". Может для гуру всяких замыканий и т.д. выглядело просто, но для 1сника было сначала сложно въехать, таки с разрывами шоблонов. А потом уже привычно стало. Советую кто не в курсе для разминки мозга изучить. | |||
| 67
    
        Вафель 01.03.17✎ 11:19 | 
        (66) на js тоже есть     | |||
| 68
    
        Это_mike 01.03.17✎ 11:23 | 
        (66) "с разрывами паттернов"? :-)     | |||
| 69
    
        Живой Ископаемый 01.03.17✎ 11:48 | 
        iyeld это типа async/await?
 или росто async? реализуется в 1С через запуск на сервере фонового задания и ожидания его завершения через обработчик ожидания. В рамках одного клиента вроде бы не реализовать никак (разве что запускать паралельно другой клиент) | |||
| 70
    
        Вафель 01.03.17✎ 11:49 | 
        yield - это выход из процедуры, а птом продолжение с того же места откуда выщел. например с середины цикла     | |||
| 71
    
        Живой Ископаемый 01.03.17✎ 11:52 | 
        аа..     | |||
| 72
    
        Господин ПЖ 01.03.17✎ 11:53 | 
        (0) хавно все это...
 пусть софт покажут реальный где есть что-то за пределами синглетона и фабрики надутие щек | |||
| 73
    
        Живой Ископаемый 01.03.17✎ 11:54 | 
        2(70) но ведь это кал коней! Этож очень фигово читается и поддерживается... Как-то человечней нельзя разве реализовать?     | |||
| 74
    
        Вафель 01.03.17✎ 11:55 | 
        (73) наоборот.
 Например у тебя есть цикл обхода перестановок. Попробуй-ка с срередины в него зайди | |||
| 75
    
        Garykom гуру 01.03.17✎ 11:55 | 
        yield - это бесполезная хре которая ничего кроме немного уменьшения текста кода не делает полезного.
 Можно прекрасно обходится или объединив цикл по итератору с его вычислением внутри или передавая-возвращая нужные параметры для продолжения вычисления "следующего значения" | |||
| 76
    
        Вафель 01.03.17✎ 11:56 | 
        читабельность кода повышается многократно. нет этих лишних вычислений по ноужным параметрам чтобы попасть в нужную точку входа     | |||
| 77
    
        Garykom гуру 01.03.17✎ 11:56 | 
        (75)+ ибо какая разница передавать туда-сюда параметры или неявно сохранять их где то для продолжения цикла/процедуры     | |||
| 78
    
        Garykom гуру 01.03.17✎ 11:57 | 
        (76) дада, ну давай покажи класс с 2-3 "елдами"     | |||
| 79
    
        Вафель 01.03.17✎ 11:57 | 
        (77)ты и замыкания считаешь бесполезной хренью?     | |||
| 80
    
        Mort 01.03.17✎ 11:59 | 
        yield очень распростанён в геймдеве, где нужно какой-нибудь длительный процесс (например, подгрузка объектов сцены) распределить по кадрам так шоб незаметно было и без присяда до 0.1 fps.     | |||
| 81
    
        Garykom гуру 01.03.17✎ 12:00 | 
        (79) Замыкания как и делегаты это немного из другой оперы, на js все функции замыкания и это прикольно ))     | |||
| 82
    
        Garykom гуру 01.03.17✎ 12:01 | 
        (80) Эээ а разве для этого не используют классику с несколькими потоками и семафорами?
 Или это для тех кто многопоточное программирование не освоил да? | |||
| 83
    
        Живой Ископаемый 01.03.17✎ 12:05 | 
        2(82) Ну вот мне тоже кажется что просто асинхронного выполнения кода должно хватить. Но наверное есть какие-то задачи, где и такая штука тоже удобная. Но я манал ее в 1С использовать.
 Тем более что многопоточность. Ну вот как ее реализовать в рамках одного сеанса на 1С? В мобильном приложении можно? | |||
| 84
    
        Лефмихалыч 01.03.17✎ 12:06 | 
        (70) это просто очень дорогой и сложный способ реализации goto     | |||
| 85
    
        Вафель 01.03.17✎ 12:07 | 
        (84) как оно внутри работает не важно     | |||
| 86
    
        Господин ПЖ 01.03.17✎ 12:07 | 
        >Тем более что многопоточность. Ну вот как ее реализовать в рамках одного сеанса на 1С?
 фоновыми задачами | |||
| 87
    
        kyvv 01.03.17✎ 12:08 | 
        Как работает yield от программистов https://habrahabr.ru/post/132554/     | |||
| 88
    
        Живой Ископаемый 01.03.17✎ 12:08 | 
        2(86) фоновая задача она ж в рамках другого сеанса выполняется, на сервере. Или нет?     | |||
| 89
    
        Naf2017 01.03.17✎ 12:11 | 
        yield вообще-то для ленивого возврата коллекций     | |||
| 90
    
        Вафель 01.03.17✎ 12:15 | 
        (89) можешь пример написать?     | |||
| 91
    
        Naf2017 01.03.17✎ 12:21 | 
        (90)
 using System; using System.Collections.Generic; public class Test { public static void Main() { foreach (var x in Range(5,10)) { Console.WriteLine(x); } } public static IEnumerable<int> Range(int a, int b) { for(int i=a; i<=b; ++i) { yield return i; } } } | |||
| 92
    
        Вафель 01.03.17✎ 12:22 | 
        (91) а где тут возврат коллекции?     | |||
| 93
    
        Вафель 01.03.17✎ 12:23 | 
        аа, range же это коллекция     | |||
| 94
    
        Garykom гуру 01.03.17✎ 12:35 | 
        (93) генератор а не коллекция как бы     | |||
| 95
    
        Вафель 01.03.17✎ 12:38 | 
        (94) IEnumerable is the base interface for all non-generic collections
 (c) MSDN | |||
| 96
    
        Garykom гуру 01.03.17✎ 12:41 | ||||
| 97
    
        Garykom гуру 01.03.17✎ 12:42 | 
        "виртуальная коллекция" = генератор     | |||
| 98
    
        Вафель 01.03.17✎ 12:43 | 
        (97) Это и есть ленивый возврат коллекции     | |||
| 99
    
        Garykom гуру 01.03.17✎ 12:46 | 
        (98) Да млин, никакая "коллекция" никуда не возвращается!
 Фактически запомнили в памяти состояние стека выполнения процедуры и вернули промежуточное значение из генератора. Затем при следующем вызове (попытке прочитать следующее значение из "виртуальной коллекции" по итератору) вычисляется (по запомненному состоянию процедуры) еще одно значение и снова возвращается и т.д. | |||
| 100
    
        Garykom гуру 01.03.17✎ 12:47 | 
        100     | |||
| 101
    
        Вафель 01.03.17✎ 12:47 | 
        (99) слово "ленивый" тебе ни о чем не говорит?     | |||
| 102
    
        Вафель 01.03.17✎ 12:47 | 
        те каждый элемент коллекции появляется тоько тогда когда потребуется     | |||
| 103
    
        Garykom гуру 01.03.17✎ 12:51 | 
        (102) Термин "ленивый" обычно относится к загрузке данных а не к вычислению.
 Но да может и так, но тут имхо не ленивое а кормление завтраками, когда: - у тя уже готово? - да доделываю уже! (на самом деле даже не начинал) | |||
| 104
    
        Вафель 01.03.17✎ 12:54 | 
        (103) чем чтение кардинально отличается от вычисления?     | |||
| 105
    
        Волшебник модератор 01.03.17✎ 12:56 | 
        Что вы тут курите? Отсыпьте     | |||
| 106
    
        Провинциальный 1сник 01.03.17✎ 13:01 | 
        (62) Используй вместо выборки выгрузку - и паттерн не сломается     | |||
| 107
    
        Naf2017 01.03.17✎ 13:01 | 
        (103) "ленивое" это когда данные получают/создают не изначально готовыми, а по мере необходимости использования
 IEnumerable<int> range1 = Range(5,10); //никакой коллекции никто и не думал создавать IEnumerable<int> range2 = range1.Where(s=>a%2==0); //и снова нет коллекции Array c = range2.ToArray(); //вот теперь есть! | |||
| 108
    
        Garykom гуру 01.03.17✎ 13:01 | 
        (104) При "ленивом чтении" коллекция уже есть тока в другом месте, при "ленивом вычислении" где коллекция?     | |||
| 109
    
        Naf2017 01.03.17✎ 13:02 | 
        (106) выгрузка не "ленива" и жрет память     | |||
| 110
    
        organizm 01.03.17✎ 13:38 | 
        (105) не мешай мальчик     | |||
| 111
    
        Mort 01.03.17✎ 13:46 | 
        (103) Как раз в этом и прикол, что можно не возвращать всю коллекцию а только следующий элемент. Т.е. например, можно реализовать бесконечную выборку чисел фибоначчи, а когда остановиться клиент решает.     | |||
| 112
    
        Живой Ископаемый 01.03.17✎ 13:58 | 
        2(111) ok, а теперь давайте подумаем. Имея какое либо число фибоначчи, мы сможем получить следующее?
 Если да, то зачем обязательно делать именно так? У нас есть функция, которая получает следующее число, относительно текущего. у нас есть коллекция, которая наполнена всеми числами до текущего. Мы инициируем получение следующего, добавляем в коллекцию, опрашиваем пользователя на предмет останова. Если не получаем сигнала, получаем следующее и т.п. Почему обязательно йилды? В чем абстракци, переиспользование или другие выгоды? | |||
| 113
    
        orefkov 01.03.17✎ 14:13 | 
        "Если б Остап узнал, что он играет такие мудреные партии и сталкивается с такой испытанной защитой, он крайне бы удивился. Дело в том, что великий комбинатор играл в шахматы второй раз в жизни." (с) 12 Стульев
 На самом деле одинэсники вовсю используют самые лучшие паттерны, тщательно отобранные заботливыми методистами и разработчиками платформы 1С. Когда ты пишешь свой тупой код для простенькой управляемой формы, на самом деле ты юзаешь model-view-controller с double-way data binding в three-layered-data-app-engine, сдобренный high level object-relation-mapping на базе declarative metadata description, имеющей свой platform-independed query language, c declarative data-driven user interface, complete transparent serialization и domain-oriented programm language. В чём разработчики 1С отличаются от западных коллег, так это в пиаре. Те любят любой фигне дать громкое имя и носится с ней, как с писаной торбой. | |||
| 114
    
        Живой Ископаемый 01.03.17✎ 14:19 | 
        ну незападные тоже уже любят. Пример - Котлин и VIPER.
 1С почему-то не любят, да... | |||
| 115
    
        Naf2017 01.03.17✎ 14:19 | 
        (112) вы коллекцию храните, а это затратно
 к тому же при ленивом вычислении условия могут измениться и вы получите другую коллекцию | |||
| 116
    
        Asmody 01.03.17✎ 14:21 | 
        (113) Будьте добры, помедленнее, я записыуаю!     | |||
| 117
    
        Fish гуру 01.03.17✎ 14:23 | 
        (113) Хорошо сказал. :))     | |||
| 118
    
        Живой Ископаемый 01.03.17✎ 14:23 | 
        2(115) Ладно, буй с ним, я пока все равно не постигаю зачем нужно уметь получать эффемрную коллекцию, которая как бы и не коллекция.
 Динамический список, кстати - не такая коллекция? | |||
| 119
    
        Asmody 01.03.17✎ 14:24 | 
        сука, (113) в твит не влазит!     | |||
| 120
    
        Это_mike 01.03.17✎ 14:26 | 
        (113) !!!!!!     | |||
| 121
    
        mrDru 01.03.17✎ 14:39 | 
        (113) примерно так же думал, когда на Java слез. Там, на самом деле, под капотом до задницы всего понареализовано: i18n, ORM, cross-compiling, event bus, jobs (+cron) и тд и тп.
 Прикол в том, что в любом достаточно крупном проекте (привет SAP) те же грабли - свой DSL и сотни слоев абстракций. Даже прикол такой есть: "когда у нас закончились названия для новых слоев абстракций, мы начали называть их по именам архитекторов". Имхо с GOF нарочно знакомиться не надо, иначе руки так и тянутся "натянуть сову на глобус" и будешь потом клепать "фабрики синглтонов". Паттерны при трудоустройстве спрашивают только те, у кого ума на большее не хватает, а туда идти и не надо. | |||
| 122
    
        mrDru 01.03.17✎ 14:41 | 
        + (121) :
 Там, на самом деле, под капотом ... - читай "Там (в 1С)..." | |||
| 123
    
        Лефмихалыч 01.03.17✎ 14:44 | 
        (119) скриншот сделай     | |||
| 124
    
        Naf2017 01.03.17✎ 14:50 | 
        (118) смотря что под коллекцией понимать
 здесь мы вовсю говорили про IEnumerable и паттерн итератор, а в динамическом списке никаких итераторов нет ))) | |||
| 125
    
        jsmith82 01.03.17✎ 15:03 | 
        Живые примеры для предметного обсуждения были?     | |||
| 126
    
        Господин ПЖ 01.03.17✎ 15:09 | 
        (119) внесите в цитаты мисты     | |||
| 127
    
        Лефмихалыч 01.03.17✎ 15:29 | 
        (126) готово     | |||
| 128
    
        uno-group 01.03.17✎ 15:36 | 
        ХВАТИТ. А то будет как с сороконожкой.
 Это все для менеджеров в программирование. Когда из чела далекого от программирования делают программиста. Остальные научатся плавать сами и им не надо спасательные круги чтобы не утонуть. | |||
| 129
    
        Garykom гуру 01.03.17✎ 16:15 | 
        Короче типовые шаблоны/паттерны это для тех, кто не умеет применять алгоритмы и придумывать/изобретать собственные решения.
 Разделение идет еще в школе, когда одним скучно решать задачки а другие вызубрили как решать подобную задачу и все. | |||
| 130
    
        lock19 01.03.17✎ 16:40 | 
        (75) Представь несколько yield во вложенных циклах/условиях. Там нехилый конечный автомат рисовать придётся. 
 (94) А от генератора до корутины - рукой подать. | |||
| 131
    
        Вафель 01.03.17✎ 16:49 | 
        (129) Ты себя конечно к умным относишь?     | |||
| 132
    
        Asmody 01.03.17✎ 17:08 | 
        (126) аж 2 раза!     | |||
| 133
    
        Garykom гуру 01.03.17✎ 17:11 | 
        (131) К быстрообучаемым, ум это немного другое, у меня просто высокая скорость освоения новой информации, как и забывания ненужной.     | |||
| 134
    
        Вафель 01.03.17✎ 17:23 | 
        (133) я печатаю со скоростью 600 знаков в минуту. правда ерунда такая получается (с) анекдот     | |||
| 135
    
        Torquader 02.03.17✎ 02:09 | 
        Чем вам yeild не сдался ?
 Просто, если подходить к вопросу - есть некоторые данные Data и есть функция, которая выбирает следующий блок этих данных: GetNext(Data,PrevValue) и всё. Просто, некоторые программисты сразу не могут понять как это реализовать - вот им и придумали всякие упрощения. | |||
| 136
    
        lock19 02.03.17✎ 06:56 | 
        а 
 value = yield foo() куда? | |||
| 137
    
        Naf2017 02.03.17✎ 08:52 | 
        (135) понятно, что и ООП реализуемо через процедурный стиль, но удобно же
 (136)это что за набор букв? | |||
| 138
    
        lock19 02.03.17✎ 09:04 | 
        (137) Вполне себе валидный набор букв, если обсуждение не ограничивать ущербностями C#.     | |||
| 139
    
        Лефмихалыч 02.03.17✎ 09:36 | 
        (132) ну, цитата атомная, она того стоит.     | |||
| 141
    
        oleg_km 02.03.17✎ 09:47 | 
        (113) Только местами недоделанная. Например на форме обработчики изменения элемента срабатывают только если сделаны интерактивно, а если я поменял в коде, то сам должен их дернуть. тогда как например в фокспре when и valid дергались независимо каким способом изменяется элемент. И так во многих местах у 1С как-то недоделано. Зато географические схемы, встроенные скипе. А элементарно сделать захват объектов конкретной подсистемы - это не барское дело.     | |||
| 142
    
        spock 02.03.17✎ 09:50 | 
        (136) Мы не поняли этого лаконичного примера. Можно раскрыть мысль что-куда?     | |||
| 143
    
        Oftan_Idy 02.03.17✎ 09:55 | 
        (0) Пиши код, блеять!     | |||
| 144
    
        lock19 02.03.17✎ 09:58 | 
        (142) Я же у вас не спрашиваю о тонкостях работы с async/await в C#? Когда состоялся сходняк банды ни диезов ни питонов в проекте не было.     | |||
| 145
    
        spock 02.03.17✎ 10:05 | 
        (144) Нет, не спрашиваешь. Я и не собирался выступать наставником.
 В (142) спрашивал я. | |||
| 146
    
        lock19 02.03.17✎ 10:12 | ||||
| 147
    
        spock 02.03.17✎ 10:15 | 
        (146) Ага-ага, спрошу еще раз.
 В (136) приведен код с вопросом "куда?". К чему этот код был приведен и что подразумевалось под "куда?"? | |||
| 148
    
        lock19 02.03.17✎ 10:20 | 
        (147) Генератор, который получает, а не только отдаёт, наверное больше чем просто генератор. То есть "куда/к чему отнести подобную конструкцию".     | |||
| 149
    
        spock 02.03.17✎ 10:25 | 
        (148) Понятно. Тонкий намек на корутины?
 Но этот код не тянет на полноценный намёк - нет декларации foo() и соответствующего декоратора. | |||
| 150
    
        lock19 02.03.17✎ 10:33 | 
        (149) Для выраженной мысли достаточно примера с yield в rvalue.     | |||
| 151
    
        omgwtf 02.03.17✎ 10:36 | 
        подскажите нюфагу, где прочитать "цитаты мисты"? Очень уж (113) понравилось, вдруг так много интересного еще есть     | |||
| 152
    
        Вафель 02.03.17✎ 10:37 | 
        (151) https://yandex.ru/search/?text=цитаты cite%3Amista.ru     | |||
| 153
    
        Asmody 02.03.17✎ 10:45 | ||||
| 154
    
        lock19 02.03.17✎ 12:16 | 
        (149) http://pastebin.com/HKfXerYb - Тут тебе декораторов хватает?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |