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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi - приемущества и недостатки, принимаются различные высказывания 
:(
    Опции темы
nerezus
Дата 17.1.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

Репутация: 13
Всего: 43



Цитата

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

Romikgy, ну так я нормальный довод первый раз вижу )


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Romikgy
Дата 17.1.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(nerezus @  17.1.2007,  11:57 Найти цитируемый пост)
ну так я нормальный довод первый раз вижу

тогда перечитай весь топик с сааааамого начала!  smile 


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

PM   Вверх
Beltar
Дата 20.1.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Просмотрел  4 страницы всякого бреда с приплетением жабы, каких-то предложений о выносе из красной книге Питона, хотя 99% настольных приложений написано в VS или Delphi\Builder, вспомнил о старых добрых:
try
except,
finally,
raise
Причем в плюсах аналога finally вроде нет и ушел Дельфе радоваться.


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


Эксперт
****


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

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



Цитата(Beltar @  20.1.2007,  13:27 Найти цитируемый пост)
Причем в плюсах аналога finally вроде нет

нет. Но есть автоматические деструкторы, которые практически покрывают этот недостаток smile 
PM MAIL WWW   Вверх
skyboy
Дата 20.1.2007, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


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

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



Цитата(Daevaorn @  20.1.2007,  11:36 Найти цитируемый пост)
Но есть автоматические деструкторы

ээээ... это что имеется в виду? вызов деструктора при ошибке во время конструирования? 
PM MAIL   Вверх
Romikgy
Дата 20.1.2007, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Daevaorn @  20.1.2007,  11:36 Найти цитируемый пост)
Но есть автоматические деструкторы, которые практически покрывают этот недостаток 

Какое имеет отношение работа с исключениями к работе конструкторов/диструкторов классов ?


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

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


Эксперт
****


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

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



Цитата(skyboy @  20.1.2007,  14:19 Найти цитируемый пост)
 вызов деструктора при ошибке во время конструирования?  

вызов деструктора при раскрутки стека.
Цитата(Romikgy @  20.1.2007,  15:30 Найти цитируемый пост)
Какое имеет отношение работа с исключениями к работе конструкторов/диструкторов классов ? 

самое прямое. Учите матчасть. При идиоме RAII автоматические деструкторы выполняют роль "чистильщиков мусора" вроде finally блоков в некоторых языках.

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


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


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

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



Цитата(Daevaorn @  20.1.2007,  13:49 Найти цитируемый пост)
Учите матчасть

нет слов smile

Цитата(Daevaorn @  20.1.2007,  13:49 Найти цитируемый пост)
RAII 

Resource Acquisition Is Initialization - Wikipedia, the free ...
а если в блоке try finally я не буду использовать классы вообще?


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

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


неОпытный
****


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

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



Цитата(Daevaorn @  20.1.2007,  13:49 Найти цитируемый пост)
вызов деструктора при раскрутки стека.

т.е. при покидании области видимости? интересно smile
Цитата(Daevaorn @  20.1.2007,  13:49 Найти цитируемый пост)
При идиоме RAII автоматические деструкторы выполняют роль "чистильщиков мусора" вроде finally блоков в некоторых языках.

При "чисто ООП" программе(ну, где нет функций/переменных, а сплошные классы/объекты) - это действительно синонимы(вызов деструкторов при покидании области видимости и try ... finaly), правда, опасный блок не всегда последним идет в функции и можно ещё долго ждать, скажем, освобождения ресурса от блокировки или возврата чего-нить в первоначальное состояние. 
Когда же у нас есть и обычные переменные/функции, то автоматические деструкторы уже не помогут, скажем, разлочить файл. 
Я верно понял идею?
PM MAIL   Вверх
Daevaorn
Дата 20.1.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(skyboy @  20.1.2007,  17:09 Найти цитируемый пост)
правда, опасный блок не всегда последним идет в функции 

да. но это решается маленькой корректировкой дизайна.
Цитата(skyboy @  20.1.2007,  17:09 Найти цитируемый пост)
Когда же у нас есть и обычные переменные/функции, то автоматические деструкторы уже не помогут, скажем, разлочить файл. 
Я верно понял идею? 

не очень понимаю что такое "обычные переменные/функции". Но если рассматривать закрытие файла, то можно воспользоваться каким-либо прокси-классом, например boost::smart_handle. Поэтому и эта проблема в принципе решаема. За-то, хоть такие меры могут быть и более трудоёмки, чем просто "тупое" освобождение, но они благотворно сказываются на дизайне и вообще безопасности исключений в целом.
Конечно можно найти случай, когда ничего не поможет, но это редко и всегда решаемо какими-то другими способами.

Добавлено @ 16:23 
Цитата(Romikgy @  20.1.2007,  16:35 Найти цитируемый пост)
нет слов 

соболезную
Цитата(Romikgy @  20.1.2007,  16:35 Найти цитируемый пост)
Цитата(Daevaorn @  20.1.2007,  13:49 )
RAII 
Resource Acquisition Is Initialization - Wikipedia, the free ...

вот люди иногда спрашивают, в чем смысл таких вот споров. Да вот же он - человек посмотрел википедию и открыл для себя что же такое RAII. Это же великолепно!smile
PM MAIL WWW   Вверх
Romikgy
Дата 20.1.2007, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Daevaorn @  20.1.2007,  15:20 Найти цитируемый пост)
соболезную

аналогично , только в большей степени smile
Цитата(Daevaorn @  20.1.2007,  15:20 Найти цитируемый пост)
Да вот же он - человек посмотрел википедию и открыл для себя что же такое RAII

имхо эту ссылку должен был дать ты , а не я!
А во вторых , можно сделать так
Цитата

This RAII class can be used as follows :

bool functionA(bool throws)
{
   LogFile log("Output log of functionA");

   log.write("fun Step5 succeeded");

   // The function can throw exceptions and return 
   // without worrying about closing the log.
   if(throws)
       throw FunctionAFailure(); // or return false

   log.write("It didn't throw.");

   return true;
}


а можно так
Цитата

Without using RAII, each function using an output log would have to manage the file explicitly. For example, an equivalent implementation of functionA without using RAII is this:

bool functionB(bool throws)
{
   FILE_HANDLE log;
   try {
       log = OpenFile("Output log of functionB");

       // EXTRA CODE: explicit error checking:
       if( log == INVALID_HANDLE )
           throw FileFailedToOpen();

       WriteFile( log, "fun Step5 succeeded" );

       // if the function needs to check for an error and abort accordingly:
       if( error )
       {
          // EXTRA CODE: release the acquired resources
          CloseFile(log);
          throw WriteFailure();
       }
       if (throws) throw FunctionBException();
              
       // EXTRA CODE: the resource needs to be closed explicitly
       CloseFile(log); // explicitly release the resource

       return true;
   }
   catch (...)
   {
       // An exception was thrown during the execution of the function

       // Time to cleanup the resources
       CloseFile(log);
       throw; // rethrow.
   }
}


и лично я в этом RAII смысла не вижу большого (лично я!)
так что знать такие тонкости , которые юзаются очень редко (при том что их можно вообще не использовать , а реализовать все по другому)
имхо это не рационально....
Цитата(Daevaorn @  20.1.2007,  15:20 Найти цитируемый пост)
Это же великолепно!

Возможно 


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

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


Эксперт
****


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

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



Цитата(Romikgy @  20.1.2007,  18:41 Найти цитируемый пост)
и лично я в этом RAII смысла не вижу большого (лично я!)

т.е. для тебя второй код лучше? Ну что же, у всех свои пристрастия
Цитата(Romikgy @  20.1.2007,  18:41 Найти цитируемый пост)
имхо эту ссылку должен был дать ты , а не я!

Я подразумеваю, что люди, участвующие в обсуждении данной темы, достаточно квалифицированны, чтобы знать основные приемы программирования в языках, о которых они ведут речь.
Цитата(Romikgy @  20.1.2007,  18:41 Найти цитируемый пост)
так что знать такие тонкости , которые юзаются очень редко (при том что их можно вообще не использовать , а реализовать все по другому)
имхо это не рационально....

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

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


 
**


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

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



How to catch exceptions in Visual C++

Код
#include "stdafx.h"

#using <mscorlib.dll>
#include <tchar.h>

using namespace System;

void _tmain(void)
{
    try
    {
        Console::WriteLine("We're going to divide 10 by 0 and see what happens...");
        Console::WriteLine();
        int i = 10;
        int j = 0;
        int k = i/j; //Error on this line.
    }
    catch(...)
    {
        Console::WriteLine("An error occurred.");
    }
    __finally //This section is performed regardless of the above processing.
    {
        Console::WriteLine();
        Console::WriteLine("This statement is always printed");
    }
}


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


Эксперт
****


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

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



Цитата(SergeCpp @  20.1.2007,  19:05 Найти цитируемый пост)
How to catch exceptions in Visual C++

хорошо. но не переносимо, увыsmile
PM MAIL WWW   Вверх
Romikgy
Дата 20.1.2007, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Daevaorn @  20.1.2007,  16:50 Найти цитируемый пост)
достаточно квалифицированны

это вопрос из другой оперы имхо
Цитата(Daevaorn @  20.1.2007,  16:50 Найти цитируемый пост)
основные приемы программирования в языках, о которых они ведут речь.

имхо RAII это не основной прием !!!!
Цитата(Daevaorn @  20.1.2007,  16:50 Найти цитируемый пост)
Она положительно влияет на безопасность исключений, дизайн классов и кода в целом.

она влияет , но это не панацея!
и без нее можно обойтись! так что это не основа языка
плюс
Цитата(Daevaorn @  20.1.2007,  16:50 Найти цитируемый пост)
Это не тонкости,

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


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

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

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

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


 




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


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

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