Re[3]: По просьбам трудящихся: Delphi vs C++(VS)
От: Sinclair Россия https://github.com/evilguest/
Дата: 08.09.03 13:51
Оценка:
Здравствуйте, Joker6413, Вы писали:
J>Поэтому в делфе и можно абстрактные классы создавать, это костыль для имитирования поддержки ООП.
Ничего подобного. Для справки: тот самый однопроходный компилятор Delphi выдает warning, обнаруживая прямое конструирование экземпляра абстрактного класса.
А возможность создавать эти экземпляры прямо связана с такой штукой, как указатель на класс. Который есть реализация шаблона "Абстрактная фабрика". В связи с этим, у компилятора нет никакой информации о том, чей ты конструктор вызываешь.
... << RSDN@Home 1.1 beta 1 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[29]: По просьбам трудящихся: Delphi vs C++(VS)
От: ArtDenis Россия  
Дата: 08.09.03 15:00
Оценка: 1 (1) +2
Здравствуйте, FWP, Вы писали:

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



AD>>Мне например, платят не за размер кода, а за результат работы, который выражается в том, что доволен или недоволен AD>заказчик программным продуктом.

FWP>Вот именно! Главное программный продукт. И вот тут-то получается, что на Delphi быстрее и надежнее.Несмотря на все template, smartpointer и т.д.

Каким же это боком? Откуда берётся скорость в написаннии кода? Если это база данных с парой строчек кода, то оно понятно, потыкал мышкой, и всё работает. Но тоже самое можно сделать на C++Builder. Скорость будет такая же. Если же речь идёт о реализации алгоритмов, работающих с большим набором различных данных, то C++ c его шаблонами нет равных. Кстати говоря, smartpointer избавляют от программмиста от гемора с удалением объектов и валидности указателей. Что тоже повышает скорость написания программы.

Если даже рассматривать шаблоны в контексте контейнеров и алгоритмов, то они — уже большой шаг вперёд, по сравнению с возможностями паскаля. А если добавить сюда Александреску и обобщённое программирование, то получается что C++ и Pascal — небо и земля.

Кроме того, Delphi предоставляет программисту такие вольности в приведении типов указателей, что даже программисту на C и не снились. А подобная вольность — источник повышенного количества ошибок.

Так что, FWP, твоё утверждение — скорее самовнушение, и не соответствует истине.

Денис.
... << RSDN@Home 1.1 beta 1 >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[31]: По просьбам трудящихся: Delphi vs C++(VS)
От: WolfHound  
Дата: 08.09.03 18:03
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Еще раз проверь

S>std::iterator_traits<Iter>::value_type midl=*(begin+(end-begin)/2);
Нафига? Я с нетипизироваными адресами (в отличии от некоторых) не работаю.
end-begin возвращает количество элементов. потом оно делится на 2(оптимизатору виднее как делить или смещать он умный) и на результат смещается итератор начала. Полученый итератор разименовается.
Учим мат часть.
... << RSDN@Home 1.1 alpha 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[30]: По просьбам трудящихся: Delphi vs C++(VS)
От: DOOM Россия  
Дата: 10.09.03 05:26
Оценка:
Здравствуйте, ArtDenis, Вы писали:


AD>Кроме того, Delphi предоставляет программисту такие вольности в приведении типов указателей, что даже программисту на C и не снились. А подобная вольность — источник повышенного количества ошибок.


А по-моему я не маленький и мне можно разрешать смотреть на память как я хочу. Это не источник ошибок, а повышение возможностей. Это лучше всяких там шаблонов, поскольку здесь я до конца представляю, что происходит при подобных действиях, а следовательно в случае ошибки я буду грешить не на "Майкрософт", а на свою прогу!

И вообще я уже говорил: юзайте VB — там вообще ничего не надо создавать да удалаять.
Re: По просьбам трудящихся: Delphi vs C++(VS)
От: DOOM Россия  
Дата: 10.09.03 06:17
Оценка:
Приехали граждане... Оказывается в С нет понятия указатель на метод произвольного класса(аналог of object в Дельфи). Что на это скажете?
Re[31]: По просьбам трудящихся: Delphi vs C++(VS)
От: ArtDenis Россия  
Дата: 10.09.03 06:21
Оценка: +2
Здравствуйте, DOOM, Вы писали:

AD>>Кроме того, Delphi предоставляет программисту такие вольности в приведении типов указателей, что даже программисту на C и не снились. А подобная вольность — источник повышенного количества ошибок.

DOO>А по-моему я не маленький и мне можно разрешать смотреть на память как я хочу. Это не источник ошибок, а повышение возможностей. Это лучше всяких там шаблонов, поскольку здесь я до конца представляю, что происходит при подобных действиях, а следовательно в случае ошибки я буду грешить не на "Майкрософт", а на свою прогу!

Почитай-ка вот это: Re[30]: Ты записался в .NET?
Автор: VladD2
Дата: 03.09.03


Влад в своих рассуждениях в чём-то прав. Но тут есть один момент: на C++ можно (и нужно) программировать, не используя небезопасных приведений типов. А в паскале такие приведения типов приходится использовать вне зависимости от желания программиста.

Денис.
... << RSDN@Home 1.1 beta 1 >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[2]: Эффективное использование WTL
От: Евгений Коробко  
Дата: 10.09.03 06:51
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Приехали граждане... Оказывается в С нет понятия указатель на метод произвольного класса(аналог of object в Дельфи). Что на это скажете?


Скажем "Слава богу"!!! Понятие произвольного класса возникает из-за того, что в Delphi существует предок всх объектов.
Однако создание такого самого главного класса — элементарное нарушение ООД. Если нужно, создайте класс-"примесь" и "подмешайте"
его к тем классам, к которым нужно.

Нет, я с дельфями завязал. Сначала кажется, что удобно. VCL хороша, работа с БД, IDE... Но потом это всё вылазит боком.
Во-первых, тормоза. Как в работе с БД, так и просто в перерисовке окон.
Во-вторых, нет STL и вообще типизированных контейнеров
В-третьих, всё API и все библиотеки на C.
В-четвёртых, нет контроля над ситуацией.

Год назад с дуру решил проект делать на Delphi. Готов себя тогдашего убить за дурость. Если бы писал на C++ & WinAPI, всё было бы
уже готово!!!
Евгений Коробко
Re[10]: По просьбам трудящихся: Delphi vs C++(VS)
От: centurn Россия  
Дата: 10.09.03 07:55
Оценка:
Здравствуйте, DOOM, Вы писали:

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


C>> Ты сам-то хоть представляещь себе шутер, написАнный на Делфях? Я говорю, что можно, но только можно ли всерьез воспринимать такую возможность? Кстати, я именно про шутер — какую-нить турновую стратегию довольно нормально можно сделать... А драйвера и операционки тоже на Делфях писАть будем...


DOO>Разница-то в чем???


Да разница, собственно, в том, что драйвер и операционку ты просто никак на делфях не напишешь, принципиально. Ну кроме, возможно, того извращенческого маневра, что тут про драйвера говорили...
А в шутере нужна максимальная производительность, которой в делфях и не пахнет. И дело даже не в качестве компилятора, а в том, что в С++ можно более тонко управлять тем, что тебе сделает компилятор. И на надо платить за то, что тебе не сейчас не нужно — это было и остается чуть ли не самым главным при развитии С++. И главное — не в ущерб функциональности.
Короче, шутер на делфах можно сделать, но на это уйдет намного больше времени, чем на С++, и будет этот шутер похож на слайд-шоу под аккомпанемент жутко свопящего винта.

DOO>Я на Дельфи не только "окошки с клиентами БД" писал. Я, например, писал полноценный сканер портов(ничем не хуже nmap'а) и NetBios сканнер. И утверждаю, что это намного проще чем на сях!


А ты на сях это писАл? Знаешь, я тоже на Делфях писал кой-чего, работающее с NetBios. Во-первых, я задолбался переводить структурки, используемые для общения с NetBios, с С на Pascal (кстати, С-шные структырки были в хелпе по WinAPI, поставляемом с Делфями, других я не нашел). А во-вторых в парочке мест я уже, грязно матерясь, просто сорвался на ассемблерные вставкм, т.к. не хватило терпения воротить все эти конструкции на паскале. И это при том, что тогда моим основным языком был как раз Делфи, а С я знал только "слегка"...

И еще, раз уж меня потянуло кнопки понажимать, выскажусь по поводу, так сказать, общепринятого удобства Делфи в создании GUI. Как я уже сказал, Делфи я знаю дольше С/С++. В основном, правда, еще с 3.0 работал, с 4.0 меньше, а на 5.0 вообще их забросил. Сейчас на работе я в основном делаю редакторы и всякие вспомогательные утилиты для игрушки. Ясное дело, там _очень _ много GUI. Так вот, я бы ни за какие плюшки (кроме _очень_ серьезной прибавки к зарплате) не променял VC на Делфю. Даже если не брать в расчет то, что надо стыковаться с кодом движка, который, ясное дело, на С++, да еще значительная часть кода используется в Plugin'е для 3DMax, у которого SDK... можно догадаться на каком языке. Я не буду по этому поводу приводить особых аргументов, т.к. удобство все-таки понятие чисто субъективное, но еще раз: заметь, что Делфи я знаю дольше, и к С++ приходилось привыкать (кстати, тогда я тоже малость плевался .
И еще мысль: практически не бывает "чистого" GUI, обычно за ним стоит еще нетривиальный код (иначе вообще непонятно, зачем нужен нужен язык программирования).
Re[23]: По просьбам трудящихся: Delphi vs C++(VS)
От: centurn Россия  
Дата: 10.09.03 08:19
Оценка: +1
Здравствуйте, mihailik, Вы писали:

M>Смысл этого примера в том, что компаратор (указатель на функцию сортировки) передаётся в метод TList.Sort, который при помощи компаратора сортирует список.


А можно вопрос? Спасибо.
Что мне делать, если я хочу отсортировать встроенный массив или вообще какой-то свой контейнер? Придумал! Копировать его в этот TList, а потом забирать назад! Прекрасное решение!
Re[2]: По просьбам трудящихся: Delphi vs C++(VS)
От: WolfHound  
Дата: 10.09.03 08:30
Оценка: +1 :)
Здравствуйте, DOOM, Вы писали:

DOO>Приехали граждане... Оказывается в С нет понятия указатель на метод произвольного класса(аналог of object в Дельфи). Что на это скажете?

Нафига?
Ну уж если приспичило то boost::function. А если надо вызывать несколоко функций залпом? Как на дельфях делать будешь? На С++ это boost::signal.
Запомни это не в С++ нет чегото что есть в дельфе это в дельфе нет много чего что есть в С++.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[4]: По просьбам трудящихся: Delphi vs C++(VS)
От: Joker6413  
Дата: 10.09.03 09:57
Оценка:
Здравствуйте, Sinclair, Вы писали:

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

J>>Поэтому в делфе и можно абстрактные классы создавать, это костыль для имитирования поддержки ООП.
S>Ничего подобного. Для справки: тот самый однопроходный компилятор Delphi выдает warning, обнаруживая прямое конструирование экземпляра абстрактного класса.
S>А возможность создавать эти экземпляры прямо связана с такой штукой, как указатель на класс. Который есть реализация шаблона "Абстрактная фабрика". В связи с этим, у компилятора нет никакой информации о том, чей ты конструктор вызываешь.

1. Очень интересно что же создается при конструировании абстрактного класса. vptr то нет...
2. У указателя нет конструктора.
Re[32]: По просьбам трудящихся: Delphi vs C++(VS)
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 10.09.03 10:35
Оценка: :)
Здравствуйте, WolfHound, Вы писали:

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


S>> Еще раз проверь

S>>std::iterator_traits<Iter>::value_type midl=*(begin+(end-begin)/2);
WH>Нафига? Я с нетипизироваными адресами (в отличии от некоторых) не работаю.
WH>end-begin возвращает количество элементов. потом оно делится на 2(оптимизатору виднее как делить или смещать он умный) и на результат смещается итератор начала. Полученый итератор разименовается.
WH>Учим мат часть.

Ну не знаю насчет "некоторых", только сишный код только и пестрит нетипизированными указателями. По поводу Мат части и (оптимизатору виднее как делить или смещать он умный) так лично мне интересней ручками, а то мозги совсем засохнут. Например для size=2^n выравнивание лего решается через Adress = Adress and (cardinal( not (size-1))). Для других dec(address, Adress mod size) и через div и * size.

Пройдусь немного по нахваленным шаблонам. Согласен применение их очень удобно и надеюсь они появятся как в Delphi так и Net особенно для уже разработааных больших классов-шаблонов. Но хочу добавить одну Весчь что Copy-Paste-Replace лет 20 решали проблему шаблонов, но кроме всего прочего получался исходный код, который легко оптимизировался под конкретный тип.

А для С# учту (почему то только + и — n отложились, что адресс увеличивается на размер типа * n как и в Delphi при inc dec для типизированных указателей. Спасибо.
и солнце б утром не вставало, когда бы не было меня
Re[24]: По просьбам трудящихся: Delphi vs C++(VS)
От: mihailik Украина  
Дата: 10.09.03 11:08
Оценка: +1 -2
C> Что мне делать, если я хочу отсортировать встроенный массив или вообще какой-то свой контейнер? Придумал! Копировать его в этот TList, а потом забирать назад! Прекрасное решение!

Встроенных типов не так много, легче простого написать небольшую библиотечку с функциями типа SortIntegerArray и т.п.

Или крутизна шаблонов как раз и заключается в работе со встроенными типами? Игрушечки какие-то

Вот тебе тоже вопрос на тему как применить микроскоп для забивания гвоздей. Как в C++ отсортировать виндовый SafeArray, причём в режиме thread-safe?
... << RSDN@Home 1.1 beta 1 >>
Re[33]: По просьбам трудящихся: Delphi vs C++(VS)
От: WolfHound  
Дата: 10.09.03 11:15
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Ну не знаю насчет "некоторых", только сишный код только и пестрит нетипизированными указателями.

А С и использование кривыми руками С++ тут причем? При правильной работе в С++ нетипизированая память используется только при работе с оочень низкоуровневым API
S>По поводу Мат части и (оптимизатору виднее как делить или смещать он умный) так лично мне интересней ручками, а то мозги совсем засохнут. Например для size=2^n выравнивание лего решается через Adress = Adress and (cardinal( not (size-1))). Для других dec(address, Adress mod size) и через div и * size.
Мне архитектурных заморочек хватает выши крыши.

S> Пройдусь немного по нахваленным шаблонам. Согласен применение их очень удобно и надеюсь они появятся как в Delphi так и Net особенно для уже разработааных больших классов-шаблонов. Но хочу добавить одну Весчь что Copy-Paste-Replace лет 20 решали проблему шаблонов, но кроме всего прочего получался исходный код, который легко оптимизировался под конкретный тип.

Ну и кто тебе сказал что нельзя при использовании шаблонов настроить на конкретный тип? А что касается 20 лет там чегото решал то ИМХО больше проблем чем пользы бало. Ну сам подумай написал десяток алгоритмов на 100-200 строк раскопировал каждый на десяток типов, а потом нашол маленькую ошибку и давай исправлять... пока будешь исправлять еще наделаешь....

Copy-Paste-Replace
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[25]: По просьбам трудящихся: Delphi vs C++(VS)
От: WolfHound  
Дата: 10.09.03 11:35
Оценка: +1
Здравствуйте, mihailik, Вы писали:

C>> Что мне делать, если я хочу отсортировать встроенный массив или вообще какой-то свой контейнер? Придумал! Копировать его в этот TList, а потом забирать назад! Прекрасное решение!

M>Встроенных типов не так много, легче простого написать небольшую библиотечку с функциями типа SortIntegerArray и т.п.
Да а потом SortMyCoolType1Array, SortMyCoolType2Array, SortMyCoolType3Array,...
А потом нам будет нужен бинарный поиск по отсортированому массиву, а потом удаление элементов при выполнение какого либо условия,...
M>Или крутизна шаблонов как раз и заключается в работе со встроенными типами?
Не со встроеными, а со всеми.
M>Игрушечки какие-то
Эти игрушеччки сокращают размер кода в разы и значительно повышают надежность. Отсутствие возможностей для реализации элементарных смартпоинтеров использование которых не требует каких либо телодвижений и накладных расходов просто убивает.
Ну не возможно в таких условиях работать. Каменный век.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[5]: По просьбам трудящихся: Delphi vs C++(VS)
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.09.03 11:36
Оценка:
Здравствуйте, Joker6413, Вы писали:

J>1. Очень интересно что же создается при конструировании абстрактного класса. vptr то нет...

Ну куда бы она делась? Другое дело, что в слоты абстрактных методов записан адрес специальной процедурки из модуля System. См. здесь
Автор(ы): Антон Злыгостев
Дата: 18.02.2003
Данная статья описывает метод получения дополнительной информации при вызове абстрактного метода во время выполнения. В Delphi такой вызов технически возможен и является ошибкой.
Стандартная библиотека лишь регистрирует факт возниконовения этой ошибки, не предоставляя никой информации о контексте. Предлагаемый метод позволяет выяснить имя класса и номера слотов VMT, соответствующих абстрактным методам.
.
J>2. У указателя нет конструктора.
Ну куда бы он делся? Если в классе задекларировать виртуальный конструктор, то его можно будет вызывать по указателю на класс.
... << RSDN@Home 1.1 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[6]: По просьбам трудящихся: Delphi vs C++(VS)
От: Joker6413  
Дата: 10.09.03 11:53
Оценка:
Здравствуйте, Sinclair, Вы писали:

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


J>>1. Очень интересно что же создается при конструировании абстрактного класса. vptr то нет...

S>Ну куда бы она делась? Другое дело, что в слоты абстрактных методов записан адрес специальной процедурки из модуля System. См. здесь
Автор(ы): Антон Злыгостев
Дата: 18.02.2003
Данная статья описывает метод получения дополнительной информации при вызове абстрактного метода во время выполнения. В Delphi такой вызов технически возможен и является ошибкой.
Стандартная библиотека лишь регистрирует факт возниконовения этой ошибки, не предоставляя никой информации о контексте. Предлагаемый метод позволяет выяснить имя класса и номера слотов VMT, соответствующих абстрактным методам.
.


То есть реализации методов нет но сконструировать можно, хоть указывает черт знает куда но можно использовать? Так в C еще проще было пишу void *ptr = 0; и опа! у меня создан объект абстрактного класса? Могу его пользовать...

J>>2. У указателя нет конструктора.

S>Ну куда бы он делся? Если в классе задекларировать виртуальный конструктор, то его можно будет вызывать по указателю на класс.

Что за бред? Ты вообще понимаешь что такое конструктор? И что за указатель на класс? Ты про метакласс говоришь или все таки про объект класса?
Re[34]: По просьбам трудящихся: Delphi vs C++(VS)
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 10.09.03 11:55
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


S>> Пройдусь немного по нахваленным шаблонам. Согласен применение их очень удобно и надеюсь они появятся как в Delphi так и Net особенно для уже разработааных больших классов-шаблонов. Но хочу добавить одну Весчь что Copy-Paste-Replace лет 20 решали проблему шаблонов, но кроме всего прочего получался исходный код, который легко оптимизировался под конкретный тип.

WH>Ну и кто тебе сказал что нельзя при использовании шаблонов настроить на конкретный тип? А что касается 20 лет там чегото решал то ИМХО больше проблем чем пользы бало. Ну сам подумай написал десяток алгоритмов на 100-200 строк раскопировал каждый на десяток типов, а потом нашол маленькую ошибку и давай исправлять... пока будешь исправлять еще наделаешь....

Но если я захотел изменить (добавить) функциональность для конкрентого типа, которая для других типов не нужна ????? Есть в шаблонах наследование ???
Объясню подробнее. Есть база 1С. На основании метаданных можно построить объекты для прямого доступа к файлам опирающихся на несколько связанных таблиц от базового объекта. Решение через формирование исходников есть http://www.1c.hippo.ru/cgi-bin/predownl.cgi?id=2019.
Как такую проблему можно решить через шаблоны????
Это не "Понты" а практический вопрос, т.к. по понятной причине не имею с ними практики. Заранее благодарен за ответ.
WH>Copy-Paste-Replace
и солнце б утром не вставало, когда бы не было меня
Re[25]: По просьбам трудящихся: Delphi vs C++(VS)
От: Sergey Россия  
Дата: 10.09.03 12:03
Оценка:
Hello, mihailik!
You wrote on Wed, 10 Sep 2003 11:08:07 GMT:

m> Вот тебе тоже вопрос на тему как применить микроскоп для забивания

m> гвоздей. Как в C++ отсортировать виндовый SafeArray, причём в режиме
m> thread-safe?


Замечательный вопрос А как его вообще отсортировать, если часть объектов, что в нем лежат, могут оказаться многомерными массивами, часть — указателями на объекты (IDispatch), а остальные — типа currency

Best regards,
Sergey.
Posted via RSDN NNTP Server 1.7 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[7]: По просьбам трудящихся: Delphi vs C++(VS)
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.09.03 12:16
Оценка: +1
Здравствуйте, Joker6413, Вы писали:

J>Что за бред? Ты вообще понимаешь что такое конструктор? И что за указатель на класс? Ты про метакласс говоришь или все таки про объект класса?

Я тебе очень рекомендую для прочтения Object Pascal Reference из комплекта Delphi. Тогда тебе станет понятно, о чем идет речь. Нельзя слепо применять термины в трактовке одного языка к другому языку. То, что в С++ не бывает виртуальных конструкторов и нет понятия "указатель на класс", не есть универсальное свойство ООП.
... << RSDN@Home 1.1 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.