Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Религиозные войны > Delphi >> C++


Автор: mr666 24.8.2006, 23:16
Вот подумывал занятся C++, т.к смотрю дельфи мрачное будущее. Стоит ли вобще переходить на C++?
Интересно кто зделал такой же выбор пожелел или нет? Или вобще Лучше изучать два языка....? 

Автор: Fedia 24.8.2006, 23:38
А переходи. Delphi никого не держит насильно.
ЗЫ: подобных веток в инете куча. Однозначного ответа не получишь, т.к. провидцев несколько штук на миллиарды человек и здесь они скорее всего не водятся  smile

Автор: Palladin 24.8.2006, 23:51
Знать нужно и то и то, главное чтоб ты эти языки действительно ЗНАЛ smile 

Автор: Alexeis 25.8.2006, 00:28
  Можно почитать книжку про KOL . Сам автор этий библиотеки брослил програмировать на С++ и начал на делфи. Причем описывает много достоинст делфи по сравнению с С++
Главный недостаток делфи в том, что на нем ни кто не занимается системным програмированием и соответственно для него нет документации. Это оч. заметно на некоторых компонентах. Просто берут С++ аналоги компилируют объектные файлы на билдере, делают делфийскую обертку. 

Цитата(mr666 @  24.8.2006,  23:16 Найти цитируемый пост)
Или вобще Лучше изучать два языка....?

Не лучше а обязательно знать хоть основы с++. А еще лучше знать 3 язык, например JAVA. Он никогда не помешает.

Автор: Snowy 25.8.2006, 09:36
mr666, если тебя интересует коммерческая привлекательность языка программирования,
тогда сразу на C#.
Насчёт дельфи ты загнул.
В ближайшем будущем позиции дельфей вряд ли изменятся в худшую сторону.
А вот в лучшую - очень могет быть.

Автор: Bulat 25.8.2006, 11:38
Цитата(Snowy @  25.8.2006,  09:36 Найти цитируемый пост)
А вот в лучшую - очень могет быть.

Не знаю, то что в худшую не изменится - точно, а вот в лучшую, пока в ближайшее будущее не видно, или я только чего-то не знаю  smile 

Сам перебежал delphi -> C++ -> java  smile 

Автор: LSD 25.8.2006, 11:58
Цитата(Snowy @  25.8.2006,  10:36 Найти цитируемый пост)
А вот в лучшую - очень могет быть.

А основания для этого какие?

Автор: Snowy 25.8.2006, 12:29
Цитата(LSD @  25.8.2006,  11:58 Найти цитируемый пост)
А основания для этого какие?
А это уже тема для другого разговора.
Вкратце:
- Дельфи перестал быть второстепенным продуктом
- Новая политика по представлению эконом версий
- Выход на платформу PPC
Вобщем Delphi просто существовал несколько лет почти без развития.
А сейчас за него основательно решили взяться.

Автор: LSD 25.8.2006, 12:33
Цитата(Snowy @  25.8.2006,  13:29 Найти цитируемый пост)
- Дельфи перестал быть второстепенным продуктом

Для кого перестал?

Автор: Snowy 25.8.2006, 12:39
Для Борланда, иссесно.

Автор: mr666 25.8.2006, 21:27
Слышал что Борлан пытается продать delphi/

alexeis1, Есть сцылка?

Автор: bagira 25.8.2006, 23:18
Пожалуй, перенесу в "Религиозные войны" 

Автор: SergeCpp 26.8.2006, 01:27
http://www.bitwisemag.com/copy/archives/news/news2006.html

Борланд собирается продать часть бизнеса связанную с ИДЕ, включая Borland Developer Studio (Delphi®, C++Builder®, C#Builder®) и JBuilder®.

http://rsdn.ru/Forum/?mid=1669259

Автор: Snowy 26.8.2006, 10:36
Цитата(mr666 @  25.8.2006,  21:27 Найти цитируемый пост)
Слышал что Борлан пытается продать delphi/
Это очень старая "новость", которой уже полинета задолбали.
Ничего они не продают.
Просто выделяют разработку IDE и компиляторов в отдельную фирму.
Делается именно для того, чтобы эта фирма занималась разработкой, т.к. дельфи потому и худел некоторое время, потому что разработчиков перекидывали на "более важные" проекты.
Теперь же делят борланд на 2 фирмы именно из-за того, чтобы компиляторы не страдали в пользу систем управления. Это уже два разных направления. Поэтому вполне логично разделиться. Но интеграция продуктов будет, естественно, сохранена.
Именно про это я и говорю, сказав, что дельфи станет основным продуктом компании. Правда название этой компании пока не известно...
Что касается собственности, скореее всего произойдет переоценка акций борланда, акционеры получат акции новой фирмы в пропорции владения акций борланда. Какую-то часть пакета получит сам Борланд.
Вобщем о продаже реци не идёт. Возможны сторонние инвестиции, но это тоже не продажа.

Автор: mr666 26.8.2006, 19:20
Snowy, Сегодня купил себе делфи 2006, так вот всё бы хорошо а вот любимого ctrl+space (combo_box с функциями и всякой елудой) непоявляется. Я знаю что она там есть, но в опциях уже надоело копатся... скажеш как её врубить?
Ещё приобрёл MS VISUAL Studio 2003 хочу попробывать. Думаю C++ стоит учить так для подстраховки. Я вот что боюсь - по окончании инста если возьмут на работу программером, то в большенстве фирм стоят сишки.

Автор: Exception 27.8.2006, 10:34
Ну, извините, некорректно сравнивать эти языки.
Delphi - не очень в последнее время развивающийся язык, который очень даже годится для построения Windows-приложений (Kylix вроде не прижился). Обычно программки Delphi напрямую взаимодействуют с системой.
С++ - куда более мощный язык для решения задач ОЧЕНЬ разного уровня, но эффективное написание на нём требует куда более высокой квалификации.

Автор: MAKCim 27.8.2006, 17:01
Цитата

Обычно программки Delphi напрямую взаимодействуют с системой.

это как?

Автор: Exception 27.8.2006, 18:18
Ну я имею в виду -- там обычно не абстракция рулит, а прямые вызовы WinAPI, что несколько раздражает smile . Эдакая смесь VCL + WinAPI.

Добавлено @ 18:21 
Понимаешь, из кирпичей ты быстро построишь дом, но не построишь памятник или самолёт. А из металла ты можешь построить всё, вопрос в стоимости. Только вот кирпичами строить проще.
Думаю, не стоит пояснять, что я считаю металлом, а что кирпичами в моей неуклюжей аналогии.

Автор: Romikgy 27.8.2006, 18:30
Цитата(Exception @  27.8.2006,  17:18 Найти цитируемый пост)
Эдакая смесь VCL + WinAPI.

имхо VCL это есть обертка для WinAPI
Цитата(Exception @  27.8.2006,  17:18 Найти цитируемый пост)

Понимаешь, из кирпичей ты быстро построишь дом, но не построишь памятник или самолёт. А из металла ты можешь построить всё, вопрос в стоимости. Только вот кирпичами строить проще.

из кирпичей также можно постоить монументы (памятники) smile с самолетом сложнее , но имхо не точная аналогия

Автор: Quadr0 27.8.2006, 18:35
...

Автор: Quadr0 27.8.2006, 18:55
...

Автор: MAKCim 27.8.2006, 20:23
Цитата

Ну я имею в виду -- там обычно не абстракция рулит, а прямые вызовы WinAPI, что несколько раздражает smile . Эдакая смесь VCL + WinAPI.

в основе любой абстракции лежат более низкоуровневые вещи
на то она и абстракция, чтобы их скрывать
Цитата

Правда у плюсов есть неоспоримое преимущество - наличие объёмной технической документации. Именно поэтому на Delphi ОС или драйвер нормально не напишешь.

дело не в доках, а в средствах, которые предоставляет язык и эффективности их применения

Автор: Snowy 27.8.2006, 21:51
Exception, gповсем пунктам - нет!
Твои высказывания начинают несколько раздражать.
Утверждать то, чего не знаешь - ниже уровня профессионала.
Даже комментировать этот бред не хочу.

Автор: LSD 27.8.2006, 22:00
На C++ ориентированны многие прикладные API. Например попробуйте написать JNI функцию на Delphi.

Автор: Exception 27.8.2006, 22:20
Snowy, а можно чуть более развёрнуто? Это лично моё мнение, я нигде ничего не утверждал и вообще мне было бы весьма интересно узнать, в чём именно я ошибаюсь. Буду премного благодарен, если разложишь мои ошибки по полочкам, тебе это должно быть максимум 5 минут smile .
Когда читаешь мои высказывания, обращай внимание на слова в основном, обычно и похожие.

Автор: Snowy 27.8.2006, 22:42
Цитата(Exception @  27.8.2006,  18:18 Найти цитируемый пост)
Ну я имею в виду -- там обычно не абстракция рулит
Зависит от целей. Абстракция - инструмент. Его можно либо применять, либо нет.
В Delphi абстракция и вся ООП модель на очень высоком уровне.
А RTTI вещь вообще гениальная.

Цитата(Exception @  27.8.2006,  18:18 Найти цитируемый пост)
а прямые вызовы WinAPI, что несколько раздражает  . Эдакая смесь VCL + WinAPI.
Вся винда построена на WinAPI. Всё остальное - обёртки над ним.
VCL - одна из таких мощных обёрток. В основе неё лежит всё тот же WinAPI.
Никто никого не заставляет пользоваться WinAPI напрямую. Можно или взять готовую библиотеку или написать самому.
Прямой вызов API функций - возможность, а не обязанность.

Цитата(Exception @  27.8.2006,  10:34 Найти цитируемый пост)
Ну, извините, некорректно сравнивать эти языки.
Отчегож. Некорректно сравнивать библиотеки. А языки очень даже можно сравнивать.
Сам код свободно конвертируется туда и обратно.
А, если ещё и библиотеки одинаковые, как в случае с C++ Builder...

Цитата(Exception @  27.8.2006,  10:34 Найти цитируемый пост)
Delphi - не очень в последнее время развивающийся язык
Отчегож? В последнее время как раз довольно таки развивающийся.

Цитата(Exception @  27.8.2006,  10:34 Найти цитируемый пост)
Обычно программки Delphi напрямую взаимодействуют с системой.
Обычно это зависит от целей.
Delphi предоставляет самый широкий набор возможностей.
От самого низкого уровня, до самого высокого.
Что будет использовать программист - это уже его выбор.

Цитата(Exception @  27.8.2006,  10:34 Найти цитируемый пост)
С++ - куда более мощный язык для решения задач ОЧЕНЬ разного уровня
Delphi не менее мощный язык, подходящий для задач любого уровня.
Назови хоть что-нибудь, что нельзя реализовать на Delphi, а можно на C++.

Цитата(Exception @  27.8.2006,  10:34 Найти цитируемый пост)
но эффективное написание на нём требует куда более высокой квалификации.
Потому что больше граблей и возможностей сделать ошибку.

Delphi - очень мощный язык, позволяющий делать любые вещи. Имеет самый разнообразный набор возможностей. Многие вещи просто гениальны.
А вот КАК писать - выбор программиста.
Просто не система говорит программисту как реализовывать, а программист системе. Это его личтое дело. А система лишь предоставляет возможности любого уровня.

Добавлено @ 22:53 
Я всё это к тому, что не нужно засирать язык, о возможностях которого мало знаешь.
У меня тоже есть, что сказать на тему C#, но я этого не делаю, зная, что 1 - могу оказаться неправ, 2 - язык, имеющий популярность явно имеет массу достоинств, 3 - просто неприлично плевать в чужой огород.

Автор: Exception 27.8.2006, 23:01
А я плюю smile ? Я же вроде ничего плохого не сказал.
Итак, мы понимаем разные вещи под Delphi. Я говорю не о синтаксисе (хотя вроде как шаблонов в дельфи ещё нет?), а о конкретной реализации Borland Delphi для Win32, как о наиболее используемой под термином "Delphi". Мне показалось или за последние годы в Delphi обновлялась только поддержка .NET?

Автор: Void 27.8.2006, 23:18
Snowy, в целом согласен, но не могу удержаться smile
Цитата(Snowy @  28.8.2006,  00:42 Найти цитируемый пост)
А RTTI вещь вообще гениальная.

с ехидцей 
Она быть может гениальная по сравнению с тем убожеством, что есть в С++, но механизмам рефлексии в Java/.NET ничего существенного противопоставить не может. Да, да, предвидя замечания: одним из главных архитекторов .NET был некто Хайльсберг, это мы знаем smile
Что касается самой идеи интроспективных программ, то она была реализована в 1982 Брайаном Смитом (диалект 3-LISP) и в дальнейшем вылилась в CLOS и MOP. Где в то время был Delphi…
Первая промышленная (дурацкий и расплывчатый термин, но какой есть) реализация — может быть, доказательствами или опровержениями не располагаю. Но вот эпитета «гениальная» в моих глазах не заслуживает.

Автор: Snowy 27.8.2006, 23:25
Цитата(Exception @  27.8.2006,  23:01 Найти цитируемый пост)
Итак, мы понимаем разные вещи под Delphi.
А как можно понимать по разному?
Delphi это большая единая система. Можно конечно обсуждать отдельные части, но зачем вдаваться в детали?

Цитата(Exception @  27.8.2006,  23:01 Найти цитируемый пост)
Я говорю не о синтаксисе (хотя вроде как шаблонов в дельфи ещё нет?)
Смотря, что считать под шаблонами...
Синтаксис - это по сути pascal. Да, в дельфи он давно уже продвинулся намного дальше, относительно стандарта.
Но тот же FreePascal совместим по синтаксису.

Цитата(Exception @  27.8.2006,  23:01 Найти цитируемый пост)
о конкретной реализации Borland Delphi для Win32, как о наиболее используемой под термином "Delphi".
Можно и так.
Я, правда всё ещё сижу на версии 7.0 от 2002 года - нет пока времени осваивать всё то новое, что появилось в версии 2006.

Цитата(Exception @  27.8.2006,  23:01 Найти цитируемый пост)
Мне показалось или за последние годы в Delphi обновлялась только поддержка .NET?
Показалось. Просто .NET наиболее заметен - работа в этом направлении проделана огромная.
Вообще версия 2006 показывает, что работа в направлении дельфи сильно активизировалась.

Цитата(Exception @  27.8.2006,  23:01 Найти цитируемый пост)
А я плюю  ?
Это образно. Можно сказать "катишь бочку", крошишь батон и т.п. smile

Добавлено @ 23:31 
Цитата(Void @  27.8.2006,  23:18 Найти цитируемый пост)
Она быть может гениальная по сравнению с тем убожеством, что есть в С++, но механизмам рефлексии в Java/.NET ничего существенного противопоставить не может.
Отчегож. При грамотном инкапсулировании вполне.
Может возможности не такие мощные, как в Java/.NET, но, думаю, вполне достаточные.

Автор: Quadr0 27.8.2006, 23:45
...

Автор: Romikgy 28.8.2006, 08:52
Цитата(Quadr0 @  27.8.2006,  22:45 Найти цитируемый пост)
# Встроенный асм. Тут ключевое встроенный. То есть не надо геморроиться со всякими линкерами, компиляторами и учить синтаксис их командных строк. Хоть в теле процедуры, хоть отдельным методом реализуешь любую вставку на ассемблере для какой-нибудь критичной рутины, которую нормально написать на языке высокого уровня нельзя (т.е. можно, но компилятор и оптимизатор такую чушь выдадут в результате, что диву даёшься).
# Множественное наследование интерфейсов.
# Удобные директивы компиляции. Честно скажу, что не знаю есть ли таковой аналог в плюсах и шарпе.
# Сабклассинг (Т.е. именно такой, какой он реализован в Delphi).
# ...


Quadr0, это все есть и в плюсах (по крайней мере)

Имхо 
Цитата(Quadr0 @  27.8.2006,  22:45 Найти цитируемый пост)
Серьёзный графический движок

вроде никто против этого не выступает, т.е. имхо это можно реализовать (это я так понимаю или DirectX или OpenGL, дік вроде его реализуют  на дельфях)
Цитата(Quadr0 @  27.8.2006,  22:45 Найти цитируемый пост)
драйвер 

также пишут без проблем
Цитата(Quadr0 @  27.8.2006,  22:45 Найти цитируемый пост)
ОС на Delphi 

вот тут , уровень немного другой, имхо дельфи это всетаки визуальная среда разработки заточеная под Вынь, но если взять его предшествиника Паскаль , то имхо можно будить замутить свою ОС

PS Аж страшно влазить такие монстры спорят о языках уфффф smile

Добавлено @ 09:04 
И еще из вкусностей smile
У С++ :
есть шаблоны,
есть перегрузка операторов
есть множественное наследование не только интерфейсов
У Дельфи:
есть прекрасная (имхо) работа со строками TStringList (просто класс smile)
есть множества

да и еще можно добавить к двум языкам много чего smile

Автор: LSD 28.8.2006, 10:06
Цитата(Quadr0 @  28.8.2006,  00:45 Найти цитируемый пост)
Java Native Interface? Не понимаю, что за JNI функция?

Он самый. Более корректно называть подобные функции native, но поскольку они все пишутся с использованием JNI, то можно их и так обозвать, большой ошибки не будет.

Автор: MAKCim 28.8.2006, 10:06
Цитата

есть множественное наследование не только интерфейсов

интерфейсов в С++ нет  smile  (хотя они ему и не нужны  smile )
Цитата

есть прекрасная (имхо) работа со строками TStringList (просто класс smile)
есть множества

а чем std::string, std::set хуже?
Цитата

Отчегож? В последнее время как раз довольно таки развивающийся.

примеры?
Цитата

Потому что больше граблей и возможностей сделать ошибку.

Дело не в этом, сам язык гораздо сложнее, а ошибку сделать можно везде и на чем угодно.
Цитата

но механизмам рефлексии в Java/.NET ничего существенного противопоставить не может.

Некоректно сравнивать их, потому как Java/.NET(C#) работают по другому принципу
Цитата

Я вот не понимаю smile. Шаблоны это что, камень преткновения что ли? Если в языке есть шаблоны, то он хороший, если нет, то выкинь ты это дерь он плохой?

Отчасти, шаблоны - возможность писать меньше кода, использовать обобщенные алгоритмы для работы с разными типами данных, выделение многих ошибок на этапе компиляции и т. д. Тут кстати никто и не говорил, что Delphi д.....
просто наличие шаблонов - преимущество С++

Автор: Quadr0 28.8.2006, 11:26
...

Автор: Romikgy 28.8.2006, 11:26
Цитата(MAKCim @  28.8.2006,  09:06 Найти цитируемый пост)
а чем std::string, std::set хуже?

имхо хуже smile

Автор: SergeCpp 28.8.2006, 11:49
Цитата(Quadr0 @  28.8.2006,  14:26 Найти цитируемый пост)
В плюсах ты вот такое не напишешь

Код
__forceinline DWORD rdtsc()
{
    __asm rdtsc // edx:eax
}

void __stdcall BackTick( HWND, UINT, UINT, DWORD )
{
    DWORD cpu_in( rdtsc() );

    //...

    g_cpu[ CPU_BACK ] = rdtsc() - cpu_in;
}

Код
__asm inc diag_regmatch         // diag_regmatch++ accesses memory TWICE

Код
BOOL IsQuiteOld( const FILETIME& time )
//
// TRUE if time is Older than now  by at least QUITE_OLD min
//         now  is Newer than time by at least QUITE_OLD min
//
{
    FILETIME now;

    GetSystemTimeAsFileTime( &now );

    long  now_newer_hi;
    DWORD now_newer_lo;

    __asm
    {
        mov  eax, now.dwLowDateTime
        mov  edx, now.dwHighDateTime

        mov  ebx, time
        sub  eax, [ebx].dwLowDateTime
        sbb  edx, [ebx].dwHighDateTime

        mov  now_newer_lo, eax
        mov  now_newer_hi, edx
    }

    // 0xFFFFFFFF ns > 429 sec > 7 min

    return now_newer_hi > 0 || now_newer_hi == 0 && now_newer_lo > (DWORD)QUITE_OLD * FTIME_MIN;
}

Код
BOOL IsSynced()
{
    BOOL src_older( FALSE );
    UINT time_diff;

    __asm
    {
        mov  eax, g_SrcTime.dwLowDateTime
        mov  edx, g_SrcTime.dwHighDateTime

        sub  eax, g_DstTime.dwLowDateTime
        sbb  edx, g_DstTime.dwHighDateTime

        jns  positive_diff
        inc  src_older  ; TRUE
        mov  ebx, eax
        mov  ecx, edx
        xor  eax, eax
        xor  edx, edx
        sub  eax, ebx
        sbb  edx, ecx

    positive_diff:
        jz   small_diff ; flags by edx
        xor  eax, eax
        dec  eax        ; big diff

    small_diff:
        mov  time_diff, eax
    }

    time_diff = time_diff >= g_SyncTimeEq * FTIME_MS;

    switch( g_SyncMethod )
    {
    case METHOD_NEWER :
        return !time_diff ||  src_older;

    case METHOD_OLDER :
        return !time_diff || !src_older;

    case METHOD_DIFFERENT :
        return !time_diff && g_SrcSize == g_DstSize;

    default:
        return TRUE; // invalid Method - always Sync'ed
    }
}

Автор: MAKCim 28.8.2006, 11:54
Цитата

имхо хуже

имхо, как минимум не хуже  smile 
вообще, то что лучше знаешь - то и лучше  smile 

Автор: Romikgy 28.8.2006, 12:00
Цитата(Quadr0 @  28.8.2006,  10:26 Найти цитируемый пост)
В плюсах ты вот такое не напишешь (псевдокод):

Уже привели пример smile
Цитата(Quadr0 @  28.8.2006,  10:26 Найти цитируемый пост)
На дельфях ты как бы не захотел движок уровня Half-Life 2 не напишешь. Это программинг шейдеров и кучи всего ещё, о чём пишут только в специальных книгах и только для профи в этой области.

напишешь и здесь разница не в том что это невозможно сделать в дельфи , а в том что вся документация написана на С++ , а разницы в вызовах нет , имхо, буть то русование точки , или сложный рендеринг

Автор: Quadr0 28.8.2006, 12:04
...

Автор: DeadLine 28.8.2006, 18:20
А возможно ли кроссплатформенное програмирование на Дельфи?

Автор: Romikgy 28.8.2006, 18:35
Цитата(DeadLine @  28.8.2006,  17:20 Найти цитируемый пост)
А возможно ли кроссплатформенное програмирование на Дельфи?

имхо можно юзая 
Код

CLX help includes topics for elements in units that can only be used in CLX applications (cross-platform applications).
    

Автор: Mayk 30.8.2006, 15:49
Цитата(Romikgy @  28.8.2006,  22:35 Найти цитируемый пост)
А возможно ли кроссплатформенное програмирование на Дельфи?
имхо можно юзая 

остаётся открытым вопрос не является ли использование CLX чем-то кроме увлекательного упражнения для вашего мозга.
проектов написанных на паскале для ЛНХ мне не известны.

Правда если сделают нормальный дот нет под др. оси, то можно будет сказать ПРЕВЕД кросс платформенности и под дельфи.

Автор: Romikgy 30.8.2006, 15:55
А Kylix не в линухе?

Автор: Snowy 30.8.2006, 15:59
Цитата(DeadLine @  28.8.2006,  18:20 Найти цитируемый пост)
А возможно ли кроссплатформенное програмирование на Дельфи?
А возможно кроссплатформенное программирование на VC++?
Для кроссплатформа есть FreePascal.
Дельфя для виндов.

Автор: MAKCim 30.8.2006, 16:01
Цитата

А Kylix не в линухе? 

как то он особо тут не прижился
а вообще оно надо - Delphi в Linux?  smile 

Автор: Mayk 30.8.2006, 16:07
Цитата(MAKCim @  30.8.2006,  20:01 Найти цитируемый пост)

а вообще оно надо - Delphi в Linux? 

Засекаем время. Сейчас кто-нибудь прибежит и спросит а нужно ли дельфи вообще, если есть такое чудо как http://en.wikipedia.org/wiki/HQ9+  smile 

Автор: bel_nikita 18.11.2006, 17:46
Прочитал тут, что в Сях нет интерфейса... хм... А абстрактные классы для чего?

З.Ы.: Интересно, очень часто натыкаюсь на вопросы типа: Стоит ли переходить с Дельфи на С++. Но еще ниразу не встретил вопроса: Стоит ли переходить с С++ на Дельфи.  smile  

Автор: Alexeis 18.11.2006, 19:12
Цитата(bel_nikita @  18.11.2006,  17:46 Найти цитируемый пост)
Стоит ли переходить с Дельфи на С++. Но еще ниразу не встретил вопроса: Стоит ли переходить с С++ на Дельфи. 


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

  Что вы думаете народ так дико кинулся на С#, а все потому что он является неким подобием концепции Делфи. Бедные измученные программисты увидели, что можно писать программы спокойно не мучая себя поиском трудноуловимых синтаксических и логических ошибок. 

Автор: Daevaorn 19.11.2006, 22:50
alexeis1, односторонний и абсолютно любительский взгляд. не капельки не профессионально.

Автор: nerezus 20.11.2006, 00:30
alexeis1, ну например на делфи нельзя написать ОС ;)
или модуль к PHP(естественно, для серверныхх ОС).

Автор: skyboy 20.11.2006, 00:49
nerezus, уже обсуждалось. Путаешь конкретный компилятор, заточенный под Win32(или .NET) с языком программирования. Можно на языке Delphi писать ОС, можно. Просто компилятор нужен соотвествующий. Благодаря механизму ассемблерных вставок, и загрузчки можно написать в пределах программы на языке Delphi.

Автор: Romikgy 20.11.2006, 10:13
Daevaorn, 
Цитата(Daevaorn @  19.11.2006,  21:50 Найти цитируемый пост)
односторонний

имхо это с вашей стороны он односторонен. (так для инфы, ты дельфи знаешь?)

Цитата(nerezus @  19.11.2006,  23:30 Найти цитируемый пост)
ну например на делфи нельзя написать ОС ;)

А ты на С++ напишешь?
Цитата(nerezus @  19.11.2006,  23:30 Найти цитируемый пост)
или модуль к PHP(естественно, для серверныхх ОС).

для вин 32 легко имхо

Автор: bel_nikita 20.11.2006, 10:42
Я думаю, что многие Сишники, знают, по крайней мере знакомы, что такое Делфи и паскаль. Многие начинают с паскаля/VB, потом делфи, потом С++ или java smile 

Автор: Daevaorn 20.11.2006, 10:45
Цитата(alexeis1 @  18.11.2006,  20:12 Найти цитируемый пост)
уже не в силах оценить всю красоту и изящество делфи

Её почти нет у Delphi.
Цитата(alexeis1 @  18.11.2006,  20:12 Найти цитируемый пост)
без нудной и однообразной работы, от которой их избавляет делфи

Всё как раз наоборот. Если не скатываться до банальных споров, то можно хотя бы вспомнить автоматические деструкторы для объектов. Которые упрощают жизнь. Аналог их есть в Delphi, но от него мало проку. И ещё можно много найти таких же деталей. У Delphi программистов основной принцип это copy/paste из-за отсутствия парадигмы обобщенного программиования. И это ты называешь избавление от однообразной работы?
Цитата(alexeis1 @  18.11.2006,  20:12 Найти цитируемый пост)
 они ищут сложных извращенных конструкций, которые можно понять лишь попыхтев пол  часа как над хитрым ребусом

Для тех кто не знает язык
Цитата(alexeis1 @  18.11.2006,  20:12 Найти цитируемый пост)
Только не спрашивайте как это все работает, работает ну и не трогайте! И то слава богу!

Типичные мысли программистов Delphi из-за отсутствия профессионализма у большенства из них.
Цитата(Romikgy @  20.11.2006,  11:13 Найти цитируемый пост)
так для инфы, ты дельфи знаешь?)

Я бы сюда не совался, если бы не знал.

Автор: Romikgy 20.11.2006, 11:22
Цитата(Daevaorn @  20.11.2006,  09:45 Найти цитируемый пост)
Её почти нет у Delphi.

имхо страные высказывания после
Цитата(Daevaorn @  20.11.2006,  09:45 Найти цитируемый пост)
Я бы сюда не совался, если бы не знал. 

эт хорошо , что знаешь smile

Автор: Alexeis 20.11.2006, 13:23
Цитата(Daevaorn @  20.11.2006,  10:45 Найти цитируемый пост)
Типичные мысли программистов Delphi из-за отсутствия профессионализма у большенства из них.


Можите обзываться как хотите, меня это ничуть не обижает, но факт остается фактом, что для того чтобы писать нормальный код нужно быть профессионалом, люди которые не обладают высокой квалификацией пытаются на С++ создать, что-то серьезное, а в результате получается полная [censored 6] фигня, типа того что я описал. Начинают мучать язык дабы замазать неумение правильно стоить программы. Конечно, язык богат на выражения, но этим и опасен. Как мартышка с гранатой! Делфи позволяет писать небольшие программы практически полным чайникам, не понимающим как это все работает. Позволяет развиваться начинающим, позволяя писать объектный код не напрягая их деталями. И программистам средней квалификации позволяет учится писать программы с правильной структурой не позволяя им "развратных" вольностей и заставляя писать так как правильно. И только профессионал может оценить всю мощь предоставляемую языком и после этого ему уже совершенно пофиг на чем писать дальше, потому что он УМЕЕТ писать программы, а не просто знает синтаксис. Дальше если он хочет пишет в делфи, если нет пишет в С++. Он теперь может писать в С++ красиво, ограничивая себя от "разврата" или на любом другом языке. 
  Я раз сказал и дальше буду говорить. С++ развращает. Не всех, конечно, но детям до 16 лет низя smile. 
Вот так вот. 

Цитата(nerezus @  20.11.2006,  00:30 Найти цитируемый пост)
alexeis1, ну например на делфи нельзя написать ОС ;)

Кого ни знаю все только и думают как бы мне написать свою ОС. Как же я буду дальше жить не написав ОС. Наверное прожил жизнь зря  smile 

Цитата(bel_nikita @  20.11.2006,  10:42 Найти цитируемый пост)
Я думаю, что многие Сишники, знают, по крайней мере знакомы, что такое Делфи и паскаль.

В том то и дело что только знакомы! Позарившись на функционал как на голых баб быстро туда переходят. Но из них реально только единицы становятся настоящими профи. Все остальные заставляют создавать все более мощное и мощное железо, чтоб их чудеса хоть как-то могли работать.

Цитата(Daevaorn @  19.11.2006,  22:50 Найти цитируемый пост)
alexeis1, односторонний и абсолютно любительский взгляд. не капельки не профессионально. 

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

Кстати еще один камень по поводу функционала. Делфи активно развивается перенимая развитые средства отовсюду. Это уже далеко не тот паскаль который был раньше. С каждой новой версией язык развивается! Те кто хорошо знают язык никогда не жалуются на отсутствие чего либо smile. А переходят с него только тогда когда заканчивается его рабочая область. 

Автор: nerezus 20.11.2006, 19:52
Цитата

Просто компилятор нужен соотвествующий.
 А какой компилятор языка делфи для этого подойдет? )
С таким же успехом можно сказать, что и на джаваскрипте ОС можно написать.
Однако эти слова будут не большим, чем просто сотрясание воздуха.

Цитата

А ты на С++ напишешь?
 А причем тут я? Я только под веб пишу.

Цитата
для вин 32 легко имхо
 Дай пример ;)

Автор: skyboy 20.11.2006, 20:11
Цитата(nerezus @  20.11.2006,  18:52 Найти цитируемый пост)
А какой компилятор языка делфи для этого подойдет? )

можно и Delphi, как мне кажется. Разве что загрузчик ЕХЕ  - на ассеблере smile
Цитата(nerezus @  20.11.2006,  18:52 Найти цитируемый пост)
С таким же успехом можно сказать, что и на джаваскрипте ОС можно написать.

А что? сомневаешься, что можно?

Автор: DemoCode 20.11.2006, 20:19
Цитата(nerezus @  20.11.2006,  20:52 Найти цитируемый пост)
Дай пример ;) 

PHP4Delphi 5.0 это первая визуальная оболочка для разработки и работы с PHP объектами, используя Delphi. PHP4Delphi к тому же позволяет исполнять PHP скрипты внутри Delphi-программ непосредственно из файла или памяти. Имеется возможность читать и изменять PHP переменные и результирующие значения. PHP4Delphi позволяет внедрять PHP интерпретатор в Ваши Delphi приложения.
Новое в версии 5.0:
* PHP API и ZEND API преобразование с языка C в Delphi;
* psvPHP компонент, работающий непосредственно в Delphi без дополнительных DLL;
* phpLibrary компонент, который позволяет добавлять новые PHP функции в psvPHP компонент;
* новая визуальная оболочка с расширенными возможностями.

Это оно?

Добавлено @ 20:22 
Хотя можно поступить проще. PHP ведь умеет работать с COM.

Автор: MAKCim 20.11.2006, 20:49
Цитата

люди которые не обладают высокой квалификацией пытаются на С++ создать, что-то серьезное, а в результате получается полная [censored 6] фигня
...
Делфи позволяет писать небольшие программы практически полным чайникам, не понимающим как это все работает.

Я вот что скажу, это опасно
пусть лучше получится сначала "полная [censored 6] фигня", зато будет видно, что это [censored 6] фигня и это заставит человека задуматься о своих знаниях (точнее об их нехватке). В случае Delphi можно возомнить себя супер-программистом и на этом остановиться в развитии, так и не узнав, "как это все работает"
Цитата

Я раз сказал и дальше буду говорить. С++ развращает. Не всех, конечно, но детям до 16 лет низя 

Первый раз такую чушь слышу, уж извините
Цитата

Кого ни знаю все только и думают как бы мне написать свою ОС. Как же я буду дальше жить не написав ОС. Наверное прожил жизнь зря

действительно, уже надоело
Цитата

В том то и дело что только знакомы! Позарившись на функционал как на голых баб быстро туда переходят. Но из них реально только единицы становятся настоящими профи. Все остальные заставляют создавать все более мощное и мощное железо, чтоб их чудеса хоть как-то могли работать.

хороший намек (если я правильно понял)  smile 

Автор: nerezus 20.11.2006, 20:51
Цитата

PHP ведь умеет работать с COM.
 COM есть на серверных ОС? А делфи есть на серверных ОС?

Или серваки на винде держать теперь стали? Я то еще понимаю: ASP.NET, ибо от M$, поэтому винда для нее предпочтительнее.

Цитата
А что? сомневаешься, что можно?
 Теоретическо можно. Теоретически можно АБСОЛЮТНО ВСЕ.

Автор: DemoCode 20.11.2006, 20:53
Цитата(nerezus @  20.11.2006,  21:51 Найти цитируемый пост)
 COM есть на серверных ОС? А делфи есть на серверных ОС?

Цитата(Romikgy @  20.11.2006,  11:13 Найти цитируемый пост)
для вин 32 легко имхо 

Цитата(nerezus @  20.11.2006,  20:52 Найти цитируемый пост)
Дай пример ;) 

Так ведь речь идёт о Win32.

Добавлено @ 20:55 
Если будет тема Delphi vs C++ для *nix, я не сомневаюсь, что 100% отдадут свой голос за C++. Но в Win32 Delphi может успешно конкурировать с тем же C++.

Автор: Romikgy 20.11.2006, 22:23
nerezus, у мя сложилось впечатление, что ты хоть и 
Цитата(nerezus @  20.11.2006,  18:52 Найти цитируемый пост)
Я только под веб пишу.

но ты не понимаешь как там все работает! Сужу по 
Цитата(nerezus @  20.11.2006,  19:51 Найти цитируемый пост)
COM есть на серверных ОС? А делфи есть на серверных ОС?

ибо модули под ПХП это dll файлы а они пишутся на чем угодно (почти, дельфи и си 100%)
Цитата(nerezus @  20.11.2006,  19:51 Найти цитируемый пост)
Или серваки на винде держать теперь стали? 

держат , держат, но только мало кто даст свои модули в ПХП сувать , буть то винда , или юникс

Автор: nerezus 20.11.2006, 22:35
Цитата

ибо модули под ПХП это dll файлы а они пишутся на чем угодно
 если бы все было так легко ;) 

Автор: nerezus 20.11.2006, 22:57
Romikgy, как на делфи будет выглядеть следующий код в сырцах библиотеки:
Код

/* include standard header */
#include "php.h"

?  smile 

Автор: Romikgy 21.11.2006, 00:37
Цитата(nerezus @  20.11.2006,  21:35 Найти цитируемый пост)
если бы все было так легко ;) 

а что сложного?

Добавлено @ 00:39 
Цитата(nerezus @  20.11.2006,  21:57 Найти цитируемый пост)
#include "php.h"

приведи этот код полностью и посмотрим, 
точно не будет *.h, будет *.pas  smile 

Автор: nerezus 21.11.2006, 06:54
Цитата

риведи этот код полностью и посмотрим
 это часть сырцов PHP. В нем инклюдятся другие части. И эта часть должна подключаться при создании своей библиотеки.

Цитата

но ты не понимаешь как там все работает!
 ну?

Автор: Romikgy 21.11.2006, 09:40
Цитата(nerezus @  21.11.2006,  05:54 Найти цитируемый пост)
это часть сырцов PHP. В нем инклюдятся другие части. И эта часть должна подключаться при создании своей библиотеки.

все это можно перевести на паскаль/дельфи, имхо
Цитата(nerezus @  21.11.2006,  05:54 Найти цитируемый пост)
ну?

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

Автор: nerezus 21.11.2006, 10:11
Цитата

а говоришь что это нельзя сделать на том или другом языке. 
 А разве можно? Хотя перефразирую: разве это осуществимо _на практике_?
Теоретически можно абсолютно все ;)

Автор: vlgr 21.11.2006, 11:15
Цитата(nerezus @ 21.11.2006,  10:11)
А разве можно? Хотя перефразирую: разве это осуществимо _на практике_?
Теоретически можно абсолютно все ;)


Уже давно сделано.
http://members.chello.be/ws36637/php4delphi.html

Цитата

Features:
              Supports PHP 4 and PHP 5
              PHP API and ZEND API converted from C to Delphi
              psvPHP component written completely in Delphi
              phpLibrary component which allows to add new build-in  PHP functions to psvPHP component
              New visual PHP extension development framework to create PHP extensions using Delphi. 

Скачай
http://members.chello.be/ws36637/download/php4Delphi.zip
там куча примеров  

Автор: Romikgy 21.11.2006, 11:28
nerezus, видишь даже без меня те ответ дали smile

Автор: DemoCode 21.11.2006, 13:36
Цитата(Romikgy @  21.11.2006,  12:28 Найти цитируемый пост)
nerezus, видишь даже без меня те ответ дали

Ему этот ответ я ещё вчера вечером дал  smile  Постов десять тому назад.  smile 

Автор: Daevaorn 21.11.2006, 19:21
Цитата(alexeis1 @  20.11.2006,  14:23 Найти цитируемый пост)
Делфи позволяет писать небольшие программы практически полным чайникам, не понимающим как это все работает. Позволяет развиваться начинающим, позволяя писать объектный код не напрягая их деталями.

Вот ты сам и очертил область применения Delphi. Но должно же быть ещё и развитие. Вот поэтому обсуждаемый переход и является правильным. Другой вопрос, что это нужно делать вовремя.

Автор: Alexeis 21.11.2006, 20:24
Цитата(Daevaorn @  21.11.2006,  19:21 Найти цитируемый пост)
Вот ты сам и очертил область применения Delphi. Но должно же быть ещё и развитие. Вот поэтому обсуждаемый переход и является правильным. Другой вопрос, что это нужно делать вовремя. 

Читать надо внимательнее....

Автор: Romikgy 21.11.2006, 20:53
Цитата(Daevaorn @  21.11.2006,  18:21 Найти цитируемый пост)
Вот ты сам и очертил область применения Delphi.


Цитата(Daevaorn @  21.11.2006,  18:21 Найти цитируемый пост)
елфи позволяет писать небольшие программы практически полным чайникам, не понимающим как это все работает.

имхо он позволяет, но не ограничивает!!!

Автор: Snowy 21.11.2006, 21:42
Ну что опять за наезды на дельфи?
Если кто-то что-то имеет против дельфи, то сразу отвечаю - ты не прав  smile

И вообще, вопрос звучит так: "Стоит ли вобще переходить на C++?"
Ответ: А зачем?

Вторая часть: "т.к смотрю дельфи мрачное будущее."
Как раз наоборот. Позиции усиляются, язык и среда прогрессируют.

Какие ещё вопросы против банального "Delphi vs С++"?

Автор: Daevaorn 21.11.2006, 22:46
Цитата(Romikgy @  21.11.2006,  21:53 Найти цитируемый пост)
имхо он позволяет, но не ограничивает!!! 

Ограничивает. Как пример отсутствие парадигмы обобщенного программирования очень серьезное ограничение. Не везде она нужна, но достаточно часто. Поэтому при разработке сложных систем где главное не GUI, а надежность и внутренняя логика Delphi не предпочтительный инструмент.

Автор: skyboy 21.11.2006, 23:04
Цитата(Daevaorn @  21.11.2006,  21:46 Найти цитируемый пост)
парадигмы обобщенного программирования

"обобщенное программирование" - это шаблоны? да, из-за отсутствия статических полей в классах невозможен в чистом виде паттерн "одиночка". А что ещё не нравится?
поясни, плиз, собственное заявление для тех, кто впервые слышит о "парадигме обобщенного программирования"

Автор: Snowy 21.11.2006, 23:10
Цитата(Daevaorn @  21.11.2006,  22:46 Найти цитируемый пост)
Ограничивает. Как пример отсутствие парадигмы обобщенного программирования очень серьезное ограничение. Не везде она нужна, но достаточно часто.
ЛЮБОЙ код на плюсах конвертится в дельфи.
О каких ограничениях речь???

Цитата(Daevaorn @  21.11.2006,  22:46 Найти цитируемый пост)
Поэтому при разработке сложных систем где главное не GUI, а надежность и внутренняя логика Delphi не предпочтительный инструмент.
При чём здесь GUI?
Дельфи - это далеко не только VCL!
Хотя, если идти от обратного - VCL - несомненный плюс перед плюсами smile
(каламбур smile)

Автор: Void 21.11.2006, 23:20
Цитата(Snowy @  22.11.2006,  01:10 Найти цитируемый пост)
ЛЮБОЙ код на плюсах конвертится в дельфи.

Snowy, байта ради, не прибегай к подобным аргументам. Сейчас кто-нибудь ещё скажет, что всё в конце концов превращается в машинные коды…
Дайте теме спокойно умереть smile

Автор: Snowy 21.11.2006, 23:26
Так она ещё в августе умерла.
Её реанимировали smile

Добавлено @ 23:28 
Любители плюсами померяться очень уж любят подобного рода хоуливары smile

Автор: Romikgy 21.11.2006, 23:37
Цитата(Daevaorn @  21.11.2006,  21:46 Найти цитируемый пост)
а надежность и внутренняя логика Delphi не предпочтительный инструмент. 

пример можно?
Цитата(Void @  21.11.2006,  22:20 Найти цитируемый пост)
Сейчас кто-нибудь ещё скажет, что всё в конце концов превращается в машинные коды…

А что нет? smile

Автор: Void 21.11.2006, 23:39
Romikgy, из этого не следует делать вывод, что всё остальное не имеет преимуществ перед машинными кодами.

Автор: Romikgy 22.11.2006, 00:09
а хто этот вывод делает?
или не правда что все приходит к нему?

Автор: nerezus 22.11.2006, 09:24
Не правда конечно: многое просто интерпретируется )

Автор: MAKCim 22.11.2006, 10:08
Цитата

Не правда конечно: многое просто интерпретируется ) 

а интерпретируется на чем по-твоему
или процессор хлебушек вместо команд кушает?  smile 
прямым или косвенным образом все превращается в команды процессора
на том предлагаю закончить 
кстати
Цитата

ЛЮБОЙ код на плюсах конвертится в дельфи.

не любой
думаю аналога
Код

void F(...) {
...
}

в Delphi нет, поправьте если не так

Автор: nerezus 22.11.2006, 10:11
Цитата

или процессор хлебушек вместо команд кушает? 
 Комманды интерпретатора. Но не кода, который в нем выполняется.

Цитата

void F(...)
 Обычная процедура.

Автор: Alexeis 22.11.2006, 10:16
Цитата(nerezus @  22.11.2006,  09:24 Найти цитируемый пост)
Не правда конечно: многое просто интерпретируется )

И это делает, конечно не машинный код  smile . Интерпретатор это всего лишь дополнительная прослойка перед реализацией в машинных кодах. Это как стандартная библиотека мы ее сами не пишем но реализуем ее вызов. У интерпретатора аналогично, только все операции производятся через код некоторого устройства. 

Автор: MAKCim 22.11.2006, 10:34
Цитата

Обычная процедура. 

обычная да не совсем  smile 

Автор: Alexeis 22.11.2006, 10:34
Цитата(MAKCim @  22.11.2006,  10:08 Найти цитируемый пост)
думаю аналога

Да есть пару конструкций, которые простой заменой не сделаешь, например оператор swicth в С++ позволяет реализовать более сложную конструкцию чем case, так что в общем случае в делфи его можно заменить только серией If  then, но и в делфи есть конструкции, которые С++ не возьмет, например
procedure proc1;
 procedure proc2;
   procedure proc3;
   Begin
   end;
 Begin
 end;
Begin
end;

У каждой из которых своя область видимости и свои локальные переменные и возможность рекурсивного вызова любой из них, а так же досрочный выход из любой процедуры на более нижний уровень, и конечно, скрытие внутренних процедур от внешних вызовов. Попробуйте простыми средствами переделать такую хитрую конструкцию на С++  smile 

И еще можете ли вы размещать в библиотеках динамической компоновки код классов, который может быть успешно использован несколькими исполняемыми модулями одновременно?

Автор: MAKCim 22.11.2006, 10:43
Цитата

код классов

??
как это? Метаинформация как в С# например? Или что?
Или вы имеете в виду экземпляры классов, т. е объекты?
Цитата

но и в делфи есть конструкции, которые С++ не возьмет

нет синтаксической конструкции, но это легко эмулировать
а вот 
Код

void F(...) {...}

скорее всего не получится (найти аналог или ухищрение какое-нибудь на Delphi)

Автор: skyboy 22.11.2006, 10:47
MAKCim, просвети, чем 
Код

void F(...) {}

отличается от
Код

procedure F(...)
{
.....
}


Автор: MAKCim 22.11.2006, 11:13
Цитата

отличается от

если в
Код

procedure F(...)
{
.....
}

можно передать произвольное (ну не произвольное, а ограниченное стеком) число параметров, то ничем.
Если Delphi реально есть такая конструкция (я не знал), то беру свои слова назад

Автор: SergeCpp 22.11.2006, 11:26
Цитата(alexeis1 @  22.11.2006,  12:34 Найти цитируемый пост)
procedure proc1;
 procedure proc2;
   procedure proc3;
   Begin
   end;
 Begin
 end;
Begin
end;

Код
int outer( int i )
{
    struct inner
    {
        int operator() ( int i ) { return i > 0 ? i * outer( i - 1 ) : 1; }
    };

    inner a;

    return a( i );
}

Автор: Romikgy 22.11.2006, 12:01
Код

procedure F(const Args: array of const)
{
.....
}

аналог ф_ции с переменым числом параметров  smile  типа
Цитата(skyboy @  22.11.2006,  09:47 Найти цитируемый пост)
void F(...) {}


Автор: SergeCpp 22.11.2006, 12:03
Compile-time calculations...
Код
template <int N> struct Factorial 
{
    enum { value = N * Factorial<N - 1>::value };
};

template <> struct Factorial<0> 
{
    enum { value = 1 };
};

void foo()
{
    int x = Factorial<4>::value; // == 24 at compile time
}

Код
?

Автор: Romikgy 22.11.2006, 12:12
SergeCpp, уже говорилось что в дельфи/паскале нет шаблонов!
А реализовать вычисление факториала, я думаю сам понимаешь, на дельфи можно

Автор: SergeCpp 22.11.2006, 12:13
Цитата(Romikgy @  22.11.2006,  14:01 Найти цитируемый пост)
аналог ф_ции с переменым числом параметров типа

http://info.borland.com/techpubs/delphi/delphi5/oplg/procfunc.html is equivalent to array of TVarRec. TVarRec, declared in the System unit, represents a record with a variant part that can hold values of integer, Boolean, character, real, string, pointer, class, class reference, interface, and variant types. TVarRec's VType field indicates the type of each element in the array.

Приблизительный аналог... Overheads в лице TVarRec's VType field, однако...

Автор: Romikgy 22.11.2006, 12:13
или ты делал упор на это?
Цитата(SergeCpp @  22.11.2006,  11:03 Найти цитируемый пост)
at compile time

(я это сразу не заметил)

Добавлено @ 12:15 
Цитата(SergeCpp @  22.11.2006,  11:13 Найти цитируемый пост)
Приблизительный аналог... 

не спорю, но можно создать процедуру у которой будет переменое число параметров  smile 

Автор: SergeCpp 22.11.2006, 12:20
Цитата(Romikgy @  22.11.2006,  14:12 Найти цитируемый пост)
А реализовать вычисление факториала, я думаю сам понимаешь, на дельфи можно

At compile time?..

Автор: Romikgy 22.11.2006, 12:45
SergeCpp, 
1. когда это может понадобится?
2. надо подумать никогда такое не надо было делать, лично мне

Автор: SergeCpp 22.11.2006, 12:54
Код
void foo()
{
    int x[ Factorial<4>::value ];
}

Автор: Alexeis 22.11.2006, 12:59
SergeCpp, конструкция, конечно интересная, но может ли она реализовать весь тот функционал, который я описал?

Автор: Alexeis 22.11.2006, 13:17
Цитата(MAKCim @  22.11.2006,  10:43 Найти цитируемый пост)
??
как это? Метаинформация как в С# например? Или что?
Или вы имеете в виду экземпляры классов, т. е объекты?


Объект сам по себе небольшой, обычно в нем только данные, а его методы хранятся отдельно и являются общими для всех объектов. На самом деле в программе существует некая структура которая отражает именно класс, а не сам объект. Стандартные библиотеки Dll не допускают передачу обычных объектов как из dll  так и в нее. В делфи реализованы расширенные библиотеки позволяющие при загрузке определять связи между экземпляром объекта и его классом, тем самым отпадает необходимость в дублировании кода класса (фактически его методов). Кроме того это позволяет передавать объекты в такую библиотеку, что дает гибкость управления памятью

Автор: SergeCpp 22.11.2006, 14:04
Цитата(alexeis1 @  22.11.2006,  14:59 Найти цитируемый пост)
конструкция, конечно интересная, но может ли она реализовать весь тот функционал, который я описал?
И даже больший... e.g. в структуре могут быть и data-members...
См. 9.8 Local class declarations в стандарте...

Автор: SergeCpp 22.11.2006, 14:31
Цитата(alexeis1 @  22.11.2006,  15:17 Найти цитируемый пост)
Объект сам по себе небольшой
? — критерии и единицы оценки размера не указаны

Цитата(alexeis1 @  22.11.2006,  15:17 Найти цитируемый пост)
обычно в нем только данные
? — vtable ведь тоже данные

Цитата(alexeis1 @  22.11.2006,  15:17 Найти цитируемый пост)
На самом деле в программе существует некая структура
? — во время компиляции, вероятно (в asm-коде уже только данные)

Цитата(alexeis1 @  22.11.2006,  15:17 Найти цитируемый пост)
Стандартные библиотеки DLL не допускают передачу обычных объектов как из DLL, так и в неё
vs
Цитата(alexeis1 @  22.11.2006,  15:17 Найти цитируемый пост)
В дельфи реализованы расширенные библиотеки позволяющие 
тогда уж, сравнивать следовало бы с некими "расширенными" библиотеками C++

Цитата(alexeis1 @  22.11.2006,  15:17 Найти цитируемый пост)
необходимость в дублировании кода класса (фактически его методов)
? — e.g. в method.dll есть код класса type (C++), method.lib подключается к проекту,
использующему (as dynamic library, not static) type (где дублирование?)

Автор: Romikgy 22.11.2006, 14:52
Цитата(SergeCpp @  22.11.2006,  11:54 Найти цитируемый пост)
void foo()
{
    int x[ Factorial<4>::value ];
}

зачем городить такую кострукцию , если можно поставить число?

Автор: SergeCpp 22.11.2006, 15:52
http://en.wikipedia.org/wiki/Template_metaprogramming

http://www.oonumerics.org/blitz/
Цитата
Blitz++ is a C++ class library for scientific computing which provides performance on par with Fortran 77/90.
It uses template techniques to achieve high performance.
http://www.oonumerics.org/blitz/examples/, also look at http://www.oonumerics.org/blitz/examples/fft.html

etc.

Автор: Romikgy 22.11.2006, 16:13
Цитата(SergeCpp @  22.11.2006,  14:52 Найти цитируемый пост)
Template metaprogramming

Код

    * Compile-time versus execution-time tradeoff: Since all templated code is processed, evaluated and expanded at compile-time, compilation will take longer while the executable code may be more efficient. This overhead is generally small, but for large projects, or projects relying pervasively on templates, it may be significant.
    * Generic programming: Template metaprogramming allows the programmer to focus on architecture and delegate to the compiler the generation of any implementation required by client code. Thus, template metaprogramming can accomplish truly generic code, facilitating code minimization and better maintainability.
    * Readability: With respect to C++, the syntax and idioms of template metaprogramming are esoteric compared to conventional C++ programming, and advanced, or even most non-trivial, template metaprogramming can be very difficult to understand. Metaprograms can thus be difficult to maintain by programmers inexperienced in template metaprogramming (though this may vary with the language's implementation of template metaprogramming syntax).
    * Portability: With respect to C++, due to differences in compilers, code relying heavily on template metaprogramming (especially the newest forms of metaprogramming) might have portability issues.


не вижу хороших преймуществ, имхо все конструкции типа
Код

template <int N>
struct Factorial 
{
    enum { value = N * Factorial<N - 1>::value };
};

template <>
struct Factorial<0> 
{
    enum { value = 1 };
};

// Factorial<4>::value == 24
// Factorial<0>::value == 1
void foo()
{
    int x = Factorial<4>::value; // == 24
    int y = Factorial<0>::value; // == 1
}

можно заменить константами или дефайнами
А о пункте 
* Readability:
они сами сказали, что фиг прочитаешь, зачем тогда путать людей? все равно эти Template metaprogramming кроме как сложновычисляемые постояные не заменяют, имхо , тогда проще вычислить все постояные и вставить в один массив, даже время компиляции сократится!

Автор: SergeCpp 22.11.2006, 16:25
Цитата(Romikgy @  22.11.2006,  18:13 Найти цитируемый пост)
они сами сказали, что фиг прочитаешь, зачем тогда путать людей?
Readability: With respect to C++, the syntax and idioms of template metaprogramming are esoteric compared to conventional C++ programming, and advanced, or even most non-trivial, template metaprogramming can be very difficult to understand. Metaprograms can thus be difficult to maintain by programmers inexperienced in template metaprogramming (though this may vary with the language's implementation of template metaprogramming syntax).

Цитата(Romikgy @  22.11.2006,  18:13 Найти цитируемый пост)
все равно эти Template metaprogramming кроме как сложновычисляемые постояные не заменяют

vs

http://www.boost.org/libs/mpl/doc/
Цитата
The Boost MPL library is a general-purpose, high-level C++ template metaprogramming framework of compile-time algorithms, sequences and metafunctions. It provides a conceptual foundation and an extensive set of powerful and coherent tools that make doing explict metaprogramming in C++ as easy and enjoyable as possible within the current language.

http://www.boost.org/doc/html/lambda.html
Цитата
The Boost Lambda Library (BLL in the sequel) is a C++ template library, which implements form of lambda abstractions for C++. The term originates from functional programming and lambda calculus, where a lambda abstraction defines an unnamed function.


Автор: Alexeis 22.11.2006, 16:35
Цитата(SergeCpp @  22.11.2006,  14:31 Найти цитируемый пост)
Цитата(alexeis1 @  22.11.2006,  15:17 Найти цитируемый пост)
Объект сам по себе небольшой
? — критерии и единицы оценки размера не указаны

Цитата(alexeis1 @  22.11.2006,  15:17 Найти цитируемый пост)
обычно в нем только данные
? — vtable ведь тоже данные

Цитата(alexeis1 @  22.11.2006,  15:17 Найти цитируемый пост)
На самом деле в программе существует некая структура
? — во время компиляции, вероятно (в asm-коде уже только данные)


  Если объект не хранилище данных, то обычно размер (в байтах) его полей данных намного меньше чем область памяти занимаемая его методами. 

  Таблица виртуальных методов тоже данные, но что из этого следует я не понял... я же не говорил, что класс содержит только методы... класс содержит все что является статичным т.е. не меняется от объекта к объекту. А методы как раз и не меняются от экземпляра класса к экземпляру (если объект действительно экземпляр своего класса, а не класса наследника).

  Под структурой я понимаю некую область памяти где размещены данные объединенные логически (т.е. класс,  речь не идет о структурах языка С++)

Автор: SergeCpp 22.11.2006, 16:48
Цитата(alexeis1 @  22.11.2006,  18:35 Найти цитируемый пост)
Если объект не хранилище данных, то обычно размер (в байтах) его полей данных намного меньше чем область памяти занимаемая его методами.
Так объектов-то (даже крохотных) может быть очень много... А метод на всех них — один.

Цитата(alexeis1 @  22.11.2006,  18:35 Найти цитируемый пост)
Таблица виртуальных методов тоже данные, но что из этого следует я не понял
Это к Вашему слову "обычно". В объекте всегда только данные, а не "обычно".

Цитата(alexeis1 @  22.11.2006,  18:35 Найти цитируемый пост)
если объект действительно экземпляр своего класса, а не класса наследника
Объект всегда экземпляр своего класса. Вы, наверное, имели в виду указатель на объект.

Цитата(alexeis1 @  22.11.2006,  18:35 Найти цитируемый пост)
Под структурой я понимаю некую область памяти где размещены данные объединённые логически
В физической DLL конечно же есть логические области. Но вот как процессор поймёт что это область, без физического указания?..

Так где же дублирование-то?..

Автор: Romikgy 22.11.2006, 16:57
SergeCpp, что ты этим всем хочешь сказать , имхо , я те уже говорил
Цитата(Romikgy @  22.11.2006,  11:12 Найти цитируемый пост)
что в дельфи/паскале нет шаблонов!

смысл описания этих
Цитата(SergeCpp @  22.11.2006,  15:25 Найти цитируемый пост)
template metaprogramming 

в контексте темы?
PS сколько я программил на С/С++, никогда еще не возникало надобности в использовании 
Цитата(SergeCpp @  22.11.2006,  15:25 Найти цитируемый пост)
Boost


Автор: Alexeis 22.11.2006, 17:07
Цитата(SergeCpp @  22.11.2006,  16:48 Найти цитируемый пост)
Это к Вашему слову "обычно". В объекте всегда только данные, а не "обычно".

Ну чтоб так утверждать я должен очень хорошо представлять как выглядит объект в памяти  smile, хотя и тут бывают исключения. Я видел, пример, где в массив запихнули код и затем его выполнили. Т.е. если сильно извратится, то можно многое. Но в данном случае это не суть вопроса.

Цитата(SergeCpp @  22.11.2006,  16:48 Найти цитируемый пост)
Вы, наверное, имели в виду указатель на объект.

Ну да, просто в делфи все объекты фактически указатели на объект, потому объект и указатель на объект там синонимы smile .

Цитата(SergeCpp @  22.11.2006,  16:48 Найти цитируемый пост)
Так где же дублирование-то?..

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

Автор: SergeCpp 22.11.2006, 17:14
Цитата(alexeis1 @  22.11.2006,  19:07 Найти цитируемый пост)
Ну чтоб так утверждать я должен очень хорошо представлять как выглядит объект в памяти
Так это же основное условие работы с чем-либо — знать...

Цитата(alexeis1 @  22.11.2006,  19:07 Найти цитируемый пост)
в массив запихнули код
это данные... используемые нетривиальным образом.

Цитата(alexeis1 @  22.11.2006,  19:07 Найти цитируемый пост)
Цитата(SergeCpp @  22.11.2006,  16:48 )
Так где же дублирование-то?..

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

Так я же говорил...

Цитата(SergeCpp @  22.11.2006,  16:31 Найти цитируемый пост)
Цитата(alexeis1 @  22.11.2006,  15:17 )
необходимость в дублировании кода класса (фактически его методов)

? — e.g. в method.dll есть код класса type (C++), method.lib подключается к проекту,
использующему (as dynamic library, not static) type (где дублирование?)

Ключевые слова — as dynamic library, not static (method.lib в таком случае — библиотека импорта [из DLL]).

Автор: Alexeis 22.11.2006, 17:47
Цитата(SergeCpp @  22.11.2006,  17:14 Найти цитируемый пост)
Так я же говорил...

Из такого краткого пояснения мало что можно понять. То ли *.lib файл помогает динамически связывать классы определенные в Dll, то ли она сама заменяет dll, то ли ее помещают в секцию импорта экзешника, и потом все происходит волшебным образом smile , можно еще придумать пару способов как интерпретировать эту фразу smile . Все осложняется тем, что секция импорта содержит экспортируемые (библиотекой) функции, а не классы, так что, что нам помогает делать *.lib для передачи классов вообще не ясно smile 

Автор: SergeCpp 22.11.2006, 17:52
http://www.codeproject.com/dll/SimpleDll2.asp?df=100&forumid=108881&exp=0&select=980936

Автор: Artemios 23.11.2006, 04:05
Цитата(mr666 @  24.8.2006,  23:16 Найти цитируемый пост)
Вот подумывал занятся C++, т.к смотрю дельфи мрачное будущее. Стоит ли вобще переходить на C++?
Интересно кто зделал такой же выбор пожелел или нет? Или вобще Лучше изучать два языка....?  

Я был вместе с Delphi со 2-й по 4-ю версию, потом перешел на C++ и не жалею.
Можно посоветовать примерно следующее:
Цитата(alexeis1 @  25.8.2006,  00:28 Найти цитируемый пост)
Не лучше а обязательно знать хоть основы с++. А еще лучше знать 3 язык, например JAVA. Он никогда не помешает. 

только здесь число 3 заменить на N smile И осваивать не только императивные, но декларативные языки программирования.

Цитата(Snowy @  27.8.2006,  22:42 Найти цитируемый пост)
Отчегож. Некорректно сравнивать библиотеки. А языки очень даже можно сравнивать.
Сам код свободно конвертируется туда и обратно.
А, если ещё и библиотеки одинаковые, как в случае с C++ Builder...

А вот благодаря Билдеру я совершил переход в плюсы на год позже, чем мог бы. Элементарно, установив Билдер и увидев, что Борланд сделал с родной Дельфи -- я на некоторое время посчитал этО недостатком языка, а не Борланда. Испугался, одним словом, и снес Билдер smile С тех пор его больше и не ставил smile

Цитата(alexeis1 @  18.11.2006,  19:12 Найти цитируемый пост)
И не удивительно, те кто привык садомазахизму уже не в силах оценить всю красоту и изящество делфи. Их представление о работе программиста уже извращено настолько, что они не мыслят жизни без нудной и однообразной работы, от которой их избавляет делфи. А простой и прозрачный код просто бесит, они ищут сложных извращенных конструкций, которые можно понять лишь попыхтев пол  часа как над хитрым ребусом. И думать, ну я и наворотил тут. Слабо кому-нибудь повторить такую же хрень? Только не спрашивайте как это все работает, работает ну и не трогайте! И то слава богу!

Я аж прослезился. До сих пор рыдаю.
Такие вот мы, садомазохисты и извращенцы smile

Цитата(DemoCode @  20.11.2006,  20:53 Найти цитируемый пост)
Если будет тема Delphi vs C++ для *nix, я не сомневаюсь, что 100% отдадут свой голос за C++.

Угу. И в теме кроссплатформенности Дельфи не лидер. 
Про математику вообще молчу.

Правда, сам я уже пару-тройку лет не чистый плюсатник, но это, наверно, уже не в тему smile .

Добавлено @ 04:10 
Цитата(alexeis1 @  18.11.2006,  19:12 Найти цитируемый пост)
И не удивительно, те кто привык садомазахизму уже не в силах оценить всю красоту и изящество делфи. Их представление о работе программиста уже извращено настолько, что они не мыслят жизни без нудной и однообразной работы, от которой их избавляет делфи. А простой и прозрачный код просто бесит, они ищут сложных извращенных конструкций, которые можно понять лишь попыхтев пол  часа как над хитрым ребусом. И думать, ну я и наворотил тут. Слабо кому-нибудь повторить такую же хрень? Только не спрашивайте как это все работает, работает ну и не трогайте! И то слава богу!

Я это обязательно распечатаю в 15 экземплярах -- повешу дома, на работе, раздам коллегам...
Такие перлы нельзя забывать smile

Автор: Romikgy 23.11.2006, 10:00
Цитата(Artemios @  23.11.2006,  03:05 Найти цитируемый пост)
Про математику вообще молчу.

А ты не молчи , мы тя слушаем!
Цитата(Artemios @  23.11.2006,  03:05 Найти цитируемый пост)
И в теме кроссплатформенности Дельфи не лидер. 

1. ее здесь никто не обсуждает
2. при большом желании ее тоже в дельфи можно найти

Автор: Daevaorn 23.11.2006, 10:06
Цитата(skyboy @  22.11.2006,  00:04 Найти цитируемый пост)
"обобщенное программирование" - это шаблоны? да, из-за отсутствия статических полей в классах невозможен в чистом виде паттерн "одиночка". А что ещё не нравится?

Да. Именно они. Мне не всегда нужен полиморфизм времени выполнения. Имея инструмент в виде шаблонов, я могу использовать полиморфизм времени компиляции. Что даст мне прирост производительности и уменьшение вероятности сделать ошибку. Правда за такое удобство приходится платить, но плата несущественна.
Цитата(Snowy @  22.11.2006,  00:10 Найти цитируемый пост)
ЛЮБОЙ код на плюсах конвертится в дельфи.
О каких ограничениях речь???

Я бы сказал иначе - любой алгоритм.
Цитата(Snowy @  22.11.2006,  00:10 Найти цитируемый пост)
При чём здесь GUI?
Дельфи - это далеко не только VCL!
Хотя, если идти от обратного - VCL - несомненный плюс перед плюсами 

Да, плюс, но увы единственный ради которого ещё можно объяснить использование Delphi (хотя я лишний раз подумаю о С# или о python). Если убрать RAD средства, то в чем смысл использования? Что Delphi в таком виде может предложить по сравнению с другими языками?
Цитата(Romikgy @  22.11.2006,  00:37 Найти цитируемый пост)
пример можно?

Примеры тебе предоставляет рынок ПО.

Автор: Romikgy 23.11.2006, 10:46
Цитата(Daevaorn @  23.11.2006,  09:06 Найти цитируемый пост)
Примеры тебе предоставляет рынок ПО. 

не корректно это без предоставления конкретных примеров,
ибо я пользуюсь многими продуктами написаными на дельфи и мне нравится, работает и без глюков!
Так что приведи пример!
Цитата(Romikgy @  21.11.2006,  22:37 Найти цитируемый пост)
а надежность и внутренняя логика Delphi не предпочтительный инструмент. 


Цитата(Daevaorn @  23.11.2006,  09:06 Найти цитируемый пост)
Я бы сказал иначе - любой алгоритм.

имхо любой код представляет собой реализацию какого либо алгоритма
Цитата(Daevaorn @  23.11.2006,  09:06 Найти цитируемый пост)
Что Delphi в таком виде может предложить по сравнению с другими языками?

А что дельфи не может предложить? (кроме шаблонов)

Автор: Alexeis 23.11.2006, 10:55
Цитата(Artemios @  23.11.2006,  04:05 Найти цитируемый пост)
Я был вместе с Delphi со 2-й по 4-ю версию, потом перешел на C++ и не жалею.
Можно посоветовать примерно следующее:

  Ну вот пожалуйста, я же говорил, что с хорошим опытом делфиста, когда уже понимаешь как нужно писать программы уже не составляет труда перейти на другой язык. Каждый ищет своего. У делфи есть своя область работы откуда ее не вытолкнешь, но когда выходишь из этой области, то пишешь на том, что больше подходит. Я сам сейчас пишу под WinCE, на Visual C++ Embedded, и буду дальше утверждать, что на то, что у меня в делфи уходили минуты, тут приходится делать часами, ну это по большей части проблемы среды и дополнительных библиотек, но суть от этого не меняется, я считаю что делфи это шаг в будущее программирования, когда от программиста будет требоваться только базовая логика, а программы будет компьютер писать сам для себя, привлекая его только для того, что еще не было придумано за него. Делфи это не только визуальное проектирование, позволяющее максимально быстро и наглядно создавать интерфейс, это более высокий уровень абстракции, позволяющий не думать об особенностях языка и сосредоточится на логике работы программы. Все сделано, так, что оно будет работать, потому можно освободить голову от лишних забот и думать над той задачей, которую нужно решить. Мне же сейчас приходится непрерывно вести войну за работоспособность программы и уделять 95% внимания на код, а не на саму задачу, когда на делфи у меня выходило примерно 30% на код и 70% на саму задачу. Т.е. там я себя чувствую белым человеком, а не чернорабочим. Возможно, там еще многое не доведено до совершенства, но это уже шаг вперед, по сравнению с классическим программированием, а потому так просто переходить на С++ из-за одного лишь языка просто бессмыслено. В идеале должно получится примерно 1% к 99%, именно таким я себе представляю светлое будущее программирования.

Автор: Daevaorn 23.11.2006, 11:04
Цитата(Romikgy @  23.11.2006,  11:46 Найти цитируемый пост)
имхо любой код представляет собой реализацию какого либо алгоритма

При использовании двух разных языков, я реализую один и тот же алгоритм, но возможно разными средствами. Поэтому результат будет одинаков, но пути достижения разные. 
Цитата(Romikgy @  23.11.2006,  11:46 Найти цитируемый пост)
А что дельфи не может предложить?

Ни оптимизации, ни переносимости как пример.

Автор: Romikgy 23.11.2006, 11:12
Цитата(Daevaorn @  23.11.2006,  10:04 Найти цитируемый пост)
Поэтому результат будет одинаков, но пути достижения разные. 

согласен , и еще раз повторюсь, каждый язык имеет свою нишу в общей области программирования!
Цитата(Daevaorn @  23.11.2006,  10:04 Найти цитируемый пост)
Ни оптимизации, ни переносимости как пример. 

не понял к чему бы это?
оптимизация чего?
переносимость чего?

Автор: skyboy 23.11.2006, 13:15
Цитата(Daevaorn @  23.11.2006,  10:04 Найти цитируемый пост)
Ни оптимизации, ни переносимости как пример. 

ты про язык или про конкретный компилятор? про конкретный компилятор? ок. Тогда сравниваем Borland C++ 3.01 и Borland Delphi 2005. У кого - какая оптимизация и у кого большая переносимость?

Автор: Artemios 23.11.2006, 13:21
Цитата(Romikgy @  23.11.2006,  10:00 Найти цитируемый пост)
Цитата(Artemios @  23.11.2006,  04:05 Найти цитируемый пост)
Про математику вообще молчу.
А ты не молчи , мы тя слушаем!
Цитата(Artemios @  23.11.2006,  04:05 Найти цитируемый пост)
И в теме кроссплатформенности Дельфи не лидер. 
1. ее здесь никто не обсуждает
2. при большом желании ее тоже в дельфи можно найти 

Ну чтож, покажи мне реализацию на Дельфи алгоритмов построения базисов Грёбнера. При чем не только для идеалов полиномиального кольца с фиксированным числовым полем и фиксированным числом свободных переменных. Скажем число свободных переменных произвольно; коэффициенты полиномов имеют произвольную природу, будь то хоть дроби неограниченной точности, хоть дробно-рациональные функции, хоть опять же полиномы. И пусть я хочу производить эти расчеты не только под Win*, но и под *nix. Если я увижу такую реализацию на Дельфи, и она будет только в 2 раза больше по объему кода и только в 2 раза медленней по выполнению, чем моя собственная, совсем неоптимальная реализация на С++, обещаю съесть свои носки smile

Цитата(Snowy @  21.11.2006,  23:10 Найти цитируемый пост)
Хотя, если идти от обратного - VCL - несомненный плюс перед плюсами smile

Цитата(alexeis1 @  23.11.2006,  10:55 Найти цитируемый пост)
У делфи есть своя область работы откуда ее не вытолкнешь, но когда выходишь из этой области, то пишешь на том, что больше подходит. Я сам сейчас пишу под WinCE, на Visual C++ Embedded, и буду дальше утверждать, что на то, что у меня в делфи уходили минуты, тут приходится делать часами

Пока на с++ был знаком только с MFC, я тоже думал, что круче VCL для ГУёв ничего нет. Только, потом с Qt познакомился -- и все встало на свои места smile

Цитата(alexeis1 @  23.11.2006,  10:55 Найти цитируемый пост)
Ну вот пожалуйста, я же говорил, что с хорошим опытом делфиста, когда уже понимаешь как нужно писать программы уже не составляет труда перейти на другой язык. 

А что, я где-то говорил, что до Дельфи не был знаком с Basic, Pascal, ASM и Lisp-ом? 

Автор: Alexeis 23.11.2006, 13:21
Вообще skyboy прав, тут все зависит от версии компилятора, а вообще ИМХО некорректно сравнивать Среду разработки и язык, не указывая версии ни того ни другого. Тем более говорить о переходе. Ведь не ясно с чего на что имеет смысл переходить или не переходить.

Добавлено @ 13:25 
Цитата(Artemios @  23.11.2006,  13:21 Найти цитируемый пост)
А что, я где-то говорил, что до Дельфи не был знаком с Basic, Pascal, ASM и Lisp-ом? 

Да нет тут просто рядом была тема где утверждали, что нужно учить сразу только С++... типа так будет лучше.

Добавлено @ 13:27 
Цитата(Artemios @  23.11.2006,  13:21 Найти цитируемый пост)
Пока на с++ был знаком только с MFC, я тоже думал, что круче VCL для ГУёв ничего нет. Только, потом с Qt познакомился -- и все встало на свои места

А кто сказал что я юзаю MFC? Я его совсем не юзаю и он мне совсем не нравится... о нем даже речь не идет.

Автор: Romikgy 23.11.2006, 13:32
Цитата(Artemios @  23.11.2006,  12:21 Найти цитируемый пост)
алгоритмов построения базисов Грёбнера.

я эту фигню первый раз слышу, и не знаю ее мат алгоритмов, но думаю ничего сложного (для математики) там нет, так что она может быть реализована, и на дельфи!
Цитата(Artemios @  23.11.2006,  12:21 Найти цитируемый пост)
 под Win*, но и под *nix

здесь вопрос спорный если юзать дельфи , то она чисто виндовая , но есть еще куликс(имхо, при использовании CLX , эта вещь понимается и виндой и юниксом) и фрипаскаль 

Artemios, и вообще не надо ограничивать свой кругозор только тем что ты знаешь, имхо есть еще куча применений этого языка, помимо базисов и т.п.
Цитата(Artemios @  23.11.2006,  12:21 Найти цитируемый пост)
 обещаю съесть свои носки

и не надо давать таких обещаний , кто то может ради принципа взять да написать эту весч на дельфи (есть же спец бальшого уровня, принципиальные(если не захарит )) , более оптимально , и прийдется ведь есть smile

Автор: SergeCpp 23.11.2006, 14:18
http://mathworld.wolfram.com/GroebnerBasis.html

Цитата
Because computing a Gröbner basis can be so computationally expensive, variables can sometimes be eliminated more readily from a system of equations by manually computing the resultant of successive pairs of equations to iteratively eliminate one variable at each step.

http://www.google.com/search?hl=en&lr=&q=Groebner+basis+template+C%2B%2B

http://en.wikipedia.org/wiki/Gr%C3%B6bner_basis

P.S.
  • http://www.google.com/search?hl=en&lr=&q=Groebner+basis+C%2B%2B — 29,100 results about
  • http://www.google.com/search?hl=en&q=Groebner+basis+Delphi — 322 results about

Автор: Artemios 23.11.2006, 14:21
Цитата(Romikgy @  23.11.2006,  13:32 Найти цитируемый пост)
я эту фигню первый раз слышу, и не знаю ее мат алгоритмов, но думаю ничего сложного (для математики) там нет, так что она может быть реализована, и на дельфи!

Цитата(Romikgy @  23.11.2006,  13:32 Найти цитируемый пост)
и не надо давать таких обещаний , кто то может ради принципа взять да написать эту весч на дельфи (есть же спец бальшого уровня, принципиальные(если не захарит )) , более оптимально , и прийдется ведь есть

Ну-ну. Я от своих слов отказываться не буду smile 

Цитата(Romikgy @  23.11.2006,  13:32 Найти цитируемый пост)
Artemios, и вообще не надо ограничивать свой кругозор только тем что ты знаешь, имхо есть еще куча применений этого языка, помимо базисов и т.п.

Да никто и не спорит. Только заявлялось, и продолжает заявляться, что дельфи -- универсальный инструмент, на котором при достаточном желании можно хорошо (читай быстро, кратко, оптимально) решить практически любую задачу.

Цитата(Romikgy @  23.11.2006,  13:32 Найти цитируемый пост)
но думаю ничего сложного (для математики) там нет

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

Автор: Romikgy 23.11.2006, 14:37
Цитата(Artemios @  23.11.2006,  13:21 Найти цитируемый пост)
Я от своих слов отказываться не буду

да кто ж тя заставляет отказыватся? имхо нет вещь , очень много чего позволяющая, и свобода слова в первую очередьsmile
Цитата(Artemios @  23.11.2006,  13:21 Найти цитируемый пост)
что дельфи -- универсальный инструмент, на котором при достаточном желании можно хорошо (читай быстро, кратко, оптимально) решить практически любую задачу.

да , это все правильно , с одной оговоркой, для новичка! Для профи , имхо все равно на чем программить!
Цитата(Artemios @  23.11.2006,  13:21 Найти цитируемый пост)
Ну как тебе сказать?

скажи как есть smile

Автор: bel_nikita 23.11.2006, 16:13
Цитата(Romikgy @ 23.11.2006,  13:37)
да , это все правильно , с одной оговоркой, для новичка! Для профи , имхо все равно на чем программить!

заблуждение это

Автор: Romikgy 23.11.2006, 16:17
bel_nikita, 
Цитата(bel_nikita @  23.11.2006,  15:13 Найти цитируемый пост)
заблуждение это

имхо нет ! опровергни!
PS 
smile
http://forum.vingrad.ru/act-ST/f-193/t-123285/unread-1.html

Автор: SergeCpp 23.11.2006, 17:02
Друзья! Давайте жить дружно! user posted image

user posted image user posted image

Автор: Romikgy 23.11.2006, 17:11
Цитата(SergeCpp @  23.11.2006,  16:02 Найти цитируемый пост)
Друзья! Давайте жить дружно!

я за , с кем дружить будем ? smile

Автор: bel_nikita 23.11.2006, 17:31
Цитата(Romikgy @ 23.11.2006,  15:17)
bel_nikita, 
Цитата(bel_nikita @  23.11.2006,  15:13 Найти цитируемый пост)
заблуждение это

имхо нет ! опровергни!

Возможно, идиотский пример, но все же...
К примеру, музыкант. У всех есть слух, все знают ноты, все сдают сольфеджио и т.д. и т.п. Все они профи (как тут выражаются). Но, почему-то, скрипач не может так виртуозно сыграть на гитаре, как он делает это на скрипке.  Казалось бы какая разница на чем играть? Ноты одинаковые; струны есть как на скрипке так и на гитаре. В чем дело? Неужили он не профессионал? Но тогда почему, на его сольные выступления в консерватории, приходит полный зал...

Автор: Romikgy 23.11.2006, 17:43
Цитата(bel_nikita @  23.11.2006,  16:31 Найти цитируемый пост)
 идиотский пример

точно , и не корректный

Цитата(bel_nikita @  23.11.2006,  16:31 Найти цитируемый пост)
 У всех есть слух

не у все! (и это главное)

Цитата(bel_nikita @  23.11.2006,  16:31 Найти цитируемый пост)
 Но, почему-то, скрипач не может так виртуозно сыграть на гитаре, как он делает это на скрипке.

потому , что это не профи, а играет по нотам на том , на чем его учили!
Цитата(bel_nikita @  23.11.2006,  16:31 Найти цитируемый пост)
Неужили он не профессионал? Но тогда почему, на его сольные выступления в консерватории, приходит полный зал..

возможно и нет, 
те кто собирает полный зал , это , имхо, музыкант от бога, как любят говорить,
а выпускников муз школ целая куча, а на концерты ходят к единицам!
И реальный профи умеет играть (просто без виртуоза )не только на скрипке но и на гитаре, и на пианине,
и на баяне smile

Автор: skyboy 23.11.2006, 17:56
Цитата(Romikgy @  23.11.2006,  16:43 Найти цитируемый пост)
И реальный профи умеет играть (просто без виртуоза )не только на скрипке но и на гитаре, и на пианине,
и на баяне

как мы можем называть Пушкина "классиком", коль он на японском стихотворения не писал, да?  smile А летчик - нато и летчик, чтоб и танки мог водить, и подводной лодкой управлять... Средства ведь передвижения - для профессионала не должно быть разницы ;)
Вот скорость обучения новому повышается приприобретении опыта, но говорить, что "профессионалу все равно - хоть на J писать, хоть на баяне играть" я бы не стал. 
Цитата(SergeCpp @  23.11.2006,  16:02 Найти цитируемый пост)
Друзья! Давайте жить дружно!

Давайте. А где Вирт среди фоток? smile Впрочем, дружно можно жить и без него  smile 

Автор: Alexeis 23.11.2006, 17:57
Цитата(Romikgy @  23.11.2006,  17:43 Найти цитируемый пост)
и на баяне  smile 

Да уж на этом инструменте мы все умеем играть smile 

Автор: Romikgy 23.11.2006, 18:10
skyboy, 
Цитата(skyboy @  23.11.2006,  16:56 Найти цитируемый пост)
как мы можем называть Пушкина "классиком", коль он на японском стихотворения не писал, да?   А летчик - нато и летчик, чтоб и танки мог водить, и подводной лодкой управлять... Средства ведь передвижения - для профессионала не должно быть разницы ;)

не надо путаль мух с котолетами!
я не говорил , что музыкант , должен умет сделать балалайку!
А вот тот кто делает балалайки , имхо должен уметь на них играть!

вернемся к теме! имхо чел который ся считает профи, должен не только уметь пользоватся будь то С++ или дельфи, но и знать что есть такое пхп , перл , и асм и васик и т.п. 
писать виртуозно на них не надо , но и кричать , что С++ это рулез , а остальное все ф топку, также не надо , если есть свое мненние , имхо обосновать надо , корректно !
имхо область применения что си что паскаля уже давно определилась и его юзают там где он лучше, те кто знает, где оно будет лучше, и большая масса народу, юзают то что знает , везде где надо и где не сильно, ибо зачем учить что то новое? когда я крут в том что знаю , хмммм .....

Автор: MAKCim 23.11.2006, 20:56
Цитата

что С++ это рулез , а остальное все ф топку, также не надо , если есть свое мненние , имхо обосновать надо , корректно !

C++ крут, т. к его область применения велика и в каждой этой области при правильном его (языка) применении получается быстрый и эффективный код (хотя компиляторы в общем случае бывают разные); он крут потому как обладает гибкостью - возможностью написания кода синтаксически разными способами, т. е всегда (или почти всегда) есть несколько способов решения проблемы и в зависимости от ситуации есть возможность выбора: какое из этих решений использовать; он крут, т. к в меру ограничивает возможности программиста, давая ему возможность "жульничать" (в отличие от многих других языков) там, где оно (жульничество) оправдано; еще по многим показателям он крут, но это уже будет имхо

Автор: Daevaorn 23.11.2006, 21:05
Цитата(skyboy @  23.11.2006,  14:15 Найти цитируемый пост)
Тогда сравниваем Borland C++ 3.01 и Borland Delphi 2005

Лучше сравним современные компилятор Delphi и компилятор С++ от Intel, а?
А про сам язык я уже говорил. По сути Delphi почти подмножество С++, по языковым возможностям, конечно.

Автор: skyboy 23.11.2006, 21:14
Цитата(Daevaorn @  23.11.2006,  20:05 Найти цитируемый пост)
По сути Delphi почти подмножество С++, по языковым возможностям, конечно. 

а котлеты - подмножество мух?  smile 
Цитата(Daevaorn @  23.11.2006,  20:05 Найти цитируемый пост)
Лучше сравним современные компилятор Delphi и компилятор С++ от Intel, а?

давай уж лучше Borland Delphi и Visual C++. Интересно, умеет ли творение Microsoft компилировать программы под FreeBSD....  smile

Добавлено @ 21:15 
Цитата(MAKCim @  23.11.2006,  19:56 Найти цитируемый пост)
в меру ограничивает возможности программиста, давая ему возможность "жульничать" (в отличие от многих других языков) там, где оно (жульничество) оправдано

если ты про type-casting в том или ином виде(void-указатели и прочее подобное), то он есть даже в ассемблере(word ptr/byte ptr; в крайней мере, в некоторых реализациях) smile

Автор: Romikgy 23.11.2006, 23:20
MAKCim, 
Цитата(MAKCim @  23.11.2006,  19:56 Найти цитируемый пост)
C++ крут

имхо обоснования расплывчатые, имхо почти все тоже относится к дельфи  smile  а терь поочереди
Цитата(MAKCim @  23.11.2006,  19:56 Найти цитируемый пост)
его область применения велика и в каждой этой области при правильном его (языка) применении получается быстрый и эффективный код

также как и дельфи smile
Цитата(MAKCim @  23.11.2006,  19:56 Найти цитируемый пост)
он крут потому как обладает гибкостью - возможностью написания кода синтаксически разными способами

с одной стороны эта гибкость хороша, с другой уж слишком много проблем с ней при освоении ее
Цитата(MAKCim @  23.11.2006,  19:56 Найти цитируемый пост)
всегда (или почти всегда) есть несколько способов решения проблемы и в зависимости от ситуации есть возможность выбора

аналогично и дельфи
Цитата(MAKCim @  23.11.2006,  19:56 Найти цитируемый пост)
в меру ограничивает возможности программиста, давая ему возможность "жульничать" (в отличие от многих других языков) там, где оно (жульничество) оправдано

дык ограничивает или дает возможность? smile так же можно имхо и на дельфи (только уточни какое жулничество ты имеешь ввиду?
Цитата(Daevaorn @  23.11.2006,  20:05 Найти цитируемый пост)
По сути Delphi почти подмножество С++

в какой то мере, имхо , по минимуму одинаковый класс, или уровень
Цитата(skyboy @  23.11.2006,  20:14 Найти цитируемый пост)
а котлеты - подмножество мух?

ага из мух тоже котлеты можно сделать  smile 
Цитата(skyboy @  23.11.2006,  20:14 Найти цитируемый пост)
Интересно, умеет ли творение Microsoft компилировать программы под FreeBSD...

А че вы прицепились к кроссплатформености, давайте ограничемся платформой win32 
т.к. никс системы написаны на си и там не было конкурентов в качестве борланда , при начале его освоения , а когда борланд обратил внимание на никсы былоо поздно!
так что в никсах си крут вопросов нет!
Цитата(skyboy @  23.11.2006,  20:14 Найти цитируемый пост)
если ты про type-casting в том или ином виде(void-указатели и прочее подобное), то он есть даже в ассемблере(word ptr/byte ptr; в крайней мере, в некоторых реализациях)

Вот видишь еще одно доказательство smile

PS имхо все обоснования пространственные и относятся к большенству языков высокого уровня, 
более конкретные есть именно относящиеся к С++ плз

Автор: likehood 23.11.2006, 23:38
Кстати, давно хотел спросить, есть ли в Delphi аналог контейнерных классов С++ (списки, словари, векторы) и если есть, то насколько удобно с ними работать?

Автор: Artemios 24.11.2006, 02:27
Цитата(SergeCpp @  23.11.2006,  14:18 Найти цитируемый пост)
Gröbner Basis
...
Как раз шаблоны...

Угу. И перегрузка операторов.

Цитата(Romikgy @  23.11.2006,  14:37 Найти цитируемый пост)
Для профи , имхо все равно на чем программить!

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

Цитата(Romikgy @  23.11.2006,  14:37 Найти цитируемый пост)
скажи как есть

Да там же и сказал:
Цитата(Artemios @  23.11.2006,  14:21 Найти цитируемый пост)
Эта область компьютерной алгебры до сих пор переживает период бурного развития и со стороны алгебры, и со стороны алгоритмики.

Ну и еще раз повторю: в математике на дельфи далеко не уедешь. По краткости и простоте кода здесь языкам функционального программирования нет равных (напр. система Reduce написана на лиспе), однако когда встает вопрос не только о сложных алгебраических структурах, но и о ресурсоемких вычислениях с ними -- С++ нет равных.

Цитата(MAKCim @  23.11.2006,  20:56 Найти цитируемый пост)
C++ крут

Имхо, патриотизм и фанатизм - разные вещи. Многие задачи мне гораздо проще (короче и быстрее) решить в рамках Python-а (последнее время примерно 90% кода пишу в Питоне). Много сложных логических продукций -- цепляем *.so (ну или *.dll) Пролога, и т.д. Но, естественно, когда машинных ресурсов не хватает -- то конечно ручками и на С++ only.

Цитата(skyboy @  23.11.2006,  21:14 Найти цитируемый пост)
Интересно, умеет ли творение Microsoft компилировать программы под FreeBSD....

Интересно, а какое дело человеку под FreeBSD до творений Microsoft?

Цитата(Romikgy @  23.11.2006,  23:20 Найти цитируемый пост)
А че вы прицепились к кроссплатформености, давайте ограничемся платформой win32 

То есть так вот взять и отсечь все, что не Вынь+ПиСи?

Автор: nerezus 24.11.2006, 08:51
Короче сменил свое мнение о делфи, убедился, что делфи может большинство из того, что может С++.
Хотя все-таки имеет недостатки(Отсутствие кроссплатформенности, к примеру). 

Автор: Romikgy 24.11.2006, 10:03
Цитата(Artemios @  24.11.2006,  01:27 Найти цитируемый пост)
И перегрузка операторов.

Что делает перегрузка операторов? только лишь красивое отображение, ибо (допустим оператор равно) можно написать а=с; а можно написать и а.operstor=( с); так не аналог ли это обычной ф-ции класса? имхо тоже , так что перегрузки операторов имхо хорошо , удобно , но не смертельно  smile 
Цитата(Artemios @  24.11.2006,  01:27 Найти цитируемый пост)
 А я думал, профи просто более свободен в выборе наиболее адекватного метода решения поставленной задачи. Как то не копать могилы ложкой и не ездить в магазин на танке.

Совершенно с тобой согласен, и если ты перечитаешь мои посты, то поймешь что к именно этому я и вел разговор, что по задаче выбирается средство ее реализации, если профи!, иначе , пишется на том , на чем знаешь smile
Цитата(Artemios @  24.11.2006,  01:27 Найти цитируемый пост)
в математике на дельфи далеко не уедешь

можншь обосновать чем слаба математика в дельфи? только плз аргументировано!
Цитата(Artemios @  24.11.2006,  01:27 Найти цитируемый пост)
По краткости и простоте кода здесь языкам функционального программирования нет равных

не совсем понял какого языка ? smile
Цитата(Artemios @  24.11.2006,  01:27 Найти цитируемый пост)
однако когда встает вопрос не только о сложных алгебраических структурах, но и о ресурсоемких вычислениях с ними -- С++ нет равных.

имхо вообще все математику проще считать в MatLab или анаогичному ему, как раз там вся оптимизация на математику направлена  smile 
Цитата(Artemios @  24.11.2006,  01:27 Найти цитируемый пост)
То есть так вот взять и отсечь все, что не Вынь+ПиСи?

нет, я этого не говорил, имхо это чисто ваши домыслы!
Цитата(nerezus @  24.11.2006,  07:51 Найти цитируемый пост)
Короче сменил свое мнение о делфи, убедился, что делфи может большинство из того, что может С++.Хотя все-таки имеет недостатки(Отсутствие кроссплатформенности, к примеру). 

Насчет изменения мнения , я лично не страрался его изменить никому! Просто хотел сказать что не нужно зацикливатся на чем то одном , надо развиваться, а когда знаешь многое проще решать чем лучше и быстрее пользоватся в той или иной ситуации.
Насчет недостатка, да дельфи не кроссплатформена но дельфи это потомок объектного паскаля! А объектный паскаль - это есть и Куликс и фрипаскаль, а это никсовые вещи!
PS кса ту подумал недавно , прогресс ведь всегда основывался на здоровой конкуренции, ведь так?
какая конкуренция С++ в никс подобных системах? имхо никакой один он там такой мощный, а на вин32 платформе , у него (т.е. С++) есть мощный конкурент Дельфи, и терь можно задуматся, какая платформа дала больше новшеств в языках, никсовая или виндова?  smile 

Автор: mr.DUDA 24.11.2006, 10:18
Цитата(Romikgy @  24.11.2006,  09:03 Найти цитируемый пост)
имхо вообще все математику проще считать в MatLab или анаогичному ему, как раз там вся оптимизация на математику направлена

Имелась ввиду математика наподобие такой:
Код
/* decode an B-frame direct & interpolate macroblock */
static void
decoder_bf_interpolate_mbinter(DECODER * dec,
                IMAGE forward,
                IMAGE backward,
                MACROBLOCK * pMB,
                const uint32_t x_pos,
                const uint32_t y_pos,
                Bitstream * bs,
                const int direct)
{
  uint32_t stride = dec->edged_width;
  uint32_t stride2 = stride / 2;
  int uv_dx, uv_dy;
  int b_uv_dx, b_uv_dy;
  uint8_t *pY_Cur, *pU_Cur, *pV_Cur;
  const uint32_t cbp = pMB->cbp;

  pY_Cur = dec->cur.y + (y_pos << 4) * stride + (x_pos << 4);
  pU_Cur = dec->cur.u + (y_pos << 3) * stride2 + (x_pos << 3);
  pV_Cur = dec->cur.v + (y_pos << 3) * stride2 + (x_pos << 3);

  validate_vector(pMB->mvs, x_pos, y_pos, dec);
  validate_vector(pMB->b_mvs, x_pos, y_pos, dec);

  if (!direct) {
    uv_dx = pMB->mvs[0].x;
    uv_dy = pMB->mvs[0].y;
    b_uv_dx = pMB->b_mvs[0].x;
    b_uv_dy = pMB->b_mvs[0].y;

    if (dec->quarterpel) {
            if (dec->bs_version <= BS_VERSION_BUGGY_CHROMA_ROUNDING) {
                uv_dx = (uv_dx>>1) | (uv_dx&1);
                uv_dy = (uv_dy>>1) | (uv_dy&1);
                b_uv_dx = (b_uv_dx>>1) | (b_uv_dx&1);
                b_uv_dy = (b_uv_dy>>1) | (b_uv_dy&1);
            }
            else {
        uv_dx /= 2;
        uv_dy /= 2;
        b_uv_dx /= 2;
        b_uv_dy /= 2;
      }
    }

    uv_dx = (uv_dx >> 1) + roundtab_79[uv_dx & 0x3];
    uv_dy = (uv_dy >> 1) + roundtab_79[uv_dy & 0x3];
    b_uv_dx = (b_uv_dx >> 1) + roundtab_79[b_uv_dx & 0x3];
    b_uv_dy = (b_uv_dy >> 1) + roundtab_79[b_uv_dy & 0x3];

  } else {
      if (dec->quarterpel) { /* for qpel the /2 shall be done before summation. We've done it right in the encoder in the past. */
                             /* TODO: figure out if we ever did it wrong on the encoder side. If yes, add some workaround */
        if (dec->bs_version <= BS_VERSION_BUGGY_CHROMA_ROUNDING) {
            int z;
            uv_dx = 0; uv_dy = 0;
            b_uv_dx = 0; b_uv_dy = 0;
            for (z = 0; z < 4; z++) {
              uv_dx += ((pMB->mvs[z].x>>1) | (pMB->mvs[z].x&1));
              uv_dy += ((pMB->mvs[z].y>>1) | (pMB->mvs[z].y&1));
              b_uv_dx += ((pMB->b_mvs[z].x>>1) | (pMB->b_mvs[z].x&1));
              b_uv_dy += ((pMB->b_mvs[z].y>>1) | (pMB->b_mvs[z].y&1));
            }
        }
        else {
            uv_dx = (pMB->mvs[0].x / 2) + (pMB->mvs[1].x / 2) + (pMB->mvs[2].x / 2) + (pMB->mvs[3].x / 2);
            uv_dy = (pMB->mvs[0].y / 2) + (pMB->mvs[1].y / 2) + (pMB->mvs[2].y / 2) + (pMB->mvs[3].y / 2);
            b_uv_dx = (pMB->b_mvs[0].x / 2) + (pMB->b_mvs[1].x / 2) + (pMB->b_mvs[2].x / 2) + (pMB->b_mvs[3].x / 2);
            b_uv_dy = (pMB->b_mvs[0].y / 2) + (pMB->b_mvs[1].y / 2) + (pMB->b_mvs[2].y / 2) + (pMB->b_mvs[3].y / 2);
        } 
    } else {
      uv_dx = pMB->mvs[0].x + pMB->mvs[1].x + pMB->mvs[2].x + pMB->mvs[3].x;
      uv_dy = pMB->mvs[0].y + pMB->mvs[1].y + pMB->mvs[2].y + pMB->mvs[3].y;
      b_uv_dx = pMB->b_mvs[0].x + pMB->b_mvs[1].x + pMB->b_mvs[2].x + pMB->b_mvs[3].x;
      b_uv_dy = pMB->b_mvs[0].y + pMB->b_mvs[1].y + pMB->b_mvs[2].y + pMB->b_mvs[3].y;
    }

    uv_dx = (uv_dx >> 3) + roundtab_76[uv_dx & 0xf];
    uv_dy = (uv_dy >> 3) + roundtab_76[uv_dy & 0xf];
    b_uv_dx = (b_uv_dx >> 3) + roundtab_76[b_uv_dx & 0xf];
    b_uv_dy = (b_uv_dy >> 3) + roundtab_76[b_uv_dy & 0xf];
  }

  start_timer();
  if(dec->quarterpel) {
    if(!direct) {
      interpolate16x16_quarterpel(dec->cur.y, forward.y, dec->qtmp.y, dec->qtmp.y + 64,
                    dec->qtmp.y + 128, 16*x_pos, 16*y_pos,
                    pMB->mvs[0].x, pMB->mvs[0].y, stride, 0);
    } else {
      interpolate8x8_quarterpel(dec->cur.y, forward.y, dec->qtmp.y, dec->qtmp.y + 64,
                    dec->qtmp.y + 128, 16*x_pos, 16*y_pos,
                    pMB->mvs[0].x, pMB->mvs[0].y, stride, 0);
      interpolate8x8_quarterpel(dec->cur.y, forward.y, dec->qtmp.y, dec->qtmp.y + 64,
                    dec->qtmp.y + 128, 16*x_pos + 8, 16*y_pos,
                    pMB->mvs[1].x, pMB->mvs[1].y, stride, 0);
      interpolate8x8_quarterpel(dec->cur.y, forward.y, dec->qtmp.y, dec->qtmp.y + 64,
                    dec->qtmp.y + 128, 16*x_pos, 16*y_pos + 8,
                    pMB->mvs[2].x, pMB->mvs[2].y, stride, 0);
      interpolate8x8_quarterpel(dec->cur.y, forward.y, dec->qtmp.y, dec->qtmp.y + 64,
                    dec->qtmp.y + 128, 16*x_pos + 8, 16*y_pos + 8,
                    pMB->mvs[3].x, pMB->mvs[3].y, stride, 0);
    }
  } else {
    interpolate8x8_switch(dec->cur.y, forward.y, 16 * x_pos, 16 * y_pos,
              pMB->mvs[0].x, pMB->mvs[0].y, stride, 0);
    interpolate8x8_switch(dec->cur.y, forward.y, 16 * x_pos + 8, 16 * y_pos,
              pMB->mvs[1].x, pMB->mvs[1].y, stride, 0);
    interpolate8x8_switch(dec->cur.y, forward.y, 16 * x_pos, 16 * y_pos + 8,
              pMB->mvs[2].x, pMB->mvs[2].y, stride, 0);
    interpolate8x8_switch(dec->cur.y, forward.y, 16 * x_pos + 8, 16 * y_pos + 8,
              pMB->mvs[3].x, pMB->mvs[3].y, stride, 0);
  }

  interpolate8x8_switch(dec->cur.u, forward.u, 8 * x_pos, 8 * y_pos, uv_dx,
            uv_dy, stride2, 0);
  interpolate8x8_switch(dec->cur.v, forward.v, 8 * x_pos, 8 * y_pos, uv_dx,
            uv_dy, stride2, 0);


  if(dec->quarterpel) {
    if(!direct) {
      interpolate16x16_add_quarterpel(dec->cur.y, backward.y, dec->qtmp.y, dec->qtmp.y + 64,
          dec->qtmp.y + 128, 16*x_pos, 16*y_pos,
          pMB->b_mvs[0].x, pMB->b_mvs[0].y, stride, 0);
    } else {
      interpolate8x8_add_quarterpel(dec->cur.y, backward.y, dec->qtmp.y, dec->qtmp.y + 64,
          dec->qtmp.y + 128, 16*x_pos, 16*y_pos,
          pMB->b_mvs[0].x, pMB->b_mvs[0].y, stride, 0);
      interpolate8x8_add_quarterpel(dec->cur.y, backward.y, dec->qtmp.y, dec->qtmp.y + 64,
          dec->qtmp.y + 128, 16*x_pos + 8, 16*y_pos,
          pMB->b_mvs[1].x, pMB->b_mvs[1].y, stride, 0);
      interpolate8x8_add_quarterpel(dec->cur.y, backward.y, dec->qtmp.y, dec->qtmp.y + 64,
          dec->qtmp.y + 128, 16*x_pos, 16*y_pos + 8,
          pMB->b_mvs[2].x, pMB->b_mvs[2].y, stride, 0);
      interpolate8x8_add_quarterpel(dec->cur.y, backward.y, dec->qtmp.y, dec->qtmp.y + 64,
          dec->qtmp.y + 128, 16*x_pos + 8, 16*y_pos + 8,
          pMB->b_mvs[3].x, pMB->b_mvs[3].y, stride, 0);
    }
  } else {
    interpolate8x8_add_switch(dec->cur.y, backward.y, 16 * x_pos, 16 * y_pos,
        pMB->b_mvs[0].x, pMB->b_mvs[0].y, stride, 0);
    interpolate8x8_add_switch(dec->cur.y, backward.y, 16 * x_pos + 8,
        16 * y_pos, pMB->b_mvs[1].x, pMB->b_mvs[1].y, stride, 0);
    interpolate8x8_add_switch(dec->cur.y, backward.y, 16 * x_pos,
        16 * y_pos + 8, pMB->b_mvs[2].x, pMB->b_mvs[2].y, stride, 0);
    interpolate8x8_add_switch(dec->cur.y, backward.y, 16 * x_pos + 8,
        16 * y_pos + 8, pMB->b_mvs[3].x, pMB->b_mvs[3].y, stride, 0);
  }

  interpolate8x8_add_switch(dec->cur.u, backward.u, 8 * x_pos, 8 * y_pos,
      b_uv_dx, b_uv_dy, stride2, 0);
  interpolate8x8_add_switch(dec->cur.v, backward.v, 8 * x_pos, 8 * y_pos,
      b_uv_dx, b_uv_dy, stride2, 0);

  stop_comp_timer();

  if (cbp)
    decoder_mb_decode(dec, cbp, bs, pY_Cur, pU_Cur, pV_Cur, pMB);
}  


Исходник XviD.

Автор: Romikgy 24.11.2006, 10:25
Цитата(mr.DUDA @  24.11.2006,  09:18 Найти цитируемый пост)
 validate_vector


Цитата(mr.DUDA @  24.11.2006,  09:18 Найти цитируемый пост)
roundtab_76

незнаю что это такое , но имхо в этой ф_ции нет ничего сложного для реализации на дельфи
сдвиги , сумма/умножение , логика это все есть в дельфи
PS переписывать всю ф_цию на дельфи не хочется слишком большая она

Автор: skyboy 24.11.2006, 10:57
Цитата(Romikgy @  24.11.2006,  09:03 Найти цитируемый пост)

Цитата(Artemios @  24.11.2006,  01:27 Найти цитируемый пост)
По краткости и простоте кода здесь языкам функционального программирования нет равных
не совсем понял какого языка

На примере: LISP - язык функционального программирования. Просто он не один такой.
mr.DUDA, я надеюсь, ты не пытался продемонстрировать на этом примере бессилие Delphi при решении математических задач? А то я как-то сходу ничего кроме арифметических и битовых операций, имеющихся в делфи, ничего выдающегося не увидел(исключая объем и алгоритм smile)

Автор: Artemios 24.11.2006, 11:21
Цитата(Romikgy @  24.11.2006,  10:03 Найти цитируемый пост)
Что делает перегрузка операторов? только лишь красивое отображение, ибо (допустим оператор равно) можно написать а=с; а можно написать и а.operstor=( с); так не аналог ли это обычной ф-ции класса? имхо тоже , так что перегрузки операторов имхо хорошо , удобно , но не смертельно

Никто конечно не спорит, не смертельно, я не говорил о перегрузке, как об основном достоинстве. smile
Однако как-то не очень приятно писать что-то вида inv(a.div(b.add( с )).mul(d).sub(c.div(d))), тем более, когда типы переменных в выражении -- параметры шаблона.

Цитата(Romikgy @  24.11.2006,  10:03 Найти цитируемый пост)
можншь обосновать чем слаба математика в дельфи? только плз аргументировано!

Я говорил о слабости дельфи в математике, а не наоборот. В качестве аргумента я привел достаточно простую задачу -- базисы Грёбнера, да и вообще просто полиномиальная алгебра. В реальных задачах, хочу заметить, алгебраические структуры гораздо сложнее простых полиномов.

Цитата(Romikgy @  24.11.2006,  10:03 Найти цитируемый пост)
не совсем понял какого языка ?

http://ru.wikipedia.org/wiki/%D0%AF%D0%B7%D1%8B%D0%BA_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F

Цитата(Romikgy @  24.11.2006,  10:03 Найти цитируемый пост)
имхо вообще все математику проще считать в MatLab или анаогичному ему, как раз там вся оптимизация на математику направлена

Ну во-первых, Матлаб -- это в основном численные расчеты матричной алгебры, а я имел в виду (максимально упрощу) символьную аримфетику. Численный счет предполагает счет с некоторой точностью (ошибки округления и т.д.). Численный счет на матрицах в Матлабе организован библиотечкой LAPACK с древними, проверенными временем алгоритмами, написанными на FORTRAN.
Я, кстати, повторюсь, численный счет вообще не упоминаю, я говорил о неограниченной точности и нечисловых алгебраических структурах.
Во-вторых, некоторые элементы символьной арифметики в Матлабе реализуются библиотекой от Maple V. Ну а в Мэйпле последних версий, кстати, вычисление инволютивных базисов Грёбнера реализовано моим коллегой и бывшим научруком smile
Другим коллегой организованы те же самые алгоритмы инволютивных базисов для системы Singular.
То есть, говоря о том, где проще считать, подумай: кто и как организовал этот счет smile

Цитата(Romikgy @  24.11.2006,  10:03 Найти цитируемый пост)
То есть так вот взять и отсечь все, что не Вынь+ПиСи?

нет, я этого не говорил, имхо это чисто ваши домыслы!

То есть как это не говорил? Кто предлагал ограничиться в дискуссии платформой win32? А если мое базовое направление -- *.nix, так мне и в дискуссию не вступать?

Автор: Romikgy 24.11.2006, 11:42
Artemios, 
ты мои посты нормально читаешь? или через строку?
Цитата(Artemios @  24.11.2006,  10:21 Найти цитируемый пост)
 как-то не очень приятно писать

об этом и я упоминал
Цитата(Artemios @  24.11.2006,  10:21 Найти цитируемый пост)
 тем более, когда типы переменных в выражении -- параметры шаблона.

при чем здесь шаблоны( их вообще нет в дельфи)
Цитата(Artemios @  24.11.2006,  10:21 Найти цитируемый пост)
Я говорил о слабости дельфи в математике, а не наоборот.

аргументы , тогда ваших слов о слабости дельфи в математике?
Цитата(Artemios @  24.11.2006,  10:21 Найти цитируемый пост)
привел достаточно простую задачу -- базисы Грёбнера, да и вообще просто полиномиальная алгебра. 

уже простая smile а раньше сложная была smile 
еще раз повторюсь этим базисом ни дельфи ни си не ограничивается, и не надо притягивать весь смысл языков только к решаемой вами проблеме!
Цитата(Artemios @  24.11.2006,  10:21 Найти цитируемый пост)
 Матлаб -- это в основном численные расчеты матричной алгебры, а я имел в виду (максимально упрощу) символьную аримфетику.

имхо матлаб на много расчитан( хотя я в нем и не спец)
символьная арифметика это что?
Цитата(Artemios @  24.11.2006,  10:21 Найти цитируемый пост)
 вычисление инволютивных базисов Грёбнера реализовано моим коллегой и бывшим научруком 

поздравляю вас с таким научруком
Цитата(Artemios @  24.11.2006,  10:21 Найти цитируемый пост)
То есть как это не говорил? Кто предлагал ограничиться в дискуссии платформой win32? А если мое базовое направление -- *.nix, так мне и в дискуссию не вступать?

Вы название темы видели?
и какое отношение дельфи имеет к юниксу?

Автор: Alexeis 24.11.2006, 11:58
Цитата(Artemios @  24.11.2006,  11:21 Найти цитируемый пост)

То есть как это не говорил? Кто предлагал ограничиться в дискуссии платформой win32? А если мое базовое направление -- *.nix, так мне и в дискуссию не вступать?


Тогда некорректно говорить о приемуществах. Нужно сравнивать одинаковые вещи. Т.е. либо языки программирования либо конкретные среды разработки. Если сравнивается Делфи, то ее нужно сравнивать со конкретной средой разработки. Поскольку Делфи компилит под винду, то логично сравнивать с компилятором С++ под винду, иначе вопрос перейдет из категории компиляторов в сравнение ОС. Так что замечание по существу. 

Автор: Void 24.11.2006, 16:59
Цитата(Romikgy @  24.11.2006,  13:42 Найти цитируемый пост)
символьная арифметика это что?

Romikgy, я поражаюсь, вот умные вещи часто говоришь, а про существование гугла забываешь.
http://en.wikipedia.org/wiki/Symbolic_mathematics
Цитата(Romikgy @  24.11.2006,  13:42 Найти цитируемый пост)
и не надо притягивать весь смысл языков только к решаемой вами проблеме!

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

Автор: Romikgy 24.11.2006, 17:44
Void, 
Цитата(Void @  24.11.2006,  15:59 Найти цитируемый пост)
я поражаюсь, вот умные вещи часто говоришь, а про существование гугла забываешь.

каюсь  smile чесн слово про него забыл smile
Цитата(Void @  24.11.2006,  15:59 Найти цитируемый пост)
Я не пойму, вроде сошлись на том, что на танке в магазин ездить не стоит

не стоит, хотя идея оригинальная, надо будет знакомым воякам подкинуть  smile 
Цитата(Void @  24.11.2006,  15:59 Найти цитируемый пост)
но ты продолжаешь доказывать, что Дельфи просто обязан рулить во всех областях

где я говорил что дельфи обязан рулить ? чет не помню smile
( и я немного другое пытался объяснить, видать не поняли smile ну и ладно и так тема ушла неизвестно куда)
Цитата(Void @  24.11.2006,  15:59 Найти цитируемый пост)
А аргументы продолжают водить хоровод вокруг тезиса «всё можно написать на всём» — тезиса в принципе справедливого, но на практике никого не волнующего. 

вот видишь сам все и сказал, на практике, большинство пишут на том что ближе им, а не на том что лучше для задачи! а написать можно на всем( почти)

Добавлено @ 17:55 
Код

Большой плюс, что в математические пакеты встроены три группы инструментов: 
это - графика, это - традиционная вычислительная приближенная математика и
 новое, то чего нет в языках программирования, это - символьная математика. 
Правильнее, хоть и длиннее говорить не символьная математика, а 
компьютерная математика аналитических преобразований. 
Есть такие мощные пакеты - Mathematica, Maple, в них чистая символьная математика

http://www.svoboda.org/programs/sc/2002/sc.012902.asp

причем было упоминание о символьной математике , я вообще терь понять не могу? к какому боку?

Автор: MAKCim 24.11.2006, 18:09
Цитата(Romikgy @  23.11.2006,  23:20 Найти цитируемый пост)
также как и дельфи

области применения С/С++
 - системное программирование, программирование микроконтроллеров
 - разработка прикладных программ разной направленности
    1. CAD-ы (AutoCad, ...)
    2. Программы для работы с графикой (всякие GIMP-ы, Photoshop-ы)
    3. Обработка звука, работа с графикой, видео
 - Игры
 - ...
Хоть что-то попадающее в эти пункты на Delphi написано?
Цитата(Romikgy @  23.11.2006,  23:20 Найти цитируемый пост)
с одной стороны эта гибкость хороша, с другой уж слишком много проблем с ней при освоении ее

Надоели заявляения о том, что если кто-то чего-то не может понять/написать/сделать - то это плохо  smile 
Цитата(Romikgy @  23.11.2006,  23:20 Найти цитируемый пост)
дык ограничивает или дает возможность? smile так же можно имхо и на дельфи (только уточни какое жулничество ты имеешь ввиду?

Я же сказал, абсолютно все (в рамках синтаксиса конечно) дозволено в С, С++ более строг, но это не мешает при желании что-нибудь этакое замутить  smile 
Цитата

PS имхо все обоснования пространственные и относятся к большенству языков высокого уровня, 
более конкретные есть именно относящиеся к С++ плз 

пространства имен
inline-функции
модификаторы volatile, register, restrict (c99)
friend-функции, методы
объединения
sizeof, typeid, typeof (gcc)
...

Автор: Alexeis 24.11.2006, 18:26
Цитата(MAKCim @  24.11.2006,  18:09 Найти цитируемый пост)
Хоть что-то попадающее в эти пункты на Delphi написано?

Все кроме 
Цитата(MAKCim @  24.11.2006,  18:09 Найти цитируемый пост)
- системное программирование, программирование микроконтроллеров


Автор: MAKCim 24.11.2006, 18:27
alexeis1, 
пример, если не трудно

Автор: Artemios 24.11.2006, 18:52
Цитата(Romikgy @  24.11.2006,  11:42 Найти цитируемый пост)
ты мои посты нормально читаешь? или через строку?

Хм... Придется вернуть вопрос его же автору, ведь:

Цитата(Romikgy @  24.11.2006,  11:42 Найти цитируемый пост)
об этом и я упоминал
Цитата(Artemios @  24.11.2006,  10:21 Найти цитируемый пост)
 тем более, когда типы переменных в выражении -- параметры шаблона.

при чем здесь шаблоны( их вообще нет в дельфи)

из контекста понятно, что я говорил не о дельфи.

Цитата(Romikgy @  24.11.2006,  11:42 Найти цитируемый пост)
аргументы , тогда ваших слов о слабости дельфи в математике?

Ну и опять же повторю цитату:
Цитата(Romikgy @  24.11.2006,  11:42 Найти цитируемый пост)
ты мои посты нормально читаешь? или через строку?


Цитата(Romikgy @  24.11.2006,  11:42 Найти цитируемый пост)
привел достаточно простую задачу -- базисы Грёбнера, да и вообще просто полиномиальная алгебра. 

уже простая smile а раньше сложная была smile 

Напомни, когда я говорил, что задача сложная? Хотя да, решить ее в рамках дельфи -- сложновато будет, тем более с ограничениями по объему кода и скорости выполнения smile

Цитата(Romikgy @  24.11.2006,  11:42 Найти цитируемый пост)
еще раз повторюсь этим базисом ни дельфи ни си не ограничивается, и не надо притягивать весь смысл языков только к решаемой вами проблеме!

Я разве говорил, что ограничивается? Ты просил доказательств неприспособленности дельфи для программирования математики -- в качестве доказательств я тебе привел пример задачи, на что получаю ответ, что не все, мол, крутится только вокруг моих базисов, а я все языки к ним, мол, притягиваю. Подмены не находишь? smile

Цитата(Romikgy @  24.11.2006,  11:42 Найти цитируемый пост)
имхо матлаб на много расчитан( хотя я в нем и не спец)

Я говорил о написании систем вроде Матлаба. Для тебя, как я понял, это пустые слова - все равно Матлаб кручеsmile

Цитата(Romikgy @  24.11.2006,  11:42 Найти цитируемый пост)
Вы название темы видели?
и какое отношение дельфи имеет к юниксу?
Цитата(alexeis1 @  24.11.2006,  11:58 Найти цитируемый пост)
Тогда некорректно говорить о приемуществах. Нужно сравнивать одинаковые вещи. Т.е. либо языки программирования либо конкретные среды разработки. Если сравнивается Делфи, то ее нужно сравнивать со конкретной средой разработки. Поскольку Делфи компилит под винду, то логично сравнивать с компилятором С++ под винду, иначе вопрос перейдет из категории компиляторов в сравнение ОС. Так что замечание по существу


А теперь оверквотинг:

Цитата(skyboy @  23.11.2006,  21:14 Найти цитируемый пост)
давай уж лучше Borland Delphi и Visual C++. Интересно, умеет ли творение Microsoft компилировать программы под FreeBSD....  smile

Цитата(Romikgy @  24.11.2006,  10:03 Найти цитируемый пост)
А объектный паскаль - это есть и Куликс и фрипаскаль, а это никсовые вещи!

Цитата(Romikgy @  23.11.2006,  10:00 Найти цитируемый пост)
Цитата(Artemios @  23.11.2006,  03:05 Найти цитируемый пост)
И в теме кроссплатформенности Дельфи не лидер. 

1. ее здесь никто не обсуждает
2. при большом желании ее тоже в дельфи можно найти

Цитата(Romikgy @  28.8.2006,  18:35 Найти цитируемый пост)
Цитата(DeadLine @  28.8.2006,  17:20 Найти цитируемый пост)
А возможно ли кроссплатформенное програмирование на Дельфи?

имхо можно юзая 
CLX help includes topics for elements in units that can only be used in CLX applications (cross-platform applications).

Цитата(Romikgy @  30.8.2006,  15:55 Найти цитируемый пост)
А Kylix не в линухе? 


Уж не знаю теперь, что и сказать таким огрызающимся smile
Давай попробуем заменить в моих постах слово дельфи на Kylix (кстати, Kylix  использовал Qt, если не ошибаюсь) и забудем вопрос о кроссплатформенности -- много изменится? Ну или в крайнем случае, на сочетание Обжект Паскаль, раз мы не хотим компиляторы обсуждать (хотя без обсуждения компилятора не будет и разговора о скорости выполнения).
Итак: Object Pascal не приспособлен к математике в той мере, в какой C++ (со всеми вытекающими следствиями). Так подойдет?

Автор: nerezus 24.11.2006, 19:30
Цитата

какая платформа дала больше новшеств в языках, никсовая или виндова?
 Ты забываеш, к примеру, про питон в nix.

Добавлено @ 19:32 
Цитата

А Kylix не в линухе? 
 А разве он не сдох? ;)

Автор: MAKCim 24.11.2006, 20:27
Цитата

А разве он не сдох? ;)

нафиг оно там надо? (в смысле ObjectPascal и -> Kylix)
оттого Kylix и не развивается
"родное" для *NIX - C-подобное окружение ввиду исторических причин
С и UNIX - неразделимые вещи

Добавлено @ 20:42 
кстати
в список
Цитата

пространства имен
inline-функции
модификаторы volatile, register, restrict (c99)
friend-функции, методы
объединения
sizeof, typeid, typeof (gcc)
...

забыл включить крайне полезную фичу C99 - массивы переменной длины
Код

void do_array(int size) {
    int array[size] = { 0 };
    ...
}

такого в Delphi точно нет, а вещь полезная (странно, почему этого раньше не сделали, реализовать то легко, быть может в новом стандарте С++ появится)

Автор: SergeCpp 24.11.2006, 20:57
Цитата(MAKCim @  24.11.2006,  22:27 Найти цитируемый пост)
а вещь полезная (странно, почему этого раньше не сделали, реализовать то легко, быть может в новом стандарте С++ появится)


http://www.itworld.com/AppDev/710/lw-02-stroustrup/
Цитата
Bjarne Stroustrup: C99 focused on extending the low-level facilities of C in the area of numeric programming. It basically ignored the abstraction facilities and the aims of generality embodied in C++. This makes compatibility harder as C adds more ad hoc, special-purpose facilities, where C++ addresses the same programmer needs through libraries implemented using general-purpose language facilities. An example is C99 variable-length arrays vs. C++'s vector. A more coordinated evolution of the two languages would have avoided this split.

Автор: skyboy 24.11.2006, 21:19
Цитата(MAKCim @  24.11.2006,  19:27 Найти цитируемый пост)
такого в Delphi точно нет

Код

procedure some(arg: array of byte);
var little: array of string;
      i:longint;
begin
arg[0]:= 5;
arg[length(arg) - 1]:= length(arg);
setlength(little,length(arg));
for i:=1 to length(arg) do
 little[i - 1]:= IntToStr(arg[i - 1]);
end;

уж не такое ли ты имел в виду?

Автор: Romikgy 24.11.2006, 21:19
Цитата(MAKCim @  24.11.2006,  17:09 Найти цитируемый пост)
области применения С/С++
 - системное программирование, программирование микроконтроллеров
 - разработка прикладных программ разной направленности
    1. CAD-ы (AutoCad, ...)
    2. Программы для работы с графикой (всякие GIMP-ы, Photoshop-ы)
    3. Обработка звука, работа с графикой, видео
 - Игры
 - ...


Цитата(MAKCim @  24.11.2006,  17:09 Найти цитируемый пост)
пространства имен
inline-функции
модификаторы volatile, register, restrict (c99)
friend-функции, методы
объединения
sizeof, typeid, typeof (gcc)

это уже намного лучше чем раньше smile
и согласен с alexeis1 только еще имхо что подразумевать под системным программированием, если драйвера это системные , то на дельфи их можно написать
и про контроллеры, мобилки это контроллеры?
Цитата(MAKCim @  24.11.2006,  17:09 Найти цитируемый пост)
Надоели заявляения о том, что если кто-то чего-то не может понять/написать/сделать - то это плохо  

к чему это?

Цитата(Romikgy @  24.11.2006,  16:44 Найти цитируемый пост)
вот видишь сам все и сказал, на практике, большинство пишут на том что ближе им, а не на том что лучше для задачи! а написать можно на всем( почти)

если к этому , то смысл имхо я другой немного вкладывал!
В дельфи
Цитата(MAKCim @  24.11.2006,  17:09 Найти цитируемый пост)
пространства имен

этого нет
Цитата(MAKCim @  24.11.2006,  17:09 Найти цитируемый пост)
inline-функции

есть еще с турбо паскаля 7, только немного в другом ракурсе юзается
Цитата(MAKCim @  24.11.2006,  17:09 Найти цитируемый пост)
модификаторы volatile, register, restrict (c99)

этого нет, да и имхо область применения их слегка спецефична
Цитата(MAKCim @  24.11.2006,  17:09 Найти цитируемый пост)
friend-функции, методы

нет
Цитата(MAKCim @  24.11.2006,  17:09 Найти цитируемый пост)
объединения

есть
Цитата(MAKCim @  24.11.2006,  17:09 Найти цитируемый пост)
sizeof, typeid, typeof (gcc)

сайз оф есть , а на счет типов имхо тоже есть , конкретнее посмотреть нужно
Цитата(MAKCim @  24.11.2006,  17:27 Найти цитируемый пост)
пример, если не трудно

поищу smile
Цитата(nerezus @  24.11.2006,  18:30 Найти цитируемый пост)
 Ты забываеш, к примеру, про питон в nix.

причем здесь питон к дельфи и си?
Цитата(MAKCim @  24.11.2006,  19:27 Найти цитируемый пост)
нафиг оно там надо? (в смысле ObjectPascal и -> Kylix)
оттого Kylix и не развивается
"родное" для *NIX - C-подобное окружение ввиду исторических причин
С и UNIX - неразделимые вещи

имхо я об этом уже писал выше
Цитата(MAKCim @  24.11.2006,  19:27 Найти цитируемый пост)
забыл включить крайне полезную фичу C99 - массивы переменной длины

массивы переменой длины есть , только используются по другому

Автор: MAKCim 24.11.2006, 21:23
SergeCpp, 
спасибо
и где ты только находишь это все, причем в тему  smile 

Автор: Daevaorn 24.11.2006, 21:25
Цитата(Romikgy @  24.11.2006,  22:19 Найти цитируемый пост)
массивы переменой длины есть 

На стеке?!

Автор: Romikgy 24.11.2006, 21:39
Artemios, терь отвечу Вам , ибо у Вас также ответ большой smile

Цитата(Artemios @  24.11.2006,  17:52 Найти цитируемый пост)
из контекста понятно, что я говорил не о дельфи.

это я понял , просто я говорил раньше , что шаблонов нет в дельфи , и тогда как можно сравнивать то что есть и того чего нет?
Имхо это недостаток дельфи , но он не сметрелен!
Цитата(Artemios @  24.11.2006,  17:52 Найти цитируемый пост)
Напомни, когда я говорил, что задача сложная? Хотя да, решить ее в рамках дельфи -- сложновато будет, тем более с ограничениями по объему кода и скорости выполнения

Я уже отвечал , что переписывать все на дельфи очень много , и мне не интересно, это делать ради переубеждения, приведи 
кусок кода базисов, который на твой взгляд невозможно перевести на дельфи, имхо так проще будет разговаривать
Цитата(Artemios @  24.11.2006,  17:52 Найти цитируемый пост)
Я разве говорил, что ограничивается? Ты просил доказательств неприспособленности дельфи для программирования математики -- в качестве доказательств я тебе привел пример задачи, на что получаю ответ, что не все, мол, крутится только вокруг моих базисов, а я все языки к ним, мол, притягиваю. Подмены не находишь? 

нет не нахожу, просто помимо написания программ для матиматиков есть еще много чего где используются языки программирования, а все ваши утверждения крутятся вокруг базисов , которые кроме вас здесь мало кто знает!

Цитата(Artemios @  24.11.2006,  17:52 Найти цитируемый пост)
Я говорил о написании систем вроде Матлаба. Для тебя, как я понял, это пустые слова - все равно Матлаб круче

хорошо солидная работа! (см. мое высказывание выше  smile )
Цитата(Artemios @  24.11.2006,  17:52 Найти цитируемый пост)
Уж не знаю теперь, что и сказать таким огрызающимся

а терь успокаиваемся , и давай не будем употреблят таких слов, имхо я с вами вежливо разговариваю!
Цитата(Artemios @  24.11.2006,  17:52 Найти цитируемый пост)
Давай попробуем заменить в моих постах слово дельфи на Kylix (кстати, Kylix  использовал Qt, если не ошибаюсь) и забудем вопрос о кроссплатформенности -- много изменится? Ну или в крайнем случае, на сочетание Обжект Паскаль, раз мы не хотим компиляторы обсуждать (хотя без обсуждения компилятора не будет и разговора о скорости выполнения).

давай не будем заменять , я говорил о дельфи! и давно признано что дельфи очень слаб в никсах, и я уже об этом говорил!
Цитата(Artemios @  24.11.2006,  17:52 Найти цитируемый пост)
Итак: Object Pascal не приспособлен к математике в той мере, в какой C++ (со всеми вытекающими следствиями). Так подойдет?

неа smile кусок кода , где Object Pascal не приспособлен к математике? можно посмотреть?

Добавлено @ 21:40 
Цитата(Daevaorn @  24.11.2006,  20:25 Найти цитируемый пост)
На стеке?! 

нет динамика

Автор: Alexeis 24.11.2006, 21:50
Цитата(MAKCim @  24.11.2006,  18:27 Найти цитируемый пост)
alexeis1, 
пример, если не трудно 

Жутко лень искать, но попробую.
Вот первое что пришло в голову всеми любимый QIP

Добавлено @ 21:52 
что касается игр зайдите лучше на Геймдев, там вам лучше расскажут что написали на делфи  smile

Добавлено @ 21:55 
Более того я с уверенностью могу сказать что на делфи пишут даже вирусы, причем маленького размера, порядка 10-20кб. Др. Веб. часто ругается на определенные модули (удобные для вирусов.)

Автор: Daevaorn 24.11.2006, 21:55
Цитата(alexeis1 @  24.11.2006,  22:50 Найти цитируемый пост)
что касается игр зайдите лучше на Геймдев, там вам лучше расскажут что написали на делфи  

Там кроме двух-трех более или менее известных игр не знают.

Автор: Alexeis 24.11.2006, 21:56
Цитата

Троянцы Banker.anv и Banker.ark фактически являются близнецами. И тот, и другой написаны на Delphi и ориентированы на кражу данных пользователей ряда бразильских банков. Бразильские хакеры используют все возможные способы для доставки троянцев на компьютеры пользователей — спам-рассылки, внедрение троянцев в инсталляционные файлы некоторых программ, установка троянцев с помощью уязвимостей в браузерах и т.д.

Автор: MAKCim 24.11.2006, 22:00
Цитата

уж не такое ли ты имел в виду? 

кажись это динамические массивы
приведи asm код, сразу станет видно
Цитата

этого нет, да и имхо область применения их слегка спецефична

вот к этому
Цитата

если драйвера это системные , то на дельфи их можно написать

как раз эти специфичные вещи, особенно volatile особенно часто используются в написании кода, приближенного к ассемблеру (как раз драйвера и прочие подобные вещи)
как пример
в ядре Linux есть такая важная (очень важная) переменная как jiffies, так вот 
объявлена она
Код

extern unsigned long volatile __jiffy_data jiffies;

при генерации кода это запрещает оптимизацию по типу "помещение значения из памяти в регистр для ускорения доступа"
т. к jiffies изменяется в обработчике прерывания таймера, то использование этой переменной в цикле при отсутствии volatile даст неправильные результаты ...
к чему это я  smile отсюда следует вывод, что данную часть ядра не напишешь на Delphi (asm - вставки не считаются, потому как это будет уже не чистый Delphi, да и кода придется писАть больше). В системном программировании (безусловно, написание драйверов туда относится) такие ситуации часто встречаются, но как видим, на Delphi разрулить их не получится

Автор: Alexeis 24.11.2006, 22:02
Хотели графические программы, пожалуйста ArtIcons Pro
ищем дальше...

Автор: Romikgy 24.11.2006, 22:03
http://www.securitylab.ru/virus/271728.php

Автор: Alexeis 24.11.2006, 22:08
Вот смотрим дальше всемирно  известный ASPack

Автор: Romikgy 24.11.2006, 22:09
Цитата(MAKCim @  24.11.2006,  21:00 Найти цитируемый пост)
кажись это динамические массивы
приведи asm код, сразу станет видно

пастараюсь 
Цитата(MAKCim @  24.11.2006,  21:00 Найти цитируемый пост)
особенно volatile особенно часто используются в написании кода, приближенного к ассемблеру

ты сам занешь для чего этот параметр нужен?
Цитата(MAKCim @  24.11.2006,  21:00 Найти цитируемый пост)
при отсутствии volatile даст неправильные результаты

ответ на это после ответа на предыдущий вопрос
Цитата(MAKCim @  24.11.2006,  21:00 Найти цитируемый пост)
В системном программировании (безусловно, написание драйверов туда относится) такие ситуации часто встречаются, но как видим, на Delphi разрулить их не получится

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

Автор: Alexeis 24.11.2006, 22:12
Еще системные Badcopy Pro... да много их блин, всех не перечислить.

Автор: MAKCim 24.11.2006, 22:16
Цитата

ты сам занешь для чего этот параметр нужен?

этот модификатор "говорит" компилятору о том, что переменная может изменяться извне, посему при операциях над ней - значение берется из памяти, а не возможное закэшированное значение из регистра

Добавлено @ 22:21 
Цитата

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

Romikgy, уж извини, 
ты все говоришь "имхо", т. е все мои наезды  smile  на Delphi ты опровергаешь имхо-м без конкретных примеров
я конечно понимаю, имхо, вещь хорошая, но как бы это не доказательство
причем я сказал, что асм не считается, потому как это не Delphi

Автор: Romikgy 24.11.2006, 22:42
Цитата(MAKCim @  24.11.2006,  21:16 Найти цитируемый пост)
Romikgy, уж извини, 
ты все говоришь "имхо", т. е все мои наезды  smile  на Delphi ты опровергаешь имхо-м без конкретных примеров
я конечно понимаю, имхо, вещь хорошая, но как бы это не доказательство
причем я сказал, что асм не считается, потому как это не Delphi 

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

PS а имхо я добавляю ибо как любой человек я могу ошибатся и не скрываю это , в отличие от всех увереных

Автор: SergeCpp 24.11.2006, 22:59
user posted image
The original source code for the current http://en.wikipedia.org/wiki/TeX software is written in WEB, a mixture of documentation written in TeX and a quite restricted Pascal subset in order to ensure portability. For example, TeX does all of its dynamic allocation itself from fixed-size arrays and uses only fixed-point arithmetic for its internal calculations. As a result, TeX has been ported to almost all operating systems, usually by using the web2c program to convert the source code into C instead of directly compiling the Pascal code.

Автор: MAKCim 24.11.2006, 22:59
Цитата

Я в чем то ошибся когда говорил имхо?

я не говорил, что ты ошибся, просто "имхо" в принципе не обязывает нести ответственность за свои слова
я говорю, что без volatile или чего либо подобного, вышеприведенный код на "чистом" Delphi не напишешь
ты говоришь
Цитата

имхо можно правда надо будет хорошо выкручиватся

как? Иначе вопрос закрыт и мой тезис верен
Цитата

Так что , говори на что предоставить опровержение?

Выше

Автор: nerezus 24.11.2006, 23:21
Цитата

причем здесь питон к дельфи и си?
 К контексту фразы "какая платформа дала больше новшеств в языках, никсовая или виндова?".

Автор: Artemios 25.11.2006, 01:24
Цитата(Romikgy @  24.11.2006,  21:39 Найти цитируемый пост)
Я уже отвечал , что переписывать все на дельфи очень много , и мне не интересно, это делать ради переубеждения

То есть ты реально считаешь, что будучи незнакомым со спецификой, и даже не понимая основных положений численных и символьных вычислений, не говоря уж о многоуровневых алгебраических структурах, можно просто в лоб переписать с одного языка на другой??? smile 
А я ведь предлагал не самому реализовать, а лишь показать мне реализацию, безразлично где найденную. Подскажу, какая здесь была ловушка. Обрати внимание на выставленное мной условие:
Цитата(Artemios @  23.11.2006,  13:21 Найти цитируемый пост)
Скажем число свободных переменных произвольно; коэффициенты полиномов имеют произвольную природу, будь то хоть дроби неограниченной точности, хоть дробно-рациональные функции ...

А теперь вспомни:
Цитата(Romikgy @  24.11.2006,  21:39 Найти цитируемый пост)
я говорил раньше , что шаблонов нет в дельфи , и тогда как можно сравнивать то что есть и того чего нет?

Я прекрасно понимаю, что можно для той же задачи извернуться и без шаблонов, но тогда срабатывает другая ловушка: объем кода и производительность программы. 
А теперь обобщу: именно благодаря наличию шаблонов C++ позволяет производить эффективное моделирование абстрактных алгебраических структур. И это не мое имхо, это положение уже много раз оговаривалось в диссертациях, защищаемых по теме компьютерной алгебры. Если хочешь, могу пару-тройку на-вскидку назвать.

Цитата(Romikgy @  24.11.2006,  21:39 Найти цитируемый пост)
Уж не знаю теперь, что и сказать таким огрызающимся

а терь успокаиваемся , и давай не будем употреблят таких слов, имхо я с вами вежливо разговариваю!

Приехали. Грубостью обозвали констатацию имхо чужой грубости:
Цитата

Ожегов: огрызаться -- грубо, отрывисто отвечать на замечания.


Надеюсь, дальше переходить на личности не будем? smile 

Автор: Artemios 25.11.2006, 01:42
[offtop]
nerezus, может открыть холивар Python vs. Delphi? smile 
[/offtop]

Автор: Artemios 25.11.2006, 03:11
P.S. Romikgy, кстати, третья ловушка касалась как раз кроссплатформенности: серьезные рассчеты делают не на PC.

Автор: Romikgy 25.11.2006, 12:59
Цитата(MAKCim @  24.11.2006,  21:59 Найти цитируемый пост)
я не говорил, что ты ошибся, просто "имхо" в принципе не обязывает нести ответственность за свои слова

нет , как раз имхо и говорит о том что Я в этом уверен, и это не мнение обществености, а мое мнение и ответственость несу за свои слова Я а не кто то другой!
Цитата(MAKCim @  24.11.2006,  21:59 Найти цитируемый пост)
я говорю, что без volatile или чего либо подобного, вышеприведенный код на "чистом" Delphi не напишешь

не каждая задача системная требует вмешательство системы в ее логику( по крайней мере по отношению к драйверам!)
Цитата(MAKCim @  24.11.2006,  21:59 Найти цитируемый пост)
Выше 

точнее ссылку плз!
Цитата(nerezus @  24.11.2006,  22:21 Найти цитируемый пост)
К контексту фразы "какая платформа дала больше новшеств в языках, никсовая или виндова?".

Моя фраза была относительно языка С/С++, и незачем перетягивать одеяло на другие языки, ибо о питоне я мало чего знаю , пока.
Цитата(Artemios @  25.11.2006,  00:24 Найти цитируемый пост)
То есть ты реально считаешь, что будучи незнакомым со спецификой, и даже не понимая основных положений численных и символьных вычислений, не говоря уж о многоуровневых алгебраических структурах, можно просто в лоб переписать с одного языка на другой???

да я так считаю, я не сильно знаком со спецификой твоей проги, но в свое время я писал прогу , грубо говоря переписывал с одного языка на другой, при этом не понимая что она делает, просто перевел код, это было очень давно , но сам смысл остался, и я считаю, что можно извратившись перевести любой код с одного языка на другой, вопрос будет только в целесообразности этого! но это сделать можно!
Цитата(Artemios @  25.11.2006,  00:24 Найти цитируемый пост)
А я ведь предлагал не самому реализовать, а лишь показать мне реализацию, безразлично где найденную. Подскажу, какая здесь была ловушка.

Вот тем более рытся по сети ради кокого то доказательства, мне совсем не улыбает!
Я попросил привести участок кода, найболее тяжелого на ваш взгляд при переводе на дельфи? где он?
Цитата(Artemios @  25.11.2006,  00:24 Найти цитируемый пост)
Я прекрасно понимаю, что можно для той же задачи извернуться и без шаблонов, но тогда срабатывает другая ловушка: объем кода и производительность программы. 

не всегда объем кода( увеличеный) ведет за собой снижение производительности!
(впомни VCL в дельфи и прогу написаную на чистом винапи)
Цитата(Artemios @  25.11.2006,  00:24 Найти цитируемый пост)
А теперь обобщу: именно благодаря наличию шаблонов C++ позволяет производить эффективное моделирование абстрактных алгебраических структур. И это не мое имхо, это положение уже много раз оговаривалось в диссертациях, защищаемых по теме компьютерной алгебры. Если хочешь, могу пару-тройку на-вскидку назвать.

Вот видишь у тя все завернуто на твоих вычислениях, скажи много ли людей занимаются подобными задачами, даже на этом форуме?

Цитата(Artemios @  25.11.2006,  00:24 Найти цитируемый пост)
огрызаться -- грубо, отрывисто отвечать на замечания.

А терь ссылку плз Где Я  Вам Грубо Ответил На Ваши Замечания?????
Цитата(Artemios @  25.11.2006,  00:24 Найти цитируемый пост)
Надеюсь, дальше переходить на личности не будем?

Никогда не любил этого
Цитата(Artemios @  25.11.2006,  02:11 Найти цитируемый пост)
кстати, третья ловушка касалась как раз кроссплатформенности: серьезные рассчеты делают не на PC. 

Я так и не могу понять , уже то что я сказал , что дельфи не имеет кроссплатформености(серьозной) в расчет уже не идет?
Просто интересно и на чем ведут серьозные расчеты? раз не на РС ?
Или началось уже просто полялякать в теме?
Если здесь уже никто спокойно и трезво не может обсуждать проблему, то дальнейшее обсуждение по моему не конструктивно smile и его пора сворачивать!

Автор: MAKCim 25.11.2006, 13:11
Цитата

Просто интересно и на чем ведут серьозные расчеты? раз не на РС ?

мэйнфреймы какие-нибудь, суперкомпьютеры
другое дело, что процессоры в последних часто intel-овские, как на большинстве PC
Цитата

не каждая задача системная требует вмешательство системы в ее логику( по крайней мере по отношению к драйверам!)

не каждая, но признай, хотя бы на этом примере видно, что не все, что можно написать на С, можно написать на Pascal-е, и поэтому тезис
Цитата

и согласен с alexeis1 только еще имхо что подразумевать под системным программированием, если драйвера это системные , то на дельфи их можно написать

в общем случае не верен
Цитата

точнее ссылку плз!

Цитата

имхо можно правда надо будет хорошо выкручиватся

как можно? или вопрос закрыт

Автор: nerezus 25.11.2006, 13:16
Цитата

незачем перетягивать одеяло на другие языки, ибо о питоне я мало чего знаю , пока.
 А если я не знаю делфи, то давайте не будем его тоже обсуждать? )

Автор: Romikgy 25.11.2006, 13:23
Цитата(MAKCim @  25.11.2006,  12:11 Найти цитируемый пост)
мэйнфреймы какие-нибудь, суперкомпьютеры
другое дело, что процессоры в последних часто intel-овские, как на большинстве PC

дык  smile 
Цитата(MAKCim @  25.11.2006,  12:11 Найти цитируемый пост)
не каждая, но признай, хотя бы на этом примере видно, что не все, что можно написать на С, можно написать на Pascal-е

признаю (если только на паскале, тогда да)
Цитата(MAKCim @  25.11.2006,  12:11 Найти цитируемый пост)
если драйвера это системные , то на дельфи их можно написать

в общем случае не верен

нет , как раз в общем случая верен, а вот в частностях не верен smile 
Цитата(MAKCim @  25.11.2006,  12:11 Найти цитируемый пост)
имхо можно правда надо будет хорошо выкручиватся

как можно? или вопрос закрыт

с использованием рук и головы, и много времени
Цитата(nerezus @  25.11.2006,  12:16 Найти цитируемый пост)
 А если я не знаю делфи, то давайте не будем его тоже обсуждать? )

А если не знаешь дельфи , тогда нечего выступать при обсуждении дельфи,
Ты меня где видел в ветках по питону? 
Ибо чего не знаю , о том не говорю!
Если ты действуешь по другому принципу, то нам с тобой не о чем говорить!

Автор: MAKCim 25.11.2006, 13:25
Цитата

Если здесь уже никто спокойно и трезво не может обсуждать проблему

проблемы нет
хорошо, допустим Delphi по возможностям сопоставим с С++ (в конце концов любой шаблон можно представить в виде обычной функции/класса ...)
значит каждый элемент множества возможностей С++ поставлен во взаимно-однозначное соответствие элементу из множества возможностей Delphi
элемент из С/С++ volatile не имеет (ждем опровержения) соответствия в Pascal/Delphi, значит 
верна гипотеза
Цитата

По сути Delphi почти подмножество С++, по языковым возможностям, конечно. 


Добавлено @ 13:31 
Цитата

нет , как раз в общем случая верен, а вот в частностях не верен 

да, согласен, но сути это не меняет
это как аналогия с программой - ее нельзя считать правильной если в общем случае она работает, но иногда непонятно почему валится
Цитата

с использованием рук и головы, и много времени

ну вот, классный алгоритм действий  smile: взять руки, голову, смешать все это со временем и долго варить  smile 
а все таки   smile 

Автор: Romikgy 25.11.2006, 13:43
Цитата(MAKCim @  25.11.2006,  12:25 Найти цитируемый пост)
ждем опровержения)

подумаем над этим
Цитата(MAKCim @  25.11.2006,  12:25 Найти цитируемый пост)
да, согласен, но сути это не меняет

имхо кординально меняет!
Цитата(MAKCim @  25.11.2006,  12:25 Найти цитируемый пост)
взять руки, голову, смешать все это со временем и долго варить 

интересный рецепт  smile 

Автор: Artemios 26.11.2006, 05:06
Цитата(Romikgy @  25.11.2006,  12:59 Найти цитируемый пост)
я считаю, что можно извратившись перевести любой код с одного языка на другой, вопрос будет только в целесообразности этого! но это сделать можно!

Ловушка No 2, касательно языка. 
А также пока неопровергнутое доказательство MAKCim о языковых возможностях.

Цитата(Romikgy @  25.11.2006,  12:59 Найти цитируемый пост)
Я попросил привести участок кода, найболее тяжелого на ваш взгляд при переводе на дельфи? где он?

Вспоминаем, что говорил я не о некоторых участках кода, а об общих принципах. Кусок кода бессмысленен без рассмотрения всего комплекса кода/алгоритмов/специфики. В противном случае я бы мог потребовать произвести перевод например такого куска:
Код

UMonom::set_monoid("x,y,z");
BJanet<GMP_Q, UMonom, Deg_Rev_Lex> ideal("x^2yz^7-3*y^2z^3-1,x^5z-y^2z+1,z^4-xyz");
ideal.out(Singular(),"./janet_std_base.sg");



Цитата(Romikgy @  25.11.2006,  12:59 Найти цитируемый пост)
не всегда объем кода( увеличеный) ведет за собой снижение производительности!

Конечно не всегда. На АСМ-е вообще все летать будет. После того, как кончится кодинг и дебаг.
Опять же, ловушка No 2 -- объем кода пропорционален времени работы программиста.

Цитата(Romikgy @  25.11.2006,  12:59 Найти цитируемый пост)
Вот видишь у тя все завернуто на твоих вычислениях, скажи много ли людей занимаются подобными задачами, даже на этом форуме?

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

Цитата(Romikgy @  25.11.2006,  12:59 Найти цитируемый пост)
Я так и не могу понять , уже то что я сказал , что дельфи не имеет кроссплатформености(серьозной) в расчет уже не идет?

А здесь уже не вопрос о приспособленности дельфи, как языка, к абстрактной математике, а вопрос о приспособленности дельфи, как компилятора, к прикладной математике.
В общем, ловушка No 3.

Чтобы завершить разговор о дельфи vs математика, у меня к тебе встречное предложение:
http://www.angularem.narod.ru/stat/MesyanzhinAV.pdf лежит моя статейка, там записана пара алгоритмов в псевдокоде, буквально в несколько строчек. Не подумай, я не предлагаю тебе их реализовывать, просто ответь на вопросы: 
1. дельфи способна на их реализацию в условиях, когда n и K принимают значения из достаточно широкого спектра чисел для n и структур для K, а также различных видов упорядочений на M? (обход ловушки 1)
2. в случае положительного ответа на предыдущий вопрос, что выиграет на ловушке 2 -- дельфи или C++?

Цитата(Romikgy @  25.11.2006,  12:59 Найти цитируемый пост)
А терь ссылку плз Где Я  Вам Грубо Ответил На Ваши Замечания?????

А ведь мне тоже ссылок потребовать хочется smile Однако выяснение отношений что-кто-кому-когда-как целесообразней перенести в личку, если действительно есть такое большое желание.

Автор: Romikgy 26.11.2006, 13:19
Artemios, у мя сложилось впечатление , что у вы жить не можете без 
Цитата(Artemios @  26.11.2006,  04:06 Найти цитируемый пост)
Ловушка 

странно это ....

Цитата(Artemios @  26.11.2006,  04:06 Найти цитируемый пост)
А также пока неопровергнутое доказательство MAKCim о языковых возможностях.

думаю над этим
Цитата(Artemios @  26.11.2006,  04:06 Найти цитируемый пост)
Кусок кода бессмысленен без рассмотрения всего комплекса

Я согласен , так вот я и просил кусок код реализации, наиболее трудный для переноса на дельфи
Цитата(Artemios @  26.11.2006,  04:06 Найти цитируемый пост)
Опять же, ловушка No 2 -- объем кода пропорционален времени работы программиста.

Согласен , но к чему это?
особено после этих слов
Цитата(Artemios @  25.11.2006,  00:24 Найти цитируемый пост)
Я прекрасно понимаю, что можно для той же задачи извернуться и без шаблонов, но тогда срабатывает другая ловушка: объем кода и производительность программы. 

в чем смысл вашей фразы о времени работы?
Цитата(Artemios @  26.11.2006,  04:06 Найти цитируемый пост)
Все та же подмена, изначально твой вопрос звучал примерно так: чем дельфи не подходит для математики? -- в этом ключе я и пытаюсь вести разговор, а ты переводишь тему на вопрос: а кому это нужно? -- отвечая на последний могу лишь сказать: из тех, кто программирует на дельфи, наверно никому.

по моему подмены я не делаю, я пытаюсь выяснить , что невозможно реализовать на паскале, что реализовано на си! ибо это
Цитата(Artemios @  26.11.2006,  04:06 Найти цитируемый пост)
UMonom::set_monoid("x,y,z");
BJanet<GMP_Q, UMonom, Deg_Rev_Lex> ideal("x^2yz^7-3*y^2z^3-1,x^5z-y^2z+1,z^4-xyz");
ideal.out(Singular(),"./janet_std_base.sg");

только верхушка, и смысла большого не несет, особено о внутреней структуре!
и насколько видно (хотя здесь мало показано) здесь только инициализация и вывод переменых....

А далее вы как то страно бегаете по темам
Цитата(Artemios @  26.11.2006,  04:06 Найти цитируемый пост)
что дельфи не имеет кроссплатформености


Цитата(Artemios @  26.11.2006,  04:06 Найти цитируемый пост)
А здесь уже не вопрос о приспособленности дельфи, как языка, к абстрактной математике, а вопрос о приспособленности дельфи, как компилятора, к прикладной математике.

причем кроссплатформеность к реализации математики на дельфи?
Цитата(Artemios @  26.11.2006,  04:06 Найти цитируемый пост)
Чтобы завершить разговор о дельфи vs математика, у меня к тебе встречное предложение:
вот здесь лежит моя статейка, там записана пара алгоритмов в псевдокоде, буквально в несколько строчек. Не подумай, я не предлагаю тебе их реализовывать, просто ответь на вопросы: 
1. дельфи способна на их реализацию в условиях, когда n и K принимают значения из достаточно широкого спектра чисел для n и структур для K, а также различных видов упорядочений на M? (обход ловушки 1)
2. в случае положительного ответа на предыдущий вопрос, что выиграет на ловушке 2 -- дельфи или C++?

посмотрю и отпишусь!
Цитата(Artemios @  26.11.2006,  04:06 Найти цитируемый пост)
А ведь мне тоже ссылок потребовать хочется

Цитата(Artemios @  24.11.2006,  17:52 Найти цитируемый пост)
Уж не знаю теперь, что и сказать таким огрызающимся

мне не сильно понравилось быть тем что вы написали, и эта ссылка уже один раз приводилась.
так что все таки читаете вы все не сильно внимательно!
Цитата(Artemios @  26.11.2006,  04:06 Найти цитируемый пост)
есть такое большое желание

нет!

Автор: Artemios 26.11.2006, 18:06
Чесно говоря, лично я уже устал переливать из пустого в порожнее и по сорок раз цитировать себя и собеседника и по теме, и вне темы, и по переходам на личности.
Поэтому остановлюсь на конструктивных моментах:

Цитата(Artemios @  24.11.2006,  02:27 Найти цитируемый пост)
не копать могилы ложкой и не ездить в магазин на танке.


Цитата(Romikgy @  26.11.2006,  13:19 Найти цитируемый пост)
А также пока неопровергнутое доказательство MAKCim о языковых возможностях.

думаю над этим


Цитата(Romikgy @  26.11.2006,  13:19 Найти цитируемый пост)
Цитата(Artemios @  26.11.2006,  04:06 Найти цитируемый пост)
Чтобы завершить разговор о дельфи vs математика, у меня к тебе встречное предложение:
...

посмотрю и отпишусь!


Все, ждем.

Автор: MAKCim 26.11.2006, 18:10
Цитата

А также пока неопровергнутое доказательство MAKCim о языковых возможностях.

неопровергнутые доказательства  smile 
реализации массивов с неконстантной верхней границей на стеке тоже нет

Автор: skyboy 26.11.2006, 22:43
Цитата(MAKCim @  26.11.2006,  17:10 Найти цитируемый пост)
реализации массивов с неконстантной верхней границей на стеке тоже нет 

подскажи, когда такое надобно. а то я уже и голову сломал smile Нет, не иронизирую, правда, не представляю.
P.S. А объект тоже можно в стек положить?

Автор: Void 26.11.2006, 22:53
Цитата(skyboy @  27.11.2006,  00:43 Найти цитируемый пост)
А объект тоже можно в стек положить? 

В C++ — да.
Хорошо это или плохо — другой вопрос. Как всегда, дополнительная гибкость порождает дополнительные возможности и одновременно проблемы.

Автор: MAKCim 26.11.2006, 22:58
Цитата

P.S. А объект тоже можно в стек положить? 

а то
Цитата

подскажи, когда такое надобно. а то я уже и голову сломал smile Нет, не иронизирую, правда, не представляю.

да много где
вот надо например в функции временный буфер для хранения промежуточных значений
тут два решения:
1. Использовать обычный массив с константной верхней границей. Это не здорово, потому как приходится перестраховываться и делать массив чрезмерно большим, предусматривая максимальную границу
2. Динамическое выделение памяти. Тоже плохо, потому как тут другая проблема - скорость

Автор: Daevaorn 26.11.2006, 22:59
Цитата(skyboy @  26.11.2006,  23:43 Найти цитируемый пост)
подскажи, когда такое надобно. а то я уже и голову сломал 

Там где размер массива зависит от входного параметра и где критичная скорость, т.к. на стеке память выделяется в разы быстрее.

Автор: MAKCim 26.11.2006, 23:02
Цитата

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

Не согласен. Проблем не будет. В этом вся соль: при наличии 2-ух способов размещения всегда можно принять решение о том, каким способом воспользоваться. Так что берем их обоих вариантов только лучшее в конкретной ситуации

Автор: Void 26.11.2006, 23:17
MAKCim, у идеального программиста проблем вообще никогда не бывает, на чём бы он ни писал smile
Так, навскидку, проблема, порождённая исключительно возможностью размещения объектов в стеке: «срезка». Очевидная для бывалого C++ника, но лучше бы всё-таки без неё, не так ли?

Автор: MAKCim 27.11.2006, 13:02
Цитата

Так, навскидку, проблема, порождённая исключительно возможностью размещения объектов в стеке: «срезка». Очевидная для бывалого C++ника, но лучше бы всё-таки без неё, не так ли?

главное об этой проблеме иметь представление
а поначалу, я думаю, в любом языке будешь на грабли наступать. Другое дело, что где-то граблей больше, а где-то меньше (где меньше, там обычно сами языки плоские как грабли  smile )

Автор: Alexeis 27.11.2006, 14:37
Цитата(Daevaorn @  26.11.2006,  22:59 Найти цитируемый пост)
Там где размер массива зависит от входного параметра и где критичная скорость, т.к. на стеке память выделяется в разы быстрее. 

А разве она там выделяется вообще? Просто пишем в стек и все, че ее там еще выделять? 

Цитата(skyboy @  26.11.2006,  22:43 Найти цитируемый пост)
P.S. А объект тоже можно в стек положить? 

Да можно, конечно, но есть ли в этом необходимость. Реализация будет просто посложнее с использованием ассемблерных вставок, а так имея на вооружении мощный встроенный ассемблер, практически любые задачи становятся по плечу smile 

Автор: SergeCpp 27.11.2006, 14:42
Выделение памяти в стеке производится командой SUB SP, <desired_size>

Автор: Alexeis 27.11.2006, 15:30
SergeCpp,  smile 

Автор: SergeCpp 27.11.2006, 15:31
user posted image

Автор: MAKCim 27.11.2006, 16:15
Цитата

а так имея на вооружении мощный встроенный ассемблер, практически любые задачи становятся по плечу

любые  smile 

Автор: Alexeis 27.11.2006, 17:08
Цитата(MAKCim @  27.11.2006,  16:15 Найти цитируемый пост)
любые smile  

Я вообще про встроенный делфийский ассемблер, а в нем доступны не все команды ассемблера для любого процессора. Например, захочу я использовать арифметические регистры Athlon 64 (64 разрядные), ан нет ассемблер скажет хрен вам, не знаю я такого. Т.е. так в данной версии еще нет такой поддержки. Вот только теперь начинаешь ощущать прелесть машинных кодов  smile  smile  smile  smile  smile  smile 

Автор: MAKCim 27.11.2006, 17:25
Цитата

Я вообще про встроенный делфийский ассемблер, а в нем доступны не все команды ассемблера для любого процессора.

сомневаюсь, что можно найти компилятор, который сможет генерировать код для любого процессора
GCC - это, конечно, мощь и сила  smile , но даже в нем представлены далеко не все платформы

Автор: Alexeis 27.11.2006, 18:13
Значит таки я был прав когда сказал практически любые вместо любые  smile 

Автор: MAKCim 27.11.2006, 18:31
Цитата

Значит таки я был прав когда сказал практически любые вместо любые

неа  smile 
зачем тебе, если ты, например, пишешь под IA-32 использовать команды UltraSPARC?
если у тебя 32 битная версия Delphi, то, как ни крути, использовать специфичные инструкции, скажем для Athlon64, ты не сможешь, но IA-32 он будет реализовывать полностью
Так что, если есть компилятор под данную платформу и в нем поддерживается встраиваемый ассемблерный код, то любая задача для этой платформы тебе по плечу  smile 

Автор: MAKCim 29.11.2006, 09:56
Я так полагаю, делфисты поняли, что с С++ им рано тягаться и тема постепенно умерла  smile 

Автор: Romikgy 29.11.2006, 10:07
Цитата(MAKCim @  24.11.2006,  21:00 Найти цитируемый пост)
в ядре Linux есть такая важная (очень важная) переменная как jiffies, так вот 
объявлена она
extern unsigned long volatile __jiffy_data jiffies;

я не юзаю пока линукс!
но в винде вот этот код
Код

#include <iostream.h>
#pragma argsused
//volatile
int y;
void inside(int x)
{
  //volatile
  int xy=12;
  cout<<"inside"<<endl;
  cout<<x<<endl;
  cout<<xy<<endl;
}
int main(int argc, char* argv[])
{

  y=1;
        cout<<"outside"<<endl;
        cout<<y<<endl;
        inside(y);
        y++;
        cout<<"outside"<<endl;
        cout<<y<<endl;
        cin.get();
        return 0;
}

и в любом месте с расскоментированым volatile дает одинаковый код даже на асме!!!
я понимаю , что это не совсем корректно, но разработкой драйверов под винду я занимался очень слабо, и еще не разу не видел где volatile был необходим, может еще не все посмотрел!
Так что имхо это не совсем правильно , но это ответ , изменения асм кода, от присутствия и отсутствия volatile нет!

Автор: Alexeis 29.11.2006, 10:15
Цитата(MAKCim @  29.11.2006,  09:56 Найти цитируемый пост)
Я так полагаю, делфисты поняли, что с С++ им рано тягаться и тема постепенно умерла  smile

Да нет, просто мой пост уже кто-то снес или инет заглючил smile.

Цитата(MAKCim @  27.11.2006,  18:31 Найти цитируемый пост)
если у тебя 32 битная версия Delphi, то, как ни крути, использовать специфичные инструкции, скажем для Athlon64, ты не сможешь, но IA-32 он будет реализовывать полностью


Это же было только пример, это не единственное чего не поддерживает встроенный ассемблер.

Автор: SergeCpp 29.11.2006, 10:26
user posted image
http://ddj.com/dept/cpp/184403766

Andrei Alexandrescu

Автор: MAKCim 29.11.2006, 10:27
Цитата

я понимаю , что это не совсем корректно

все корректно
просто volatile гарантирует получение значение из памяти
в его отсутствии такой гарантии нет

Добавлено @ 10:28 
SergeCpp, 
как всегда в тему  smile 

Автор: Romikgy 29.11.2006, 10:32
Цитата(skyboy @  24.11.2006,  20:19 Найти цитируемый пост)
procedure some(arg: array of byte);
var little: array of string;
      i:longint;
begin
arg[0]:= 5;
arg[length(arg) - 1]:= length(arg);
setlength(little,length(arg));
for i:=1 to length(arg) do
 little[i - 1]:= IntToStr(arg[i - 1]);
end;


Цитата(MAKCim @  24.11.2006,  21:00 Найти цитируемый пост)
кажись это динамические массивы
приведи asm код, сразу станет видно

асма там много , а вот пас код пазям
Код

procedure DynArraySetLength(var a: Pointer; typeInfo: Pointer; dimCnt: Longint; lengthVec: PLongint);
var
  i: Integer;
  newLength, oldLength, minLength: Longint;
  elSize: Longint;
  neededSize: Longint;
  p, pp: Pointer;
begin
  p := a;

  // Fetch the new length of the array in this dimension, and the old length
  newLength := PLongint(lengthVec)^;
  if newLength <= 0 then
  begin
    if newLength < 0 then
      Error(reRangeError);
    DynArrayClear(a, typeInfo);
    exit;
  end;

  oldLength := 0;
  if p <> nil then
  begin
    Dec(PLongint(p));
    oldLength := PLongint(p)^;
    Dec(PLongint(p));
  end;

  // Calculate the needed size of the heap object
  Inc(PChar(typeInfo), Length(PDynArrayTypeInfo(typeInfo).name));
  elSize := PDynArrayTypeInfo(typeInfo).elSize;
  if PDynArrayTypeInfo(typeInfo).elType <> nil then
    typeInfo := PDynArrayTypeInfo(typeInfo).elType^
  else
    typeInfo := nil;
  neededSize := newLength*elSize;
  if neededSize div newLength <> elSize then
    Error(reRangeError);
  Inc(neededSize, Sizeof(Longint)*2);

  // If the heap object isn't shared (ref count = 1), just resize it. Otherwise, we make a copy
  if (p = nil) or (PLongint(p)^ = 1) then
  begin
    pp := p;
    if (newLength < oldLength) and (typeInfo <> nil) then
      FinalizeArray(PChar(p) + Sizeof(Longint)*2 + newLength*elSize, typeInfo, oldLength - newLength);
    ReallocMem(pp, neededSize);
    p := pp;
  end
  else
  begin
    Dec(PLongint(p)^);
    GetMem(p, neededSize);
    minLength := oldLength;
    if minLength > newLength then
      minLength := newLength;
    if typeInfo <> nil then
    begin
      FillChar((PChar(p) + Sizeof(Longint)*2)^, minLength*elSize, 0);
      CopyArray(PChar(p) + Sizeof(Longint)*2, a, typeInfo, minLength)
    end
    else
      Move(PChar(a)^, (PChar(p) + Sizeof(Longint)*2)^, minLength*elSize);
  end;

  // The heap object will now have a ref count of 1 and the new length
  PLongint(p)^ := 1;
  Inc(PLongint(p));
  PLongint(p)^ := newLength;
  Inc(PLongint(p));

  // Set the new memory to all zero bits
  FillChar((PChar(p) + elSize * oldLength)^, elSize * (newLength - oldLength), 0);

  // Take care of the inner dimensions, if any
  if dimCnt > 1 then
  begin
    Inc(lengthVec);
    Dec(dimCnt);
    for i := 0 to newLength-1 do
      DynArraySetLength(PPointerArray(p)[i], typeInfo, dimCnt, lengthVec);
  end;
  a := p;
end;

ReallocMem
и
GetMem
работа с дин памятью

Добавлено @ 10:35 
Цитата(MAKCim @  29.11.2006,  09:27 Найти цитируемый пост)
просто volatile гарантирует получение значение из памяти
в его отсутствии такой гарантии нет

а почему тогда гарантии нет?
SergeCpp, полистаю спб

Автор: SergeCpp 29.11.2006, 10:37
user posted image
http://erdani.org/book/main.html by Andrei Alexandrescu

Автор: MAKCim 29.11.2006, 10:39
вот например такой код
Код

...
int i = 0;
int a, b, c, d;
a = i;
b = i;
c = i;
d = i;

компилятор мог бы оптимизировать так
Код

...
movl  (%esp), %eax
movl  %eax, -4(%esp)
// например тут извне (как - не важно) изменяется значение
// по адресу (%esp), а в регистре по-прежнему осталось старое значение
// соответственно дальнейший код будет содержать логическую ошибку - 
// ее обнаружить будет крайне сложно - иногда отрабатывает
// правильно, иногда все падает  :) 
movl  %eax, -8(%esp)
movl  %eax, -12(%esp)
movl  %eax, -16(%esp)
subl  $16,  %esp
...

в случае 
Код

...
volatile int i = 0;
int a, b, c, d;
a = i;
b = i;
c = i;
d = i;

будет так
Код

...
movl  (%esp), %eax
movl  %eax, -4(%esp)
movl  (%esp), %eax
movl  %eax, -8(%esp)
movl  (%esp), %eax
movl  %eax, -12(%esp)
movl  (%esp), %eax
movl  %eax, -16(%esp)
subl  $16,  %esp
...

Автор: Romikgy 29.11.2006, 10:40
SergeCpp, это к чему?

Автор: MAKCim 29.11.2006, 10:40
Цитата

а почему тогда гарантии нет?

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

Автор: Romikgy 29.11.2006, 11:04
Цитата(MAKCim @  29.11.2006,  09:40 Найти цитируемый пост)
возможно кэширование в регистре, что не всегда желательно

пример можно?

Добавлено @ 11:18 
MAKCim, давай раз уж мы говорим о дельфи и С++ (то подразумеваем , что все на платформе вин32)
то будем асм приводить не так как это делается в юниксе , мне мало чего понятно из твобою приведеного кода!
и плюс
Цитата(Romikgy @  29.11.2006,  09:07 Найти цитируемый пост)
это ответ , изменения асм кода, от присутствия и отсутствия volatile нет! 

проверял на с++ билдере!

Автор: Romikgy 29.11.2006, 11:27
Код

void v1()
{
 int i = 0;
int a, b, c, d;
a = i;
b = i;
c = i;
d = i;
}
void v2()
{
volatile int i = 0;
int a, b, c, d;
a = i;
b = i;
c = i;
d = i;
}

вот код аналогичный твоему
вот что дал асм билдера
user posted image
как видишь разницы нет

Автор: MAKCim 29.11.2006, 11:40
Цитата

мне мало чего понятно из твобою приведеного кода!

Код

mov  EAX, [ESP]
mov  [ESP - 4], EAX
mov  [ESP - 8], EAX
mov  [ESP - 12], EAX
mov  [ESP - 16], EAX
sub   ESP, 16

Код

mov  EAX, [ESP]
mov  [ESP - 4], EAX
mov  EAX, [ESP]
mov  [ESP - 8], EAX
mov  EAX, [ESP]
mov  [ESP - 12], EAX
mov  EAX, [ESP]
mov  [ESP - 16], EAX
sub   ESP, 16

Цитата

пример можно?

какой пример тебе нужен?
все зависит от компилятора, НО
voaltile гарантирует поведение аналогичное 2-му ассемблерному листингу этого поста
Цитата

как видишь разницы нет 

а где-то будет разница, неужели это не понятно?

Автор: SergeCpp 29.11.2006, 11:49
Цитата(Romikgy @  29.11.2006,  13:27 Найти цитируемый пост)
как видишь разницы нет
А это не отладочная ли была компиляция?.. user posted image

А вот VC++ 6 — Release (оптимизация включена)
Код
PUBLIC    ?v1@@YIXXZ                    ; v1
_TEXT    SEGMENT
?v1@@YIXXZ PROC NEAR                    ; v1

; 100  : int i = 0;
; 101  : int a, b, c, d;
; 102  : a = i;
; 103  : b = i;
; 104  : c = i;
; 105  : d = i;
; 106  : }

  00210    c3         ret     0
?v1@@YIXXZ ENDP                        ; v1
_TEXT    ENDS

Код
PUBLIC    ?v2@@YIXXZ                    ; v2
_TEXT    SEGMENT
_i$ = -4
?v2@@YIXXZ PROC NEAR                    ; v2

; 108  : {

  00220    51         push     ecx

; 109  : volatile int i = 0;

  00221    c7 44 24 00 00
    00 00 00     mov     DWORD PTR _i$[esp+4], 0

; 110  : int a, b, c, d;
; 111  : a = i;

  00229    8b 44 24 00     mov     eax, DWORD PTR _i$[esp+4]

; 112  : b = i;

  0022d    8b 4c 24 00     mov     ecx, DWORD PTR _i$[esp+4]

; 113  : c = i;

  00231    8b 54 24 00     mov     edx, DWORD PTR _i$[esp+4]

; 114  : d = i;

  00235    8b 44 24 00     mov     eax, DWORD PTR _i$[esp+4]

; 115  : }

  00239    59         pop     ecx
  0023a    c3         ret     0
?v2@@YIXXZ ENDP                        ; v2

Автор: Romikgy 29.11.2006, 12:25
Цитата(SergeCpp @  29.11.2006,  10:49 Найти цитируемый пост)
А это не отладочная ли была компиляция?

да , ну и что оптимизация была включена!

MAKCim, спасибо за перевод,
но всеравно смысл этого volatilе не велик , в некоторых случаях без него никуда, но этих случаев очень мало, дабы считать их кардинальными

Цитата(SergeCpp @  29.11.2006,  09:26 Найти цитируемый пост)
volatile - Multithreaded Programmer's Best Friend

интересно было почитать, но имхо использование мутексов и иже с ними более безопасный способ использования чем volatile( чисто мое мнение , когда много потоков на одном проце такая вещь еще и может пройти , но если будет много процессорный комплекс , тогда не спасет и прямое обращение к памяти, и надо будет юзать именно мутексы, так что я считаю что в многопотоковых приложениях это как разминка ума , как можно сделать без синхронизации, но на реальных проектах, можно будет наступить на большие грабли, и я говорю что лучше юзать мутексы ,чем volatile , IMHO)

Добавлено @ 12:28 
Цитата(MAKCim @  29.11.2006,  10:40 Найти цитируемый пост)
где-то будет

преймущество С++ перед Дельфи
Цитата(MAKCim @  29.11.2006,  10:40 Найти цитируемый пост)
неужели это не понятно? 

А где то нет  smile 
(это к возврату к теме обсуждения)

Автор: Romikgy 29.11.2006, 12:44
Цитата(Artemios @  26.11.2006,  04:06 Найти цитируемый пост)
Чтобы завершить разговор о дельфи vs математика, у меня к тебе встречное предложение:
вот здесь лежит моя статейка, там записана пара алгоритмов в псевдокоде, буквально в несколько строчек. Не подумай, я не предлагаю тебе их реализовывать, просто ответь на вопросы: 
1. дельфи способна на их реализацию в условиях, когда n и K принимают значения из достаточно широкого спектра чисел для n и структур для K, а также различных видов упорядочений на M? (обход ловушки 1)
2. в случае положительного ответа на предыдущий вопрос, что выиграет на ловушке 2 -- дельфи или C++?

прочитал , эту белеберду, осилил, но понял меньше четверти smile ибо я не силен в высшей математике, до таких высот. Ибо надобности не было ее так сильно изучать , и все эти пространства чисел, их вхождения и т.п. мне не понятны (если я не ошибся с терминами) 
а что либо писать с нуля , я просто не в состоянии понять что имено надо написать, я эту хрень и на С++ тоже не напишу, и в матлабе даже smile не тот уровень знаний
так что ваши фразы с ловушками и без них мне ничего не говорят.
Так что ув. Artemios предоставьте код на си и я посмотрю, реально ли его переписать на дельфи,
ибо здесь уже приводился код который говорили что нельзя написать на дельфи smile но это не так.
Жду ваш код, и не только его объявления

Добавлено @ 12:47 
Цитата(SergeCpp @  29.11.2006,  10:49 Найти цитируемый пост)
А вот VC++ 6 — Release (оптимизация включена)

дык сделай что то типа такого
Код

int  v1()
{
 int i = 0;
int a, b, c, d;
a = i;
b = i;
c = i;
d = i;
return d;
}

или вывод на консоль добавь , 
вкл фантазию smile

Автор: MAKCim 29.11.2006, 21:04
Цитата

но всеравно смысл этого volatilе не велик , в некоторых случаях без него никуда, но этих случаев очень мало, дабы считать их кардинальными

согласен, что случаев его применения меньше, чем всего остального, но именно его применение обычно реализует правильную логику работы всей программы (в качестве примера все та же jiffies)
Цитата

так что я считаю что в многопотоковых приложениях это как разминка ума , как можно сделать без синхронизации, но на реальных проектах, можно будет наступить на большие грабли, и я говорю что лучше юзать мутексы ,чем volatile , IMHO)

в принципе согласен, это все таки не то применение, для чего эта возможность создавалась (хотя применение volatile в таком контексте - показатель все мощи этой штуки  smile )

Автор: Romikgy 29.11.2006, 21:12
Цитата(MAKCim @  29.11.2006,  20:04 Найти цитируемый пост)
в качестве примера все та же jiffies

этого нет в виндовсе пример из винды есть?

PS так что в конце выяснили, что преимущества С++ перед Дельфи есть , но они не существены, правильно?

Автор: MAKCim 29.11.2006, 21:25
Цитата

так что в конце выяснили, что преимущества С++ перед Дельфи есть , но они не существены, правильно?

неа  smile 
это только один пример был
им дело не ограничивается
где пространства имен? где static-данные внутри функций/методов? (шаблоны не упоминаю), где explicit-конструкторы? где mutable-данные классов/структур? где явная спецификация исключений метода/функции? где placement new? где константные методы? где макросы и условная компиляция? (это, конечно, прямо к языку не относится, но все же)? где private, protected наследование? где множественное наследование? (только не надо говорить "на фига оно нужно", это уже другой вопрос)

Добавлено @ 21:26 
Цитата

этого нет в виндовсе пример из винды есть?

открой исходники  smile  smile 
думаю, 100% найдешь

Автор: Romikgy 29.11.2006, 22:13
Цитата(MAKCim @  29.11.2006,  20:25 Найти цитируемый пост)
где пространства имен? где static-данные внутри функций/методов? (шаблоны не упоминаю), где explicit-конструкторы? где mutable-данные классов/структур? где явная спецификация исключений метода/функции? где placement new? где константные методы? где макросы и условная компиляция? (это, конечно, прямо к языку не относится, но все же)? где private, protected наследование? где множественное наследование? (только не надо говорить "на фига оно нужно", это уже другой вопрос)

это уже обсуждалось выше, и ответ был дан,
что то есть , чего то нет,
но это все не смертельно , и то что реализовано на С++ имхо можно положить на дельфи!
правда где то что то удобно делать на С++ , а что то на Дельфи (кса тоже повторяюсь) 
особено если смотреть по времени затраченому програмистом smile
Цитата(MAKCim @  29.11.2006,  20:25 Найти цитируемый пост)
открой исходники

у мя его нету smile
дай а?

Автор: MAKCim 29.11.2006, 22:37
Цитата

у мя его нету
дай а? 

вообще то это была шутка  smile 
или ты тоже шутишь?  smile 
Цитата

это уже обсуждалось выше, и ответ был дан,
что то есть , чего то нет,

ладно, пространств имен нет, а остальное? где обсуждалось?
насколько я знаю, ничего из вышеперечисленного в Delphi нет, но могу ошибаться
Цитата

но это все не смертельно , и то что реализовано на С++ имхо можно положить на дельфи!

так же как volatile?   smile 
Цитата

правда где то что то удобно делать на С++ , а что то на Дельфи
особено если смотреть по времени затраченому програмистом 

мы Delphi рассматриваем неразрывно с IDE? Тогда и С++ надо рассматривать в том же контексте
если брать чисто языки - С++ и Delphi (aka ObjectPascal) и, например какие-нибудь их компиляторы (для красоты - без GUI),то, думаю, на С++ все будет удобнее, имхо


Автор: Romikgy 29.11.2006, 22:50
Цитата(MAKCim @  29.11.2006,  21:37 Найти цитируемый пост)
ообще то это была шутка  smile 
или ты тоже шутишь?  smile 

а надо расшифровывать?
Цитата(MAKCim @  29.11.2006,  21:37 Найти цитируемый пост)
но могу ошибаться

дык
если надо завтра подробнее напишу, что есть чего нет  smile 
Цитата(MAKCim @  29.11.2006,  21:37 Найти цитируемый пост)
мы Delphi рассматриваем неразрывно с IDE? Тогда и С++ надо рассматривать в том же контексте
если брать чисто языки - С++ и Delphi (aka ObjectPascal) и, например какие-нибудь их компиляторы (для красоты - без GUI),то, думаю, на С++ все будет удобнее, имхо

оки скажи аналог иде для С++, в котором также удобно работать как и в Дельфи(кроме билдера)

Автор: MAKCim 29.11.2006, 23:29
Цитата

а надо расшифровывать?

ну судя по смайлу ...
Цитата

если надо завтра подробнее напишу, что есть чего нет

давай
Цитата

оки скажи аналог иде для С++, в котором также удобно работать как и в Дельфи(кроме билдера) 

почему не билдер?

Автор: Romikgy 30.11.2006, 00:04
Цитата(MAKCim @  29.11.2006,  22:29 Найти цитируемый пост)
почему не билдер? 

ибо это тот же дельфи только на С++ smile
Цитата(MAKCim @  29.11.2006,  22:29 Найти цитируемый пост)
давай

завтра
Цитата(MAKCim @  29.11.2006,  22:29 Найти цитируемый пост)

ну судя по смайлу ...

и что по нему судя?

Автор: Artemios 30.11.2006, 05:07
Цитата(Romikgy @  29.11.2006,  12:44 Найти цитируемый пост)
прочитал , эту белеберду, осилил
...я эту хрень и на С++ тоже не напишу

И кто тут так настойчиво требовал уважения к собственной персоне? smile

Цитата(Romikgy @  29.11.2006,  12:44 Найти цитируемый пост)
так что ваши фразы с ловушками и без них мне ничего не говорят.

smile Вообще-то фразу "ловушка No..." я ввел как формальный указатель на ключевые моменты рассуждения, дабы не приводить их каждый раз заново. Судя по тому, как ты зацепился за это слово -- формализация не удалась, надо мне было просто цифры в скобках давать, как при обозначении формул. Или пунктами называть...

Цитата(Romikgy @  29.11.2006,  12:44 Найти цитируемый пост)
предоставьте код на си и я посмотрю, реально ли его переписать на дельфи

Ну и опять же, ты не понял, что я пытался сказать об общих принципах. Алгоритмы общие для широкого класса алгебраических структур -- по этим структурам произведена параметризация и пишутся шаблоны. Допустим, есть шаблон класса с тремя параметрами и допустим, для каждого параметра у нас заготовлено по пять реализаций. Теперь представь, что в отсутствии шаблонов для каждой комбинации фактических значений параметра мы пишем отдельный класс. Сколько будет таких классов? Правильно, 5^3=125. Другой вариант, когда пользователь будущей библиотеки захочет применить стандартный алгоритм для собственных структур. Элементарно, он пользуется библиотекой шаблонов и компилирует свою программу под свои собственные расчеты.
Хорошо, допустим, разработчик, неимеющий шаблонов, вспомнил про основы ООП и описал для каждой пятерки базовый класс. Кажется все замечательно, но только что будет с производительностью при полиморфизме времени выполнения? Учитываем, что параметрами шаблона были описаны низкоуровневые алгебраические структуры, и в ходе работы алгоритма на этих структурах производится не одна тысяча операций.
Вывод: без шаблонов конечно написать можно (я и не говорил, что нельзя принципиально), но только будет это неоптимально по объему написанного кода и/или неэффективно по времени выполнения.

Это что касалось шаблонов. Теперь о самих низкоуровневых алгебраических структурах. Например, я хочу использовать рациональные числа неограниченной точности. Для C/C++ есть билбиотека gmp (http://www.swox.com/gmp/). Реализован ли на object pascal какой-нибудь аналог для целых чисел произвольной длины и дробях на них, сопоставимый по производительности? Лично я видел только порт на дельфи все той же gmp, и врятли порт будет эффективней. Ну хорошо, gmp написана в перемешку с ассемблером, переформулирую вопрос: есть ли сопоставимый по производительности аналог, реализованный на object pascal + asm ? Нет.

Ну и, так требуемый тобой http://www.angularem.narod.ru/stat/example/monom_dp.h чуть побольше предыдущего. Это частичная реализация другой низкоуровневой структуры -- мономы (те самые, которые описывались в первых строчках моей статьи). Для конкретного упорядочения мономов deg_rev_lex. Из этого кода не видно, менеджер памяти для мономов, да и вообще для большинства структур в моей библиотеке, реализован на http://gee.cs.oswego.edu/dl/html/malloc.html. Ну и тут же вопрос о сопоставимых по эффективности распределениях памяти.
Знаешь, я не сомневаюсь, что ты сие можешь переписать на дельфи smile

P.S. А вообще, я не знаю ни одной системы компьютерной алгебры, написанной на object pascal. В основном как-то C, C++, Fortran, Lisp-подобные, и их комбинации c ASM ...

P.P.S. Да, и обращайся ко мне на "ты", а то как-то коробит. Все-таки ровесники smile 

Автор: Romikgy 30.11.2006, 10:45
Цитата(Artemios @  30.11.2006,  04:07 Найти цитируемый пост)
И кто тут так настойчиво требовал уважения к собственной персоне?

А терь точнее , или я своими высказываниями лично вас чем то оскорбил?
Цитата(Artemios @  30.11.2006,  04:07 Найти цитируемый пост)
Судя по тому, как ты зацепился за это слово -- формализация не удалась

ибо часто юзал
Цитата(Artemios @  30.11.2006,  04:07 Найти цитируемый пост)
было просто цифры в скобках давать

было бы лучше,
потому как подразумевается, что вы говорите одно , а подразумеваете другое, ибо это ловушка и ее надо найти!
Цитата(Artemios @  30.11.2006,  04:07 Найти цитируемый пост)
Сколько будет таких классов? Правильно, 5^3=125

терь я понял довод и согласен с ним,
имхо можно было тоже сказать в первых постах, и я бы понял, а так базисами пролялакали столько постов и смысл получили только теперь!
Цитата(Artemios @  30.11.2006,  04:07 Найти цитируемый пост)
применить стандартный алгоритм для собственных структур

опасно такое делать имхо! ибо юзер может применить стандартные алгоритмы не правильно
(примени сортировку целых чисел , на строке чтополучится?)
Цитата(Artemios @  30.11.2006,  04:07 Найти цитируемый пост)
Вывод: без шаблонов конечно написать можно (я и не говорил, что нельзя принципиально), но только будет это неоптимально по объему написанного кода и/или неэффективно по времени выполнения.

Еще раз повторюсь не всегда меньший объем кода это меньший размер программы,
в твоем контексте(задаче) скорость разработки и написания кода будут выше, но есть и другие задачи где это может и не выполнятся!
Цитата(Artemios @  30.11.2006,  04:07 Найти цитируемый пост)
Реализован ли на object pascal какой-нибудь аналог для целых чисел произвольной длины и дробях на них, сопоставимый по производительности?

понятия не имею!!!
ибо вы работаете с этими дробями вам это близко  и вы искали это, а для меня это это чушь , которой я пользоватся никогда не буду, и я его не искал!

Есть еще примеры проблем перевода С++ на дельфи, кроме ваших дробей?
(я еще не смотрел тот заголовочный файл предоставленый вами)
Цитата(Artemios @  30.11.2006,  04:07 Найти цитируемый пост)
Да, и обращайся ко мне на "ты", а то как-то коробит. Все-таки ровесники 

Посмотрим, и имхо
даже ровестики должны уважать собеседника, и разговаривать без наездов, имхо.

Автор: Romikgy 30.11.2006, 11:04
Цитата(MAKCim @  29.11.2006,  20:25 Найти цитируемый пост)
где пространства имен?

этого нет (лично я и смысла большого в нем не вижу)
Цитата(MAKCim @  29.11.2006,  20:25 Найти цитируемый пост)
где static-данные внутри функций/методов? 

вроде не видел
Цитата(MAKCim @  29.11.2006,  20:25 Найти цитируемый пост)
(шаблоны

нет
Цитата(MAKCim @  29.11.2006,  20:25 Найти цитируемый пост)
где explicit-конструкторы?

нет (имхо из за того что нет перегрузки операторов , в частности присвоения)
Цитата(MAKCim @  29.11.2006,  20:25 Найти цитируемый пост)
где mutable-данные классов/структур

нет (тоже не понятно для какой цели придумали)
Цитата(MAKCim @  29.11.2006,  20:25 Найти цитируемый пост)
явная спецификация исключений метода/функции

это не совсем понимаю, поясни это плз
Цитата(MAKCim @  29.11.2006,  20:25 Найти цитируемый пост)
placement new

можно , но не так как в С++
Цитата(MAKCim @  29.11.2006,  20:25 Найти цитируемый пост)
константные методы

может и не то
Код

function Calc(X, Y: Integer): Integer;
begin
 ...
end;
type TFunction = function(X, Y: Integer): Integer;
const MyFunction: TFunction = Calc;

Цитата(MAKCim @  29.11.2006,  20:25 Найти цитируемый пост)
макросы и условная компиляция

макросов имхо нет,
а условная компиляция есть (исходник Indy это хорошо подтверждает)
Цитата(MAKCim @  29.11.2006,  20:25 Найти цитируемый пост)
private, protected наследование

нет имхо
Цитата(MAKCim @  29.11.2006,  20:25 Найти цитируемый пост)
множественное наследование

частичтно можно реализовать на интерфейсах

Добавлено @ 11:09 
Цитата(Artemios @  30.11.2006,  04:07 Найти цитируемый пост)
Ну и, так требуемый тобой кусочек кода чуть побольше предыдущего


Цитата(Artemios @  30.11.2006,  04:07 Найти цитируемый пост)
Знаешь, я не сомневаюсь, что ты сие можешь переписать на дельфи

и что в этом исходнике сложного для переписания на дельфи?
единственое мне не известное это
static Allocator *allocator;
что есть слово с большой буквы?
А все остальное ничего сложного, кроме тех деталей которые не реализуемы на дельфи (типа перегрузки операторов)
И кса в исходном коде нет шаблонов!?

Автор: MAKCim 30.11.2006, 16:54
Цитата

(лично я и смысла большого в нем не вижу)

бывает ...  smile
Цитата

это не совсем понимаю, поясни это плз

явное указание того, какие исключения может бросить функция/метод
Код

class A {};
class B {};

class C {
public:
    void F() throw(A,B) {
        ...
    }
};

Цитата

частичтно можно реализовать на интерфейсах

частично не считается
интерфейсы можно реализовать с помощью множественного наследования, обратное, имхо, не верно
Цитата

может и не то

однако сама функция осталась то неконстантной
Цитата

нет (имхо из за того что нет перегрузки операторов , в частности присвоения)

при чем тут перегрузка?

Автор: Romikgy 30.11.2006, 17:54
Цитата(MAKCim @  30.11.2006,  15:54 Найти цитируемый пост)
явное указание того, какие исключения может бросить функция/метод

сиба
Цитата(MAKCim @  30.11.2006,  15:54 Найти цитируемый пост)
однако сама функция осталась то неконстантной

да, а что нельзя обойтись без константных ф_ций?
Цитата(MAKCim @  30.11.2006,  15:54 Найти цитируемый пост)
при чем тут перегрузка? 

да точно чет не туда занесло smile

Автор: MAKCim 30.11.2006, 18:08
Цитата

да, а что нельзя обойтись без константных ф_ций?

просто есть перегрузка по константности - очень хорошая вещь
Код

template<class T, size_t N> class array {
private:
    T __array[N];
public:
    T operator[](size_t index) const {
        return __array[index];
    }

    T& operator[](size_t index) {
        return __array[index];
    }
};


Добавлено @ 18:09 
вообще, респект тебе, Romikgy
один тут остался и мужественно отбиваешься от злостных С/С++-ов  smile 

по теме
признай, далеко не все можно реализовать на Delphi, что можно сделать в С++ - причем не второстепенные вещи, а те, которые реально применяются при программировании

Автор: skyboy 30.11.2006, 18:14
Цитата(MAKCim @  30.11.2006,  15:54 Найти цитируемый пост)
интерфейсы можно реализовать с помощью множественного наследования, обратное, имхо, не верно

В Delphi не допускается множественное наследование классов, окромя интерфейсов - класс вполне может наследовать несколько интерфейсов. А как это "интерфейсы можно реализовать с помощью множетсвенного наследования"? Не знаю, как "у вас в С++", а "у нас в Delphi" интерфейсом называется полностью абстрактный класс(ну, когда только объявления методов + объявление свойства). А как можно "реализовать абстрактный класс при помощи множетсвенного наследования" я не представляю smile

Добавлено @ 18:24 
Цитата(MAKCim @  30.11.2006,  17:08 Найти цитируемый пост)
просто есть перегрузка по константности - очень хорошая вещь
 хорошая вещь, когда сама перегрузка есть, правильно? smile

Автор: MAKCim 30.11.2006, 18:29
Цитата

А как можно "реализовать абстрактный класс при помощи множетсвенного наследования"

а я не понял причем тут абстрактный класс ко множеств. насл.
пардон, понял
вместо
Цитата

интерфейсы можно реализовать с помощью множественного наследования, обратное, имхо, не верно

читать
Цитата

наследование интерфейсов можно реализовать с помощью множественного наследования абстрактных классов без данных, обратное, имхо, не верно

Цитата

Не знаю, как "у вас в С++", а "у нас в Delphi" интерфейсом называется полностью абстрактный класс(ну, когда только объявления методов + объявление свойства).

А у нас интерфейс - класс, оторый содержит только чисто-виртуальные методы
Формально - это класс, но фактически его можно считать интерфейсом за не имением отдельной концепции интерфейсов в С++
Код

class shape {
public:
    virtual void draw() const = 0;
};

class serializible {
public:
    virtual void serialize(fstream&) const = 0;
};

class rectangle:
    public shape,
    public serializible {
public:
    void draw() const {...}
    void serialize(fstream&) const {...}
};


Добавлено @ 18:30 
Цитата

хорошая вещь, когда сама перегрузка есть, правильно?

нет
это просто был хороший пример использования

Автор: Alexeis 30.11.2006, 18:42
Цитата(skyboy @  30.11.2006,  18:14 Найти цитируемый пост)
Не знаю, как "у вас в С++", а "у нас в Delphi" интерфейсом называется полностью абстрактный класс(ну, когда только объявления методов + объявление свойства). 


Ну интерфес в делфи это скорее не объект, а его описание. Что-то вроде заголовков для функций. А по поводу его отсутствия у меня большие сомнения, недавно в инете встречал код интерфеса на С++ (правда возможно это было для билдера, но точно не помню)

  Я бы сказал скорее так у делфи и С++ немного различаются общие концепции ООП, потому и соотвествено отличается реализация. Сишник не находит нужных ему вещей на делфи, а делфист наоборот (либо они реализованы "весьма странно"). Но реально просто несколько отличается подход к программированию. Потому делфистам не нужны все те "лишние" возможноти С++ и наоборот. Я вот, например, сейчас пишу формально на С++, но реально на делфи smile. Я строю все так как у меня было в делфи и сильно матерюсь, на крайне неудачную реализацию. Тут надо переходить от возможностей языка к концепциям програмирования на этих языках, и определять какая лучше. Ведь язык только описывает то что мы придумаем, а вот от того как мы это будем придумывать и будут отличатся средства и соотвествено все остальное будет казаться лишним. Если язык легко позволяет реализовать концепцию, структуру которую задумал, то это хороший язык. Поскольку делфистам он позволяет это делать, значит он хороший.

Автор: skyboy 30.11.2006, 18:42
Цитата(MAKCim @  30.11.2006,  17:29 Найти цитируемый пост)
наследование интерфейсов можно реализовать с помощью множественного наследования абстрактных классов без данных, обратное, имхо, не верно

почему неверно? почему нельзя наследовать несколько абстрактных  классов(интерфейсов - мне так привычнее называть), делегировать реализацию - и получать практически то же, что и при "прямом" множественном наследовании, затрачивая усилия на несколько дополнительных строк кода, но обходя подводные камни вроде.. а, забыл, как называется ситуация, когда Б и В - наследники А, а Г - наследник Б и В и получается конфликт наследования методов/свойств smile

Автор: Alexeis 30.11.2006, 18:46
 Спор о возможнастях в таком контексте считаю бесполезным, потому и не участвую  smile 

Автор: skyboy 30.11.2006, 18:48
Цитата(alexeis1 @  30.11.2006,  17:42 Найти цитируемый пост)
Ну интерфес в делфи это скорее не объект, а его описание.

я и не называл интерфейс объектом. я назвал интерфейс полностью абстрактным классом smile

Автор: nickless 30.11.2006, 18:51
Цитата(MAKCim @ 30.11.2006,  17:08)
далеко не все можно реализовать на Delphi, что можно сделать в С++ - причем не второстепенные вещи, а те, которые реально применяются при программировании

На Delphi можно решить любую реальную проблему, которую можно решить на C++ (ограничения компиляторов не считаются), но т.к. набор фич разный, то и решение будет очень разное, и не всегда эффективное. Причем это относится к обоим языкам, в Delphi тоже хватает вещей, которых нет в C++.

ЗЫ
И не надоело вам еще спорить smile 

Автор: skyboy 30.11.2006, 18:54
Цитата(alexeis1 @  30.11.2006,  17:46 Найти цитируемый пост)
Спор о возможнастях в таком контексте считаю бесполезным, потому и не участвую 

это точно. "соратники" и "противники" так умело смешивают в кучу недостатки(НЕ-гибкость, НЕ-расширяемость) языка как стандарта, реализации языка, IDE и библиотек, что хочется убить себя об стену  smile а никак не спорить...

Автор: MAKCim 30.11.2006, 19:05
Цитата

в Delphi тоже хватает вещей, которых нет в C++.

знаю только одну
Цитата

На Delphi можно решить любую реальную проблему, которую можно решить на C++

нет и это было показано
Цитата

И не надоело вам еще спорить

слегка надоело smile
но еще могу  smile  

Автор: nickless 30.11.2006, 19:21
Цитата(MAKCim @ 30.11.2006,  18:05)
знаю только одну

Какую? 
Сейчас на вскидку на на ум приходят: указатели на методы класса (я имею ввиду независимые от типа класса), метаклассы, initialization + finalization секторы в юнитах (ИМХО), еще че вспомню, напишу.

Цитата(MAKCim @ 30.11.2006,  18:05)
нет и это было показано

Решить так как в C++ != решить вообще. 
Delphi не разчитана на написание драйверов итд., так что volatile там не сильно нужен, но реализовать все таки можно, inline asm еще никто не отменял  smile 

Цитата(MAKCim @ 30.11.2006,  18:05)
слегка надоело smile
но еще могу  smile

Тогда я тоже немного поспорю  smile 

Автор: Romikgy 30.11.2006, 19:40
Цитата(MAKCim @  30.11.2006,  17:08 Найти цитируемый пост)
просто есть перегрузка по константности - очень хорошая вещь

Цитата(MAKCim @  30.11.2006,  17:08 Найти цитируемый пост)
template<class T, size_t N> class array {
private:
    T __array[N];
public:
    T operator[](size_t index) const {
        return __array[index];
    }
    T& operator[](size_t index) {
        return __array[index];
    }
};

не совсем понял smile
что хорошего в этом коде?
Цитата(MAKCim @  30.11.2006,  17:08 Найти цитируемый пост)
вообще, респект тебе, Romikgy
один тут остался и мужественно отбиваешься от злостных С/С++-ов

аналогично MAKCim smile ибо качественных ответов и точных обоснований по разным направлениям языка, очень редко такое встречается smile
Цитата(MAKCim @  30.11.2006,  17:08 Найти цитируемый пост)
признай, далеко не все можно реализовать на Delphi, что можно сделать в С++ - причем не второстепенные вещи, а те, которые реально применяются при программировании

неа не признаю smile
есть вещи которые трудно реализовать на дельфи и легко на си , так да согласен smile но есть и наоборот  smile 
Цитата(MAKCim @  30.11.2006,  18:05 Найти цитируемый пост)
знаю только одну

и?
Цитата(MAKCim @  30.11.2006,  18:05 Найти цитируемый пост)
нет и это было показано

сцылку или пример
Цитата(MAKCim @  30.11.2006,  18:05 Найти цитируемый пост)
но еще могу 

радует  smile 
есть еще порох в пороховницах, и ягоды в .... smile (с)

Автор: MAKCim 30.11.2006, 21:24
Цитата

Какую? 

Цитата

метаклассы

Цитата

и?

Цитата

метаклассы

я даже толком и не вспомню для чего они нужны  smile 
Цитата

сцылку или пример

не, все по-новому начнется
хотя ладно  smile  помнится ты сказал, что в Delphi нет статических данных класса
Как же тогда реализовать паттерн Singleton?
Цитата

не совсем понял smile
что хорошего в этом коде?

фишка в том, что если объект array константный, то
через operator[] мы получим лишь копию объекта с заданным индексом, т. е 
Код

...
const array<int, 10> __array;
__array[6] = 78; // error
...

иначе operator[] возвращает ссылку на реальный объект, а не на копию, что позволяет писать как было показано выше
мелочь, а приятно  smile 

Автор: Romikgy 30.11.2006, 23:07
Цитата(MAKCim @  30.11.2006,  20:24 Найти цитируемый пост)
const array<int, 10> __array;
__array[6] = 78; // error


Цитата(MAKCim @  30.11.2006,  20:24 Найти цитируемый пост)
иначе operator[] возвращает ссылку на реальный объект, а не на копию, что позволяет писать как было показано выше
мелочь, а приятно

снова все через одно место smile
но понятно


Автор: Romikgy 1.12.2006, 00:18
Цитата(MAKCim @  30.11.2006,  20:24 Найти цитируемый пост)
помнится ты сказал, что в Delphi нет статических данных класса
Как же тогда реализовать паттерн Singleton?

Да интересная вещь эти синглтоны, только смысл в них, хм... даже не знаю, 
имхо их придумали дабы даже логику какой либо программы обезопасить в коде, только зачем?
имхо если правильно продуманая логика, то синглтоны не нужны!
(да и заменить можно их, правда не самим языком а возможностями системы очень просто)

Добавлено @ 00:19 
Имхо можно еще глобальный указатель к томуже прикрутить  smile 

Автор: Romikgy 1.12.2006, 00:49
гы нашел кое что
http://forum.vingrad.ru/index.php?showtopic=123026&view=findpost&p=932745
http://lib.profi.net.ua/doc/info_sites/visprog/books/DelphiKindom/singleton.htm
 smile 

Автор: bel_nikita 1.12.2006, 00:57
Цитата(Romikgy @ 30.11.2006,  23:18)
Да интересная вещь эти синглтоны, только смысл в них, хм... даже не знаю, 
имхо их придумали дабы даже логику какой либо программы обезопасить в коде, только зачем?
имхо если правильно продуманая логика, то синглтоны не нужны!
(да и заменить можно их, правда не самим языком а возможностями системы очень просто)

Добавлено @ 00:19 
Имхо можно еще глобальный указатель к томуже прикрутить  smile

Синглтон - это вариант глобальной переменной, но создать второй объект такого же типа нельзя.  В этом собственно и вся разница. И с точки зрения клиента объект класса синглтон владеет сам собой.
А применять сингл можно много где: keboard, screen, printer и т.д. Создавать вторые экземпляры таких классов неразумно, а порой и abnormal operation.

Автор: nickless 1.12.2006, 01:16
Цитата(MAKCim @ 30.11.2006,  20:24)
я даже толком и не вспомню для чего они нужны  smile 

Ну правильно, а дельфисты без шаблонов спокойно обходятся :-)

Цитата(MAKCim @ 30.11.2006,  20:24)
Как же тогда реализовать паттерн Singleton?

http://delphi.about.com/od/oopindelphi/a/aa010201a.htm


Опишу, как в Delphi (VCL) реализована работа с разными графическими форматами, там используется все фичи, о которых я писал  smile 

Так вот, в graphics.pas декларированы классы TBitmap, TGraphic, TPicture и еще несколько. TGraphic это абстрактный класс с общим для картинок интерфейсом, типа читать/писать из файла/стрима, рисовать себя на канве итд. TBitmap наследован от TGraphic и читает *.bmp. 
TPicture имеет почти тот же интерфейс, как и TGraphic, но работает с любым известным форматом, так как выбирает нужного потомка TGraphics из известных.
Работает это примерно так: в секции initialization потомка TGraphics вызывается функция из graphics.pas, которая регистрирует новый формат. Когда TPicture надо открыть файл, она перебирает все форматы, вызывая статический метод, который возвращает nil если формат не поддерживается, или метакласс TGraphicClass (= class of TGraphics). С помощю этого метакласса TPicture создаёт нужный класс, примерно так (код не из graphics.pas):
Код

...
FFormat := GetFormat(FileName);
if (FFormat <> nil)
    FGraphic := FFormat.Create(FileName);
...

Это можно реализовать на C++ с помощю Factory pattern, но не так элегантно и коротко  smile 

А вот что ИМХО нельзя реализовать, так это удобное использование, если например хочется поддержки png, gif, tiff итд, надо скачать что-то типа TPNGGraphic, TTIFFGraphic, TGIFGraphic и просто добавить их в uses, и все компоненты VCL (и собственные), использующие TPicture начнут поддерживать png, tiff, итд без переделок в коде.

Ну а указатели на методы классов (events) используются для того, чтобы все прогрессбары итд, спокойно, без изменений в коде могли показывать прогресс при открытии/записи в файл этих новых форматов.

ЗЫ:
Вспомнил еще одну фичу: properties

ЗЗЫ:
Кстати, в delphi с помощью properties реализуется различный доступ на элементы списков при чтении/записи, как в C++ operator[]-ом.

Автор: Artemios 1.12.2006, 03:43
[offtop]
Цитата(Romikgy @  30.11.2006,  10:45 Найти цитируемый пост)
А терь точнее , или я своими высказываниями лично вас чем то оскорбил?

Вообще-то да. Но, надеюсь, не более я чем я вас smile
Цитата(Romikgy @  30.11.2006,  10:45 Найти цитируемый пост)
имхо
даже ровестики должны уважать собеседника, и разговаривать без наездов, имхо. 

А что, кто-то наезжал? Или мое обращение на "ты" ты воспринимаешь как неуважительное отношение с моей стороны?
[/offtop]


Цитата(Romikgy @  30.11.2006,  10:45 Найти цитируемый пост)
терь я понял довод и согласен с ним,
имхо можно было тоже сказать в первых постах, и я бы понял

Так с первых постов я именно об этом и пытался объяснить, вспомни: я говорил об одном алгоритме для множества различных типов.

Цитата(Romikgy @  30.11.2006,  10:45 Найти цитируемый пост)
Еще раз повторюсь не всегда меньший объем кода это меньший размер программы,
в твоем контексте(задаче) скорость разработки и написания кода будут выше, но есть и другие задачи где это может и не выполнятся!

Также и я еще раз повторюсь, я с этим совершенно не спорил. 
А вот про другие задачи именно в рамках математики (мы же о математике дискуссию вели), где дельфи использовать эффективней чем с++, пожалуста по-подробней.

Цитата(Romikgy @  30.11.2006,  11:04 Найти цитируемый пост)
и что в этом исходнике сложного для переписания на дельфи?

И я говорил, что не сомневаюсь в твоих способностях переписать на дельфи. Даже объем написанного кода будет такой же smile
Здесь другое. Посмотри, пара static методов, а вся арифметика на inline. Как я уже говорил, классы для низкоуровневых алгебраических структур самые времязатратные, на их методы приходится примерно 85-90% работы алгоритмов библиотеки.

По поводу перевода кода самих методов точно утверждать не буду, только догадка. Например:
Код

inline void M_dp::mult(const M_dp& a,  const M_dp &b) {
  it i = (it)beg;
  const_it ia = (const_it)a.beg, ib = (const_it)b.beg;
  do {
    *i++ = *ia++ + *ib++;
  } while(i < (it)end);
}

и паскалев аналог:
Код

procedure M_dp.mult(a,b: M_dp);
  var i:integer;
  begin
  for i:=1 to n do
    beg[i]:=a.beg[i]+b.beg[i];
  end;

почему-то мне кажется, что при компиляции последний вариант даст больше машинных команд. Кста, в приведенном сишном цикле ровно в sizeof(int)/sizeof(char) раза меньше итераций, чем в переведенном варианте. (хотя, конечно, мой перевод неэффективен, возможно ты сделал бы лучше).

Ну и в любом случае, ради десятка машинных команд -- делать на них call по [хз] раз в милисекунду -- непозволительная растрата.

Цитата(Romikgy @  30.11.2006,  11:04 Найти цитируемый пост)
единственое мне не известное это
static Allocator *allocator;
что есть слово с большой буквы?

Так я ж кажется говорил про менеджер памяти. Немножко оптимизирован для работы с большим набором мелких однотипных объектов. Ну вот он: http://www.angularem.narod.ru/stat/example/allocator.h, http://www.angularem.narod.ru/stat/example/allocator.cxx.

Цитата(Romikgy @  30.11.2006,  11:04 Найти цитируемый пост)
И кса в исходном коде нет шаблонов!?

Естественно, это низкоуровневая (в моем понимании) алгебраическая структура.


Цитата(nickless @  30.11.2006,  18:51 Найти цитируемый пост)
На Delphi можно решить любую реальную проблему, которую можно решить на C++ 

Конечно. А все, что мы на каких бы то ни было языках ни писали, в принципе реализуемо на машине Тьюринга smile


Автор: Romikgy 1.12.2006, 10:26
Цитата(bel_nikita @  30.11.2006,  23:57 Найти цитируемый пост)
А применять сингл можно много где: keboard, screen, printer и т.д. Создавать вторые экземпляры таких классов неразумно, а порой и abnormal operation. 

На сегодняшний день , это уже не могут быть синглтонами, может быть более 1 клавы , экрана, и тем более принтера, имхо применение их (в данном примере) нелогично!
Цитата(Artemios @  1.12.2006,  02:43 Найти цитируемый пост)
Вообще-то да. Но, надеюсь, не более я чем я вас

плз сцылку, на мое оскорбление вам? (дабы не обижать остальных участников форума, буду учится на своих ошибках)
Цитата(Artemios @  1.12.2006,  02:43 Найти цитируемый пост)
А что, кто-то наезжал?

ваши высказывания подводят мя к такому выводу (не последние!)
Цитата(Artemios @  1.12.2006,  02:43 Найти цитируемый пост)
Или мое обращение на "ты" ты воспринимаешь как неуважительное отношение с моей стороны?

нет, обращатся можете как вам будет угодно!
Цитата(Artemios @  1.12.2006,  02:43 Найти цитируемый пост)
Так с первых постов я именно об этом и пытался объяснить, вспомни: я говорил об одном алгоритме для множества различных типов.

с первых постов, вы слишком много употребляли слово ловушка  smile и слишком много воды было,
только в последних постах, воды поуменьшилось, благодаря чему , я и понял ваши мысли
Цитата(Artemios @  1.12.2006,  02:43 Найти цитируемый пост)
Также и я еще раз повторюсь, я с этим совершенно не спорил. 

Хоть чтото smile
Цитата(Artemios @  1.12.2006,  02:43 Найти цитируемый пост)
мы же о математике дискуссию вели

тема топика (кса можете прочитать сверху) не дискуссия о матиматике, а о целесообразности перехода от Дельфи на С++ (ВООБЩЕ!!!!!)
Цитата(Artemios @  1.12.2006,  02:43 Найти цитируемый пост)
Посмотри, пара static методов, а вся арифметика на inline

и что, нет методов статик в дельфи, да и инлайн другой, имхо можно обойтись и без них!
Цитата(Artemios @  1.12.2006,  02:43 Найти цитируемый пост)
на их методы приходится примерно 85-90% работы алгоритмов

с этой точки зрения да , возможно скорость для вас и критична, но инлайн ф_ции всегда страдали одним недостатком! конечный размер довольно быстро растет!
Цитата(Artemios @  1.12.2006,  02:43 Найти цитируемый пост)
почему-то мне кажется, что при компиляции последний вариант даст больше машинных команд. 

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

Автор: Artemios 1.12.2006, 12:40
Цитата(Romikgy @  1.12.2006,  10:26 Найти цитируемый пост)
и что, нет методов статик в дельфи, да и инлайн другой, имхо можно обойтись и без них!

Цитата(Romikgy @  1.12.2006,  10:26 Найти цитируемый пост)
имхо код преобразованый вами немного не корректен

Тебе же карты в руки.

Цитата(Romikgy @  1.12.2006,  10:26 Найти цитируемый пост)
тема топика (кса можете прочитать сверху) не дискуссия о матиматике, а о целесообразности перехода от Дельфи на С++ (ВООБЩЕ!!!!!)

Кса прочитал. По теме (ВООБЩЕ) высказался в своем первом здесь посте. А далее кто-то smile зацепился за сравнительную эффективность использования дельфи в математике, начал требовать доказательств, примеров кода -- в этом ключе и идет наш частный разговор, так что не надо увиливать, будто я зациклился на одной математике и на конкретных расчетах. 
Я свою позицию в этом (ЧАСТНОМ) вопросе обосновал, поэтому имею право повторить свой вопрос: примеры задач математики, где использование дельфи эффективней, нежели c++ -- где? Нет -- считаем вопрос дельфи vs математика закрытым.

Автор: Romikgy 1.12.2006, 12:59
Цитата(Artemios @  1.12.2006,  11:40 Найти цитируемый пост)
Тебе же карты в руки.

хммм .... к чему бы это ....

Цитата(Artemios @  1.12.2006,  11:40 Найти цитируемый пост)
Кса прочитал

Молодец
Цитата(Artemios @  1.12.2006,  11:40 Найти цитируемый пост)
за сравнительную эффективность использования дельфи в математике

имхо мателатика везде одинаковая, 
Цитата(Artemios @  1.12.2006,  11:40 Найти цитируемый пост)
так что не надо увиливать

и я никуда не увиливал, имхо сложение и вычитание , везде одинаковое , вы же давите что математика в С++ круче из за присутствия шаблонов, по отношению к вашей задаче , еще раз повторюсь , математика везде одинаковая, а вот та отрасль математике о которой вы говорите, может и легче реализуется на си из за шаблонов и т.п. но это малая часть где математика дельфей страдает если так можно выразится
ибо всеравно все сводится к +,-,*,/ во всех случаях!
Цитата(Artemios @  1.12.2006,  11:40 Найти цитируемый пост)
примеры задач математики, где использование дельфи эффективней, нежели c++ -- где?

еще раз математика (процессорная) везде одинаковая что в си что в паскале
но искать что то , дабы что то даказать уж увольте!
Цитата(Artemios @  1.12.2006,  11:40 Найти цитируемый пост)
Нет -- считаем вопрос дельфи vs математика закрытым.

Считайте.... ваше право!

Автор: Artemios 1.12.2006, 13:39
Цитата(Romikgy @  1.12.2006,  12:59 Найти цитируемый пост)
но это малая часть где математика дельфей страдает если так можно выразится

необоснованно.
Цитата(Romikgy @  1.12.2006,  12:59 Найти цитируемый пост)
ибо всеравно все сводится к +,-,*,/ во всех случаях!

Угу, к байтам, битам, а далее к машине Тьюринга smile
К сожалению, мой собеседник не имеет представления о современной алгебре. Вынужден констатировать бессмысленность всего предыдущего диалога между нами.
Вопрос: кой смысл было поднимать спор при отсутствии осведомленности и при нежелании обосновывать свои заявления?

Автор: Romikgy 1.12.2006, 13:47
Цитата(Artemios @  1.12.2006,  12:39 Найти цитируемый пост)
К сожалению, мой собеседник не имеет представления о современной алгебре. Вынужден констатировать бессмысленность всего предыдущего диалога между нами.

Возможно....
Цитата(Artemios @  1.12.2006,  12:39 Найти цитируемый пост)
Вопрос: кой смысл было поднимать спор при отсутствии осведомленности и при нежелании обосновывать свои заявления?

спор был об разности С++ и дельфи, а не о 
Цитата(Artemios @  1.12.2006,  12:39 Найти цитируемый пост)
представления о современной алгебре

!!!!!
PS очень странный ваш последний пост после
Цитата(Artemios @  1.12.2006,  11:40 Найти цитируемый пост)
Кса прочитал

по поводу темы????

Автор: MAKCim 1.12.2006, 17:20
Цитата

имхо их придумали дабы даже логику какой либо программы обезопасить в коде, только зачем?
имхо если правильно продуманая логика, то синглтоны не нужны!

громкие заявления  smile, не согласен
Цитата

Как гарантировать, что у класса есть единственный экземпляр и что этот экземпляр легко доступен? Глобальная переменная дает доступ к объекту, но не запрещает инстанцировать класс в нескольких экземплярах. Более удачное решение - сам класс контролирует то, что у него есть только один экземпляр, может запретить создание дополнительных экземпляров, перехватывая запросы на создание новых объектов, и он же способен предоставить доступ к своему экземпляру

GoF
Цитата

Имхо можно еще глобальный указатель к томуже прикрутить

Коряво, имхо
nickless
Сложно мне понять до конца, как там синглетон реализован (слава богу с Делфи давно не работал  smile )
как то там все сложно  smile 
вот вполне безопасный для однопоточного использования синглетон из 9 строчек
Код

class singleton {
private:
    singleton() {}
public:
    static singleton& instance() {
        static singleton _singleton;
        return _singleton;
    }
};

Цитата

На сегодняшний день , это уже не могут быть синглтонами, может быть более 1 клавы , экрана, и тем более принтера, имхо применение их (в данном примере) нелогично!

не придирайся к конкретным примерам
по теме: любой менеджер чего-либо резонно сделать синглетоном

Автор: Romikgy 1.12.2006, 17:31
Цитата(MAKCim @  1.12.2006,  16:20 Найти цитируемый пост)
любой менеджер чего-либо резонно сделать синглетоном

даже менеджер дельфи smile
Цитата(MAKCim @  1.12.2006,  16:20 Найти цитируемый пост)
не согласен

у каждого свое мнение
Цитата(MAKCim @  1.12.2006,  16:20 Найти цитируемый пост)
вот вполне безопасный для однопоточного использования синглетон из 9 строчек

что мешает мне сделать 
singleton с1, c2 ;
?

Автор: MAKCim 1.12.2006, 17:35
Цитата

что мешает мне сделать  

сделай
то, что предложил nickless, прямо скажем несколько больше чем 9

Добавлено @ 17:36 
Цитата

singleton с1, c2 ;

private конструктор
сей код не будет компилироваться

Автор: Romikgy 1.12.2006, 19:29
Цитата(MAKCim @  1.12.2006,  16:35 Найти цитируемый пост)
то, что предложил nickless, прямо скажем несколько больше чем 9

100% согласен , но можно  smile 
Цитата(MAKCim @  1.12.2006,  16:35 Найти цитируемый пост)
сей код не будет компилироваться

он даже так не хочет 
Цитата(MAKCim @  1.12.2006,  16:35 Найти цитируемый пост)
singleton с1

только так
Код

singleton c1(singleton::instance());

Автор: MAKCim 1.12.2006, 20:44
Цитата

только так

упс  smile 
в код добавить надо
Код

class singleton {
private:
    singleton() {}
    singleton(const singleton&);
    singleton& operator=(const singleton&);
public:
    static singleton& instance() {
        static singleton _singleton;
        return _singleton;
    }
};

Автор: nickless 1.12.2006, 21:25
Цитата(MAKCim @ 1.12.2006,  16:20)
Сложно мне понять до конца, как там синглетон реализован (слава богу с Делфи давно не работал  smile )
как то там все сложно  smile 

В принципе там просто считаются ссылки, и объект создаётся только один раз.
Кода 33 строчки, ровно в 3 раза больше чем в твоём последнем варианте

Автор: skyboy 2.12.2006, 09:31
Цитата(MAKCim @  1.12.2006,  16:35 Найти цитируемый пост)
то, что предложил nickless, прямо скажем несколько больше чем 9

речь шла о том, что мол, без static - полей нельзя реализовать столько полезный механизм, как singleton. Оказалось, что можно. Теперь начинаем цепляться к объему?  smile Ну и ну...

Автор: MAKCim 2.12.2006, 11:11
Цитата

Теперь начинаем цепляться к объему?  smile Ну и ну... 

следи за логикой
Цитата

Сложно мне понять до конца, как там синглетон реализован (слава богу с Делфи давно не работал  smile )
как то там все сложно
вот вполне безопасный для однопоточного использования синглетон из 9 строчек

[разве я тут начал цепляться к объему? пример привел просто для сравнения]
Цитата

что мешает мне сделать 

Цитата

сделай
то, что предложил nickless, прямо скажем несколько больше чем 9

Автор: MAKCim 2.12.2006, 11:59
чтобы не было непоняток, я признаю, что singleton на delphi реализовать можно, но не слишком приятно это делать  smile
Этот вопрос закрыт
Пойдем дальше
Насколько я знаю, union-ов в Delphi тоже нет (или я не прав), register данных тоже
Прйдем по компиляторам (делфисты тоже могут использовать разные компиляторы, если поможет  smile )
Покажите мне реализацию на Pascal/ObjectPascal
 - атрибутов (типа, переменной, функции)
 - offsetof-а (офигенная вещь для реализации списков)
 - typeof-а
 - именованную инициализацию полей структур с обнулением неопределенных полей (есть в C99)
Код

static struct task {
    int    t_time;
    union {
        struct _range {
            long r_min;
            long r_max;
        } t_range;
        double t_number;
    };
} object = {
    .t_time = 12,
    .t_range = { .r_min = 0 }
};

 - диапозоны значений в статически определенных массивах и  индексированные значения
Код

int array[128] = { [0] = 100, [1] = 100, [2 ... 125] = 0, [126] = 100, [127] = 100 };

 - TLS механизм (данные, специфичные для потока) (есть в С99 под видом __thread)
 - неконстантные инициализаторы в статически определенных массивах
Код

void F(int a, int b) {
    int array[2] = {a, b};
}

 - встроенный тип комплексных чисел (complex)

Автор: skyboy 2.12.2006, 12:10
Цитата(MAKCim @  2.12.2006,  10:59 Найти цитируемый пост)
Насколько я знаю, union-ов в Delphi тоже нет (или я не прав)

с жесткой типизацией - и union'ы? smile нет. и я понимаю - почему smile можно использовать указатели с присваиванием адреса - подход погибче, чем использование объединений в общем случае. При этом программист уже понимает, на что он идет  smile 
[offtopic] мы обсуждаем недостатки, как отсутствие необходимых нам механизмов или некое неудобство в реализации и использовании их?
[/offtopic]

Цитата(MAKCim @  2.12.2006,  10:59 Найти цитируемый пост)
 - атрибутов (типа, переменной, функции)
 - offsetof-а (офигенная вещь для реализации списков)

Плиз, описывай функциональность: название мало что скажет, если нет полного аналога, а описать функциональный аналог помешает непонимание того, что же требуется(как в случае со "статическими полями класса" - полного аналога нет, но реализовать синглтон возможно).
Цитата(MAKCim @  2.12.2006,  10:59 Найти цитируемый пост)
встроенный тип комплексных чисел (complex) 

Кстати, странно для языка, в котором предусмотрена перегрузка операторов. Экземпляры комплексного типа - это ведь структура на "обычных" типах, да?
В Делфи такого нет. Реализовать несложно, правда, для оперирования надо будет пользовать функциями/процедурами - перегрузки операторов ведь нет.

Добавлено @ 12:13 
Цитата(MAKCim @  2.12.2006,  10:59 Найти цитируемый пост)
typeof-а

    ну, раз нет шаблонов и есть строгая типизация - на кой ляд определять тип? smile Размер - ещё куда ни шло, а вот тип определять странно. Там где есть объекты(я имею в виду реализацию в Delphi), можно использовать механизм RTTI, что удобнее простого typeof, а в "обычном" Паскале нет необходимости определять тип.

Автор: MAKCim 2.12.2006, 12:54
Цитата

Кстати, странно для языка, в котором предусмотрена перегрузка операторов. Экземпляры комплексного типа - это ведь структура на "обычных" типах, да?

это язык С, стандарт С99 (это не структура, а тип, такой же как int, long, ... , что, естественно влияет (в лучшую сторону) на скорость выполнения)
Цитата

с жесткой типизацией - и union'ы?

да, а что? очень удобно
могу привести пример, где оно удобно
в IA32 Protection Mode есть такая вещь, как дескриптор
Причем дескрипторы бывают разных типов и оттого меняется назначение отдельных байтов (всего их 8) и групп байтов
Код

struct i386_descriptor {
    __u16    d_byte01;
    __u16    d_byte23;
    __u8      d_byte4;
    __u8      d_byte5;
    union {
        __u8    d_byte6;
        __u8    d_byte7;
        __u16  d_byte67;
    };
};

теперь можно получать доступ как к словам, так и к отдельным байтам слов
Цитата

мы обсуждаем недостатки, как отсутствие необходимых нам механизмов или некое неудобство в реализации и использовании их?


и то, и то
Цитата

Плиз, описывай функциональность

OK
offsetof
Код

struct list_head {
    struct list_head *next, *prev;
};

#define list_entry(ptr, type, member) \
    return (type*)((char*)(ptr) - offsetof(type, member))

void __list_add(struct list_head* entry, struct list_head* prev,
        struct list_head* next) {
    next -> prev = entry;
    entry -> next = next;
    entry -> prev = prev;
    prev -> next = entry;
}

void list_add(struct list_head* entry, struct list_head* list) {
    __list_add(entry, list, list -> next);   
}

...

struct task {
    int     t_time;
    char  t_name[128];
    struct list_head t_list; 
};

static struct list_head list = {
    &list,
    &list
}; /* List of tasks */

int main() {
    int i;

    for (i = 0; i < 50; ++i) {
        struct task* task = malloc(sizeof(struct task));
        if (task != NULL)
            list_add(&task -> t_list, &list);
    }

    struct list_head* listp;
    struct task* taskp;
    for (listp = list.next; listp != &list; listp = listp -> next) {
        taskp = list_entry(listp, struct task, t_list);
        free(taskp);
    }
}

атрибуты к примеру
Код

/* выравнивание */
struct __attribute__((__aligned__(16))) A {
    char a[5];
    short b[2]
};
/* sizeof(struct A) = 16, а не 9 */

Код

/* обратное выравниванию */
struct __attribute__((__packed__)) A {
    char a[5];
    short b[2];
};

Код

struct B { int a; double b; };
union __attribute__((__transparent_union__)) _A {
    struct B b;
    char* c;
    double d;
} A;

void F(A a) {}

...
int main() {
    struct B a;
    char* b;
    double c;
    F(a); /* OK */
    F(b); /* OK */
    F(c); /* OK */
    return 0;
}

Автор: nickless 2.12.2006, 15:45
Цитата(MAKCim @ 2.12.2006, 10:59)
Насколько я знаю, union-ов в Delphi тоже нет (или я не прав), 

Union-ы вещь довольно фундаментальная, конечно есть smile  называется variant record и позволяет делать еще и такие вещи:
Код

TEntryType = (TypeA, TypeB, TypeC);
TEntry = packed record
    s    : string;
    b,
    c    : word;
    case Entry: TEntry3Type of
        TypeA: (
            d : cardinal;
            reserved     : array[0..11] of byte;
        );
        TypeB: (
            e   : int64;
            f: cardinal;
        );
        TypeC: (
            g,
            h    : int64;
        );
end;


Цитата(MAKCim @ 2.12.2006, 10:59)
register данных тоже

Опиши подробнее что они делают 

Цитата(MAKCim @ 2.12.2006, 10:59)
 - атрибутов (типа, переменной, функции)

Код

// выравнивание
{$ALIGN 8}
record Bla
    ...
end;
// обратное выравнивание
packed record Blub
    ...
end;

__transparent_union__ - не знаю, вроде нет (дельфисты, поправте)
Всякие stdcall тоже есть, а еще можно включать/выключать оптимизацию, всякие варнинги и проверки, exceptions для IO операций итд. для отдельных функций/участков кода

Цитата(MAKCim @ 2.12.2006, 10:59)
 - offsetof-а (офигенная вещь для реализации списков)

Вроде нет

Цитата(MAKCim @ 2.12.2006, 10:59)
 - typeof-а

Для классов есть RTTI

Цитата(MAKCim @ 2.12.2006, 10:59)
 - именованную инициализацию полей структур с обнулением неопределенных полей (есть в C99)

Нет, но в delphi все переменные в стеке и так обнуляются компилятором.

Цитата(MAKCim @ 2.12.2006, 10:59)
 - диапозоны значений в статически определенных массивах и  индексированные значения

Нет

Цитата(MAKCim @ 2.12.2006, 10:59)
 - TLS механизм (данные, специфичные для потока) (есть в С99 под видом __thread)

TLS механизм есть и всегда включен, есть threadvar для декларирования поточных переменных

Цитата(MAKCim @ 2.12.2006, 10:59)
 - неконстантные инициализаторы в статически определенных массивах

Инициализаторов локальных переменных в delphi нет в принципе.

Цитата(MAKCim @ 2.12.2006, 10:59)
 - встроенный тип комплексных чисел (complex)

В VCL есть complex.pas, а еще в delphi есть такой тип как Variant, он может принимать любой тип, как встроенный, так и собственный.

А как в C++ насчет встроенного set типа?
Код

var MySet: set of 'a'..'z';
...
MySet := ['a','b','c'];
if 'a' in MySet then ... { do something } ;

Или оператора with?
Код

type
TDateRec = record
    Year: Integer;
    Month: (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec);
    Day: 1..31;
end;
...
Record1: TDateRec;
...
with Record1 do begin
    Year := 1904;
    Month := Jun;
    Day := 16;
end;


Насчет новых стандартов, в новых версиях delphi, 2005 и 2006 есть inline, перегрузка операторов для record-ов, for ... in и еще несколько полезных фич.

Автор: MAKCim 2.12.2006, 16:06
Цитата

Опиши подробнее что они делают 

по возможности располагаются в регистрах, а не в памяти
Цитата

А как в C++ насчет встроенного set типа?

встроенного нет
но хочу возразить
имхо, это неправильно, помещать такие вещи в язык
должны существовать библиотеки, реализующие вектора, множества и пр.
в С++ есть std :: set, std :: multiset
Цитата

Или оператора with?

нет
nickless,
я смотрю, Delphi еще не совсем потерян  smile 
Хорошо
в Delphi по определению нет областей видимости для данных в функциях, т. к все они размещаются в начале в стековом фрейме функции. Это раз. По сути нет автоматических объектов (имею в виду объектов классов), т. к все объекты классов размещаются в heap => нет автоматического вызова деструктора объекта (или есть?)  

Автор: nickless 2.12.2006, 16:23
Цитата(MAKCim @ 2.12.2006,  15:06)
по возможности располагаются в регистрах, а не в памяти

Такого нет

Цитата(MAKCim @ 2.12.2006,  15:06)
встроенного нет
но хочу возразить
имхо, это неправильно, помещать такие вещи в язык

Если моножество состоит из сложных типов то да, а если это (Jan, Feb...) или несколько целых чисел, то встроенный тип намного эффективнее, т.к. легко оптимизируется до нескольких машинных комманд.

Цитата(MAKCim @ 2.12.2006,  15:06)
я смотрю, Delphi еще не совсем потерян  smile 

А то  smile 

Цитата(MAKCim @ 2.12.2006,  15:06)
в Delphi по определению нет областей видимости для данных в функциях, т. к все они размещаются в начале в стековом фрейме функции.

В C++ они тоже все там находятся, это фича компилятора, но не вижу в этом ничего плохого.

Цитата(MAKCim @ 2.12.2006,  15:06)
По сути нет автоматических объектов (имею в виду объектов классов), т. к все объекты классов размещаются в heap => нет автоматического вызова деструктора объекта (или есть?)

Да, в delphi переменная типа класс по сути всегда указатель, но автоматизм можно реализовать например подсчетом ссылок (см. COM interfaces).

Вот еще одна фича: вложенные функции/продцедуры
Код

function Fun(i: integer)
    procedure Blah
    begin
        ...
    end;
begin
    ...
    Blah;
    .
end;


ЗЫ
Полезная тема, а то я уже потихоньку delphi забывать стал...

Автор: MAKCim 2.12.2006, 16:58
Цитата

Вот еще одна фича: вложенные функции/продцедуры

как расширение компилятора в GCC
nested functions тоже есть
Цитата

В C++ они тоже все там находятся, это фича компилятора, но не вижу в этом ничего плохого

плохо, что необходимо все переменные объявлять заранее
потому и говорю, что 
Цитата

все они размещаются в начале в стековом фрейме функции.

Автор: nickless 2.12.2006, 17:33
Цитата(MAKCim @ 2.12.2006,  15:58)
плохо, что необходимо все переменные объявлять заранее

Это немного неудобно, но не принципиально

Автор: Daevaorn 2.12.2006, 17:46
А как насчет оверхеда при принудительном обнулении переменных и членов классов?

Автор: Romikgy 2.12.2006, 18:23
Цитата(MAKCim @  2.12.2006,  15:58 Найти цитируемый пост)
плохо, что необходимо все переменные объявлять заранее

smile аналог чистого си без плюсов smile

Цитата(nickless @  2.12.2006,  15:23 Найти цитируемый пост)
Если моножество состоит из сложных типов то да, а если это (Jan, Feb...) или несколько целых чисел, то встроенный тип намного эффективнее, т.к. легко оптимизируется до нескольких машинных комманд.

не совсем аналог , но можно юзать enum  smile 

Цитата(Daevaorn @  2.12.2006,  16:46 Найти цитируемый пост)
А как насчет оверхеда при принудительном обнулении переменных и членов классов? 

А точнее ?

PS не один я защищаю дельфи ... smile респект дельфовцам smile
PSS так че респект С++ шникам smile которые корректны и последовательны в высказываниях smile

Автор: nickless 2.12.2006, 18:38
Цитата(Daevaorn @ 2.12.2006,  16:46)
А как насчет оверхеда при принудительном обнулении переменных и членов классов?

Оверхед не такой уж и большой, а объекты с кучи (вроде) не обнуляются.
ИМХО инициализировать нужно вообще всегда, лучше оверхед чем мусор в переменных.

Цитата(Romikgy @ 2.12.2006, 17:23)
не совсем аналог

Не совсем - это очень мягко сказано  smile 

Автор: MAKCim 2.12.2006, 18:39
Цитата

аналог чистого си без плюсов

?
Цитата

не совсем аналог , но можно юзать enum

enum несколько другое
Цитата

А точнее ?

зачем принудительное обнуление?
если переменная в стеке, т. е где то в функции, то скорее всего она используется и инициализируется (изменяется) явно. В противном случае (если не используется) обнуление - лишнее, поскольку она (переменная) не используется
Итого имеем одну "лишнюю" машинную команду. В любом случае, если переменную надо инициализировать, но каким то образом это забыли сделать, то 0 - это тоже ошибка
Код

; Delphi
...
sub ESP, 4
mov dword ptr [ESP], 0
...

Код

; C
...
sub ESP, 4
...



Автор: Romikgy 3.12.2006, 00:46
Цитата(nickless @  2.12.2006,  17:38 Найти цитируемый пост)
Не совсем - это очень мягко сказано


Цитата(MAKCim @  2.12.2006,  17:39 Найти цитируемый пост)
enum несколько другое

а я что сказал , что полный ? нет , но кое что и на них можно сделать
Цитата(MAKCim @  2.12.2006,  17:39 Найти цитируемый пост)
аналог чистого си без плюсов

?

в чистых сях , также все переменые надо сначало определить а потом юзать

Автор: MAKCim 3.12.2006, 10:52
Цитата

в чистых сях , также все переменые надо сначало определить а потом юзать 

чистые С тоже есть разные
c89 (c90, ansi), modifed c90, c99
это справедливо для ansi C
причем gcc выдает Warning
только при включении опции -pedantic

Автор: Mayk 4.12.2006, 11:48
Они все несовершенны.

Цитата(MAKCim @  3.12.2006,  14:52 Найти цитируемый пост)

чистые С тоже есть разные
c89 (c90, ansi), modifed c90, c99

Насчет чистых си и дельфи. В дельфи есть действительно удобная вещь типа "procedure foo(a,b,c,d,e:integer)".
В си ещё можно делать типа "int foo(a,b,c,d,e) int a,b,c,d,e; {hoora();}) но это а) не так удобно, так как надо писать имена переменных дважды.
б) в с++ отсутствует напрочь

Прадва это не спасает дельфи с его размашистыми "procedure"'ами, "begin"'ами. "end"'ами, "then"ами которые долго вводить и удалять.
Хотя даже procedure не так велико, как stuct Functor{Functor(Arg arg_) : arg(arg_){};  bool operator()(A a, B b)const{return arg(a,b)} (брр).

Кстати, в яве, например, с функторами несколько легче, так как можно сырцы прогнать через M4 и писать что-нибудь типа 
"JButton button = M4_BUTTON("OK", okClicked() )" который преобразуется в неудобночитаемое, но синтаксически верное
JButton button = new JButtonDerived("OK", new ActionListener(){ public void actionPerformed(ActionEvent event){ okClicked();};})
Эдакое мелкое подобие человеческой лямбды.

Бустовская λ кстати "for_each(v.begin(),v.end(),  _1 = rand()) на нормальную лямбду не тянет (угадайдте, сколько разных 
значений будет в v, при условии что он не пуст и суть контейнер int'ов).

Вообщем всё это мрачно.  smile 

ps. вроде не сильно повторяю предыдущие реплики


Автор: MAKCim 4.12.2006, 12:38
Цитата

Насчет чистых си и дельфи. В дельфи есть действительно удобная вещь типа "procedure foo(a,b,c,d,e:integer)".
В си ещё можно делать типа "int foo(a,b,c,d,e) int a,b,c,d,e; {hoora();}) но это а) не так удобно, так как надо писать имена переменных дважды.
б) в с++ отсутствует напрочь

я думаю вопросы удобства здесь не рассматриваются (рассматривается функционал)
кому то удобно одно, кому то другое
Цитата

Прадва это не спасает дельфи с его размашистыми "procedure"'ами, "begin"'ами. "end"'ами, "then"ами которые долго вводить и удалять.

то же самое, мне и тебе не удобно
Romikgy-ю, skyboy-ю - удобно

Автор: Romikgy 4.12.2006, 13:50
Цитата(MAKCim @  4.12.2006,  11:38 Найти цитируемый пост)
то же самое, мне и тебе не удобно
Romikgy-ю, skyboy-ю - удобно

 вкусах не спрят (с)

имхo для для этого есть автозаполнение  smile  и все заводится автоматом

PS кса а автозаполнения в сишных средах разработки, кроме визуала и билдера, вроде нет , да и в тем что кроме , не считая билдера, ибо в нем слизано с дельфей, оно карявое имхо

Автор: MAKCim 4.12.2006, 17:11
О, вспомнил, в Delphi нет такой полезной для системного программирования вещи как битовая структура
Код

struct selector {
    union {
        __u16 d_byte01;
       struct {
           /* доступ к отдельным битам `d_byte01' */
           __u32   d_bit01:   2;
           __u32   d_bit2:     1;
           __u32   d_bit315: 13;
       };
    };
};

 smile 

Автор: Romikgy 4.12.2006, 17:33
Цитата(MAKCim @  4.12.2006,  16:11 Найти цитируемый пост)
О, вспомнил, в Delphi нет такой полезной для системного программирования вещи как битовая структура

нет

Автор: skyboy 4.12.2006, 17:42
MAKCim, так мы говорим про удобство или не говорим?  smile 
Есть же битовые операции: сдвиг и OR/AND, при помощи которых можно осуществлять доступ к любому биту. Уверен, что при байте, как минимальной цели для адресации, работа с теми же битовыми структурами приводится к битовым операциям. Только неявно. Так тогда мы говорим только об удовтсве пользования. Даже если бы биты можно было бы передавать параметрами в функцию, чего нет, все равно работа шла бы с байтом.
Цитата(MAKCim @  4.12.2006,  11:38 Найти цитируемый пост)
я думаю вопросы удобства здесь не рассматриваются (рассматривается функционал)

 smile 

Автор: MAKCim 4.12.2006, 17:49
skyboy, 
понимаешь в чем дело
битовая структура - это часть языка, аналога которой в Delphi нет. Т. е рассматривается именно функционал
а не всякие begin, end и пр., аналог которым в С - {}

Добавлено @ 17:50 
Цитата

Уверен, что при байте, как минимальной цели для адресации, работа с теми же битовыми структурами приводится к битовым операциям. Только неявно

правильно уверен

Автор: VectorMan 4.12.2006, 17:56
Вложу свою маленькую лепту.

Дельфийский компилятор работает на порядок быстрее большинства популярных C++ компиляторов, хотя это отчасти сглаживается, если используются прекомпилированные заголовки  smile 

Автор: MAKCim 4.12.2006, 18:02
Цитата

Дельфийский компилятор работает на порядок быстрее большинства популярных C++ компиляторов

тесты проводили?

Автор: Alexeis 4.12.2006, 18:02
Цитата(MAKCim @  4.12.2006,  17:11 Найти цитируемый пост)
О, вспомнил, в Delphi нет такой полезной для системного программирования вещи как битовая структура

Ну это не совсем так. Непосредственно к битам нет, но к байтам можно.
Код

type 
  Record
    a : integer;
    case byte of
      0 : mas1      : array[3..15] of byte;
      1 : min, max : Cardinal;
      2 : s             : String[8];
      3 : mas2      : array['k'..'o'] of Word;
    end;
    data : Variant;
  end;

Все что внутри case - расположено в одом блоке памяти и может интерпретироваться как любой из перечисленых типов. Т.е. записать как строку а прочитать как славо типа DWORD или WORD.
На сенгдняшний момент работа с битами является слишком медленной, а потому все оптимизируется под двойные слова. Но доступ к битам легко можно осуществить и в делфи используя битовые логические операции сдвига умножения сложения и т.д. Если вы думете что процессор способен работать с битами, то глубоко ошибаетесь, в С++ это просто более удобная запись битовых операций и не более. Ничего принципиального оно не вносит. 

Автор: VectorMan 4.12.2006, 18:07
Цитата(MAKCim @ 4.12.2006,  18:02)
тесты проводили?

Не знаю, может и проводили, просто в Delphi нет препроцессора,

угадай сколько мегабайт препроцессор подсовывает компилятору при обработке строчки
Код

#include <windows.h>

Автор: skyboy 4.12.2006, 18:08
Цитата(MAKCim @  4.12.2006,  16:49 Найти цитируемый пост)
Т. е рассматривается именно функционал
а не всякие begin, end и пр., аналог которым в С - {}

неужели (не)использование структур с битовыми полями(так же, как и переопределяемых операторов) как-либо изменяет функциональность программы?

Автор: Alexeis 4.12.2006, 18:10
Цитата(MAKCim @  4.12.2006,  18:02 Найти цитируемый пост)
тесты проводили? 

Гыыыы. даже спорить не хочу, быстрее и намного. Язык просто строже и ему не приходится много думать и искать по закоулкам все объявления функций и проч. Быстрее однозначно это призаный факт, с которым не поспоришь.

Добавлено @ 18:25 
Но мы опять откланились. Скорость компиляции это не принципиально, важно другое, то что програмированние на делфи отличается от С++ и я бы сказал, что при этом писать на нем довольно удобно. Синтаксис языка более дружественный, но подразумевает немного другую логику. Короче лучше всего не переходить с Делфи на С++, а писать только на делфи  smile . Можно, конечно, сразу на С++, но это не так интересно smile 

Автор: skyboy 4.12.2006, 18:27
Цитата(VectorMan @  4.12.2006,  16:56 Найти цитируемый пост)
Дельфийский компилятор работает на порядок быстрее большинства популярных C++ компиляторов

одно огорчает - скорость работы готовой программы ценится несоизмеримо выше скорости компиляции. Не знаю, насколько часто должен изменяться проект, чтоб стало наоборот smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)