"У этой штуки есть состояние и поведение, и я хочу, чтобы они шли вместе " - совершенно оторванная от жизни концепция.
Вычислительные процессы - это не кошки с собаками.
Вычислительные процессы = данные + процедуры их обработки. Пихать их в один объект - крайне сомнительная идея.
Процедуры обработки данных редко состоят из обработки только одного типа данных. Очень редко они имеют вид inc(T t). Практически всегда процедуры обработки имеют вид T t + R r. Как прикажете это реализовать? Метод add класса T с параметром типа R? А почему не наоборот? А если этих типов много? А если в процедура обрабатывает не два, а три, четыре параметра четырех разных типов? Кто их этих типов главный?
Как развивать класс? У метода add класса T в проекте надо добавить тип K. Менять класс T? А если он библиотечный? Ладно, в шарпе придумалы костыль с расширением класса (или как он там называется?).
Все это приводит к тому, что ООП вырождается в систему, когда есть рекорды без методов (в Java таки это признали и создали костыль records), и классы-обработчики (процессоры, сервисы, контроллеры), которые определенным образом обрабатывают объекты-данные. В обработчики разрешается вкладывать только инфраструктурные классы. ВЕСЬ Spring на этом построен.
Если взять пример с кошечками-собачками, то в реальных проектах ВСЕГДА делается следующим образом:
public record Cat(float meat, float bone, int eye) {}
public record Dog(float meat, float bone, int eye) {}
public record HotDog(/*...*/) {}
public record KittensPie(/*...*/) {}
public record Meat(float quantity) {}
public record GroundMeat(float quantity) {}
public class MeatGrinder {
// ссылки на сторонние зависимости
public GroundMeat grind(Meat meat) {
return new GroundMeat(100); //примерно
}
}
public class Kitchen {
private final MeatGrinder meatGrinder;
public Kitchen(MeatGrinder meatGrinder) {
this.meatGrinder = meatGrinder;
}
public HotDog makeHotDog(Dog[] dogs, float doughQuantity) {
// использование meatGrinder
return new HotDog();
}
public KittensPie makeKittensPie(Cat[] kittens, float doughQuantity) {
// использование meatGrinder
return new KittensPie();
}
}
Я намекал на следующую проблему. Принцип инкапсуляции требует, чтобы вся бизнес-логика закладывалась в один класс (не ВООБЩЕ ВСЯ). В частности, это делается, чтобы юнит-тест был цельным, и тестировал бизнес-логику в одном месте. В данной статье предлагается разложить бизнес-логику по нескольким классам - как минимум в класс-фабрику (бизнес-логика здесь - при таком условии выполнить это, при другом условии выполнить это-2), плюс несколько классов с ветками. И все эти классы нужно во-первых, держать в согласованном состоянии, плюс будут базовый класс с разделяемыми данными, во-вторых, нужно тесты держать в согласованном состоянии.
Такой подход хорош, если ветки СОВЕРШЕННО не зависят друг от друга, и можно без проблем выделить их в отдельные классы. Это НУЖНО делать, сплошь и рядом. Но делается это не для того, чтобы "избавиться" от if и case, а для разделения и инкапсуляции алгоритмов (если я правильно применяю термин) и упрощения юнит-тестирования, когда вместо того, чтобы тестировать один класс-монстр, тестировать несколько небольших классов.
Они просто скидывают на свою звезду отходы своих ядерных реакторов. Если эта цивилизация развилась до такого уровня, что способна массово шляться в окрестности своей звезды, то явно уж не на химических двигателях. Отходы куда-то нужно скидывать. Куда? На свои освоенные планеты? Оставлять на орбите своей звезды (не говоря уж о своей планете)? Так рано или поздно эти "бочки" упадут на планеты и приведут к заражению. Отправлять в глубокий космос? Каких это затрат энергии потребует, учитывая "гравитационный колодец"? Только на свою звезду.
Проверить, теоретически, для физика-ядерщика - элементарно. Нужно проанализировать наиболее эффективные "бытовые" ядерные реакции. Выписать ядерные отходы, которые образуются при этом (что вы там про технеций говорили?) и процентные соотношения. И сравнить процентовки с процентами на звезде. Заодно узнаем, какими ядерными реакциями эта цивилизация пользуется.
Насчет того, что руководство УВЗ жалуется - гнать надо такое руководство к чертям. У УВЗ огромный штат подготовки кадров с классами. У УВЗ в наличии собственное ПТУ (не знаю, одно или несколько, но одно есть с отличным парком станков), которые могут подготовить токарей за два года или год (если не парить учащихся историей и прочей школьной чепухой). Достаточно предложить контракт с трудоустройством за 150-200 тыр, обучение - и народ валом пойдет, что молодежь, что старики.
Тесты не должны проверять детали реализации и внутреннее состояние. Этот метод может быть отрефакторен с использованием линейной алгебры, и ваш тест упадет.
Если вы нагородите в реальном проекте эти проверки в потрохах, то кончится все либо тем, что ваши проверки выпилят, либо тесты отключат, либо не будут обращать внимания на падения ваших тестов.
Ваши тесты в CI падают непредсказуемо, скорее всего, потому, что где-то код имеет side-эффекты.
Физикализм — это философская позиция, утверждающая, что всё существующее в мире либо является физическим, либо зависит от физических явлений. В его основе лежит идея, что реальность в конечном счёте описывается законами физики, а все другие явления (сознание, биологические процессы, социальные взаимодействия) могут быть сведены к физическим процессам или объяснены через них.
Дуализм — это философская концепция, утверждающая, что реальность состоит из двух принципиально различных и несводимых друг к другу начал. В отличие от монизма (например, физикализма) или плюрализма, дуализм постулирует двойственность как основу мироздания. То есть, для сознания необходима душа, дух.
То есть вы создаете интеллект, сознание (причем БОИТЕСЬ, что он станет сверхсознаием и сверхинтеллектом), на основе только физических методов (я не видел колдовских обрядов по оживлению компьютеров). И на серьезных щах приводите "эксперименты" от дуалистов. Я напомню, что Фрэнк Джонсон опубликовал свой "эксперимент" в 1982 году ("Epiphenomenal Qualia"), когда был дуалистом, а потом 2023 («Разум и иллюзия») году стал физикалистом.
Если вы считате, что для сознания необходимо что-то еще, кроме нейронной сети, то почему вы разговариваете с нейросетями?
Простите, но дуализм (противоположность физикализма) в эпоху массового распространения ИИ - не имеет смысла, приводить мысленные "эксперименты", что-то доказывающие против физикализма - это просто... позор.
Вести диалоги с искусственным интеллектом на тему того, объясняется ли сознание только физическими законами, или есть что-то нефизическое, без чего невозможно сознание (душа, дух, идея, тысячи их) - это просто какая-то насмешка над здравым смыслом, постирония космического масштаба.
Вот сейчас вы вместо понятия "высшее существо" вводите понятие "случайная флуктуация". Где ваша бритва Оккама? Как случайная флуктуация могла создать нашу вселенную? Настолько огромную, сложную, настроенную. Точно ваша "случайная флуктуация" проще, чем "высшее существо"?
Гравитационный потенциал — это скалярная физическая величина, характеризующая гравитационное поле в данной точке пространства. Он определяется как работа, которую нужно совершить, чтобы переместить единичную массу из бесконечности в данную точку поля без ускорения.
Формальное определение
Для точечной массы MM гравитационный потенциал φφ на расстоянии rr от неё вычисляется по формуле:
φ(r)=−GM/r
где:
G — гравитационная постоянная (6.674×10−11 м3кг−1с−26.674×10−11м3кг−1с−2),
r — расстояние от центра массы M.
Знак "минус" означает, что потенциал уменьшается с удалением от массы и стремится к нулю на бесконечности.
А детский ответ - бог существовал всегда и будет существовать бесконечно в будущем. Он не имеет начала существования и соответственно, нет причины его возникновения.
"У этой штуки есть состояние и поведение, и я хочу, чтобы они шли вместе " - совершенно оторванная от жизни концепция.
Вычислительные процессы - это не кошки с собаками.
Вычислительные процессы = данные + процедуры их обработки. Пихать их в один объект - крайне сомнительная идея.
Процедуры обработки данных редко состоят из обработки только одного типа данных. Очень редко они имеют вид inc(T t). Практически всегда процедуры обработки имеют вид T t + R r. Как прикажете это реализовать? Метод add класса T с параметром типа R? А почему не наоборот? А если этих типов много? А если в процедура обрабатывает не два, а три, четыре параметра четырех разных типов? Кто их этих типов главный?
Как развивать класс? У метода add класса T в проекте надо добавить тип K. Менять класс T? А если он библиотечный? Ладно, в шарпе придумалы костыль с расширением класса (или как он там называется?).
Все это приводит к тому, что ООП вырождается в систему, когда есть рекорды без методов (в Java таки это признали и создали костыль records), и классы-обработчики (процессоры, сервисы, контроллеры), которые определенным образом обрабатывают объекты-данные. В обработчики разрешается вкладывать только инфраструктурные классы. ВЕСЬ Spring на этом построен.
Если взять пример с кошечками-собачками, то в реальных проектах ВСЕГДА делается следующим образом:
Где здесь ООП? Кто-нибудь видел?
Бета-распад. "Распадается" нейтрон на позитрон, электрон и антинейтрино. Исторически сложилось ))
А электрон откуда берется?
Upd. Пардон, вопрос снят.
79 198 Au→80 198 Hg+e−+νˉe
Надо разделять юнит и интеграционные тесты. В юнит-тестах, согласен, спринга в принципе быть не должно (согласно лондонской школе, по крайней мере).
Интеграционных тестов должно быть десятки, но не тысячи на проект.
Вот с БД как? - вот вопрос. Селекты как-то хотелось бы тестировать.
Дипсик рекомендует для мапы кастом писать:
Но вообще надо пошариться на предмет наличия готовых классов фабрик, чем велосипед писать.
Я намекал на следующую проблему. Принцип инкапсуляции требует, чтобы вся бизнес-логика закладывалась в один класс (не ВООБЩЕ ВСЯ). В частности, это делается, чтобы юнит-тест был цельным, и тестировал бизнес-логику в одном месте. В данной статье предлагается разложить бизнес-логику по нескольким классам - как минимум в класс-фабрику (бизнес-логика здесь - при таком условии выполнить это, при другом условии выполнить это-2), плюс несколько классов с ветками. И все эти классы нужно во-первых, держать в согласованном состоянии, плюс будут базовый класс с разделяемыми данными, во-вторых, нужно тесты держать в согласованном состоянии.
Такой подход хорош, если ветки СОВЕРШЕННО не зависят друг от друга, и можно без проблем выделить их в отдельные классы. Это НУЖНО делать, сплошь и рядом. Но делается это не для того, чтобы "избавиться" от if и case, а для разделения и инкапсуляции алгоритмов (если я правильно применяю термин) и упрощения юнит-тестирования, когда вместо того, чтобы тестировать один класс-монстр, тестировать несколько небольших классов.
Как это юнит-тестировать?
Да, верно. Значит, от версии со звездой-помойкой необходимо отказаться.
Да вот нужно цивилизации давать о себе знать.
Они просто скидывают на свою звезду отходы своих ядерных реакторов. Если эта цивилизация развилась до такого уровня, что способна массово шляться в окрестности своей звезды, то явно уж не на химических двигателях. Отходы куда-то нужно скидывать. Куда? На свои освоенные планеты? Оставлять на орбите своей звезды (не говоря уж о своей планете)? Так рано или поздно эти "бочки" упадут на планеты и приведут к заражению. Отправлять в глубокий космос? Каких это затрат энергии потребует, учитывая "гравитационный колодец"? Только на свою звезду.
Проверить, теоретически, для физика-ядерщика - элементарно. Нужно проанализировать наиболее эффективные "бытовые" ядерные реакции. Выписать ядерные отходы, которые образуются при этом (что вы там про технеций говорили?) и процентные соотношения. И сравнить процентовки с процентами на звезде. Заодно узнаем, какими ядерными реакциями эта цивилизация пользуется.
Предлагаю автору заняться этим.
Ничего не понял. Что за волны? Что они сделали? Порвали парус, пардон, провода?
У вас провода на лэп не расчитаны под ветровые нагрузки?
Честно говоря, радуюсь. Рынок работает.
Насчет того, что руководство УВЗ жалуется - гнать надо такое руководство к чертям. У УВЗ огромный штат подготовки кадров с классами. У УВЗ в наличии собственное ПТУ (не знаю, одно или несколько, но одно есть с отличным парком станков), которые могут подготовить токарей за два года или год (если не парить учащихся историей и прочей школьной чепухой). Достаточно предложить контракт с трудоустройством за 150-200 тыр, обучение - и народ валом пойдет, что молодежь, что старики.
Тесты не должны проверять детали реализации и внутреннее состояние. Этот метод может быть отрефакторен с использованием линейной алгебры, и ваш тест упадет.
Если вы нагородите в реальном проекте эти проверки в потрохах, то кончится все либо тем, что ваши проверки выпилят, либо тесты отключат, либо не будут обращать внимания на падения ваших тестов.
Ваши тесты в CI падают непредсказуемо, скорее всего, потому, что где-то код имеет side-эффекты.
Да, я говорил о Большом Взрыве.
Физикализм — это философская позиция, утверждающая, что всё существующее в мире либо является физическим, либо зависит от физических явлений. В его основе лежит идея, что реальность в конечном счёте описывается законами физики, а все другие явления (сознание, биологические процессы, социальные взаимодействия) могут быть сведены к физическим процессам или объяснены через них.
Дуализм — это философская концепция, утверждающая, что реальность состоит из двух принципиально различных и несводимых друг к другу начал. В отличие от монизма (например, физикализма) или плюрализма, дуализм постулирует двойственность как основу мироздания. То есть, для сознания необходима душа, дух.
То есть вы создаете интеллект, сознание (причем БОИТЕСЬ, что он станет сверхсознаием и сверхинтеллектом), на основе только физических методов (я не видел колдовских обрядов по оживлению компьютеров). И на серьезных щах приводите "эксперименты" от дуалистов. Я напомню, что Фрэнк Джонсон опубликовал свой "эксперимент" в 1982 году ("Epiphenomenal Qualia"), когда был дуалистом, а потом 2023 («Разум и иллюзия») году стал физикалистом.
Если вы считате, что для сознания необходимо что-то еще, кроме нейронной сети, то почему вы разговариваете с нейросетями?
А зачем вы переписываете enums на sealed classes? Если перечисления уже работают в проекте, зачем?
Простите, но дуализм (противоположность физикализма) в эпоху массового распространения ИИ - не имеет смысла, приводить мысленные "эксперименты", что-то доказывающие против физикализма - это просто... позор.
Вести диалоги с искусственным интеллектом на тему того, объясняется ли сознание только физическими законами, или есть что-то нефизическое, без чего невозможно сознание (душа, дух, идея, тысячи их) - это просто какая-то насмешка над здравым смыслом, постирония космического масштаба.
Вот сейчас вы вместо понятия "высшее существо" вводите понятие "случайная флуктуация". Где ваша бритва Оккама? Как случайная флуктуация могла создать нашу вселенную? Настолько огромную, сложную, настроенную. Точно ваша "случайная флуктуация" проще, чем "высшее существо"?
Гравитационный потенциал — это скалярная физическая величина, характеризующая гравитационное поле в данной точке пространства. Он определяется как работа, которую нужно совершить, чтобы переместить единичную массу из бесконечности в данную точку поля без ускорения.
Формальное определение
Для точечной массы MM гравитационный потенциал φφ на расстоянии rr от неё вычисляется по формуле:
φ(r)=−GM/r
где:
G — гравитационная постоянная (6.674×10−11 м3кг−1с−26.674×10−11м3кг−1с−2),
r — расстояние от центра массы M.
Знак "минус" означает, что потенциал уменьшается с удалением от массы и стремится к нулю на бесконечности.
Гравитационный потенциал.
А детский ответ - бог существовал всегда и будет существовать бесконечно в будущем. Он не имеет начала существования и соответственно, нет причины его возникновения.