Search
Write a publication
Pull to refresh

Comments 9

Уточните, пожалуйста, на каком ЯП написаны ваши примеры?

По виду, это C++ с майкрософтовскими дополнениями — но даже так, есть странные моменты. Может, псевдокод.

я действительно одно время (не больно давно и довольно долго), очень много на С# писал, теперь путаюсь, если код проверить компиляцией нельзя (без помощи компилятора).

Вообще, мне нравится название "Си подобный псевдокод". Но если где-то что-то не понятно по такому коду, всегда готов поправить.

Что-то очень сложно написано.
Все это называтся полиморфизм.

В Си интерфейсом является правильно написаный хидер (скрывающий конкретные типы за opaque указателями), а с помощью линкера в программу прицепляется конкретная реализация. Это т.н. link-time полиморфизм.

Абсолютная инкапсуляция чем-то принципиально отличается от Dependency Inversion Principle и Чистой архитектуры, о которых (в моём инфопузере) каждая собака знает? Не увидел этого в статье

Предположу, что отличие в том, что речь идёт о том, что инкапсуляция будет происходить на уровне файлов, а не на уровне линковки.

То есть условно если в классике, конечный пользователь скачает сразу файл (jar/dll/…), где будет уже динамически выбираться реализация, то здесь, я так понял, речь о том, чтобы на уровне конечного пользователя скачивать файл с реализацией в зависимости от цели.

Интересно сколько понадобится времени теперь, чтобы перестать пытаться заново изобретать основы программирования, а просто начать их систематизировать, структурировать и просто внимательно изучать?

Все-таки раздраконил я вас со своей Инкапсуляцией (как с писянной торбой с ней ношусь🤣)

Браво, уважаю. Больше того, у Вас лично отлично поставлена методология объяснится/обучения. Я обладая поверхностными знаниями в программировании (приобритенные в универе), отлично понимаю текст статьи…

Благодарю 😇

Мне показалось, что вы очень пренебрежительно относитесь к колегам

мало кто знает что в практических задачах она никогда не является целью

Так уж прям мало кто?

К сожалению, мало кто из русскоязычной аудитории сможет разделить мой восторг по поводу такой возможности, потому что это уже практически забытая технология

Динамические библиотеки - это не забытая технология. А еще, как близкая, концепция - микросервисы.

Ну и вообще, подмена реализаций - это обычная штука, логично вытекающая из механизма интерфейсов. Инъекция зависимостей - это вообще один из базовых архитектурных паттернов.

В общем, лайкнул бы статью, если бы она позиционировалась как статья для новичков, так как объясняет базовые, но полезные вещи

Интересно, именно поэтому был придуман COM? — условно у нас в файлах где-то есть dll с реализацией, а сами мы при импорте можем лишь работать с интерфейсом и как-то его создавать.

Впрочем, даже без COM можно сделать отдельную динамическую библиотеку, в которой будет реализация интерфейса, а сами мы будет иметь лишь C++-овый интерфейс с помощью хедера. И вообще, зачем в примере нужна статическая библиотека, если можно просто через extern функцию в хедере то же самое?

Но хочу сказать, идея интересная. Я так понимаю, что конечному пользователю мы просто шлём различные версии либы, а сам хедер пишем универсальный, как и саму программу — действительно интересно. Впрочем, естественно, в одном файле все архитектуры не учесть — так что не могу быть уверенным в полезности данной техники, если эта самая либа не будет использоваться у конечного пользователя прямо чтобы много где.

Sign up to leave a comment.

Articles