Сегодня я расскажу Вам очень показательную историю про одну математическую гипотезу. Она станет ярким примером того, как в математике прерываются, казалось бы, явные закономерности, и что любое предположение в этой науке нуждается в строгом доказательстве, даже если оно проверено для всех чисел, которые только могут поместиться в память суперкомпьютера.
Пользователь
Почему наследование всегда было бессмысленным
4 мин
31KПеревод
Есть три типа наследования.
Это три разных и часто противоречивых отношения. Требовать любого или даже всех не представляет никаких сложностей. Но требование поддержки одним механизмом двух или более из них — значит нарываться на проблемы.
Часто для наследования в ООП приводят контрпример отношений между квадратом и прямоугольником. Геометрически квадрат — это специализация прямоугольника: все квадраты — прямоугольники, но не все прямоугольники — квадраты. Все s в классе «Квадрат» являются прямоугольниками s, у которых длина равна ширине. Но в иерархии типов это отношение обратное: вы можете использовать прямоугольник везде, где используется квадрат (указав прямоугольник с одинаковой шириной и высотой), но нельзя использовать квадрат везде, где используется прямоугольник (например, вы не можете изменить длину и ширину).
- Онтологическое наследование указывает на специализацию: вот эта штука — специфическая разновидность той штуки (футбольный мяч — это сфера и у неё такой-то радиус).
- Наследование абстрактного типа данных указывает на замещение: у этой штуки такие же свойства, как у той штуки, и такое-то поведение (это принцип подстановки Барбары Лисков).
- Наследование реализации связано с совместным использованием кода: эта штука принимает некоторые свойства той штуки и переопределяет или дополняет их таким-то образом. Наследование в моей статье «О наследовании» именно такого и только такого типа.
Это три разных и часто противоречивых отношения. Требовать любого или даже всех не представляет никаких сложностей. Но требование поддержки одним механизмом двух или более из них — значит нарываться на проблемы.
Часто для наследования в ООП приводят контрпример отношений между квадратом и прямоугольником. Геометрически квадрат — это специализация прямоугольника: все квадраты — прямоугольники, но не все прямоугольники — квадраты. Все s в классе «Квадрат» являются прямоугольниками s, у которых длина равна ширине. Но в иерархии типов это отношение обратное: вы можете использовать прямоугольник везде, где используется квадрат (указав прямоугольник с одинаковой шириной и высотой), но нельзя использовать квадрат везде, где используется прямоугольник (например, вы не можете изменить длину и ширину).
+35
Опасен ли внезапный взрыв сверхновой поблизости от Солнца?
12 мин
19KДля астрономов Земли вспышка сверхновой звезды — давняя мечта. Столько лет, сколько существует телескоп, как основной инструмент изучения Вселенной, сверхновые обходят наши небеса стороной. И это затрудняет изучение такого важного феномена звездной эволюции, когда умирает массивная звезда, превращаясь в нейтронную звезду или даже в черную дыру, из гравитационного плена которой не может вырваться даже свет.
О том, что такие события с некоторой частотой происходили в прошлом, свидетельствуют летописи разных народов и стран, и красивые по виду туманности — сброшенные в процессе взрыва верхние слои погибшей звезды.
+55
Как принимать платежи в Telegram | API Yoomoney Python
4 мин
64KКак принимать платежи используя YooMoney API и Python
+4
Информация
- В рейтинге
- Не участвует
- Зарегистрирован
- Активность