Зачем два механизма ограничений?

Проектирование и разработка идеального средства программирования.

Модератор: Модераторы

Пожалуйста, прочтите верхний пост, и скажите какой подход к дизайну языка лучше.

Лучше как сейчас
10
53%
Лучше так, как сейчас, и никак иначе!
2
11%
Лучше без private и strict (но с остальными секциями)
4
21%
Мне пофиг
1
5%
Лучше убрать interface и implementation
2
11%
 
Всего голосов : 19

Re: Зачем два механизма ограничений?

Сообщение stanilar » 30.10.2015 00:09:04

скалогрыз писал(а):делаю через общий базвый абстрактный (или пустой) класс.

Когда зависимости удачно спроектированы - это хорошо. Но так получается не всегда. Есть определенный плюс в том, что интерфейсы позволяют сделать надстройку над уже существующими отношениями классов.

скалогрыз писал(а):1 интерфейc обслуживает 1 класс.

Разговор изначально зашел про новую языковую возможность. У меня просто появилась мысль о том, что в языке уже все есть.
stanilar
постоялец
 
Сообщения: 289
Зарегистрирован: 09.03.2010 19:09:02

Re: Зачем два механизма ограничений?

Сообщение скалогрыз » 30.10.2015 00:12:28

stanilar писал(а):Разговор изначально зашел про новую языковую возможность. У меня просто появилась мысль о том, что в языке уже все есть.

Интерфейсы это подобный функционал, но никак не идентичный желаемому.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Зачем два механизма ограничений?

Сообщение stanilar » 30.10.2015 00:23:04

скалогрыз писал(а):Интерфейсы это подобный функционал, но никак не идентичный желаемому.

Вместе с остальными языковыми возможностями, они дополняют язык до нужного соответствия.
stanilar
постоялец
 
Сообщения: 289
Зарегистрирован: 09.03.2010 19:09:02

Re: Зачем два механизма ограничений?

Сообщение скалогрыз » 30.10.2015 01:33:55

stanilar писал(а):Вместе с остальными языковыми возможностями, они дополняют язык до нужного соответствия.

смысл изменения в том, чтобы минимизировать использование различных языковых возможностей.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Зачем два механизма ограничений?

Сообщение stanilar » 30.10.2015 02:05:31

Есть языковые конструкции, от которых нельзя отказаться. Если вместе с ними, язык содержит все необходимые возможности, то нет острой необходимости плодить сущности.
stanilar
постоялец
 
Сообщения: 289
Зарегистрирован: 09.03.2010 19:09:02

Re: Зачем два механизма ограничений?

Сообщение скалогрыз » 30.10.2015 05:43:48

stanilar писал(а):Есть языковые конструкции, от которых нельзя отказаться. Если вместе с ними, язык содержит все необходимые возможности, то нет острой необходимости плодить сущности.

от языковых конструкций никто не предлагает отказатся. Новые сущности не предлагают плодить.
Наоборот, предлагают уточнить описание существующих и сделать его более модульным.
При этом 100% обратная совместимость. Т.е. все private можно оставить в interface.

Например, почему в С++, описание класса должно идти целиком?
Потому что в С++ классы могут легко располагатся в стеке, и полный размер должен быть известен каждому кусочку кода, на момент компиляции.
В Паскале, размер класса нужен только на момент исполнения, так что скрытую "private" часть класса, можно спрятать в implementation. (Но даже в этом случае, размер экземпляра будет известен на момент компиляции)

Второй пример, почему в С++, описание класса должно идти целиком.
Потому что в С++ есть "друзья" которые имеют доступ к приватным полям класса, естественно они должны знать о приватных полях.
В Паскале "друзей" нет, а есть область видимости модуля. Весь код, находящийся в том же модуле имеет доступ к "private" секции. Весь модуль - "друг". Если "private" поля вынести в implementation, область видимости это никак не нарушит.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Зачем два механизма ограничений?

Сообщение Mikhail » 30.10.2015 08:39:36

Дож писал(а):Да ладно? :)

Проще так, если уж на то пошло
Код: Выделить всё
PInterface = ^TInterface;
TInterface = record
obj: pointer;
Metod1: procedure (AObj: pointer; ...);
Metod2: procedure (AObj: pointer; ...);
...
end;

Ну а вообще, я о поддержке в языке говорил. :|

Добавлено спустя 3 минуты 5 секунд:
скалогрыз писал(а):Второй пример, почему в С++, описание класса должно идти целиком.

По тем же причинам что и в Паскале, нет никаких проблем сделать иначе.
Mikhail
энтузиаст
 
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Re: Зачем два механизма ограничений?

Сообщение скалогрыз » 30.10.2015 16:24:12

Mikhail писал(а):По тем же причинам что и в Паскале, нет никаких проблем сделать иначе.

а вот иначе, в С++ сделать просто невозможно, из-за структуры языка. Ибо всё что использует .c/.cpp должно быть где-то описано в header-е.
В Си++ модулей нет, как и области видимости модулей.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Зачем два механизма ограничений?

Сообщение daesher » 31.10.2015 08:48:34

скалогрыз писал(а):а вот иначе, в С++ сделать просто невозможно, из-за структуры языка. Ибо всё что использует .c/.cpp должно быть где-то описано в header-е.
В Си++ модулей нет, как и области видимости модулей.

Вот о чём и речь (хотя сишные .h - та ещё проблема).
В общем, в паскале есть аналогия - всё, что используют другие модули, должно быть описано где-то в части interface.
daesher
постоялец
 
Сообщения: 221
Зарегистрирован: 09.03.2010 22:17:14

Пред.

Вернуться в Компилятор / язык программирования

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru