Что первее?
От: SilverCloud Россия http://rodonist.wordpress.com
Дата: 23.04.04 19:19
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> В свое время можно было легко обмениваться виртуальными объектами между С++ и Delphi т.к. последовательность описания методов однообразно ложилась в VMT. В COM тоже самое.


AFAIK, в качестве COM-овских интерфейсов была взята уже готовая реализация VMT из MS C++. А Delphi изначально делалась с оглядкой на COM. Так что совместимость по формату VMT между Delphi и C++ — это заслуга именно COM


By the grace of God Almighty
And the pressures of a marketplace
The human race has civilized itself
It's a miracle
Re[12]: мнение о Delphi
От: kuj  
Дата: 23.04.04 20:15
Оценка:
Здравствуйте, Serginio1, Вы писали:

А>>>>В действительности о Delphi, как таковой, можно забыть как о страшном сне. Borland ее развивать не будет. В более-менее серьезных проектах использовать Delphi, в виду убогости Object Pascal и, собственно, VCL, не рационально. Да и зачем, если есть .NET?.


AM>>>Могу допустить убогость VCL, но вопрос в чес убогость Object Pascal?

kuj>>Delphi language? А сравните, например, с .NET-языками, C++, Java, OCaml... Благо, спецификации их доступны в Интернет.
S> Delphi.Net language?
Да особо без разницы. .NET-языки обязаны отвечать определенным требованиям, поэтому существенных различий между ними нету.
S> А если серьезно все проблемы в поверхностном знании этого могучего языка. Помню было сравнение языков в "Программисте" при этом много
Э-э, Delphi language могучий язык? Не смешите мои тапочки!
S> ляпусов было допущено и Виртовские языки весьма неплохо смотрелись а победила там ADA.
Э-э, сколько лет назад это было? По каким критериям сравнивали? Для каких задачей? Хотите, чтоб я вас убедил, что есть класс задач, где оптимальным выбором станет не процедурный, а вполне себе функциональный OCaml, например? А ежели ограничиться сравнением C++/.NET семейство vs Delphi Language, то и тут должно быть все очевидно. Нет?
... << RSDN@Home 1.1.3 stable >>
Re[3]: мнение о Delphi
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 24.04.04 16:54
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>MS официально отказалась от COM в пользу .NET (которая с лихвой покрывает функциональность COM)


Увы пока нет. Многие сервисы, существующие в СОМ+ пока еще либо недоступны дотнетным объектам без использования СОМ, либо убоги.
... << RSDN@Home 1.1.3 beta 2 (Win32NT 5.1.2600.0) >>
AVK Blog
Re[7]: мнение о Delphi
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 24.04.04 16:54
Оценка:
Здравствуйте, VladD2, Вы писали:

S>> И много ли используешь встроенную сериализацию???


VD>А она то каким боком тут? Я ее вообще стараюсь не использовать.


Гы гы, наивные, не используют они . Встроенная сериализация настолько широко используется внутри самого фреймворка, что обойтись без нее в мало-мальски крупных проектах практически невозможно.
... << RSDN@Home 1.1.3 beta 2 (Win32NT 5.1.2600.0) >>
AVK Blog
Re[4]: мнение о Delphi
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 24.04.04 16:54
Оценка: :)
Здравствуйте, Gregory_krovosos, Вы писали:

G_>>>А Дельфи замечательно переваривает большие проекты (скажем, сейчас у меня в проекте 118 юнитов из них 58 форм) — _никаких_ _тормозов_. Это замечательно.

А>>По секрету скажу, что 58 форм и 118 юнитов — это *не*большой проект. Ну разве что средний размер одного юнита у тебя — 1MB

G_>Ну все относительно конечно Мой предыдущий большой дельфийский проект насчитывал более 100 форм. А каков Ваш наибольший проект?

G_>Или это из серии "я видел людей которые видели людей которые видели Ленина"?

Чего, пиписьками меряемся? Легко . В янусе полтора мега плюсовых и шарповских исходников (при том что эти языки лаконичнее паскаля). При том он ни в коем разе не является большим проектом.
... << RSDN@Home 1.1.3 beta 2 (Win32NT 5.1.2600.0) >>
AVK Blog
Re[11]: мнение о Delphi
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 24.04.04 16:54
Оценка:
Здравствуйте, <Аноним>, Вы писали:

VD>>Без приведения типов и на С++ нельзя.

А>В действительности можно, если сильно захотеть. Вопрос в профессиональном опыте, коего Вам, судя по всему, не хватает. Не обессудьте.
VD>>Хотя конечно чем их меньше, тем лучше. Ну, да хорошо спроектированная программа на любом языка старается их не делать. Что же касается стабильности, то тут С++ на последнем месте, так как язык не карантируем типобезопастности в рантайме. Молейшая ошибка и память испорчена...
А>Да-да, вопрос профессионального уровня.

Рекомендую ознакомится с правилами форумов и впредь больше их не нарушать.
... << RSDN@Home 1.1.3 beta 2 (Win32NT 5.1.2600.0) >>
AVK Blog
Re[8]: мнение о Delphi
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.04.04 22:51
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Гы гы, наивные, не используют они . Встроенная сериализация настолько широко используется внутри самого фреймворка, что обойтись без нее в мало-мальски крупных проектах практически невозможно.


Ну, укажи мне на использование стандартной сериализации в том же R#-е. Проект вроде не маленький.
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: мнение о Delphi
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.04.04 22:51
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Чего, пиписьками меряемся? Легко . В янусе полтора мега плюсовых и шарповских исходников (при том что эти языки лаконичнее паскаля). При том он ни в коем разе не является большим проектом.


Ну, уже не маленький. Правда плюсовых там кил 150, не более.
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: мнение о Delphi
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 25.04.04 13:53
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ну, укажи мне на использование стандартной сериализации в том же R#-е. Проект вроде не маленький.


Ну на самом деле не такой уж большой, но пожалуйста. Помнится ты там хотел сборки в отдельный домен грузить, так общение между доменами, оно того, через BinaryFormatter.
... << RSDN@Home 1.1.3 beta 2 (Win32NT 5.1.2600.0) >>
AVK Blog
Re[6]: мнение о Delphi
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 25.04.04 13:53
Оценка:
Здравствуйте, VladD2, Вы писали:

AVK>>Чего, пиписьками меряемся? Легко . В янусе полтора мега плюсовых и шарповских исходников (при том что эти языки лаконичнее паскаля). При том он ни в коем разе не является большим проектом.


VD>Ну, уже не маленький.


Да чего там большого? Чистого времени не более половины человекогода.

VD> Правда плюсовых там кил 150, не более.


72K
... << RSDN@Home 1.1.3 beta 2 (Win32NT 5.1.2600.0) >>
AVK Blog
Re[11]: мнение о Delphi
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 26.04.04 09:59
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>В общем, фигню какую-то говоришь. Единая иерархия никакого отношения к поддержке комонентности н имеет.

Самое прямое. Если в C++ класс ничем не отличается от структуры и лкгко можно дать ссылку объект как в куче так и в стеке.
Кроме того при выделении памяти под объект используется свой манагер памяти (В Net и Яве GC но тоже единый МП).
Кстати при освобождении памяти из выделенной через HeapAlloc в 10 раз медленне чем в МП Delphi.
Единая иерархия дает достаточно просто выделять память иницализироват (в том числе и поддерживаемые интерфейсы http://www.rsdn.ru/Forum/Message.aspx?mid=527260&amp;only=1
Автор: Serginio1
Дата: 02.02.04
) а так же и освобождение памяти.
Мктаклассы (или рефлексия просто метаклассы быстрее и типизированные а в Яве Clas.CreateInstance к рефлексии никакого отношения не имеет),
позволяют лего создавать объекты (constructor Create(AOwner: TComponent); virtual
регистрировать метаклассы

         procedure RegisterClass(AClass: TPersistentClass);
begin
  RegGroups.Lock;
  try
    while not RegGroups.Registered(AClass) do
    begin
      RegGroups.RegisterClass(AClass);
      if AClass = TPersistent then Break;
      AClass := TPersistentClass(AClass.ClassParent);
    end;
  finally
    RegGroups.Unlock;
  end;
end;

 Получать метаклассы
 
[pascal]
 function GetClass(const AClassName: string): TPersistentClass;
begin
  RegGroups.Lock;
  try
    Result := RegGroups.GetClass(AClassName);
  finally
    RegGroups.Unlock;
  end;
end;
[/pascal]


 


[pascal]
 procedure CreateComponent;
  var
    ComponentClass: TComponentClass;
  begin
    try
      ComponentClass := FindComponentClass(CompClass);
      Result := nil;
      if Assigned(FOnCreateComponent) then
        FOnCreateComponent(Self, ComponentClass, Result);
      if Result = nil then
      begin
        Result := TComponent(ComponentClass.NewInstance);
        if ffInline in Flags then
        begin
          Include(Result.FComponentState, csLoading);
          Include(Result.FComponentState, csInline);
        end;
        try
          Result.Create(Owner);
        except
          Result := nil;
          raise;
        end;
      end;
      Include(Result.FComponentState, csLoading);
    except
      if not Recover(Result) then raise;
    end;
  end;
[/pascal]
и загружать персистентные данные и все это встроено в язык.


function InitInheritedComponent(Instance: TComponent; RootAncestor: TClass): Boolean;

  function InitComponent(ClassType: TClass): Boolean;
  begin
    Result := False;
    if (ClassType = TComponent) or (ClassType = RootAncestor) then Exit;
    Result := InitComponent(ClassType.ClassParent);
    Result := InternalReadComponentRes(ClassType.ClassName, FindResourceHInstance(
      FindClassHInstance(ClassType)), Instance) or Result;
  end;

var
  LocalizeLoading: Boolean;
begin
  GlobalNameSpace.BeginWrite;  // hold lock across all ancestor loads (performance)
  try
    LocalizeLoading := (Instance.ComponentState * [csInline, csLoading]) = [];
    if LocalizeLoading then BeginGlobalLoading;  // push new loadlist onto stack
    try
      Result := InitComponent(Instance.ClassType);
      if LocalizeLoading then NotifyGlobalLoading;  // call Loaded
    finally
      if LocalizeLoading then EndGlobalLoading;  // pop loadlist off stack
    end;
  finally
    GlobalNameSpace.EndWrite;
  end;
end;

function InitComponentRes(const ResName: string; Instance: TComponent): Boolean;
begin
  Result := InternalReadComponentRes(ResName, FindResourceHInstance(
    FindClassHInstance(Instance.ClassType)), Instance);
end;

function ReadComponentRes(const ResName: string; Instance: TComponent): TComponent;
var
  HInstance: THandle;
begin
  if Instance <> nil then
    HInstance := FindResourceHInstance(FindClassHInstance(Instance.ClassType))
  else HInstance := 0;
  if InternalReadComponentRes(ResName, HInstance, Instance) then
    Result := Instance else
    raise EResNotFound.CreateFmt(SResNotFound, [ResName]);
end;

function ReadComponentResEx(HInstance: THandle; const ResName: string): TComponent;
var
  Instance: TComponent;
begin
  Instance := nil;
  if InternalReadComponentRes(ResName, HInstance, Instance) then
    Result := Instance else
    raise EResNotFound.CreateFmt(SResNotFound, [ResName]);
end;

function ReadComponentResFile(const FileName: string; Instance: TComponent): TComponent;
var
  Stream: TStream;
begin
  Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
    Result := Stream.ReadComponentRes(Instance);
  finally
    Stream.Free;
  end;
end;



Так в Delphi просто был сделан неиспользуемым packed Class , который мог был по сути аналогом класса в C++, как из нет в Net и Яве.
Единообразие упрощает проектирование среды и поддержки компанентности на уровне компилятора.
Конечно все это можно сделать и в С++ но ручками
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[13]: мнение о Delphi
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 26.04.04 10:06
Оценка: -1
Здравствуйте, kuj, Вы писали:


kuj>Э-э, сколько лет назад это было? По каким критериям сравнивали? Для каких задачей? Хотите, чтоб я вас убедил, что есть класс задач, где оптимальным выбором станет не процедурный, а вполне себе функциональный OCaml, например? А ежели ограничиться сравнением C++/.NET семейство vs Delphi Language, то и тут должно быть все очевидно. Нет?

Ага наверное логичнее сравнивать Delphi/Net/Java vc C++. Так как у Net и у Delphi на много больше схожего и дельфисты в Net и Яве как рыбы в воде, чего не скажешь о сишниках.
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re: Что первее?
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 26.04.04 10:16
Оценка:
Здравствуйте, SilverCloud, Вы писали:

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


S>> В свое время можно было легко обмениваться виртуальными объектами между С++ и Delphi т.к. последовательность описания методов однообразно ложилась в VMT. В COM тоже самое.


SC>AFAIK, в качестве COM-овских интерфейсов была взята уже готовая реализация VMT из MS C++. А Delphi изначально делалась с оглядкой на COM. Так что совместимость по формату VMT между Delphi и C++ — это заслуга именно COM

Разговор не о том что первее, а о сущности интерфейсоа как классов, наследовании и принципам ООП.
А то что M$ устанавливает правила игры, в том числе и на Васике ничего удивительного.
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[10]: мнение о Delphi
От: NoFate Россия  
Дата: 26.04.04 12:09
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Без приведения типов и на С++ нельзя. Хотя конечно чем их меньше, тем лучше. Ну, да хорошо спроектированная программа на любом языка старается их не делать. Что же касается стабильности, то тут С++ на последнем месте, так как язык не карантируем типобезопастности в рантайме. Молейшая ошибка и память испорчена...


А зачем допускать ошибки?! Ошибки должны быть устранены в процессе отладки и тестирования. А по стабильности C++ как раз на первом месте. Хотя, настоящий художник может сделать кистью шедевр, а неуч только загадит холст...
... << RSDN@Home 1.1.3 stable >>
Re[10]: мнение о Delphi
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.04.04 12:45
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Ну на самом деле не такой уж большой,


Да, уже приличный.

AVK> но пожалуйста. Помнится ты там хотел сборки в отдельный домен грузить, так общение между доменами, оно того, через BinaryFormatter.


Т.е. нет все же пока?

Думаю возможно множество проектов в которых не будет нужна стандартная сериализациия или ее там столько что она ни на что не влияет.
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: мнение о Delphi
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.04.04 13:00
Оценка:
Здравствуйте, VladD2, Вы писали:

AVK>> но пожалуйста. Помнится ты там хотел сборки в отдельный домен грузить, так общение между доменами, оно того, через BinaryFormatter.


VD>Т.е. нет все же пока?


Ну так и проект пока что далек от завершения.

VD>Думаю возможно множество проектов в которых не будет нужна стандартная сериализациия или ее там столько что она ни на что не влияет.


Может и возможно, но пока что в реальности мне такого проекта приличных размеров не встречалось.
... << RSDN@Home 1.1.3 stable >>
AVK Blog
Re[14]: мнение о Delphi
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.04.04 13:03
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Ага наверное логичнее сравнивать Delphi/Net/Java vc C++. Так как у Net и у Delphi на много больше схожего и дельфисты в Net и Яве как рыбы в воде,


Судя по вопросам в форуме что то не очень заметно.

P.S. — как человек, который хорошо знает первых три и довольно неплохо последний смею тебя заверить — Дельфи значительно ближе к С++ нежели к дотнету или джаве.
... << RSDN@Home 1.1.3 stable >>
AVK Blog
Re[15]: мнение о Delphi
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 26.04.04 14:17
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


S>> Ага наверное логичнее сравнивать Delphi/Net/Java vc C++. Так как у Net и у Delphi на много больше схожего и дельфисты в Net и Яве как рыбы в воде,


AVK>Судя по вопросам в форуме что то не очень заметно.


AVK>P.S. — как человек, который хорошо знает первых три и довольно неплохо последний смею тебя заверить — Дельфи значительно ближе к С++ нежели к дотнету или джаве.

Смотрим Delphi.Net совместимость с нативной версией 95%. Какой язык еще может позволить такой безболзненный переход ?????
Сколько мучаются с С++ ????
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[14]: мнение о Delphi
От: kuj  
Дата: 26.04.04 18:00
Оценка:
Здравствуйте, Serginio1, Вы писали:

kuj>>Э-э, сколько лет назад это было? По каким критериям сравнивали? Для каких задачей? Хотите, чтоб я вас убедил, что есть класс задач, где оптимальным выбором станет не процедурный, а вполне себе функциональный OCaml, например? А ежели ограничиться сравнением C++/.NET семейство vs Delphi Language, то и тут должно быть все очевидно. Нет?

S> Ага наверное логичнее сравнивать Delphi/Net/Java vc C++. Так как у Net и у Delphi на много больше схожего
Схожего не так уж и много. Коллекции, атрибуты, пространства имен, делегаты, множественное интерфейсное наследование, перегрузка операторов, автоматическое управление памятью, сама по себе компонентная модель и многое другое в .NET пришли отнюдь не из Delphi...
S>и дельфисты в Net и Яве как рыбы в воде, чего не скажешь о сишниках.
Я вот никогда не был "дельфистом", однако, в .NET без проблем ориентируюсь. Дельфисту все же сложнее будет, т.к. ему не известны такие понятия как, например, пространство имен (C++), построение "цепочек" делегатов (C++, мультиметод), атрибуты (C++, атрибутивный COM в ATL)...
... << RSDN@Home 1.1.3 stable >>
Re[15]: мнение о Delphi
От: AndrewK  
Дата: 27.04.04 05:22
Оценка:
kuj>Я вот никогда не был "дельфистом", однако, в .NET без проблем ориентируюсь. Дельфисту все же сложнее будет, т.к. ему не известны такие понятия как, например, пространство имен (C++), построение "цепочек" делегатов (C++, мультиметод), атрибуты (C++, атрибутивный COM в ATL)...

И что с этого. ИМХО, в этом не так сложно разобраться если потребуется.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.