J. A. R. Kotlien
А то в истории фарша когда читал, там примеры прикольные были, когда можно таблицы эксель типизировать.
x
а кому-то балк инсерт нужен которого нет
Mikhael
это значит использовать datareader и последующий маппинг?
Vladislav
Тормозят что-ли? Почему не юзать их?
пробелм больше чем профита
Vladislav
обычно
J. A. R. Kotlien
А есть полный список, где крутые рабочие фичи языка и те, которые желательно не использовать?
Vladislav
не использовать srtp там где можно вколотить интерфейс
J. A. R. Kotlien
Не пытаться сделать хаскель и уйти в чистое ФП
То есть писать классы, в которых инкапсулировать мощь ФП?
Ayrat
То есть писать классы, в которых инкапсулировать мощь ФП?
Комбинировать. Где-то модули с функциями, где-то классы с методами
Ayrat
Классы норм
Vladislav
пишу классы на асп нет коре
Ayrat
Нет ничего плохого в ооп. Плохое получается когда им злоупотребляют
Vladislav
Ayrat
Злоупотребление ФП тоже нездоровая тема
Vladislav
Ayrat
Приходишь такой, а там - аппликативные функторы бимонадами погоняют. Так и хочется леща им дать, чтобы не писали больше свои бимонады
Igor
Комбинировать. Где-то модули с функциями, где-то классы с методами
Где нужны классы с методами? (кроме интеропа)
Ayrat
Где нужны классы с методами? (кроме интеропа)
Где ты хочешь удобный доступ методов к стейту
Romɑn
Тормозят что-ли? Почему не юзать их?
юзать, но аккуратно. Я язал для json'ов по rabbit гоняемых
Doge
Просто есть места и платформы, где такой подход не очень себя проявит
Igor
А если я не хочу “стейт размазывать по динамическому граффу объектов”?
Ayrat
Ну это не плохо само по себе.
Это отсылка к известной пасте Антона Молдована
Doge
Это отсылка к известной пасте Антона Молдована
Как-то пропустил. А можно ссылочку, интересно почитать.
Ayrat
Ну это не плохо само по себе.
https://www.youtube.com/watch?v=05DyWjTBg0c&t=24m39s
Ayrat
По таймкоду
Ayrat
А если я не хочу “стейт размазывать по динамическому граффу объектов”?
Задачи разные. Вот в классах удобно инкапсулировать стейт и работу с ним через методы.
Vladislav
(или когда у тебя аспнеткор ди обмазан)
Igor
Задачи разные. Вот в классах удобно инкапсулировать стейт и работу с ним через методы.
Стейт должен быть в базе, а не в объектах (если мы не про акторы)
Ayrat
Стейт должен быть в базе, а не в объектах (если мы не про акторы)
Ну вот ты тот самый который отвергает мутабельные стейты!
Doge
Стейт должен быть в базе, а не в объектах (если мы не про акторы)
Ещё есть совсем performance critical участки, где ты так или иначе проиграешь с иммутабельным подходом.
Doge
Есть, конечно, всякие ссылочно прозрачные Ref, MVar и т.п., но вне хаскеля они всё же не супер дешевые.
Ayrat
Я кстати постоянно привожу в пример такую функцию let sum xs = let mutable sum = 0 for x in xs do sum <- sum + x sum У фпшников глаз дёргается, хотя функция чистее слезы девственницы
Vladislav
Ну да
Ayrat
Ну мне норм. Функция ссылочно-прозрачная, живем.
Постоянно набигают со своими фолдами
Ayrat
Хотя фор лучше оптимизируется житом
Doge
Постоянно набигают со своими фолдами
Ну вне критичных мест фолды сойдут.
Doge
А так-то да.
Igor
Doge
Я думаю таки участки должны быть в фреймворке (или вообще на c#)
Ну бывает бизнес логика, которая недалеко уходит от числодробилок.
Nikolay
ладно, ладно, уговорили
Nikolay
@Liminiens бот нинужон
Vladislav
Нужен
Vladislav
От произвола админов
Vladislav
x
как и мутирование счётчика
Ayrat
И дальше что?
x
xs.AsParallel().Sum()
Ayrat
...
Ayrat
Ты мой поинт не понял совсем
Ayrat
Разжую: инкапсулированная иммутабельность не мешает чистоте
Ayrat
Про распараллеливание речь не шла
Vladislav
как это всё прекрасно, чисто и однопоточно а если xs МНОГО
Так переменная локальная для каждого вызова
x
ну инкапсулированная правда не мешает
Vladislav
Которая мутируется
Ayrat
xs.AsParallel().Sum()
Это кстати вообще никак не поможет от МНОГО.
Ayrat
Ну если например бесконечный сиквенс делить на четыре, то останется примерно столько же на ядро
x
не оч. понятно. Оно же распределит мне работу по моим 8 ядрам? ну и нормас
x
и даже не нужно писать локи, висеть в них и совершать ошибки
x
в том-то и соль отказа от мутабельности в своём коде, нет?
Ayrat
не оч. понятно. Оно же распределит мне работу по моим 8 ядрам? ну и нормас
Ну представь что там ну не бесконечно, но 2 петабайта данных. Сильно тебе это поможет от оверфлоу?)
x
арифметик оверфлоу? а он тут причём )
x
не поможет, конечно
Ayrat
не оч. понятно. Оно же распределит мне работу по моим 8 ядрам? ну и нормас
Моя функция выше вполне отработает точно так же как твой Sum() (потому что они одинаковые) если кто-то предварительно почанкает инпут
x
не, тьак понятно что где-то на самом нижнем уровне - всё мутьабельное
x
и фон неймановское
Vladislav
Не понимаю причину спора
x
в том что чистота - она для чего-то, а не сама по себе. Например для распаралеливания
Ayrat
кто и как почанкает? вот в чом вопрос. Но я понял суть.
Какая разница. Функция sum выше супер тред сейф. Но не это было смыслом ее демонстрации
Ayrat
Вся параллелизация даже через PLinq работает так - делим инпут на ядра, вызываем редьюсер
x
не, когда ты написал про инкапсуляцию - я всё понял ) факт, что эту фунцию можно дёргать в n потоков