Иван Денисов писал(а):
Извернуться то можно как-то при желании и написать в ООП на Си или на Ассемблере.
Речь идет именно о наличие поддержки со стороны языка данного стиля.
Совершенно верно, Вань.
ОО программу (и даже ОС) можно написать хоть на ассемблере. Только от этого ассемблер не станет поддерживать ООП.
В конечном итоге, мы всегда имеем дело с объектами: ячейки памяти, файлы, поверхность отрисовки. Всё есть объекты.
Но что знает ячейка памяти, или ссылка на ячейку памяти о типе?
И в этом отношении Си никогда не обладал ООП-поддержкой, адресная арифметика просто ломает строгую типизацию.
Таким образом получается, что с одной стороны в Си есть структуры и элементарные типы, но нет строгой типизации.
В python есть классы, но опять же никакой типизации. Как тут не помянуть Илью Ермакова с его тезисом № 1 "Типизация наше всё".
А как процедуры будут привязаны к расширяемым записям.... Это вообще дело десятое.
В ветке по дорасчёту две страницы потребовалось по property, чтобы у одного человека наступило просветление, что есть два разных понятия: семантика и типизация.
Передача в property другого типа поломает семантику, но никак не ломает типизацию.
Неявно сама по себе напрашивалась мысль, что перегрузка операторов точно также ломает семантику (без поломки типизации).
Но до этого обсуждения в той теме дело не дошло)))
Так вот затрону здесь: а какой смысл в том, что перегружать операторы? Усложнить компилятор?
Повыпендриваться, мол какой я умный, как у у меня всё не как у всех? А что крамольного в том, чтобы написать
a.Add(b)? Неужели это на столько страшно смотрится?
А аргумент про как пользовать переопределённые или перегруженные методы -- это вообще непонятно зачем.
Неужели фантазия на столько бедна у программистов, что нельзя ну никак обозначить метод по другому? Надо обязательно одинаковыми именами?)))
И как бонус к такому подходу получаем упрощение компилятора, а это значит повышение надёжности!!
А не надёжность ли является священным граалем программиста?
Ну, и простите, синтаксис и хэдеры в Си и им подобных (даже с наличием ООП) отвращают брать в руки подобные инструменты.