|
Модераторы: LSD |
|
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Не всегда это твой код и ты разбираешь что в нем и как. Тебе могут передать уже разработанные модули или даже функции/классы в логику работы которых даже не вникаешь. Свой код можно делать сколь угодно безопасным, а вот с чужим сложнее, особенно если исключение пролетают 5-6 функций, пересекают границу dll и вылазят в экзешнике. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
volatile |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: нет Всего: 85 |
Alexeis, хм... Так у вас чужой код... В принципе если не охота лезть в код, можно просто переопределить assert, чтоб он не вырождался в релизе. (или даже чтоб кидал исключения, но это по желанию.) И будет у вас проверка, которую вы хотите, не изменяя практически чужого кода. assert - это вообще не средство языка, это обычный макрос, который можно переопределить. В принципе это конечно "хак", но раз не хотите разбирацца с чужим кодом, можно на него пойти, хотя бы на момент отладки. |
|||
|
||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Ну я на всех опасных местах вызываю такую функцию
С сохранением в лог текста ошибки. Постоянно маюсь с проверкой подсчета ссылок интерфейсов, пишу отдельные классы для хранения метаинформации о классах, потом на основе нее реализую рефлексию и делаю еще много всякой другой работы которые следует поручать компилятору языка. Спрашивается, а нафига мне С++, когда С# сам вставляет проверки в нужных местах и сам определяет время жизни объектов интерфейсов и никогда не бросит исключение за границу своего модуля и содержит атрибуты для хранения метаинформации и имеет встроенные средства для сериализации и рефлексии. Нафига мне С++ для высокоуровневого кода? Быстрые части кода завязанные на железе я все равно выношу в отдельные плагины, а для кода не критичного ко времени зачем мне С++ ? Какой я имею бонус? Быстродействие там где оно не требуется? -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
k0rvin |
|
||||
Опытный Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
smart_ptr? Нет, не слышал.
Зачем в плюсах рефлексия, если там есть шаблоны? -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||
|
|||||
serger |
|
|||
Опытный Профиль Группа: Участник Сообщений: 518 Регистрация: 19.6.2007 Где: Ижевск Репутация: 0 Всего: 5 |
k0rvin, а они разве взаимозаменяемы? -------------------- упс! |
|||
|
||||
k0rvin |
|
|||
Опытный Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
Не на стопроцентов, но позволяют решать многие задачи, которые в иных языках решаются рефлексией. -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
Beltar |
|
|||
Опытный Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
Вопросец такой, а какие синтаксические преимущества имеет C++ перед Delphi 2009?
Ну я понимаю, что раньше в плюсах шаблоны были, перегрузка операторов, успешно позволявшая раз в 100 лет написать либу по обработке комплексных чисел, или матриц и немного сократить код, присваивания вида +=, которые я бы просто запретил к использованию, т. к. Любая синтаксическая конструкция, которая при пропуске одного элемента может превратится в другую синтаксически правильную конструкцию, подлежит немедленному исключению из языка a+=b => a=b и ошибку вы будете искать долго. Намного дольше, чем сэкономили на печати символов. Про костыли вида if (5=a) и говорить не хочется. Скобки есть фигурные, которые якобы быстрее набирать (про нажатие Shift не забываем). Про отсутствие ряда ключевых слов вроде function, или регистрозависимость не говорю, это скорее дело вкуса. Но сейчас шаблоны, перегрузка операторов для структур есть и в Delphi. Есть гибрид паскалевского Exit с сишным return, позволяющий сворачивать конструкции вида
до if Something then Exit(ResultCode); Даже адресная арифметика добавлена, но добавлена так, что задействуется только по требованию. Все это гармонично вписалось в язык, при этом мест, где можно получить трудно локализуемый баг меньше. Нет, я понимаю, что все это надо было еще в D7 вводить, но лучше поздно, чем никогда. Сейчас я не вижу никаких оснований серьезно изучать плюсы. Прочитать книжку, чтобы понимать примеры по WinAPI и хватит. Для работы же Delphi, как единственный вменяемый язык для генерации нативного кода (нет, а у какого еще языка под Win32\64 есть нормальная IDE и документация?), и C#, как то, что в ближайшие 10 лет точно не потонет. Си и асм по необходимости. Вопросы скорости кода и оптимизации под очередные шедевры Intel не затрагиваю, все это замечательно, но сколько программистов работает в серьезных конторах и занимается разработкой игр, или чем-то еще, где оптимизация под процы критична? Много ли программистов пишет драйверы? Нет, в основном клепается прикладное ПО. Игру же в одиночку можно склепать в Game Maker (который, о ужас, написан на Delphi) и все равно не иметь проблем с производительностью даже на процах 10-летней давности. Это сообщение отредактировал(а) Beltar - 5.4.2013, 16:10 -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. (с) я, хотя может и нет Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
serger |
|
|||
Опытный Профиль Группа: Участник Сообщений: 518 Регистрация: 19.6.2007 Где: Ижевск Репутация: 0 Всего: 5 |
Beltar, мне не нравится не язык, а идеология. Пишите на fp. А то win, win, win... %) не серьёзно!
Ну а по языку только субъективные претензии: выделенные var, например. Длинные ключевые слова. -------------------- упс! |
|||
|
||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Ну так-то скорость написания программ намного ниже чем скорость печати, так что ничуть не мешает. Выделенные var это как раз хороший стиль позволяющий содержать переменные в относительно порядке. Зря они сделали послабление. В языке С ведь тоже правило определения в начале блока. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Akella |
|
||||
Творец Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 1 Всего: 329 |
Почему именно 2009? Добавлено через 2 минуты и 53 секунды
О каком послаблении речь? |
||||
|
|||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
В языке С переменные можно было объявлять только вначале блока. Получалась примерно такая же схема как в паскале, только в паскале вложенные блоки заменялись вложенными подпрограммами. В С++ сделали послабление по отношению к языку С разрешив определять переменные где угодно. Собственно я всегда говорил, что язык С и С++ 2е большие разницы. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Beltar |
|
||||
Опытный Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
Потому что все эти нововведения появились именно в ней. С тех пор серьезных изменений синтаксиса не было.
В Delphi Prism и в учебном Pascal ABC.NET можно написать что-то вроде begin var s:String:='Эта строка объявлена прямо в коде'; end; -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. (с) я, хотя может и нет Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
||||
|
|||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Ну Delphi Prism это отдельная песня. Сделали почти что полный клон C# . Зачем делать 2 языка, которые ну совсем уж похожи. Если Delphi.NET можно было рассматривать как основу для порта старых программ написанных на делфи на платформу .NET, то Delphi Prism отказались от обратной совместимости и сделали нечто ни к селу ни к городу.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Фантом |
|
|||
Вы это прекратите! Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
||||
|
||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
+1 Мне нужно построить абстрактную фабрику, скомпоновать проект из частей описанных в XML файлах или вызывать функции из плагинов, названия которых я не знаю на этапе компиляции и не знаю типы и количество параметров. Чем мне тут помогут шаблоны? Шаблоны обеспечивают статическое связывание. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Правила ведения Религиозных войн | |
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Религиозные войны | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |