Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Злые беседы добрых программистов | страница 5
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 5 из 9
На страницу: Пред.  1, 2, 3, 4, 5, 6, 7, 8, 9  След. | Все страницы
Поиск в этой теме:
Канал Игры Мечты: «Злые беседы добрых программистов»
Remint
 385 EGP


Рейтинг канала: 3(31)
Репутация: 84
Сообщения: 1785

Зарегистрирован: 12.05.2003
TpuCTaH :
имееться ввиду я надеюсь не

Не stl eдиной жив программист Улыбка , если говорить о stl скорее:

template <class Container>
class MyIterator : public std::iterator <std::bidirectional_iterator_tag, тип_элемента, тип_разности, ...>
{
protected:
Container& container;

public:
explicit MyIterator (Container& c) : container(c) {}

//дальше оператор присваивания и т.д.
...
}
//если есть очепятки извиняюсь, тут подсветки нет Гы-гы

Хотя в stl гибкости уже готовых решений выше крыши, если чего не хватает в реализации от MS, можно найти в stl port, или boost, благодоря чему ее чаще приходится просто применять, нежели расширять, чаще всего, если нужно было что-то свое, удавалось отделаться с помощью собственных функциональных адаптеров. Т.е. еще проще.
А вот в WTL/ATL написание собственных контролов с расширенной фунциональностью обычное дело, этим она как раз и удобна, когда нужен свой красивый интерфейс, при компактных размерах исходников.
Что-нибудь вроде:
class CMyTabPaneContainer : public CPaneContainerImpl<CMyTabPaneContainer >
{
...
}

TpuCTaH :
Есть книги по boost и tr1 на руссоком?

Не видел, хотя не сильно и искал. Улыбка И думаю по boost кроме обзорных статей вряд-ли чего будет, в отличии от stl не стандарт, все может на ходу обновляться вместе с описаниями на сайте. Иначе получиться в книге одно, на сайте boost другое, итого - сборник неточных и порой вредных советов. Потому уж лучше в оригинале, как ни крути инглиш нужно учить, и совершенствовать причем, постоянно иначе забывается зараза.
_________________
Да пребудет с вами сила...

Последний раз редактировалось: Remint (16:18 15-05-2007), всего редактировалось 1 раз
    Добавлено: 01:16 15-05-2007   
Crimson
 560 EGP


Рейтинг канала: 4(83)
Репутация: 130
Сообщения: 3041

Зарегистрирован: 03.09.2003
TpuCTaH :
ммм наследовать stl? имееться ввиду я надеюсь не
class MySuperVector : public std::vector<int>
{
...
}
???


Подозрение. Это я надеюсь не вместо "typedef std::vector<int> MySuperVector;"? Улыбка
    Добавлено: 04:07 15-05-2007   
TpuCTaH
 63 EGP


Рейтинг канала: 1(4)
Репутация: 8
Сообщения: 128
Откуда: Харьков
Зарегистрирован: 12.06.2006
class RenderList : private std::list<RenderObject*>
{
public:
void Setup();
void Cleanup();
void OnLostDevice();
void OnResetDevice();
void Update(float dt);
void Draw();
void PushBack(RenderObject* ptr);
void SetDead(RenderObject * ptr);
};

Прочитал у Маерса на днях про чисто виртуальные деструкторы ... переписывать надо Улыбка

Пшел читать гетинг стартед про бууст Улыбка
_________________
Если вы считаете, что C++ труден, попытайтесь выучить английский.(с)Bjarne Stroustrup
С++&&DirectX

Последний раз редактировалось: TpuCTaH (08:42 15-05-2007), всего редактировалось 1 раз
    Добавлено: 08:39 15-05-2007   
Crimson
 560 EGP


Рейтинг канала: 4(83)
Репутация: 130
Сообщения: 3041

Зарегистрирован: 03.09.2003
Ыыыы... Чёп сказать такого умного... Немного того...

Ну во-первых ты не столько наследуешь, сколько пишешь враппер. Я бы в такой ситуации просто сделал std::list<RenderObject*> закрытым атрибутом класса RenderList.

Во-вторых если уж ты наследуешь - зачем тебе второй PushBack()?

В третьих есть мнение, что вообще не стоит подобным образом скрещивать бульдога с носорогом. Лучше на мой взгляд Draw(RenderList), чем RenderList.Draw(). Или это синглтон?
    Добавлено: 11:24 15-05-2007   
TpuCTaH
 63 EGP


Рейтинг канала: 1(4)
Репутация: 8
Сообщения: 128
Откуда: Харьков
Зарегистрирован: 12.06.2006
ну вопервых низя наследоваться от stl контейнеров потому что у них нет виртуального деструктора. (с)Майерс.

Не не синглтон.

Наследование приватное и push_back невидно. Затем и нужен.
_________________
Если вы считаете, что C++ труден, попытайтесь выучить английский.(с)Bjarne Stroustrup
С++&&DirectX

Последний раз редактировалось: TpuCTaH (14:32 15-05-2007), всего редактировалось 2 раз(а)
    Добавлено: 14:30 15-05-2007   
Star'ik
 325 EGP


Репутация: 71
Сообщения: 1882
Откуда: Msk
Зарегистрирован: 29.04.2003
По поводу библиотек. Был такой вот пример...

Мужичок с Лукойла частенько ездил по западным странам - людей посмотреть, себя показать. Мужичок - классный программер. Как-то раз, посетив один вычислительный центр и посмотрев, как западные программеры-прикладники ковыряют какую-то процедуру переиндексации данных, наш герой решил помочь западным коллегам. Коллеги добились производительности, равной часовому отрезку времени. Т.е. проще говоря, что-то выполнялось в течении часа. Наш человек тоже, с разрешения присутствующих, написал некую процедуру. В итоге переиндексация произошла за 15 минут. При попытках разобраться в наваяном коде, западные программисты впали в ступор, резюмировав в итоге, что им сие творение пера непонятно, и использовать его они не будут, т.к. не поняли, что к чему...

ЗЫ: Вот такие вот есть программисты.
_________________
Все хорошее когда-нибудь кончается

Последний раз редактировалось: Star'ik (14:49 15-05-2007), всего редактировалось 1 раз
    Добавлено: 14:48 15-05-2007   
TpuCTaH
 63 EGP


Рейтинг канала: 1(4)
Репутация: 8
Сообщения: 128
Откуда: Харьков
Зарегистрирован: 12.06.2006
Ага. Тока кто потом после него программу поддерживать будет? Улыбка
_________________
Если вы считаете, что C++ труден, попытайтесь выучить английский.(с)Bjarne Stroustrup
С++&&DirectX
    Добавлено: 15:20 15-05-2007   
Star'ik
 325 EGP


Репутация: 71
Сообщения: 1882
Откуда: Msk
Зарегистрирован: 29.04.2003
То-то и оно. Как говориться, потому Макйрософт и у руля, т.к. остальные нифига не рубят... Иначе давно бы линукс был везде...
_________________
Все хорошее когда-нибудь кончается
    Добавлено: 15:53 15-05-2007   
Remint
 385 EGP


Рейтинг канала: 3(31)
Репутация: 84
Сообщения: 1785

Зарегистрирован: 12.05.2003
Star'ik :
Наш человек тоже, с разрешения присутствующих, написал некую процедуру. В итоге переиндексация произошла за 15 минут.

Причем, судя по времени, вполне возмоно, что с помощью вызовов тех же самых библиотечных процедур, либо с использованием готового и распостраненного API, или технологии для работы с БД, но только с прямыми руками, благодоря хорошему знанию билиотеки/API/технологии/языка. Если последнего пункта не наблюдалось, проблем от такой оптимизации может быть больше чем выигрыша. Гы-гы

Гы мелкософт со своими либами, это тема отдельная, у них есть и очень удачные и грамотно спроектированые вещи. Есть и не очень. Библиотеки в целом тут причем?
STL, или boost в тормознутости едва ли можно обвинить, если знать, что и где лучше применять. Там эффективность в плане быстродействия была поставлена во краю угла.
Самый примитивный пример, тот же std::string, при работе над строкой, будет работать гораздо быстрее чем TCHAR tc[xxx] + разные олд стаил _tcscat e.t.c., хотя бы потому, что в последнем случае, при каждой такой операции будет заново расчитываться длина строки с перебором всех символов, в первом нет (и это самая примитивная оптимизация). Более того даже достаточно грамотно спроектированый мелкософтовский класс CString, проигрывает std::string, так как там есть много других интересных моментов над которыми думали очень гармотные программисты. Аналогично и во многих других местах.
_________________
Да пребудет с вами сила...
    Добавлено: 16:17 15-05-2007   
Minx
 979 EGP


Модератор
Рейтинг канала: 6(328)
Репутация: 135
Сообщения: 10528
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Star'ik :

ЗЫ: Вот такие вот есть программисты.


Епстественно. Непонятный код содержит потенциально больше ошибок и менее сопровождаем.

Да и какие-то глупые программисты. Если есть решение, улучшающее скорость в 4 раза, при чем скорость критична, то лучше в этом решении разобраться и его принять к сведению. И потом способ пригодится, и проект работать будет.
Тем более что там разбираться... в коде который думаю от силы за пару часов писался.

И чем то это мне напомнило диалог:
Alexey Gaev :

OL> Умница! Блеснyл интеллектом. Я pада! Подмигиваю

Каким нафиг интеллектом. Я дурак, сертификатов у меня нет и академиев я не кончал. Hо набрать "select firstname, lastname from people as p, biographies as b where p.ID=b.ID and b.TR like '%is a vegetarian%' and p.Sex='M'" могу. Улыбка

_________________
μηδείς αγεωμέτρητος εισίτω

Последний раз редактировалось: Minx (20:26 15-05-2007), всего редактировалось 1 раз
    Добавлено: 20:23 15-05-2007   
Crimson
 560 EGP


Рейтинг канала: 4(83)
Репутация: 130
Сообщения: 3041

Зарегистрирован: 03.09.2003
TpuCTaH :
ну вопервых низя наследоваться от stl контейнеров потому что у них нет виртуального деструктора. (с)Майерс.


Наследоваться-то можно, если осторожно. Помня при этом, что у stl контейнеров нет виртуальных деструкторов Да. Вопрос только зачем от них наследоваться...

TpuCTaH :
Наследование приватное и push_back невидно. Затем и нужен.


А, так оно у тебя еще и приватное... Дык тогда я тем более не вижу смысла наследоваться Подозрение.
    Добавлено: 10:07 16-05-2007   
TpuCTaH
 63 EGP


Рейтинг канала: 1(4)
Репутация: 8
Сообщения: 128
Откуда: Харьков
Зарегистрирован: 12.06.2006
Так вот и теперь не вижу. Просто подумал что
for(vector<int>::iterator i = vec.begin(),e = vec.end();i != e; i++ ){}
будет работать медленнее чем
for(iterator i = begin(),e = end();i != e; i++ ){}
да и когда писал не понимал прелести тайпдефа. Переписывать буду. Затем и пишу чтоп научиться. Сразу же никто правильно не пишет. Я надеюсь с этим никто спорить не будет? Улыбка
_________________
Если вы считаете, что C++ труден, попытайтесь выучить английский.(с)Bjarne Stroustrup
С++&&DirectX

Последний раз редактировалось: TpuCTaH (12:32 16-05-2007), всего редактировалось 1 раз
    Добавлено: 12:31 16-05-2007   
Crimson
 560 EGP


Рейтинг канала: 4(83)
Репутация: 130
Сообщения: 3041

Зарегистрирован: 03.09.2003
Думаю что не будет. Сам смысл многих фишек уловил уже когда сплясал на граблях... Гы-гы И то не уверен что до конца Улыбка
    Добавлено: 12:48 16-05-2007   
TpuCTaH
 63 EGP


Рейтинг канала: 1(4)
Репутация: 8
Сообщения: 128
Откуда: Харьков
Зарегистрирован: 12.06.2006
ну в принципе если клас не полиморфный то можно от stl контейнеров наследоваться. и думать туту нефиг надо взять и померять.
_________________
Если вы считаете, что C++ труден, попытайтесь выучить английский.(с)Bjarne Stroustrup
С++&&DirectX
    Добавлено: 12:52 16-05-2007   
Minx
 979 EGP


Модератор
Рейтинг канала: 6(328)
Репутация: 135
Сообщения: 10528
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
TpuCTaH :
Так вот и теперь не вижу. Просто подумал что
for(vector<int>::iterator i = vec.begin(),e = vec.end();i != e; i++ ){}
будет работать медленнее чем
for(iterator i = begin(),e = end();i != e; i++ ){}


А

Код:
for(vector<int>::iterator i = vec.begin(),e = vec.end();i != e; ++i ){}


будет ещё быстрее.

Только возникает вопрос в количестве писанины и в том, что end() может в некоторых случаях изменится, что придется лишний раз контролировать.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 17:09 16-05-2007   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
Репутация: 14
Сообщения: 1426

Зарегистрирован: 27.07.2005
бугак

апологетам ООП посвящается Хы...

http://blog.gamedeff.com/?p=91
_________________
This is what you get ...
(c) Radiohead
    Добавлено: 18:42 13-12-2007   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4039
Откуда: Москва
Зарегистрирован: 22.12.2002
Sh.Tac. :
апологетам ООП посвящается
А для "тупых Дельфийцев" не переведете? Гы-гы
_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 19:53 13-12-2007   
Shirson
 1605 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 219
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
Нам их непонять Улыбка Но сайтец интересный, с полезностями.
_________________
У меня бисера не доxеpа.
    Добавлено: 20:13 13-12-2007   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
Репутация: 14
Сообщения: 1426

Зарегистрирован: 27.07.2005
вкратце, сипипя поддерживает три парадигмы программирования:
- функциональную
- объектно-ориентированную
- обобщённую

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

мну сам застрял на перепутье между ООП и ОП, собсно трёп на ирке об ентом, о трудностях перехода Улыбка

Warstone, к сожалению насчёт дельфинов ничего не могу сказать...

знаю тока, что обобщённое программирование существует на других языках, в плюсы пришло не сразу, а придя, приняло форму почти что изуверско-садисткую, т.к. реализуется посредством специализаций шаблонов
_________________
This is what you get ...
(c) Radiohead
    Добавлено: 20:37 13-12-2007   
Remint
 385 EGP


Рейтинг канала: 3(31)
Репутация: 84
Сообщения: 1785

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

Для многих задач, старые проверенные подходы могут быть реально проще и эффективней, соответственно в них не обязательно такие огороды городить, наверно отсюда и все религиозные войны ортодоксальных приверженцев той или иной парадигмы.)
_________________
Да пребудет с вами сила...
    Добавлено: 22:35 13-12-2007   
Канал Игры Мечты: «Злые беседы добрых программистов»
На страницу: Пред.  1, 2, 3, 4, 5, 6, 7, 8, 9  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Есть мнение, што лучшей защитой от подделки является КАЧЕСТВО ПРОДУКТА.(L'oshek)

  » Злые беседы добрых программистов | страница 5
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18