Программирование


Ответить в тред Ответить в тред

<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
104 3 37

ООП это способ легализации использования глобальных 04/04/19 Чтв 17:58:17 13750161
1544207490371.jpg (137Кб, 792x844)
792x844
ООП это способ легализации использования глобальных переменных.
Ты просто начинаешь называть их полями класса, а функции которые дёргают эту глобальную переменную методами. Суть особо не меняется но теперь тебя не обоссут на код ревью твои хипстерки-согалерники. Невозможность разобрать кто из методов, когда и каким образом меняет эту глобальную переменную остаётся. Особенно это заметно если класс большой и методов куча, при этом они вызывают друг друга.
Аноним 04/04/19 Чтв 18:11:01 13750182
>>1375016 (OP)
Глобальность глобальности рознь.
Аноним 04/04/19 Чтв 21:08:18 13751083
>>1375016 (OP)
Верно, поэтому классы должны быть маленькими и использоваться только для реализации низкоуровневых конструкций языка, если у них есть мутабельные поля.
Аноним 04/04/19 Чтв 21:41:21 13751304
Ох лол, ты просто не понимаешь что такое ООП. Java и C++ знантно подпортили репутацию и исказили смысл всего.


Ты мыслишь в терминах классов, но ООП это вообще не про классы.
Аноним 04/04/19 Чтв 21:53:43 13751385
>>1375016 (OP)
Несомненно, если вся твоя программа представляет собой один модуль класс.
Аноним 05/04/19 Птн 02:17:21 13752376
>>1375016 (OP)
Объекты - это просто первоклассные модули. Если ты уже программировал на модульном ЯП, ОО просто сделает твои модули первоклассными, и это неплохо, и должно быть понатно. Если тебе даже от такой базовой парадигмы башню рвёт, то сложно представить, что будет когда ты увидишь монады.
Аноним 05/04/19 Птн 02:51:28 13752447
Класс это же просто монада. Или, если говорить по-простому - массив.
Аноним 05/04/19 Птн 04:13:22 13752498
>>1375244
Массив - это мондада. Учи мемы, чтобы не быть баттхертом.
Аноним 05/04/19 Птн 11:40:20 13753429
При чем тут манадки? Классы - это моноиды в категории экзофункторов анафорических лямбд.
Аноним 06/04/19 Суб 13:26:01 137593110
>>1375342
Адепт школы Цумбродского закукарекал. Ваше время прошло ещё в 2009, уймитесь наконец.
Аноним 06/04/19 Суб 16:10:43 137600111
монады ето динамический массив содержащией еллементы любых типов
такое есть во всех быдлокодерских языках
а в лиспах ничего кроме монад нету
вот они на них и молятся, пишут книги, дрочат, сочиняют сказки и легенды
Аноним 14/04/19 Вск 12:26:25 138072712
>>1375016 (OP)
Вот это ты очень батхертную тему затронул.
Я никогда с такой проблемой не сталкивался всерьез до тех пор пока не попал в на свое текущее место работы - зазеркалье, где собрались только быдлокодеры и где белое это черное.
Я их спрашиваю, нахуя вы используете в приватных методах инстанс-перменные. А они смотрят и недоумевают, мол ты, че, а нахуя они еще нужны, это же ООП.

Мой посыл такой - инстанс-перменные можно использовать только в публичных методах, потому что они по определению и есть единственный интерфейс к ним извне. А любой приватный метод это просто утилитарная функция, которая ничего не знает о состоянии.
И тогда все хорошо - есть только несколько понятных точек (сетеров, в общем смысле) меняющих состояние. И чтобы быстро увидеть эти точки достаточно беглого ctrl+F.
Аноним 14/04/19 Вск 12:29:10 138073013
>>1375016 (OP)
Алсо, если кинешь пример такого кода, буду благодарен. Мне нужно для собеседования работодателей реверс-собеседования.
Аноним 14/04/19 Вск 18:32:25 138091714
>>1380727
>инстанс-перменные можно использовать только в публичных методах
Извини, но ты долбоеб, и твои коллеги правильно недоумевают. А еще у тебя неадекватная оценка окружающей действительности, раз ты их считаешь быдлокодерами, а белое - черным.
Аноним 14/04/19 Вск 18:47:00 138092815
>>1375016 (OP)
>Невозможность разобрать кто из методов, когда и каким образом меняет эту глобальную переменную остаётся.
Один клик - идеешечка выдает полный список. В особо тяжелом случае ставишь брейкпоинт на изменение - и смотришь. Ну и где ваш господь теперь?
Аноним 14/04/19 Вск 18:51:53 138093716
>>1380928
Я собственно к чему это все веду, сложилось у меня такое подозрение что большинство "бест практисес" в индустрии это либо просто откровенный неприкрытый долбоебизм вроде
>инстанс-перменные можно использовать только в публичных методах
либо нечто такое что ну вроде бы даже в какой то степени было актуально когда то, но вся эта "актуальность" уже по большому счету рассосалась.
Можно еще докинуть в копилку изъебства на которые только не идут лишь бы не перекомпилировать код. Хотя казалось бы еб твою мать - взял и перекомпилировал. Хотя я понимаю что это даже может быть болезненным на ебических размеров проектах и в говноязыках вроде плюсов или скалы, но ставить все это во главу и плясать архитектуру от этого - ну хуй знает, такое себе, как мне кажется.
Аноним 14/04/19 Вск 21:14:43 138107717
>>1375016 (OP)
А потом ещё обмазываются апликейшн контекстами и запихивают в них сингельтоны.
Аноним 14/04/19 Вск 21:49:29 138146818
Аноним 14/04/19 Вск 21:57:58 138148119
>>1380917
>>1380937
Извини, но ты высрал свое мнение без каких-либо аргументов, а потому идешь нахуй.
Аноним 14/04/19 Вск 22:22:28 138150420
>>1381481
Два человека.
Но в общем то этот тот кто выдвигает новую передовую методу должен ее обосновывать. Иначе уже получается шаманизм какой то - давайте попляшем вокруг костра, вот духов вызовем все заебись будет, ты чо сука не веруешь в силу духов, ай-ай-ай духи тебя покарают.
Аноним 14/04/19 Вск 22:25:53 138150921
>>1375108
если класс должен быть маленьким, то собственно говоря, нахуя он нам нужен? Если все намного проще можно имплементировать на обычных процедурах и замыканиях. Разницы то ведь никакой, маленькая процедура ничуть не хуже по читабильности, чем маленький класс.
Аноним 14/04/19 Вск 22:27:17 138151322
>>1381504
>ты чо сука не веруешь в силу духов звук твоего ломаемого ебла
Поправил этого бесполого ребенка.
Аноним 14/04/19 Вск 22:29:27 138151523
>>1381504
Какую методу? Что нельзя делать лапшу методов вокруг глобального стейта? Ну делайте. Можете еще глобальные переменные использовать, а то ведь тоже долбоебизм, с чего бы нельзя.
Аноним 15/04/19 Пнд 08:03:29 138165724
>>1381077
В одном проекте видел, как такой КОНТЕКСТ был оформлен не в виде синглтона, а в виде опционального аргумента каждого ебучего метода в каждом ебучем классе. Получался КОНТЕКСТ-странник
Аноним 15/04/19 Пнд 08:42:29 138166225
>>1381509
Не все языки поддерживают замыкания. А объекты - как раз аналог замыканий по функциональности.
У процедур/функций состояние может быть только глобальным статические переменные.
Аноним 15/04/19 Пнд 09:59:06 138167026
>>1375016 (OP)
>Особенно это заметно если класс большой и методов куча, при этом они вызывают друг друга.
Это не ООП, а обычное процедурное программирование. Использование классов это не ООП, т.к. класс это та же структура. ООП это программирование созданием иерархий классов, значит там классов много и нет никаких глобальных переменных.
Аноним 15/04/19 Пнд 10:40:38 138167727
>>1381662
>У п1роцедур/функций состояние может быть только глобальным статические переменные.
для мейнстрим языков в принципе верная мысль, но с дополнениями:
в паскаль семействе (дельфи) есть возможность вложенных функций и процедур
в крестах, шарпах и явке есть сейчас лямбды
а они забирают контекст с функции-хозяина еще
Аноним 15/04/19 Пнд 10:54:17 138168328
>>1381662
>А объекты - как раз аналог замыканий по функциональности.
это с натяжкой можно так сказать
типа "замыкание" потому что функции-члены класса используют контект который формируют члены-данные
такое себе на самом то деле
тру замыкания учитывают лексический контекст, принцип работы вообще другой
Аноним 15/04/19 Пнд 10:59:35 138168729
>>1381683
забавно, кстати, что эта аналогия лучше работает в обратную сторону: те позволяет в языках лисп-семейства, например, работать в ооп-стиле
Аноним 15/04/19 Пнд 11:42:20 138170330
>в крестах, шарпах и явке есть сейчас лямбды
За кресты и шарпы не скажу, но в джаве лямбды не тру замыкания:
https://ideone.com/SX9oQS

>>1381683
>тру замыкания учитывают лексический контекст, принцип работы вообще другой
Типичное использование замыканий (в том же SICP) - создание объектов, аналогичных объектам ООП, но с ручной диспетчеризацией. Но так-то да, замыкание - более общая и более мощная концепция.

Аноним 15/04/19 Пнд 18:57:02 138189531
>>1381481
>Извини, но ты высрал свое мнение без каких-либо аргументов
Как и ты - перечитай свой первый пост: "низзя, тому що я так сказал, все кто не согласен быдлокодеры и долбоебы))".

Алсо, ты двум разным анонам ответил.

Ты предлагаешь какую-то эзотерическую необщепринятую практику - ты и аргументируй по поводу преимуществ ее применения. Тебе просто указали на тот факт, что ты живешь в некоем манямирке, где Аллах тебе запрещает использовать инстанс-переменные в приватных методах. Что тут аргументировать? Я не выдвигаю никаких тезисов, я лишь описываю действительность.
Аноним 15/04/19 Пнд 18:58:07 138189732
>>1380937
>плясать архитектуру от этого
А это кто пляшет архитектуру от этого, просвети?
Аноним 15/04/19 Пнд 18:59:59 138189933
>>1381509
>можно имплементировать на обычных процедурах и замыканиях
Лол, ну да, давайте не будем использовать классы (какие долбоебы их в наш язык добавили?), а вместо них будем пихать замыкания. Ну это же качественно другой код получается, да?

insert-ту-притчу-про-дурака
Аноним 15/04/19 Пнд 19:04:05 138190134
>>1381662
>статические переменные.
Байтоеб в треде, все в longjmp!

>>1381670
>ООП это программирование созданием иерархий классов
>иерархий
>2019
>наследование

>>1381683
>это с натяжкой можно так сказать
Это не "можно так сказать", это так и есть по определению.

>>1381687
А также позволяет компилировать языки лисп-семейства в языки с классами, например. Алсо, в CL вообще-то есть CLOS, который самый объектно-ориентированный из всех объектно-ориентированных

Аноним 15/04/19 Пнд 19:05:03 138190235
>>1381899
если язык поддерживает полноценные замыкания, то ты сможешь на них запилить ооп, и даже метаклассы, как, собственно, в лисп и сделали - clos и mop, которые хоть и не входят в common lisp, но реализуются всеми основными реализациями языка
Аноним 15/04/19 Пнд 19:05:08 138190336
>>1381703
>замыкание - более общая и более мощная концепция.
Замыкания нужны исключительно для полной поддержки первоклассных функций. Замыкание вокруг мутабельной хуйни ненужны и антипаттерн.
Аноним 15/04/19 Пнд 19:06:53 138190437
>>1381902
Ты зачем-то слово в слово повторил мой пост, привет.

>если язык поддерживает полноценные замыкания
А если язык поддерживает полноценные объекты, то нутыпонел.

раз анон не доставляет, доставлю притчу сам: http://wiki.c2.com/?ClosuresAndObjectsAreEquivalent
Аноним 15/04/19 Пнд 19:07:12 138190538
>>1381902
в то же время и в процедурных языках можно сделать ооп, через структуры (записи) и указатели на функции (процедуры) и ручную реализацию vtable для обеспечения динамического полиморфизма
Аноним 15/04/19 Пнд 19:08:18 138190639
>>1381903
>Замыкание вокруг мутабельной хуйни
похуй
листы ни когда не были функциональным языком
похуй на мутабельность
пусть haskell долбоебы с ней возятся
Аноним 15/04/19 Пнд 19:10:14 138190740
>>1381906
>похуй на мутабельность
Ну от мелкобуквенного человека я другого и не ожидал. До свидания.
Аноним 15/04/19 Пнд 19:13:34 138190941
>>1381670
>ООП это программирование созданием иерархий классов

неа, даже в крестах сегодня это не так

динамический полиморфизм, требующий виртуальных функций и наследования везде где можно заменяется статическим полиморфизмом реализуемым через шаблоны

агрегирование предпочитается наследованию реализации

щас вообще библиотеки в крестах редко проектируются в виде гомоморфных иерархий классов, мода на это ушла уже в конце 90х
Аноним 15/04/19 Пнд 19:15:30 138191042
>>1381907
>До свидания.
бывай
все равно с фп-секстантами нам не по пути
мы за практический подход, за код который ложится на существующие аппаратные платформы, а не существует за горой розовых абстракций
Аноним 15/04/19 Пнд 19:48:29 138192543
>>1381903
>Замыкание вокруг мутабельной хуйни ненужны и антипаттерн.
Замыкание без мутабельной хуйни - по сути результат обычного каррирования. Нахуй одно подменять другим - не понятно.
Аноним 15/04/19 Пнд 20:21:18 138195044
>>1381683

Объект - это не замыкание. Объект — это каррирование.
Аноним 15/04/19 Пнд 20:25:47 138195245
>>1381910
Я как бы лиспер, ты просто какую-то хуйню несешь.
Аноним 15/04/19 Пнд 20:27:22 138195346
>>1381950
>Объект — это каррирование.
А монада - это динамический массив.

>>1381925
>Нахуй одно подменять другим - не понятно.
Эм, ну для осуществления карринга нужна поддержка замыканий в языке. Где ты тут видишь подмену?
Аноним 15/04/19 Пнд 20:57:52 138197047
>>1381952
>Я как бы лиспер
похуй, в интернете любой долбоеб считает себя охуенно умным
Аноним 15/04/19 Пнд 21:07:51 138197848
>>1381970
Действительно, кек.
Аноним 15/04/19 Пнд 21:15:44 138198349
лично я считаю себя долбоебом
так что у меня то в голове все хорошо, справедливо
это лисперы выебываются
срут в интернетах по углам
Аноним 15/04/19 Пнд 21:16:42 138198550
>>1381953
в крестах std::bind был в старом стандарте, никакими замыканиями и не пахло
шах и мат
Аноним 15/04/19 Пнд 21:19:01 138198751
Function objects and higher-order programming
Bind: boost::bind is a generalization of the standard functions std::bind1st and std::bind2nd. It supports arbitrary function objects, functions, function pointers, and member function pointers, and is able to bind any argument to a specific value or route input arguments into arbitrary positions.
Container Hash: An STL-compatible hash function object that can be extended to hash user defined types.
Function: Function object wrappers for deferred calls or callbacks.
Functional: The Boost.Function library contains a family of class templates that are function object wrappers.
Functional/Factory: Function object templates for dynamic and static object creation
Functional/Forward: Adapters to allow generic function objects to accept arbitrary arguments
Functional/Overloaded Function: Overload different functions into a single function object.
HOF: Higher-order functions for C++
Lambda: Define small unnamed function objects at the actual call site, and more.
Local Function: Program functions locally, within other functions, directly within the scope where they are needed.
Member Function: Generalized binders for function/object/pointers and member functions.
Phoenix: Define small unnamed function objects at the actual call site, and more.
Ref: A utility library for passing references to generic functions.
Result Of: Determines the type of a function call expression.
Signals (deprecated): Managed signals & slots callback implementation.
Signals2: Managed signals & slots callback implementation (thread-safe version 2).
Utility: Class noncopyable plus checked_delete(), checked_array_delete(), next(), prior() function templates, plus base-from-member idiom.

вот так вот
все это в старом стандарте работало
а в новом стандарте почти все из коробки идет, с самим языком и стандартной библиотекой
Аноним 15/04/19 Пнд 22:12:05 138202252
>>1380937
Пидоры почему на мои охуительные теории никто не обращает внимания?

>>1381897
>А это кто пляшет архитектуру от этого, просвети?
Ну вот у долбоеба дядюшки Боба
> Thus, when the Error enum changes, all those other classes need to be recompiled and redeployed.
Вся его бесполезная SOLID ссанина - на самом деле бесполезная ссанина.
Аноним 15/04/19 Пнд 22:17:30 138202653
ООП - это передача сообщений. Объект - это функция, принимающая два аргумента: тип сообщения и список его параметров. Список - это рекурсивная пара. Пара - это функция, принимающая функцию для получения первого или второго аргумента. Рекурсия - это комбинатор неподвижной точки. Пизда твоей мамки - это черная дыра.
Аноним 15/04/19 Пнд 22:27:14 138202954
ООП - это попытка придумать такие правила для макак, при которых они были бы вынуждены мыслить в терминах абстракций, чтобы хоть как-то совладать со сложностью больших программ. Попытка, разумеется, полностью провалившаяся - макаки мгновенно превратили ООП в каргокульт, бездумно лепя нагромождения из интерфейсов и классов. Попытка провалилась, конечно, не в последнюю очередь потому что даже для оригинальных ООП-идей (передача сообщений) макаки оказались слишком тупы и для них пришлось перевести эти идеи на единственно понятный им императивный язык, в котором объекты превратились в структуры с привязанными к ним функциями-"членами класса".
Аноним 15/04/19 Пнд 23:21:24 138204455
>>1381657
Ох лол, я так учился писать на спринге, аж заностальгировал.
Аноним 15/04/19 Пнд 23:37:18 138204856
>>1382029
>оригинальных ООП-идей (передача сообщений)
эта самая "передача сообщений" ведет к диспетчированию любого вызова метода объекта
как если бы в яве или крестах все функции-члены по умолчанию были бы сделаны виртуальными, например
на это не пойдет ни один создатель мейнстримового промышленного языка
понял? не? похуй на тебя
Аноним 15/04/19 Пнд 23:39:52 138204957
типа как в смоллтолке
ой, блядь, давайте как пошлем "сообщение" объетику какому нибудь
а объектик уже пороется у себя в потрохах и вызовет метод, а может и сказать - у-тю-тю а у меня нет такого метода, печаль
и все это вместо прямого перехода на код невиртуальной функции-члена в мейнстрим языках
Аноним 15/04/19 Пнд 23:40:53 138205058
про все это четверть века назад еще страуструп бухтел в "дизайне и эволюции с++", лол
нихуя это не прокатит для мейнстримового языка
Аноним 15/04/19 Пнд 23:52:17 138205359
>>1382048
>а объектик уже пороется у себя в потрохах и вызовет метод, а может и сказать - у-тю-тю а у меня нет такого метода, печаль
Раби, пифон, жс
Аноним 16/04/19 Втр 00:33:03 138208460
>>1375016 (OP)
Хуйня. Мутабельные поля зло и в самом запущенном случае заменяются билдером (в простых достаточно конструктора). И вообще не держи в одном классе данные и код, потом сам не заметишь как наступишь себе на ногу.
>>1375130
В c++ нормальный ООП, если реализовывать его на шаблонах.
>>1380937
Ноу-хау они такие. Но работают однако. К примеру, Раст - компилятор будет пиздить тебя гаечным ключём пока ты сам не станешь писать правильный код. Ты будешь материться почём зря, и но в самом конце поймёшь и оценишь всю красоту получившейся конструкции.
Аноним 16/04/19 Втр 00:34:59 138208561
>>1382048
>>1382049

Ну давай, расскажи мне, что выбор функции для обработки по типу сообщения в эпоху 8-ядерных домашних процессоров будет кого-то ебать. Хэш-таблица (тем более в нашем случае она будет идеальной и небольшой) это же пиздец как медленно, да?
Аноним 16/04/19 Втр 00:37:39 138208762
>>1382085
>Хэш-таблица (тем более в нашем случае она будет идеальной и небольшой) это же пиздец как медленно,
Это пиздец как медленно и в динамических языках реализуют JIT.
Аноним 16/04/19 Втр 00:40:08 138208863
Тем более, каргокультисты ООП лепят интерфейс на интерфейса почем зря - в 99% ООП-кода у тебя и так считай диспетчеризация на каждый вызов.
Аноним 16/04/19 Втр 00:56:27 138209264
>>1381670
Иерархии классов не имеют отношения к ООП. В няшной сишке нет никакого наследования, тем не менее, ядро Линуса написано в ООП стиле. Насследование в ООП нужно в первую очередь для реализации транзитивности интерфейсов.
Аноним 16/04/19 Втр 00:57:47 138209365
>>1382048
>в яве или крестах все функции-члены по умолчанию были бы сделаны виртуальными
>на это не пойдет ни один создатель мейнстримового промышленного языка
Но в Java все методы виртуальны.
Аноним 16/04/19 Втр 01:06:38 138209766
>>1381953
>Эм, ну для осуществления карринга нужна поддержка замыканий в языке.
Я не об этом, а о том, что замыкания с иммутабельным окружением можно свести к частично примененным функциям, а замыкания с мутабельным - нельзя. Т.е. лишая окружение мутабельности ты теряешь довольно мощный инструмент инкапсуляции и абстракции, ради мифической referential transparency, обрекая себя на mtl pattern.
Аноним 16/04/19 Втр 01:09:56 138209967
В крестах кстати тоже можно былобы все функции сделать по умолчанию виртуальными, подразумевая что компилятор будет оптимизировать вызовы (что сейчас и делают нормальные компиляторы). Нихуябы плохого небыло. В большинстве случаев виртуальные вызовы заменились бы на прямые. Остались бы только случаи с анальным полиморфизмом - но там полюбому медленно все.
Аноним 16/04/19 Втр 01:25:00 138210268
>>1382099
В крестах классы без виртуальных функций не содержат в себе указатель на VMT. Во-первых, не платишь за то, что используешь, во-вторых структуры таким образом совместимы с си.
Аноним 16/04/19 Втр 06:08:36 138212969
>>1375016 (OP)
Лолк, если ты посмотришь на объявление объекта, то замтеишь схожесть с объявлением функции и вот тогда до тебя дойдет, что объекты это те же функции, только со своей областью видимости.

Ооп это не про домики и двери с окнами, ооп это про функции, их повторное использование, модификация и ограничение скоупа.
Аноним 16/04/19 Втр 07:27:25 138213570
1476190299303.png (25Кб, 641x692)
641x692
>ООП это..
>инкапсуляция
>класс большой и методов куча, при этом они вызывают друг друга
>инкапсуляция
>ИНКАПСУЛЯЦИЯ
>И Н К А П С У Л Я Ц И Я
Аноним 16/04/19 Втр 19:26:18 138238971
>>1381985
Ну так это и есть костыльная сбоку прикрученная реализация замыканий. А каррирование - это когда ты просто вызываешь бинарную функцию с одним аргументов, а тебе новую функцию выдает, без всяких бинд. Для этого нужны не костыли, а поддержка в языке, как ты понимаешь (и как я и написал).
Аноним 16/04/19 Втр 19:27:00 138239272
>>1382022
>Ну вот у долбоеба дядюшки Боба
Так он говорит о том, что интерфейс ломается, не?
Аноним 16/04/19 Втр 19:29:13 138239373
>>1382026
>Список - это рекурсивная пара. Пара - это функция, принимающая функцию для получения первого или второго аргумента.
В такой (расплывчатой) формулировке у тебя даже получились православные древообразные параллелябельные чад-"списки" вместо линейных верджин-списков.
Аноним 16/04/19 Втр 19:35:12 138239574
>>1382029
Тащем-то в целом двачую.

>>1382088
>в 99% ООП-кода у тебя и так считай диспетчеризация на каждый вызов.
Нет, джит съедает всю эту диспетчеризацию. Но другое дело, что он и в динамикодрисне без интерфейсов все прекрасно съедает.

>>1382097
>замыкания с иммутабельным окружением можно свести к частично примененным функциям
Или наоборот именно наоборот, я об этом и написал.

>а замыкания с мутабельным - нельзя
...поэтому они и ненужны! Ну, не поэтому, но все равно ненужны.

>ты теряешь довольно мощный инструмент инкапсуляции и абстракции
Нет, я теряю довольно мощный способ выстрелить себе в ногу, замкнувшись на какое-нибудь ленивое или лайфсайклнутое говно, и еще даю компилятору дополнитульную информацию о намерениях программиста (что всегда хорошо).
Аноним 16/04/19 Втр 19:36:01 138239675
>>1382129
>объекты это те же функции
А монады - это те же динамические массивы, двачую тебя анон!
Аноним 16/04/19 Втр 21:31:15 138246076
>>1382395
>Или наоборот
Нет, ибо карринг - частный случай замыканий, анкарринг не создаст замыкание с мутабельным окружением.

>Нет, я теряю довольно мощный способ выстрелить себе в ногу
Бесспорно. С большой силой приходит и большая ответственность.

>ленивое или лайфсайклнутое
Поясни, пожалуйста, чем грозит попадание этого в окружение замыкания?

>компилятору дополнитульную информацию
Указать дополнительную информацию можно, например в аннотациях типов, или прагмах.
Аноним 16/04/19 Втр 23:45:42 138254277
>>1382392
Бля, ты хоть на пол-шишечки вдупляеешь о чем я вообще толкую? Пиздос нахуя я вообще сижу в этом гадюшнике тут же одни умственно неполноценные. Что ты вообще вкладываешь в это
>интерфейс ломается
как будто у тебя есть дом у которого фундамент дал трещину и не остается больше ничего как все сносить под ноль и все выстраивать заново, так же остается только удалять программу и все набирать с нуля.
Аноним 17/04/19 Срд 00:05:41 138254578
>>1382460
>Нет, ибо карринг - частный случай замыканий
Так я об этом и говорю ж.

>чем грозит
Ты можешь нечаянно сборку мусора, например. Ну то есть у тебя вроде бы обычная функция, а на самом деле ее существование не дает начать сборку пройденных элементов какой-нибудь ленивой коллекции, и ты падаешь из-за проедания хипа. В целом, если у тебя там есть нечто, что выделяет некие ресурсы (и\или требует очистки этих ресурсов), то это очень плохо, замыкание у тебя по сути в стелс-бомбу превращается.

>Указать дополнительную информацию
Я к тому, что не нужно использовать конструкцию для того, для чего она не предназначена. Все захватываемые переменные должны быть как минимум явно указаны в определении замыкания, а лучше просто разделить: есть функции которые мы можем оптимизировать как угодно, а есть функции+стейт (объекты). Две разных концепции, два разных поведения (особенно с точки зрения афинности-линейности), две разных языковых конструкции. Так победим.
Аноним 17/04/19 Срд 00:06:28 138254679
>>1382542
Чо? Перечитай еще раз свою цитату дяди боба. Он пишет о ломании интерфейса.
Аноним 17/04/19 Срд 00:11:27 138254880
Аноним 17/04/19 Срд 01:02:01 138256281
>>1382545
>Ну то есть у тебя вроде бы обычная функция, а на самом деле ее существование не дает начать сборку пройденных элементов какой-нибудь ленивой коллекции, и ты падаешь из-за проедания хипа.
Как тут спасет иммутабельность? Ты утверждаешь, что у функции может быть некоторый мутабельный стейт, который приводит к таким последствиям. Но тогда можно создать иммутабельную функцию с таким же стейтом.
>В целом, если у тебя там есть нечто, что выделяет некие ресурсы (и\или требует очистки этих ресурсов), то это очень плохо, замыкание у тебя по сути в стелс-бомбу превращается.
Ленивость она в принципе мутабельна под капотом, потому что у тебя санк, в котором есть флаг, вычислены ленивые даные или нет. Даже если компилятор усиленно делает вид, что у тебя все ссылочно прозрачно, на деле он, гад такой, ставит флаги.
>есть функции которые мы можем оптимизировать как угодно, а есть функции+стейт (объекты).
Если ты будешь делить сущности по наличию или отсутствию стейта, ты скатишься в хаскельный маразм. Потому что есть куча оттенков серого, типа кэшей, трейсеров для отладки, флагов для ленивых вычислений и так далее.
Аноним 17/04/19 Срд 01:35:15 138257082
Проходил тут мимо, особо не вчитывался, но если мы имеем в языке полноценные замыкания плюс полноценная динамика получается такая оказия что мы тупо не можем удалить ни один глобально доступный объект т.к. он может потенциально быть доступен из замыкания и определить этого мы не можем ведь в нем может быть eval из строчечки. Как в JS это разрешили - я так понимаю что как обычно просто сделали вид что в домике и так не бывает.
Аноним 17/04/19 Срд 02:04:15 138257883
>>1382570
>мы тупо не можем удалить ни один глобально доступный объект
При чем тут замыкания и динамика. Возьми статический язык в котором
if (выполняется_миллион_лет() == true) {
print(глобальный_объект)
}
Чтобы понять, можно ли удалить глобальный объект, тебе нужно при компиляции вычислить функцию, которая выполняется миллион лет. Естественно ты этого сделать не можешь.
Сборщики мусора не трогают глобальные объекты, хочешь удалить такой, убери ссылку на него.
Аноним 17/04/19 Срд 02:36:42 138258284
>>1382578
>выполняется_миллион_лет
>хочешь удалить такой, убери ссылку на него
Лол, чего блядь несет. Реально что ли в тред заходят только имбецилы просраться.
Аноним 17/04/19 Срд 02:42:38 138258585
>>1382582
Не знаю, что ты за петушок, но имбецил вот тут >>1382570 , который простой факт того, что глобальные объекты сборщик мусора не может удалить сам, доводит до "если мы имеем в языке полноценные замыкания плюс полноценная динамика получается такая оказия что мы тупо не можем удалить ни один глобально доступный объект", занимаясь какой-то маняхуйней с eval'ами.
Я попытался дать имбецилу простой пример, но, видимо, имбецил слишком имбецилен.
Аноним 17/04/19 Срд 02:55:44 138258786
>>1382585
Бля, тупорылая маня полагает что тупорылая маня тут не она. Классика.
Аноним 17/04/19 Срд 11:03:15 138270987
Этот тред - реально какой-то загон для долбоёбов. Пожалуй, тоже примкну.

>>1382578
> Чтобы понять, можно ли удалить глобальный объект, тебе нужно при компиляции вычислить функцию, которая выполняется миллион лет.
Ты путаешь компайл-тайм с рантаймом.

> мы тупо не можем удалить ни один глобально доступный объект т.к. он может потенциально быть доступен из замыкания и определить этого мы не можем ведь в нем может быть eval
А ты не понимаешь, что такое лексическая область видимости, и почему вот этот пример https://ideone.com/if7rcw не работает.
Аноним 17/04/19 Срд 11:04:30 138271088
Кроме того, оба из вышеперечисленных долбоёбов не знают, что такое GC root, и имеют крайне приблизительное представление о том, как работает GC.
Аноним 17/04/19 Срд 11:33:29 138272389
>>1382709
>Ты путаешь компайл-тайм с рантаймом.
Лол, ну если в компайл-тайме вычислить что-то невозможно, то в рантайме точно будет можно.
>>1382710
Это вы с этим петухом два долбоеба, один просто тупой, другой тупой, но с претензией.
Кто ж знал, что простейший пример на проблему остановки вас так переклинит.
Аноним 17/04/19 Срд 12:55:36 138275090
>>1382723
>два долбоеба
Wrong.
Ты третий.
Аноним 17/04/19 Срд 14:36:30 138279891
jseval.png (2Кб, 440x42)
440x42
>>1382709
В этих ваших лиспах я не секу, но вот тебе js покушать принес. Что скажешь?
Особое внимание стоит обратить на переменную a. На самом деле js так не работает как я описываю, но если бы он так работал (вот это обороты да уже вижу как скудоумные тут начинают дристать поносом во все стороны) то объект созданный в этой точке не будет удален вообще никогда, до самого завершения программы, хотя в статическом языке было бы видно что больше на объект ссылок нигде нет и он отправился бы на помоечку. Я описал почему, но по какой то причине эти очевидные вещи для местных дебичей "слишком сложна", что поделать.
Аноним 17/04/19 Срд 14:51:09 138280792
>>1380937
> Я в командах больше одного человека не работал
Ага, оно оаметно
Аноним 17/04/19 Срд 15:02:41 138281593
когда уже не помнишь тему треда и потонул в дисскуссии, но продолжаешь героически сраться
Аноним 17/04/19 Срд 15:06:20 138281694
>>1382807
Хули сказать то хотел, что внезапно включается "мудрость толпы" и черное становится белым, а гравитация перестает притягивать.
Аноним 17/04/19 Срд 15:53:27 138287695
>>1382798
> В этих ваших лиспах я не секу, но вот тебе js покушать принес. Что скажешь?
Что ты занимаешься по жизни не тем, чем надлежит приличному человеку.
Аноним 17/04/19 Срд 16:13:07 138289996
>>1382548
>А это кто пляшет архитектуру от этого, просвети?
Дядя боб не пляшет, он пляшет от интерфейса. autism-intensifies
Аноним 17/04/19 Срд 16:16:07 138290697
>>1382562
>Но тогда можно создать иммутабельную функцию с таким же стейтом.
Простите, что? Не понял.

>Ленивость она в принципе мутабельна под капотом
Ну а я о чем?

>Если ты будешь делить сущности по наличию или отсутствию стейта, ты скатишься
Почему именно хаскельный? В любой нормальнй архитектуре хорошие чистые вещи и плохие ресурсные вещи разделяются.

>типа кэшей, трейсеров для отладки
Отладка - это отладка. Кэши должны быть явными.
Аноним 17/04/19 Срд 16:20:31 138291198
>>1382570
Эм, и при чем тут замыкания и динамика, если ты делаешь эвал из строчечки? Хуйню какую-то несешь, залазь обратно в ньюфаг-тред.

>>1382709
Двачую все последующие твои посты, няша.
Аноним 17/04/19 Срд 16:53:36 138294199
>>1382723
> Кто ж знал, что простейший пример на проблему остановки вас так переклинит.
Дурачок, ты понимаешь, что обсуждавшийся нами сборщик мусора как бы не в компайл-тайме работает, и на твою проблему останова ему насрать?

>>1382911
Спасибо, няша
Аноним 17/04/19 Срд 17:44:00 1382967100
>>1382750
Только в том плане что я зашел в этот петушиный тред.
>>1382941
>Дурачок, ты понимаешь, что обсуждавшийся нами сборщик мусора как бы не в компайл-тайме работает, и на твою проблему останова ему насрать?
Ой, блядь, не дурачок нашелся.
Этот даун утверждал следующее: "если мы имеем в языке полноценные замыкания плюс полноценная динамика получается такая оказия что мы тупо не можем удалить ни один глобально доступный объект". Как этот бред прокомментировать? Да очень просто: берем СТАТИЧЕСКИЙ случай БЕЗ замыканий, вообще 3 строчки, и показываем, что мы, внезапно, не можем удалить ни один глобально доступный объект даже в таком случае. Потому что доказать отсутствие ссылок чрезвычайно сложно даже в компайл-тайме, даже когда код константен и тебе известен.
И тут что один даун, который заигрался в свои замыкания и типизацию, не понимая более фундаментальных вещей, что ты, который за деревьями не увидел леса и полез на ideone писать что-то на схемке и доказывать мне, что, оказывается, у вас рантайм, а не компайл-тайм. Мол, если проблема остановки неразрешима в компайл-тайме, то в рантайме на нее насрать.
Аноним 17/04/19 Срд 19:54:09 1383035101
>>1382967
Тот-то анон ясное дело, что дурак и хуйню сказал, но у тебя просто пример какой-то не особо неудачный получился.

другой
Аноним 17/04/19 Срд 20:23:56 1383053102
>>1382899
Лол, ну и даунич

>>1382876
Этот иксперт прохудился, давайте следующего. Дебилка еще предъявляет мне за лексические биндинги, ты то сам знаешь вообще что это такое, чудик? Никакого другого и не бывает. Раньше пытались с лиспах замутить динамические, но порешили что получается слишком ебнуто даже для скобкошизиков. Почему в твоем скобкоговне eval работает через сраку - вот этого я не знаю, но мне вообще абсолютно похуй.

>>1382911
>Эм, и при чем тут замыкания и динамика, если ты делаешь эвал из строчечки?
>Хуйню какую-то несешь, залазь обратно в ньюфаг-тред.
Пиздос, ты сам то с каких хуев от туда пролез?

Бляя... надобно было уточнить что речь идет не только о прям вот глобальных-глобальных объектах (чтобы это вообще блядь значило), а вообще о любых доступных на момент создания замыкания; думал местные дауничи способны два плюс два сложить, но конечно зря понадеялся.
18/04/19 Чтв 22:19:03 1383731103
>>1383053
>Никакого другого и не бывает.
Съеби уже, не закапывай себя еще ниже.
Аноним 19/04/19 Птн 09:47:50 1383879104
>>1382798
А ты сделай не return eval("a + b")... x();, а return "a + b".... eval(x());
19/04/19 Птн 16:16:16 1384153105
>>1383731
Ебать у тебя целый день зудело так хотелось высраться но ничего больше родить не смог так что вот как то так только
>>1383879
Если написать хуйню получается хуйня, вот это новости. И вообще eval там для примера был.
Бля какой же тут загон тупого скота собрался.

Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов