Вход | Регистрация

  1  2
Информационные технологии ::

Метки:

Банда четырёх и прочие боги "настоящего программирования"

Я
   Mort
 
01.03.17 - 03:35
У нас один бог (ну или два), а там целая кодла. И среди них есть некие кто называются "банда четырех". Если ты не знаешь кто это такие, можешь на собеседование на кресты не соваться.

В ходе изучения C# в рамках использования в Unity плотно пообщался с гуру использования C++ в QT.

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

После поверхностного изучения и применения на практике тех же "синглтонов" и "наблюдателей", как у тупого 1сника возникло смутное ощущение, что паттерны проектирования это просто средство в плохо проектированной среде не потерять концы. Может это конечно и обусловлено тем, что сложность всей программы в отличие от 1с взлетает  шопц с каждой строчкой, но привкус ненатуральности остается. Вы как считаете?
 
  AdBlock убивает бесплатный контент
   Вафель
 
101 - 01.03.17 - 12:47
(99) слово "ленивый" тебе ни о чем не говорит?
   Вафель
 
102 - 01.03.17 - 12:47
те каждый элемент коллекции появляется тоько тогда когда потребуется
   Garykom
 
103 - 01.03.17 - 12:51
(102) Термин "ленивый" обычно относится к загрузке данных а не к вычислению.
Но да может и так, но тут имхо не ленивое а кормление завтраками, когда:
- у тя уже готово?
- да доделываю уже! (на самом деле даже не начинал)
   Вафель
 
104 - 01.03.17 - 12:54
(103) чем чтение кардинально отличается от вычисления?
   Волшебник
 
Модератор
105 - 01.03.17 - 12:56
Что вы тут курите? Отсыпьте
   Провинциальный 1сник
 
106 - 01.03.17 - 13:01
(62) Используй вместо выборки выгрузку - и паттерн не сломается
   Naf2017
 
107 - 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(); //вот теперь есть!
   Garykom
 
108 - 01.03.17 - 13:01
(104) При "ленивом чтении" коллекция уже есть тока в другом месте, при "ленивом вычислении" где коллекция?
   Naf2017
 
109 - 01.03.17 - 13:02
(106) выгрузка не "ленива" и жрет память
   organizm
 
110 - 01.03.17 - 13:38
(105) не мешай мальчик
 
 
   Mort
 
111 - 01.03.17 - 13:46
(103) Как раз в этом и прикол, что можно не возвращать всю коллекцию а только следующий элемент. Т.е. например, можно реализовать бесконечную выборку чисел фибоначчи, а когда остановиться клиент решает.
   Живой Ископаемый
112 - 01.03.17 - 13:58
2(111) ok, а теперь давайте подумаем. Имея какое либо число фибоначчи, мы сможем получить следующее?
Если да, то зачем обязательно делать именно так?
У нас есть функция, которая получает следующее число, относительно текущего. у нас есть коллекция, которая наполнена всеми числами до текущего.
Мы инициируем получение следующего, добавляем в коллекцию, опрашиваем пользователя на предмет останова. Если не получаем сигнала, получаем следующее и т.п.
Почему обязательно йилды? В чем абстракци, переиспользование или другие выгоды?
   orefkov
 
113 - 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С почему-то не любят, да...
   Naf2017
 
115 - 01.03.17 - 14:19
(112) вы коллекцию храните, а это затратно
к тому же при ленивом вычислении условия могут измениться и вы получите другую коллекцию
   Asmody
 
Ведущий
116 - 01.03.17 - 14:21
(113) Будьте добры, помедленнее, я записыуаю!
   Fish
 
117 - 01.03.17 - 14:23
(113) Хорошо сказал. :))
   Живой Ископаемый
118 - 01.03.17 - 14:23
2(115) Ладно, буй с ним, я пока все равно не постигаю зачем нужно уметь получать эффемрную коллекцию, которая как бы и не коллекция.


Динамический список, кстати - не такая коллекция?
   Asmody
 
Ведущий
119 - 01.03.17 - 14:24
сука, (113) в твит не влазит!
   Это_mike
 
120 - 01.03.17 - 14:26
(113) !!!!!!
   mrDru
 
121 - 01.03.17 - 14:39
(113) примерно так же думал, когда на Java слез. Там, на самом деле, под капотом до задницы всего понареализовано: i18n, ORM, cross-compiling, event bus, jobs (+cron) и тд и тп.
Прикол в том, что в любом достаточно крупном проекте (привет SAP) те же грабли - свой DSL и сотни слоев абстракций. Даже прикол такой есть: "когда у нас закончились названия для новых слоев абстракций, мы начали называть их по именам архитекторов".

Имхо с GOF нарочно знакомиться не надо, иначе руки так и тянутся "натянуть сову на глобус" и будешь потом клепать "фабрики синглтонов". Паттерны при трудоустройстве спрашивают только те, у кого ума на большее не хватает, а туда идти и не надо.
   mrDru
 
122 - 01.03.17 - 14:41
+ (121) :
Там, на самом деле, под капотом ... - читай "Там (в 1С)..."
   Лефмихалыч
 
123 - 01.03.17 - 14:44
(119) скриншот сделай
   Naf2017
 
124 - 01.03.17 - 14:50
(118) смотря что под коллекцией понимать
здесь мы вовсю говорили про IEnumerable и паттерн итератор, а в динамическом списке никаких итераторов нет )))
   jsmith82
 
125 - 01.03.17 - 15:03
Живые примеры для предметного обсуждения были?
   Господин ПЖ
 
126 - 01.03.17 - 15:09
(119) внесите в цитаты мисты
   Лефмихалыч
 
127 - 01.03.17 - 15:29
(126) готово
   uno-group
 
128 - 01.03.17 - 15:36
ХВАТИТ. А то будет как с сороконожкой.
Это все для менеджеров в программирование.
Когда из чела далекого от программирования делают программиста. Остальные научатся плавать сами и им не надо спасательные круги чтобы не утонуть.
   Garykom
 
129 - 01.03.17 - 16:15
Короче типовые шаблоны/паттерны это для тех, кто не умеет применять алгоритмы и придумывать/изобретать собственные решения.

Разделение идет еще в школе, когда одним скучно решать задачки а другие вызубрили как решать подобную задачу и все.
   lock19
 
130 - 01.03.17 - 16:40
(75) Представь несколько yield во вложенных циклах/условиях. Там нехилый конечный автомат рисовать придётся.
(94) А от генератора до корутины - рукой подать.
   Вафель
 
131 - 01.03.17 - 16:49
(129) Ты себя конечно к умным относишь?
   Asmody
 
Ведущий
132 - 01.03.17 - 17:08
(126) аж 2 раза!
   Garykom
 
133 - 01.03.17 - 17:11
(131) К быстрообучаемым, ум это немного другое, у меня просто высокая скорость освоения новой информации, как и забывания ненужной.
 
 
   Вафель
 
134 - 01.03.17 - 17:23
(133) я печатаю со скоростью 600 знаков в минуту. правда ерунда такая получается (с) анекдот
   Torquader
 
135 - 02.03.17 - 02:09
Чем вам yeild не сдался ?
Просто, если подходить к вопросу - есть некоторые данные Data и есть функция, которая выбирает следующий блок этих данных:
GetNext(Data,PrevValue) и всё.
Просто, некоторые программисты сразу не могут понять как это реализовать - вот им и придумали всякие упрощения.
   lock19
 
136 - 02.03.17 - 06:56
а
value = yield foo()
куда?
   Naf2017
 
137 - 02.03.17 - 08:52
(135) понятно, что и ООП реализуемо через процедурный стиль, но удобно же
(136)это что за набор букв?
   lock19
 
138 - 02.03.17 - 09:04
(137) Вполне себе валидный набор букв, если обсуждение не ограничивать ущербностями C#.
   Лефмихалыч
 
139 - 02.03.17 - 09:36
(132) ну, цитата атомная, она того стоит.
   oleg_km
 
141 - 02.03.17 - 09:47
(113) Только местами недоделанная. Например на форме обработчики изменения элемента срабатывают только если сделаны интерактивно, а если я поменял в коде, то сам должен их дернуть. тогда как например в фокспре when и valid дергались независимо каким способом изменяется элемент. И так во многих местах у 1С как-то недоделано. Зато географические схемы, встроенные скипе. А элементарно сделать захват объектов конкретной подсистемы - это не барское дело.
   spock
 
142 - 02.03.17 - 09:50
(136) Мы не поняли этого лаконичного примера. Можно раскрыть мысль что-куда?
   Oftan_Idy
 
143 - 02.03.17 - 09:55
(0) Пиши код, блеять!
   lock19
 
144 - 02.03.17 - 09:58
(142) Я же у вас не спрашиваю о тонкостях работы с async/await в C#? Когда состоялся сходняк банды ни диезов ни питонов в проекте не было.
   spock
 
145 - 02.03.17 - 10:05
(144) Нет, не спрашиваешь. Я и не собирался выступать наставником.
В (142) спрашивал я.
   lock19
 
146 - 02.03.17 - 10:12
   spock
 
147 - 02.03.17 - 10:15
(146) Ага-ага, спрошу еще раз.
В (136) приведен код с вопросом "куда?".
К чему этот код был приведен и что подразумевалось под "куда?"?
   lock19
 
148 - 02.03.17 - 10:20
(147) Генератор, который получает, а не только отдаёт, наверное больше чем просто генератор. То есть "куда/к чему отнести подобную конструкцию".
   spock
 
149 - 02.03.17 - 10:25
(148) Понятно. Тонкий намек на корутины?
Но этот код не тянет на полноценный намёк - нет декларации foo() и соответствующего декоратора.
 
  AdBlock убивает бесплатный контент
   lock19
 
150 - 02.03.17 - 10:33
(149) Для выраженной мысли достаточно примера с yield в rvalue.
   omgwtf
 
151 - 02.03.17 - 10:36
подскажите нюфагу, где прочитать "цитаты мисты"? Очень уж (113) понравилось, вдруг так много интересного еще есть
   Вафель
 
152 - 02.03.17 - 10:37
(151) https://yandex.ru/search/?text=цитаты cite%3Amista.ru
   Asmody
 
Ведущий
153 - 02.03.17 - 10:45
   lock19
 
154 - 02.03.17 - 12:16
(149) http://pastebin.com/HKfXerYb - Тут тебе декораторов хватает?

  1  2

Список тем форума
AdBlock убивает бесплатный контент   AdBlock убивает бесплатный контент
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
AdBlock убивает бесплатный контент