Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Dimonka, Вы писали:
FWP>>>>-На Delphi нет STL D>>Что ж в этом STL такого, чего на Delphi не досягаемо? WH>Нука изобрази аналог на дельфях. WH>
Сортировка, это конечно замечательно, но не так критично.
WH>Что? GC? Reflection? Runtime code generation? Или ты говоришь что окошки похожи? WH>Ну окошки на дельфе рисовать это нормально но писать логику
А логика на Дельфи выглядит, имхо, гораздо более читаемо, чем на Си++, а это тоже немаловажно.
Здравствуйте, FWP, Вы писали:
FWP>Ну зачем считать других глупее себя. Читай еще раз Берем библиотеку, в которой реализована сортировка для нужного типа и все.
Да-да. Пишем свой тип данных, а потом ищем в интернете, не написал ли уже кто-нибудь для него сортировку.
Здравствуйте, FWP, Вы писали:
FWP>Ну зачем считать других глупее себя. Читай еще раз Берем библиотеку, в которой реализована сортировка для нужного типа и все.
В STL реализована сортировка не для нужного мне типа, а для ВСЕХ типов в том числе и еще не созданых.
Почувствуй разницу для ВСЕХ и для КОНКРЕТНОГО.
Другими словами один раз для всех или много раз для каждого.
И тоже для всех STL алгоритмов и контейнеров.
... << RSDN@Home 1.1 alpha 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Dimonka, Вы писали:
D>Сортировка, это конечно замечательно, но не так критично.
Если ты считаешь что в STL есть только сортировка то ты ошибаешься.
STL это набор базовых алгоритмов и структур данных которых хватает на 99% случаев. WH>>Что? GC? Reflection? Runtime code generation? Или ты говоришь что окошки похожи? D>А логика на Дельфи выглядит, имхо, гораздо более читаемо, чем на Си++, а это тоже немаловажно.
Во первых не уходи от вопроса.
Во вторых нука приведи кусок кода не дельфях, а я посмотрю...
... << RSDN@Home 1.1 alpha 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, mihailik, Вы писали:
M>>Френдов-то? Да там все, кто внутри одного файла — френды. WH>Плохо. Френдом должен быть только тот кого френдом назвали, а не все в одном модуле.
Это тоже из серии begin end vs {}. Кстати begin end прикольнее
Поскольку неприкольно описывать 10-ок функций друзьями для объекта. Проще их скидать в один файл.
По поводу STL. Ну сдох у меня дома CD-ROM, Дельфу не могу поставить и что-нибудь изобразить. Но ведь сам должен понимать, что используя указатели можно создать контейнер для произвольного типа данных, что используя функции сравнения можно отсортировать/найти элемент за log в массиве с любыми элементами. С ними же можно реализовать произвольный map. ЕДИНСТВЕННЫЙ минус это функции сравнения вместо перегруженных операторов. Но это тоже не принципиально.
P.S. И где это встречаются программы с такой хитрой логикой? Что прям таки 99% времени на реализауию подобных конструкций уходит?
Hello, mihailik!
You wrote on Thu, 04 Sep 2003 14:51:07 GMT:
m> Дельфи-компилятор может генерировать только PE-формат на выходе. Это m> значит EXE или DLL. У файлов драйверов другой формат.
Этим вообще-то линкер занимается.
m> Соответственно, на Дельфи по любому драйвер не напишешь
Ну если MS'овским editbin OMF'ные объектники конвертнуть в COFF, а потом MS'овским же линкером попробовать собрать LE — может и получится. Хотя пробовать надо, конечно
Best regards,
Sergey.
Posted via RSDN NNTP Server 1.7 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, DOOM, Вы писали:
DOO>По поводу STL. Ну сдох у меня дома CD-ROM, Дельфу не могу поставить и что-нибудь изобразить. Но ведь сам должен понимать, что используя указатели можно создать контейнер для произвольного типа данных, что используя функции сравнения можно отсортировать/найти элемент за log в массиве с любыми элементами. С ними же можно реализовать произвольный map. ЕДИНСТВЕННЫЙ минус это функции сравнения вместо перегруженных операторов. Но это тоже не принципиально.
Вот только у тебя там все будет в злых кастах следовательно не типобезопасно следовательно куча ошибок....
... << RSDN@Home 1.1 alpha 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
M>>Запускаю компилироваться — не работает. WH>Заходишь в студию, создаешь пустой Win32 DLL проект, создаешь cpp фаил, копируешь туда.
M>>Наверное, там ещё кучу всяких makefile и т.п. нужно? Вот так я о том и говорю. WH>Все делает студия. Да и дельфя тоже проектные файлы генерит.
Ничего Дельфи не создаёт. Проект — этот файл на паскале, к примеру тот, что я привёл. Ну, когда формы используются ещё есть DFM.
А в этом случае просто берёшь тот текстик, что я накропал и вызываешь ему "dcc32 myfile.pas". Без всякой среды скоренько компилируется в добротную небольшую DLL.
M>>И всё, ни тебе препроцессорных директив, ни тебе двойных подчёркиваний, ни даже поганенькой ссылки на подключаемые модули. Текст прозрачен и чист, просто хоть в рамочку бери. На C++ так безмятежно не покодируешь.
WH>Вот только когда появляется необходимость в обобщенных контейнерах, в обобщенных алгоритмах, сильных и слабых ссылках,... без оверхеда и со сторогим контолем типов. WH>Тогда в дельфе начинается ад, а в С++ нирвана. Не веришь? Нука изобрази мне обобщенную сортировку на дельфях. На С++ смотри std::sort.
Что есть обобщённая сортировка? TList.Sort, насколько я помню, всё отлично сортировал при помощи пользовательской реализации сравнения.
WH>Или сильные и слабые ссылки см boost::shared_ptr и boost::weak_ptr. И многое другое.
"И многое другое" — это да, тут ты прав. В каждом языке есть своё "многое другое". Но в данном случае я говорил о читабельности и простоте кодирования.
WH>А то что ты написал это из серии begin end vs {}...
Не совсем. Посмотри, сколько в твоём сишном коде "мусорных" словечек типа __declspec или #define. В конце концов те же LPVOID. А код на Дельфе читается без напряга. Каждое слово обозначает именно то, что подразумевается по названию.
Сортировка и в Дельфи есть. Если нужно сортировать объекты некоторого типа, пишем функцию сравнения — и передаём задачу в функции стандартной библиотеки.
Если ты имеешь ввиду именно простую форму записи, тогда да. В этом случае запись на C++ действительно компактнее и проще. Но это частный случай, в реальных программах сишный код наоборот очень забористый.
WH>Заметь объекты разного размера и природы. А тагже мы не получаем никакого оверхеда.
В Дельфе тоже никакого оверхеда. Разве что, возможно, лишний уровень indirection, который в случае с шаблонами, возможно, компилятор исключит.
Ну, это оверхед просто гигантский. Особенно будет заметно на реальных задачах.
WH>Ну окошки на дельфе рисовать это нормально но писать логику
Да уж, логику-то точно в сях писать хреново. Кто потом её читать будет, эту вот логику?
На сях нужно системные примочки делать, всякие критичные места. А логику нужно делать на таком языке, чтоб любой чужой человек прочитал с листа. К примеру, C#, Дельфи. На худой конец, VB.
D>>Сортировка, это конечно замечательно, но не так критично.
WH>Если ты считаешь что в STL есть только сортировка то ты ошибаешься. WH>STL это набор базовых алгоритмов и структур данных которых хватает на 99% случаев.
99% случаев чего?
Если тебя послушать, получается Дельфёвый софт можно сократить в сто раз, введи Борланд в Дельфю шаблоны?
M>>Так я же и говорю — в Дельфи скорость компиляции примерно такая же, как пару раз нажать стрелочку вниз. Даже C# до этой скорости далеко. А уж C++ ни в жизнь не догонит.
VD>Ну, ну. У нас был проектик который компилировался минуту. Отлаживаться было очень не комфортно.
Вот оно, преимущество компилятора Дельфи в чистом виде.
Старый Дельфист, покопавшись в памяти, вспомнил проект, который компилировался аж МИНУТУ!
глянь. WH>И это только цветочки...
Данный пример очень легко решается смотри _DynArrayXXX и typeInfo правда Функцию сравнения нужно присваивать.
Проблема шаблонов в Delphi легко решается через обыкновенную замену (суть в шаблонах та же, только выполняется компилятором) но шаблоны явно не помешали бы. Перегрузка операторов тоже нет. С другой стороны очень много вещей которые компилятор берет на себя в Delphi (Динамические массивы,строки интерфейсы, диспинтерфейсы итд).
Тот же вариант легко решается и через TList, но не совсем красиво.
Я лично считаю, что будущее за Net и спор этот абсолютно бессмысленен и неуместен ввиду их (Native Delphi и VS C++) скорой гибели . Очень интересно посмотреть на Delphi.Net. А вот перспективы (опять же в моем понимании) C++ весьма туманны и ....
И связано прежде всего с выходом огромного количества по архитектуре процессоров да и сама идеалогия Net (отражение, динамическое создание объектов, продуманная структура объектов, единая платформа и языковая независимость) намного прогрессивнее, чем улучшать уже морально устаревшие Native компиляторы и языки на них базирующихся.
m>> Дельфи-компилятор может генерировать только PE-формат на выходе. Это m>> значит EXE или DLL. У файлов драйверов другой формат.
S>Этим вообще-то линкер занимается.
Это в сях — линкер. Устарелая технология.
А в Дельфе никакого линкера нету, тут всё сплошной компилятор делает.
m>> Соответственно, на Дельфи по любому драйвер не напишешь
S>Ну если MS'овским editbin OMF'ные объектники конвертнуть в COFF, а потом MS'овским же линкером попробовать собрать LE — может и получится. Хотя пробовать надо, конечно
Тогда уж лучше "голову" драйвера сделать на сях, а остальное грузить DLL-кой. Загрузить, проинициализировать и в памяти закрепить, чтоб не дай бог не свопанулось.
Хотя всё равно это фигня. Не Дельфёвое это дело — драйвера писать.
Здравствуйте, mihailik, Вы писали:
M>Как будто трудно сделать сортировку на компараторах без шаблонов. Бедные явщики, мучаются
type
my_cool_type=record
w:word;
r1, r2, r3:real;
b:byte;
end;
var
arr_of_integer:array[0..4] of integer;
arr_of_extended:array[0..7] of extended;
arr_of_string:array[0..5] of string;
arr_of_real:array[0..6] of real;
arr_of_my_cool_type:array[0..7] of my_cool_type;
begin{заполнили}
{А тут попрошу отсортировать.}end.
Ты от ответа не уходи ты функцию напиши. Пусть для каждого типа придется писать компатор это ерунда ты напиши сортировку для любых массивов.
... << RSDN@Home 1.1 alpha 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, mihailik, Вы писали:
M>Да уж, логику-то точно в сях писать хреново. Кто потом её читать будет, эту вот логику?
Ты мне это не втирай ладно. Я на паскакале и дельфях кучу кода написал.
Отсутствие автоматических объектов превращает жизнь в ад вернее в try finaly что тоже самое.
... << RSDN@Home 1.1 alpha 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, mihailik, Вы писали:
M>Старый Дельфист, покопавшись в памяти, вспомнил проект, который компилировался аж МИНУТУ!
Если бы ты был в досягаемости программистов которым приходилось мучится с этим, то в живых бы ты не остался.
На С++ компиляция может идти и долше. Но там 1) ошибки выдавали залпом, 2) был рогресс компиляции (а на дельфи он появился позже), 3) небыло психологического привыкания к такому долгому процессу компиляции.
... << RSDN@Home 1.1 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, WolfHound, Вы писали:
WH>Ты мне это не втирай ладно. Я на паскакале и дельфях кучу кода написал.
arr_of_real:array[0..6] of real;
По этой строке это особенно заметно.
WH>Отсутствие автоматических объектов превращает жизнь в ад вернее в try finaly что тоже самое.
Борьба с неопределенным поведением автоматических объектов ничем ни лучше. Читай вашего любимого классика Б.Страуструпа.