Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi >> C++, Переход 
:(
    Опции темы
SergeCpp
Дата 22.11.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 3
Всего: 124



Цитата(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 (где дублирование?)

Это сообщение отредактировал(а) SergeCpp - 22.11.2006, 14:35
PM MAIL WWW ICQ   Вверх
Romikgy
Дата 22.11.2006, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



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

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


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
SergeCpp
Дата 22.11.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 3
Всего: 124



Template metaprogramming

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.
Blitz++ examples, also look at FFT implementation

etc.


Это сообщение отредактировал(а) SergeCpp - 22.11.2006, 16:02
PM MAIL WWW ICQ   Вверх
Romikgy
Дата 22.11.2006, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(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 кроме как сложновычисляемые постояные не заменяют, имхо , тогда проще вычислить все постояные и вставить в один массив, даже время компиляции сократится!


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
SergeCpp
Дата 22.11.2006, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 3
Всего: 124



Цитата(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

Boost.MPL
Цитата
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.

Boost.Lambda
Цитата
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.



Это сообщение отредактировал(а) SergeCpp - 22.11.2006, 16:35
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 22.11.2006, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(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-коде уже только данные)


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

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

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


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
SergeCpp
Дата 22.11.2006, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 3
Всего: 124



Цитата(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 конечно же есть логические области. Но вот как процессор поймёт что это область, без физического указания?..

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


Это сообщение отредактировал(а) SergeCpp - 22.11.2006, 16:56
PM MAIL WWW ICQ   Вверх
Romikgy
Дата 22.11.2006, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



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

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

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




--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Alexeis
Дата 22.11.2006, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



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

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

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

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

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

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


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
SergeCpp
Дата 22.11.2006, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 3
Всего: 124



Цитата(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]).


Это сообщение отредактировал(а) SergeCpp - 22.11.2006, 17:36
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 22.11.2006, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



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

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

Это сообщение отредактировал(а) alexeis1 - 22.11.2006, 17:48


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
SergeCpp
Дата 22.11.2006, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 3
Всего: 124



PM MAIL WWW ICQ   Вверх
Artemios
Дата 23.11.2006, 04:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 10
Всего: 50



Цитата(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

Это сообщение отредактировал(а) Artemios - 23.11.2006, 04:29


--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
Romikgy
Дата 23.11.2006, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



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

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

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


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Daevaorn
Дата 23.11.2006, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 5
Всего: 70



Цитата(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 Найти цитируемый пост)
пример можно?

Примеры тебе предоставляет рынок ПО.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.1358 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.