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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> А пишут ли ещё на Си++? 
:(
    Опции темы
Alexeis
Дата 23.2.2013, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Цитата(volatile @  14.2.2013,  00:55 Найти цитируемый пост)
Alexeis, исключения надо кидать в вашем случае, а не ассертами обильно проверять.
Впрочем, телепатирую. Не видя код вряд-ли можно что-то конкретное подсказать.

  Не всегда это твой код и ты разбираешь что в нем и как. Тебе могут передать уже разработанные модули или даже функции/классы в логику работы которых даже не вникаешь. Свой код можно делать сколь угодно безопасным, а вот с чужим сложнее, особенно если исключение пролетают 5-6 функций, пересекают границу dll и вылазят в экзешнике. 


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

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

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


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: нет
Всего: 85



Цитата(Alexeis @  23.2.2013,  15:10 Найти цитируемый пост)
Не всегда это твой код и ты разбираешь что в нем и как. Тебе могут передать уже разработанные модули или даже функции/классы в логику работы которых даже не вникаешь. 

Alexeis, хм... Так у вас чужой код...
В принципе если не охота лезть в код, можно просто переопределить assert, чтоб он не вырождался в релизе. (или даже чтоб кидал исключения, но это по желанию.) И будет у вас проверка, которую вы хотите, не изменяя практически чужого кода. assert - это вообще не средство языка, это обычный макрос, который можно переопределить.
В принципе это конечно "хак", но раз не хотите разбирацца с чужим кодом, можно на него пойти, хотя бы на момент отладки.

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


Амеба
Group Icon


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

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



Ну я на всех опасных местах вызываю такую функцию
Код

inline void assert_wstr(bool CondFalse, LPCWSTR err_text)
{
    if (!CondFalse)
        throw err_text;
}

С сохранением в лог текста ошибки. Постоянно маюсь с проверкой подсчета ссылок интерфейсов, пишу отдельные классы для хранения метаинформации о классах, потом на основе нее реализую рефлексию и делаю еще много всякой другой работы которые следует поручать компилятору языка. Спрашивается, а нафига мне С++, когда С# сам вставляет проверки в нужных местах и сам определяет время жизни объектов интерфейсов и никогда не бросит исключение за границу своего модуля и содержит атрибуты для хранения метаинформации и имеет встроенные средства для сериализации и рефлексии. 
  Нафига мне С++ для высокоуровневого кода? Быстрые части кода завязанные на железе я все равно выношу в отдельные плагины, а для кода не критичного ко времени зачем мне С++ ? Какой я имею бонус? Быстродействие там где оно не требуется? 


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

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

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

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



Цитата(Alexeis @ 26.2.2013,  09:39)
Постоянно маюсь с проверкой подсчета ссылок интерфейсов

smart_ptr? Нет, не слышал.

Цитата(Alexeis @ 26.2.2013,  09:39)
пишу отдельные классы для хранения метаинформации о классах, потом на основе нее реализую рефлексию и делаю еще много всякой другой работы которые следует поручать компилятору языка.

Зачем в плюсах рефлексия, если там есть шаблоны?


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
serger
Дата 26.2.2013, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(k0rvin @  26.2.2013,  12:38 Найти цитируемый пост)
Зачем в плюсах рефлексия, если там есть шаблоны?


k0rvin, а они разве взаимозаменяемы?


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
k0rvin
Дата 27.2.2013, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

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



Цитата(serger @ 26.2.2013,  12:02)
k0rvin, а они разве взаимозаменяемы?

Не на стопроцентов, но позволяют решать многие задачи, которые в иных языках решаются рефлексией.


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Beltar
Дата 5.4.2013, 13:56 (ссылка)  | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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
  begin
  Result:=ResultCode;
  Exit;
  end;


до 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++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
serger
Дата 5.4.2013, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Beltar, мне не нравится не язык, а идеология. Пишите на fp. А то win, win, win... %) не серьёзно!
Ну а по языку только субъективные претензии: выделенные var, например. Длинные ключевые слова.


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
Alexeis
Дата 5.4.2013, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Цитата(serger @  5.4.2013,  20:31 Найти цитируемый пост)
Ну а по языку только субъективные претензии: выделенные var, например. Длинные ключевые слова. 

  Ну так-то скорость написания программ намного ниже чем скорость печати, так что ничуть не мешает. Выделенные var это как раз хороший стиль позволяющий содержать переменные в относительно порядке. Зря они сделали послабление. В языке С ведь тоже правило определения в начале блока.


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

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

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


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 1
Всего: 329



Цитата(Beltar @  5.4.2013,  13:56 Найти цитируемый пост)
Вопросец такой, а какие синтаксические преимущества имеет C++ перед Delphi 2009? 


Почему именно 2009?

Добавлено через 2 минуты и 53 секунды
Цитата(Alexeis @  5.4.2013,  23:03 Найти цитируемый пост)
 Выделенные var это как раз хороший стиль позволяющий содержать переменные в относительно порядке. Зря они сделали послабление


О каком послаблении речь?
PM MAIL   Вверх
Alexeis
Дата 6.4.2013, 12:11 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Цитата(Akella @  6.4.2013,  10:19 Найти цитируемый пост)
О каком послаблении речь? 

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


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

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

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 2
Всего: 7



Цитата

Почему именно 2009?


Потому что все эти нововведения появились именно в ней. С тех пор серьезных изменений синтаксиса не было.

Цитата

О каком послаблении речь?


В Delphi Prism и в учебном Pascal ABC.NET можно написать что-то вроде

begin
var s:String:='Эта строка объявлена прямо в коде';
end;


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Alexeis
Дата 6.4.2013, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



  Ну Delphi Prism это отдельная песня. Сделали почти что полный клон C# . Зачем делать 2 языка, которые ну совсем уж похожи. Если Delphi.NET можно было рассматривать как основу для порта старых программ написанных на делфи на платформу .NET, то Delphi Prism отказались от обратной совместимости и сделали нечто ни к селу ни к городу. 


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

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

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


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: нет
Всего: 49



Цитата(Alexeis @  6.4.2013,  00:03 Найти цитируемый пост)
Зря они сделали послабление. В языке С ведь тоже правило определения в начале блока.

Было. В C99 этого правила уже нет.
PM   Вверх
Alexeis
Дата 6.4.2013, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Цитата(serger @  26.2.2013,  13:02 Найти цитируемый пост)
k0rvin, а они разве взаимозаменяемы? 

+1

Мне нужно построить абстрактную фабрику, скомпоновать проект из частей описанных в XML файлах или вызывать функции из плагинов, названия которых я не знаю на этапе компиляции и не знаю типы и количество параметров. Чем мне тут помогут шаблоны? Шаблоны обеспечивают статическое связывание. 


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

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

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Страницы: (6) Все « Первая ... 2 3 [4] 5 6 
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

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

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


 




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


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

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