![]() |
Модераторы: LSD Страницы: (27) « Первая ... 17 18 [19] 20 21 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]() ![]() ![]() |
|
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
||||
|
||||
MAKCim |
|
||||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
следи за логикой
[разве я тут начал цепляться к объему? пример привел просто для сравнения]
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||||
|
|||||||||
MAKCim |
|
||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
чтобы не было непоняток, я признаю, что singleton на delphi реализовать можно, но не слишком приятно это делать
![]() Этот вопрос закрыт Пойдем дальше Насколько я знаю, union-ов в Delphi тоже нет (или я не прав), register данных тоже Прйдем по компиляторам (делфисты тоже могут использовать разные компиляторы, если поможет ![]() Покажите мне реализацию на Pascal/ObjectPascal - атрибутов (типа, переменной, функции) - offsetof-а (офигенная вещь для реализации списков) - typeof-а - именованную инициализацию полей структур с обнулением неопределенных полей (есть в C99)
- диапозоны значений в статически определенных массивах и индексированные значения
- TLS механизм (данные, специфичные для потока) (есть в С99 под видом __thread) - неконстантные инициализаторы в статически определенных массивах
- встроенный тип комплексных чисел (complex) -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||
|
|||||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
с жесткой типизацией - и union'ы? ![]() ![]() ![]() [offtopic] мы обсуждаем недостатки, как отсутствие необходимых нам механизмов или некое неудобство в реализации и использовании их? [/offtopic]
Плиз, описывай функциональность: название мало что скажет, если нет полного аналога, а описать функциональный аналог помешает непонимание того, что же требуется(как в случае со "статическими полями класса" - полного аналога нет, но реализовать синглтон возможно). Кстати, странно для языка, в котором предусмотрена перегрузка операторов. Экземпляры комплексного типа - это ведь структура на "обычных" типах, да? В Делфи такого нет. Реализовать несложно, правда, для оперирования надо будет пользовать функциями/процедурами - перегрузки операторов ведь нет. Добавлено @ 12:13 ну, раз нет шаблонов и есть строгая типизация - на кой ляд определять тип? ![]() |
|||
|
||||
MAKCim |
|
||||||||||||||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
это язык С, стандарт С99 (это не структура, а тип, такой же как int, long, ... , что, естественно влияет (в лучшую сторону) на скорость выполнения)
да, а что? очень удобно могу привести пример, где оно удобно в IA32 Protection Mode есть такая вещь, как дескриптор Причем дескрипторы бывают разных типов и оттого меняется назначение отдельных байтов (всего их 8) и групп байтов
теперь можно получать доступ как к словам, так и к отдельным байтам слов
и то, и то
OK offsetof
атрибуты к примеру
Это сообщение отредактировал(а) MAKCim - 2.12.2006, 12:56 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||||||||||||||
|
|||||||||||||||||||
nickless |
|
||||||||||||||||||||||||||||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 2 Всего: 181 |
Union-ы вещь довольно фундаментальная, конечно есть ![]()
Опиши подробнее что они делают
__transparent_union__ - не знаю, вроде нет (дельфисты, поправте) Всякие stdcall тоже есть, а еще можно включать/выключать оптимизацию, всякие варнинги и проверки, exceptions для IO операций итд. для отдельных функций/участков кода
Вроде нет
Для классов есть RTTI
Нет, но в delphi все переменные в стеке и так обнуляются компилятором.
Нет
TLS механизм есть и всегда включен, есть threadvar для декларирования поточных переменных
Инициализаторов локальных переменных в delphi нет в принципе.
В VCL есть complex.pas, а еще в delphi есть такой тип как Variant, он может принимать любой тип, как встроенный, так и собственный. А как в C++ насчет встроенного set типа?
Или оператора with?
Насчет новых стандартов, в новых версиях delphi, 2005 и 2006 есть inline, перегрузка операторов для record-ов, for ... in и еще несколько полезных фич. Это сообщение отредактировал(а) nickless - 2.12.2006, 15:50 -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||
MAKCim |
|
||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
по возможности располагаются в регистрах, а не в памяти
встроенного нет но хочу возразить имхо, это неправильно, помещать такие вещи в язык должны существовать библиотеки, реализующие вектора, множества и пр. в С++ есть std :: set, std :: multiset
нет nickless, я смотрю, Delphi еще не совсем потерян ![]() Хорошо в Delphi по определению нет областей видимости для данных в функциях, т. к все они размещаются в начале в стековом фрейме функции. Это раз. По сути нет автоматических объектов (имею в виду объектов классов), т. к все объекты классов размещаются в heap => нет автоматического вызова деструктора объекта (или есть?) -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||
|
|||||||
nickless |
|
||||||||||||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 2 Всего: 181 |
Такого нет
Если моножество состоит из сложных типов то да, а если это (Jan, Feb...) или несколько целых чисел, то встроенный тип намного эффективнее, т.к. легко оптимизируется до нескольких машинных комманд.
А то ![]()
В C++ они тоже все там находятся, это фича компилятора, но не вижу в этом ничего плохого.
Да, в delphi переменная типа класс по сути всегда указатель, но автоматизм можно реализовать например подсчетом ссылок (см. COM interfaces). Вот еще одна фича: вложенные функции/продцедуры
ЗЫ Полезная тема, а то я уже потихоньку delphi забывать стал... -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
||||||||||||
|
|||||||||||||
MAKCim |
|
||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
как расширение компилятора в GCC nested functions тоже есть
плохо, что необходимо все переменные объявлять заранее потому и говорю, что
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||
|
|||||||
nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 2 Всего: 181 |
Это немного неудобно, но не принципиально -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 5 Всего: 70 |
А как насчет оверхеда при принудительном обнулении переменных и членов классов?
|
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
![]() ![]() не совсем аналог , но можно юзать enum ![]()
А точнее ? PS не один я защищаю дельфи ... ![]() ![]() PSS так че респект С++ шникам ![]() ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
nickless |
|
||||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 2 Всего: 181 |
Оверхед не такой уж и большой, а объекты с кучи (вроде) не обнуляются. ИМХО инициализировать нужно вообще всегда, лучше оверхед чем мусор в переменных.
Не совсем - это очень мягко сказано ![]() -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
||||
|
|||||
MAKCim |
|
||||||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
?
enum несколько другое
зачем принудительное обнуление? если переменная в стеке, т. е где то в функции, то скорее всего она используется и инициализируется (изменяется) явно. В противном случае (если не используется) обнуление - лишнее, поскольку она (переменная) не используется Итого имеем одну "лишнюю" машинную команду. В любом случае, если переменную надо инициализировать, но каким то образом это забыли сделать, то 0 - это тоже ошибка
Это сообщение отредактировал(а) MAKCim - 2.12.2006, 18:41 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||||||
|
|||||||||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
а я что сказал , что полный ? нет , но кое что и на них можно сделать в чистых сях , также все переменые надо сначало определить а потом юзать -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила ведения Религиозных войн | |
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Религиозные войны | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |