Почему все классы в C# наследуются от класса Object,
если ещё до нашей эры Аристотель выделил философские категории:
— being
— movement
— matter
— space
— time
— quality
— quantity
— form
— content
трактат в котором рассматриваются наиболее общие имена обозначающие вещи
С материей, пространством и временем у современных физиков проблемы, может быть они всё переделают,
но почему остальные-то категории не лежат в корне иерархии классов?
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>но почему остальные-то категории не лежат в корне иерархии классов?
У Борхеса классификация лучше. Все животные делятся на:
а) принадлежащих Императору,
б) набальзамированных,
в) прирученных,
г) молочных поросят,
д) сирен,
е) сказочных,
ж) бродячих собак,
з) включённых в эту классификацию,
и) бегающих как сумасшедшие,
к) бесчисленных,
л) нарисованных тончайшей кистью из верблюжьей шерсти,
м) прочих,
н) разбивших цветочную вазу,
о) похожих издали на мух.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>С материей, пространством и временем у современных физиков проблемы, может быть они всё переделают, ЭФ>но почему остальные-то категории не лежат в корне иерархии классов?
Потому, что аллокатору памяти все равно, под кусок какой философской категории он память выделяет.
Почему, например, не слово "Понятие" ? Или не "мыслеформа" ? Там, в философии ещё много других слов есть, например "Вещь", "Предмет".
Заодно предлагаю уволить всех философов МЭИ. Они выпустили "философский словарь инженера", в котором есть понятие "классификация", но нет "категоризации".
Здравствуйте, Эйнсток Файр, Вы писали:
R3>> Вначале было слово. И это слово "object". ЭФ>Почему, например, не слово "Понятие" ? Или не "мыслеформа" ? Там, в философии ещё много других слов есть, например "Вещь", "Предмет".
Оно имеет много имён, но означает одно.
Например, в OWL:
встроенный наиболее специфичный класс по имени Nothing (Ничто), который не имеет никаких представителей и является подклассом всех OWL классов.
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>Философию для этого придумали, чтобы провести различия между понятиями (и таким образом терминологию согласовать).
Бессмысленная философия идёт в null.
R3>>
R3>>встроенный наиболее специфичный класс по имени Nothing (Ничто), который не имеет никаких представителей и является подклассом всех OWL классов.
ЭФ>null и в C# есть, и чо? Это другое?
встроенный самый общий класс по имени Thing (Вещь), который является классом всех индивидов и суперкласс для всех OWL классов
ЭФ>> Философию для этого придумали, чтобы провести различия между понятиями (и таким образом терминологию согласовать). R3> Бессмысленная философия идёт в null.
Википедия не знает, что такое "категоризация" (перенаправляет на страницу "классификация").
типизирование = приписывание типа куску памяти (точнее было бы "создание класса под схему данных", но так не бывает)
инстанциирование = выделение куска памяти для объекта указанного типа
обобщение = создание базового класса или интерфейса
наследование = порождение более специализированного типа-наследника класса или реализация интерфейса
Можно ли сказать, что типизирование/инстанциирование — это от классификации, а обобщение/наследование это от категоризации?
Или можно сказать, что "категория" это интерфейс (нельзя инстанциировать), а "класс" это рецепт (можно воплотить в жизнь)?
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>Почему все классы в C# наследуются от класса Object,
Все очень просто — разработчики C# вдохновлялись не Аристотилем, а разработанным ранее языком Java. Который, по мнению разработчиков C#, имел "фатальный недостаток". Аналогично были "придуман" не только название супертипа Object, но и название его методов:
Когда я изучал философию, то мне пришла в голову схожая мысль.
Погуглив я понял, что идея не нова и есть много обсуждений и статей на эту тему.
Вот первая статья в гугле: https://dl.acm.org/doi/pdf/10.1145/331795.331862
ЭФ>
трактат в котором рассматриваются наиболее общие имена обозначающие вещи
Аристотелевские категории таки уже устарели и интересны лишь с точки зрения генезиса философии.
Кант и Гегель значительно переработали первоначальную идею. Сейчас мы пересматриваем это еще раз с точки зрения последних достижений в нейробиологии и понимания как мы воспринимаем реальность.
Ведь категории в первую очередь не про как реальность устроена, а про то как мы эту реальность воспринимаем и моделируем.
Кстати, интересно, что математическая "Теория категорий" со слов Милевски (об этом он говорит в своей первой лекции) — это больше про эпистемологию, т.е. про то как мы думаем и как устроено наше знание.
ЭФ>но почему остальные-то категории не лежат в корне иерархии классов?
Почему они должны лежать именно в корне иерархии классов, а не быть выражены другими средствами языка?
Также ты можешь заметить, что различные парадигмы делают акцент на разных "категориях".
Ну, в ней нет ничего особенного. У нас бы такую статью не назвали бы "научной" и никуда бы не приняли.
Поэтому и нет таких статей на русском языке.
MVK> Гегель
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>Почему все классы в C# наследуются от класса Object,
ЭФ>С материей, пространством и временем у современных физиков проблемы, может быть они всё переделают, ЭФ>но почему остальные-то категории не лежат в корне иерархии классов?
1 потому что на самом деле программисты ничего не моделируют(как моделист-конструктор), а обрабатывают данные.
классический пример: веб(гипертекст).
2 есть только движение материи. время это движение стрелок часов.
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>Ну, в ней нет ничего особенного. У нас бы такую статью не назвали бы "научной" и никуда бы не приняли.
Твоя идея о том, что сущности в программировании могли бы отображаться на философские категории тоже ничего общего с наукой не имеют. Ни с наукой, к которой можно было бы притянуть философию, ни с инженерным ремеслом, коим программирование и является.
Здравствуйте, Эйнсток Файр, Вы писали:
R3>> Вначале было слово. И это слово "object".
ЭФ>Почему, например, не слово "Понятие" ? Или не "мыслеформа" ?
Потому что это уже выход на метауровень. А тебе нужен исходный.
Предлагаю в базу вынести понятие "Оно". Всё наследуем от класса It.
ЭФ> Там, в философии ещё много других слов есть, например "Вещь", "Предмет".
Это уже излишняя конкретика. Есть непредметные понятия.
ЭФ>Заодно предлагаю уволить всех философов МЭИ. Они выпустили "философский словарь инженера", в котором есть понятие "классификация", но нет "категоризации".
Правильно. Нам надо построить систематизированную систематическую систему систематизации.
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>Почему все классы в C# наследуются от класса Object, ЭФ>если ещё до нашей эры Аристотель выделил философские категории: ЭФ>- being
... ЭФ>- content ЭФ>но почему остальные-то категории не лежат в корне иерархии классов?
Может это не про наследование свойств, а о чем-то другом. Абстракции/категории это не обязательно просто набор свойств, описывающих состояние и операций меняющих состояние (как в ООП).
А для разработчиков, кстати, этот список "кратко все о разработке" как выглядит? К чему все сводится?
Есть еще что важное, кроме этого?
Простота.
Повторная используемость.
Абстрактность.
Полнота.
Противоречия. (поиск компромиссов)
Изменяемость.
Декомпозиция.
Классификация/группирование/кластеризация/cohesion.
Инкапсуляция. (простой маленький интерфейс к сложной громоздкой реализации)
Ограничения. Автоматическая защита от ошибок. (Например, типизация)
Читабельность. Самодокументирование. Скорость навигации/поиска/локализации нужной части кода. (Инструменты разработки)
S_S>А для разработчиков, кстати, этот список "кратко все о разработке" как выглядит? К чему все сводится? S_S>Есть еще что важное, кроме этого?
Конечно есть. Открываешь свой диплом программиста и смотришь перечень профильных дисциплин.
И это нифига не кратко, это на пять-шесть лет обучения.
Да и сами концепции — не абстрактные, а конкретные (SOLID, YAGNI и тому подобная муть).
А к конкретному от абстрактного ещё надо восходить, как учил логик Зиновьев из МГУ.
Повторная используемость.
Абстрактность. (Обобщения и конкретизации)
Полнота.
Декомпозиция. (и композиция)
Классификация/группирование/кластеризация/cohesion.
Инкапсуляция. (простой маленький интерфейс к сложной громоздкой реализации)
Ограничения. Автоматическая защита от ошибок. (Например, типизация отлавливает ошибки во время компиляции.)
Availability. Диагностируемость. Читабельность.
(Или как это назвать?). Возможность найти нужную часть кода, ошибку. Скорость навигации по коду. Самодокументирование. Возможность подсмотреть через Debugger, что происходит внутри.
II. Субъекты. Объекты.
Разработчики.
Инструменты:
. . — Знания. Науки (физика, математика, ...)
. . — ЯП
. . — Средства разработки
Сторонние библиотеки.
Код разрабатываемой системы.
Функциональность системы, требования (независимо от того какой код, ЯП, ...).
Эффективность, производительность системы. (или это не здесь должно быть?)
Пользователь. Тестировщик. Заказчик.
III. Действия
Операции с кодом (низкоуровневые/"тактические" действия):
Изучение кода.
Поиск. Локализация нужного функционала в коде.
Добавление кода, почти не меняя существующий. Либо написание с нуля.
Изменение. Добавление функционала, когда требуются изменения в многих местах.
Breaking changes. Изменения в критической части кода, от которой много зависит(на которую много ссылок). Где-то может что-то отвалиться.
Рефакторинг
Поиск/отладка ошибок.
Тестирование
Документирование.
Жизненный цикл разработки (высокоуровневые/"стратегические" действия):
Прогнозирование. Анализ, составление требований к продукту.
Исследования. Эксперименты. Proof of concept.
Планирование.
Проектирование и дизайн.
Разработка.
Тестирование.
Развертывание, эксплуатация, поддержка.
Здравствуйте, Эйнсток Файр, Вы писали:
S_S>>Есть еще что важное, кроме этого? ЭФ>Конечно есть. Открываешь свой диплом программиста и смотришь перечень профильных дисциплин.
ЭФ>Да и сами концепции — не абстрактные, а конкретные (SOLID, YAGNI и тому подобная муть). ЭФ>А к конкретному от абстрактного ещё надо восходить, как учил логик Зиновьев из МГУ.
Если все эти SOLID выводятся из перечисленных, то это уже следующий уровень детализации, следствия, отдельная дополнительная тема.
ЭФ>если ещё до нашей эры Аристотель выделил философские категории: ЭФ>- being
— программа (исполняемый код)
ЭФ>- movement
— исполнение (программы, потока)
ЭФ>- matter
— данные
ЭФ>- space
— оперативная память
ЭФ>- time
— производительность
ЭФ>- quality
— баги
ЭФ>- quantity
— количество кода, данных etc
ЭФ>- form
— язык программирования, и их сущности — классы, функции...
ЭФ>- content
— бизнес логика, бизнес данные
Как много веселых ребят, и все делают велосипед...