Re[24]: Borland и Net
От: Lloyd Россия  
Дата: 26.11.03 11:14
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>http://rsdn.ru/Forum/Top.aspx?days=0


В таком случае ты сильно ошибаешься.
... << RSDN@Home 1.1.0 stable >>
Re[20]: Borland и Net
От: Lloyd Россия  
Дата: 26.11.03 11:25
Оценка:
Здравствуйте, VladD2, Вы писали:

S>> Хотя как утверждает Рихтер в CLI интерфейсы могут иметь поля и статические методы.


VD>Сомневаюсь. Скорее всего речь шла о свойствах. А статических методов у интерфейса вообще быть не может. Интерфейс же это всегда ссылка.


VD>Где он такое утверждал?


Это не совсем Рихтер, но все же:

For the same reason, an interface cannot have instance fields, because a declaration of a field is the field’s implementation. However, an interface can and must offer implementation of its static members—the items shared by all instances of a type—if it has any. Bear in mind, of course, that the definition of static as “shared by all instances” is general for all types and does not imply that interfaces can be instantiated. They cannot be. Interfaces are inherently abstract and cannot even have instance constructors.

Static members (fields, methods) of an interface are not part of the contract defined by the interface and have no bearing on the types that implement the interface. A type implementing an interface must implement all instance members of the interface, but it has nothing to do with the static members of the interface.


Inside Microsoft .NET IL Assembler / Serge Lidin
... << RSDN@Home 1.1.0 stable >>
Re[20]: Borland и Net
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 26.11.03 13:22
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Serginio1, Вы писали:



VD>Если бы имел сговор с МС, то зачем борланд так усиленно поддрживает Яву? Они делают ставку на яву намного больше чем на Дельфи.

Работа на два лагеря во многих вещах не восбраняется.

VD>В общем, если МС и повзаимствовал у Борланда идеи, но это точно не была Дельфи. Скорее это была Ява. И мне очнь жать если это так. 90% проблем дотнета — это проблемы Явы.


Не знаю Яву по этому судить не могу, но если учесть ее активное использование намного позже Delphi то можно с таким же успехом утверждать, что Ява 50% Delphi. На самом деле у Net с Delphi очень много общего, и влияние Хэйлсберга сильно чувствуется. Кроме JIT компилятора (Хэйлсберг кстати упоминал о ранних версиях Turbo Pascal на байт коде), добавлена сильная поддержка метаданных, которая была но в очень малой степени в Delphi. Структуры объекты есть и в Delphi но по непонятным причинам считаются устаревшими и неиспользуются, итд
И в чем так больше от Явы, чем от Delphi в Net. Поделись пожалуйста. Я как буд то и не слезал с Delphi.
Может в том что первоначально Net позиционируется на Web ????
и солнце б утром не вставало, когда бы не было меня
Re[25]: Borland и Net
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.11.03 14:22
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>В таком случае ты сильно ошибаешься.


Не думаю.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: Borland и Net
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.11.03 14:22
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Это не совсем Рихтер, но все же:


L>

L>For the same reason, an interface cannot have instance fields, because a declaration of a field is the field’s implementation. However, an interface can and must offer implementation of its static members—the items shared by all instances of a type—if it has any. Bear in mind, of course, that the definition of static as “shared by all instances” is general for all types and does not imply that interfaces can be instantiated. They cannot be. Interfaces are inherently abstract and cannot even have instance constructors.

L>Static members (fields, methods) of an interface are not part of the contract defined by the interface and have no bearing on the types that implement the interface. A type implementing an interface must implement all instance members of the interface, but it has nothing to do with the static members of the interface.


L>Inside Microsoft .NET IL Assembler / Serge Lidin


Этому мужику можно верить. Хотя я лично нашел в его книге ошибку.

Кстати, первое предложение как раз говорит о невозможности описания полей в интрефейсе.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: Borland и Net
От: Lloyd Россия  
Дата: 26.11.03 14:33
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Этому мужику можно верить. Хотя я лично нашел в его книге ошибку.


VD>Кстати, первое предложение как раз говорит о невозможности описания полей в интрефейсе.


Мой пост относился к

А статических методов у интерфейса вообще быть не может

... << RSDN@Home 1.1.0 stable >>
Re[20]: Borland и Net
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 26.11.03 14:39
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Serginio1, Вы писали:



S>> Если посмотреть структуру класса TObject


S>> TObject = class

S>> ...................
S>> class function NewInstance: TObject; virtual;
S>>...............................
S>> end;
S>>То увидим изумиттельную статическую виртуальную функцию NewInstance

S>> Может у меня что то с глазами но подобного в C# я не видел.


VD>Естествнно. Дотнету такой идиотизм не нужен. Для создания неизвестных на этапе компиляции типов можно пользоваться возможностями дотнета (Activator).

Ну не говори за весь DotNet. Очень даже привлекательная вещь аля синглтон, с перекрытием в собствееных таблицах методов классов. Т.е. у класса может быть в структуре ссылки на статические методу переопределенные в наследниках а так же и статические поля. Но это действия над классом, а не экземпляром класса, как сейчас. И соответственно можно передавать класс как параметр или Interface.
То есть у каждого класса существует таблица не только VMT но и статических виртуальных методов как в Delphi и статические поля. Чем такая структура неподходит интерфейсам????/
и солнце б утром не вставало, когда бы не было меня
Re[18]: Borland и Net
От: mihailik Украина  
Дата: 26.11.03 16:10
Оценка:
M>>Активатор — это тормозной рефлекшун.

VD>1. Это ядро. Классы в дотнете создаются исключительно ядром.


Activator.CreateInstance — это не ядро. Ты посмотри в Reflector'е, сколько там кода: атрибуты проверяются, биндинги всякие.

VD>2. Создание классов по типу нужно очень редко. И всегда можно воспользоваться фабрикой классов. Создаешь через активатор только фабрику (если уж тебе он кажется очень медленным), а сами классы создаешь через фабрику.


Я не спорю, что можно воспользоваться фабрикой классов. Но в Дельфи это на порядок проще. Только и всего.

M>> А фабрика классов как раз и закрытие недостатка в виртуальных конструкторах. Фабрики классов в Дельфи можно и в тупом стиле сделать, как в C#. Но ввиду удобства виртуальных конструкторов, так никто не делает.


VD>В Дельфи единственным способом создать экземпляр неизвестного класса динамически вроде и вяляется виртуальный конструктор. Или я ошибаюсь?


Да, по крайней мере, это единственный способ, не требующий копаться во внутренностях RTTI, VMT и т.п.

VD> Тогда фабрику тоже прийдется создавать через него.


Почему "придётся"? Если внешние интерфейсы не требуют собственно фабрики, зачем её создавать? Используешь собственно виртуальные конструкторы и никакими фабриками мозги не нагружаешь.

VD>Так что это и есть решение динамической загрузки неизсестных типов.


Угу. Значительно более простое решение, чем фабрики классов.

VD>Резюмирую... Виртуальные конструкторы в Дельфи — это совеобразная замена активатора в дотнете. А описанная фигня нужна только для их использования, никакого приемущества Дельфи не дающая.


Переворачиваешь с ног на голову. Виртуальные конструкторы позволяют решать те же задачи, что и: а) активатор, б) фабрики классов, только типобезопаснее и лучше по скорости.

А кто является чьей заменой — это уже спекуляции. Как по мне, здесь нет предков или потомков — просто разные пути.
... << RSDN@Home 1.1.0 stable >>
Re[20]: Borland и Net
От: mihailik Украина  
Дата: 26.11.03 16:10
Оценка:
VD>Естествнно. Дотнету такой идиотизм не нужен. Для создания неизвестных на этапе компиляции типов можно пользоваться возможностями дотнета (Activator).

Влад, виртуальные конструкторы и виртуальные статические функции — не доморощенное изобретение Борланда. Это вполне уважаемая и известная парадигма, существующая в некоторых ООП-языках. Под всем этим есть соответствующая теоретическая проработка. Какой тут нафиг идиотизм?

S>>То есть построить cсвою фабрику классов


VD>И? Чем не подходит обычная фабрика? Да и Activator? Где недостатки?


Недостатки чего: Активатора или "обычной фабрики"?

Наверное ты сам о них знаешь, если в некоторых случаях используешь одно, а в некоторых — другое.

VD>А если нет, то о каких приемуществах речь?


Это спекуляции. Виртуальные конструкторы проще, типобезопаснее и быстрее активатора. Виртуальные конструкторы проще и типобезопаснее фабрик классов.

VD>И чем это лучше этого:

VD>
VD>Type[] types = newType[] { typeof(Form1), typeof(TextBox) };
VD>IComponent component = (IComponent)Activator.CreateInstance(types[0]);
VD>


1. Кастинг.
2. Скорость.

VD> Я свои наработки хоть завтра могу выложить в Инет.


А что за наработки, интерестно?
... << RSDN@Home 1.1.0 stable >>
Re[20]: Borland и Net
От: mihailik Украина  
Дата: 26.11.03 16:10
Оценка:
VD>В общем, если МС и повзаимствовал у Борланда идеи, но это точно не была Дельфи. Скорее это была Ява.

У Борланда идеи Явы?
... << RSDN@Home 1.1.0 stable >>
Re[21]: Borland и Net
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.11.03 19:37
Оценка: 1 (1) +1
Здравствуйте, Serginio1, Вы писали:

VD>>Если бы имел сговор с МС, то зачем борланд так усиленно поддрживает Яву? Они делают ставку на яву намного больше чем на Дельфи.

S> Работа на два лагеря во многих вещах не восбраняется.

Только ни тут. Да и небыло ее.

S> Не знаю Яву по этому судить не могу,


Вот о том и речь. Спроси у того же АВК (он с Явой работал много). Он тебе подтвердить, что 70% идей дотнета слизано с Явы. По сути 95% дотнета — это Ява + КОМ.

S> но если учесть ее активное использование намного позже Delphi


Не понял этой фразы. Если ты считаешь, что Ява появилась намного позже дельфи, то ты глубоко заблуждаешся. Ява появилась в 96-ом. Дельфи в 95-ом. Причем в 95-ом появилась убогая Дельфи 1. Ява же начала разрабатываться намного раньше и в 96-ом она уже обладала морем приемуществ над Дельфи. В яве уже тогда были интерфейсы, перегрузка методов и другие языковые конструкции отсуствующие в Дельфи вплоть до 3-6 версии.

S> то можно с таким же успехом утверждать, что Ява 50% Delphi.


Скорее наоборот. Ява многое взяла из Смолталка и других ОО-языков. С дельфи ее роднит только общий подход в области поддержки ООП (одиночное наследование).

S> На самом деле у Net с Delphi очень много общего,


Все их общее — это классика ООП. Тогда у них и с С++ очень много общего. Или с КОМ-ом каким. Дв и вообще со всеми ОО-средами.

S> и влияние Хэйлсберга сильно чувствуется.


Ага. В области перетаскивания концепций Явы.

S> Кроме JIT компилятора


Это тоже он придумал?

S> (Хэйлсберг кстати упоминал о ранних версиях Turbo Pascal на байт коде),


Он бы еще первые реализации Васика встпомнил. Там тоже был интерпретатор.

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

В яве сначала использовалась интерпертация байт-кода и ее можно было сравнить с пи-кодам Паскаля. Но после появления ждита сравения стали некорректыми.

S> добавлена сильная поддержка метаданных, которая была но в очень малой степени в Delphi.


В дельфи метаданные были на совсем зачаточном уровне. Это как раз Ява обладала оными свойствами с полна. Особенно Ява 1.2. А дотнет просто развил ее приемущества.

S> Структуры объекты есть и в Delphi но по непонятным причинам считаются устаревшими и неиспользуются


Гы. Крикуны из Борланда даже отсуствие автоматического освобождения памяти в те времена назвали приемущствами ООП. А уж структуры были вообще кромолой. "Как же можно создавать объекты в стеке? Они обязанны быть в хипе!"

S> И в чем так больше от Явы, чем от Delphi в Net.


Там? Очень советую прочесть книжку по Яве. Тогда поймешь, что слизывании дотнета (или Явы) с Дельфи — это глупость.

В дотнете неприкрыто скопированны целые куски. Даже ArrayList — это класс и з Ява 1.2.

Если на что-то и можно указать как на содранное с дельфи, то это на ВинФормс. Но сама дельфи содрала 90% концепций с ВБ. Так что в большинстве случаев дотнет копировал общие конмпонентные подходы.

S> Поделись пожалуйста. Я как буд то и не слезал с Delphi.


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

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

S> Может в том что первоначально Net позиционируется на Web ????


Это тут вообще не причем. Веб и веб-сервисы просто рекламные плакаты.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: Borland и Net
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.11.03 20:52
Оценка:
Здравствуйте, mihailik, Вы писали:

M>У Борланда идеи Явы?


Ну, если дальше своего носа не смотреть, то может это и смешно.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: Borland и Net
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.11.03 20:52
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Ну не говори за весь DotNet. Очень даже привлекательная вещь аля синглтон, с перекрытием в собствееных таблицах методов классов.


Синглтон и так на Шарпе делается в пол пинка.

S>Чем такая структура неподходит интерфейсам????/


Она ненужна.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: Borland и Net
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.11.03 20:52
Оценка:
Здравствуйте, mihailik, Вы писали:

M>Влад, виртуальные конструкторы и виртуальные статические функции — не доморощенное изобретение Борланда. Это вполне уважаемая и известная парадигма, существующая в некоторых ООП-языках.


Примеры плиз.

M> Под всем этим есть соответствующая теоретическая проработка. Какой тут нафиг идиотизм?


Это решение конкретной проблемы. Нантайма нет вот и придумывают разную фигню.

M>Наверное ты сам о них знаешь, если в некоторых случаях используешь одно, а в некоторых — другое.


Это не недостатки. У них просто разные задачи. Фабрики не умеют создавать заранее неизвестный тип. Активатор же в приципе можно использовать и в фабрике.

VD>>А если нет, то о каких приемуществах речь?


M>Это спекуляции. Виртуальные конструкторы проще, типобезопаснее и быстрее активатора.


Естествнно. Потому как менее гибкие. Попробуй создай с их помощью действитешь неизвестный тип. А Акриватором влет. Работать правда придется тоже динамически или код генерить.

M>Виртуальные конструкторы проще и типобезопаснее фабрик классов.


Не фига они не проще и не типобезопастнее.

M>1. Кастинг.


Ну, кастинг. А там нужно еще кучу лишних объявлений сделать. И гибкость ниже.

M>2. Скорость.


Ты проверял? Создание экземпляра идет в ядре на базе рантайм-класса. Обычные объекты создаются точно так же.

Да и применяется активатор там где скорость совершенно не важна. В других случаях более чем достаточно фабрик.

Главное, что фактического приемущетсва нет. А скорость... копирование ссылок в дотнете тоже медленнее чем в Дельфи. Что же поделаешь?

VD>> Я свои наработки хоть завтра могу выложить в Инет.


M>А что за наработки, интерестно?


Да вот была идея сделать компилятор Шарпа с человеческим лицом.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: Borland и Net
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.11.03 20:52
Оценка: -1
Здравствуйте, mihailik, Вы писали:

M>Activator.CreateInstance — это не ядро. Ты посмотри в Reflector'е, сколько там кода: атрибуты проверяются, биндинги всякие.


Вот и посмотри через декомпилятор или в Роторе. Получение из Type Runtimetype и дальше вызов ядра.

M>Я не спорю, что можно воспользоваться фабрикой классов. Но в Дельфи это на порядок проще. Только и всего.


И чем? Коду ровно столько же. Но он не требует лишних синтаксических наворотов.

Да и речь о том, что в Шарпе эта проблема решается. Другим путем но решается. Т.е. это не приемущество.

M>Да, по крайней мере, это единственный способ, не требующий копаться во внутренностях RTTI, VMT и т.п.


А в дотнете нужно где-то копаться? Сравни объем кода требуемый для загрузки некоторого типа из внешней длл-ки в рантайме... Вот где нужно копаться черт знает где. Еще не каждый программист справится с такой задачей. Плюс куча ограничией (библиотеки должны быть особым образом скомпилированы). В дотнете же все чисто (как идеологически, так и в коде).

VD>>Так что это и есть решение динамической загрузки неизсестных типов.


M>Угу. Значительно более простое решение, чем фабрики классов.


Чем оно более простое? Кода болше. Знаний нужно больше. А то, что это будет бысрее никем не доказно.

VD>>Резюмирую... Виртуальные конструкторы в Дельфи — это совеобразная замена активатора в дотнете. А описанная фигня нужна только для их использования, никакого приемущества Дельфи не дающая.


M>Переворачиваешь с ног на голову. Виртуальные конструкторы позволяют решать те же задачи, что и: а) активатор, б) фабрики классов, только типобезопаснее и лучше по скорости.


1. Скорость не является возможностями.
2. Типобезопастность оборотная сторона невозможности работы с заранее неизвестным классом.

M>А кто является чьей заменой — это уже спекуляции. Как по мне, здесь нет предков или потомков — просто разные пути.


Заменой в смысле того, что в дельфи нет явных компонентых технологий позвояющих грузить в рантайме чужой код. А это является неким решением. Для дизайнера форм достаточно и ладно. Активатор же является полноценным решением.

Напомню еще раз речь, шла о том, что кому-то не хвтает отсуствующих в дотнете вещей. Активатор полноценная замена. Сами же объявления в Дельфи ничего не дают. Они нужны только для виртуальных конструкторов.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[26]: Borland и Net
От: Lloyd Россия  
Дата: 26.11.03 23:05
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Не думаю.


Зря.
... << RSDN@Home 1.1.2 beta 1 >>
Re[22]: Borland и Net
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.11.03 05:41
Оценка:
Здравствуйте, VladD2, Вы писали:
L>>

L>>For the same reason, an interface cannot have instance fields, because a declaration of a field is the field’s implementation. However, an interface [can and must offer implementation of its static members—the items shared by all instances of a type—if it has any. Bear in mind, of course, that the definition of static as “shared by all instances” is general for all types and does not imply that interfaces can be instantiated. They cannot be. Interfaces are inherently abstract and cannot even have instance constructors.

L>>Static members (fields, methods) of an interface are not part of the contract defined by the interface and have no bearing on the types that implement the interface. A type implementing an interface must implement all instance members of the interface, but it has nothing to do with the static members of the interface.


VD>Кстати, первое предложение как раз говорит о невозможности описания полей в интрефейсе.

?
... << RSDN@Home 1.1 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[22]: Borland и Net
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.11.03 05:51
Оценка:
Здравствуйте, VladD2, Вы писали:
S>> Поделись пожалуйста. Я как буд то и не слезал с Delphi.
VD>Те кто перешли с Явы вообще заявляют, что это она и есть. И тем не менее дотнет — это новая система впитавшая свойства очень многих других систем. Дельфи с реди них никак не может претендовать на первенство.
оффтоп:
Кто-то из наших эстрадников как-то сказал по телевизору что-то типа "Шлягер — это когда человек слышит песню впервые, а кажется, что где-то уже слышал"
Небесспорное утверждение, конечно, но МС, имхо, добилась чего хотела — разработчики на самых популярных языках программирования чувствуют себя в дотнете как дома. По-моему, это называется успех.
... << RSDN@Home 1.1 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[27]: Borland и Net
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.11.03 08:31
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Зря.

он наверное не вплоть до 99 имеет в виду...
... << RSDN@Home 1.1 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[19]: Borland и Net
От: Dimentiy Россия  
Дата: 27.11.03 08:49
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Еще как увидишь. А out-of-process — это вообще маразм.


Мда-а.... слов нет.