Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: Об использовании STL  (Прочитано 77761 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« : 17-02-2008 14:26 » 

Алексей1153++, STL - это часть стандарта языка, что значит, ты её не используешь?
Вад, вот так Улыбаюсь как-то не прижилось у меня Улыбаюсь
« Последнее редактирование: 17-02-2008 19:08 от Вад » Записан

Sands
Помогающий

ua
Offline Offline

« Ответ #1 : 17-02-2008 14:32 » 

Алексей1153++, Счастливый ты человек, однако(ето к вопросу о начальстве) )). А нащет STL - неужели никогда не было потребности использовать контейнеры? Или предпочитаеш самописные?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 17-02-2008 14:40 » 

сам пишу. И получаю каждый раз от этого удовольствие Улыбаюсь
Записан

Aveic
Постоялец

ru
Offline Offline
Пол: Мужской
Yellow


« Ответ #3 : 17-02-2008 17:50 » 

и как тогда называется твоя Template Library? Улыбаюсь ATL тоже подходит = Алексей Template Library Улыбаюсь да это я так Улыбаюсь
Интересно, какие уже шаблоны ты написал?
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 17-02-2008 19:18 » 

Aveic, он же сказал, что пишет, а не шаблоны использует. Улыбаюсь

Смысл в этом есть, но требует терпения, любви к усидчивости и определённой экономической свободы. Смысл в том, что 100 раз написанное усваивается прочно, со всеми подробностями и особенностями, как сборка АК.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 17-02-2008 19:49 » 

терпения и усидчивости хватает ))

а 100 раз одно и то же одинаково не выходит - всегда свои особенности и тонкости, под одну гребёнку всё не построишь - тем и удивляет, как можно использовать библиотечный класс (настроенный под общие нужды), когда можно написать для конкретной задачи более тонко настроенный классик, совсем небольшой , но такой точный
« Последнее редактирование: 17-02-2008 19:54 от Алексей1153++ » Записан

Aveic
Постоялец

ru
Offline Offline
Пол: Мужской
Yellow


« Ответ #6 : 17-02-2008 20:16 » 

Aveic, он же сказал, что пишет, а не шаблоны использует. Улыбаюсь
Я то правильно понял, это ты меня не понял Улыбаюсь
а 100 раз одно и то же одинаково не выходит - всегда свои особенности и тонкости, под одну гребёнку всё не построишь - тем и удивляет, как можно использовать библиотечный класс (настроенный под общие нужды), когда можно написать для конкретной задачи более тонко настроенный классик, совсем небольшой , но такой точный
но с другой стороны зачем изобретать велосипед Улыбаюсь хотя все равно все не воссоздашь?
А реализации каких шаблонов ты делал уже, Алексей1135++? Наверное, аналоги vector,list,map 100% есть? Можно на них взглянуть?
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 17-02-2008 22:02 » 

Леш, в STL алгоритмы оптимизированные, а конструкции в меру удобны.
Как пример - из моей практики. За год, как я начал активно применять STL, мне удалось на порядок снизить количество запросов к БД, кешируя данные в ассоциативных контейнерах - это я переписываю части программы, написанной моими предшественниками - они написали так, что по каждому чиху надо обращаться в базу. Раньше, когда писал исключительно на С и под Linux, то тоже пользовался связанными списками (стибрил код из ядра Linux и дополнил для многопоточности) и самописной индексацией. STL нахожу довольно удобной и пока использую ее возможности дай бог на 10%.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #8 : 18-02-2008 05:05 » 

Aveic, а я и не изобретал велосипед. Я делал инструмент, настроенный под задачу.
И реализаций шаблонов я тоже не делал )) , а аналоги есть- например кольцевой буфер очереди сообщений с критической секцией (могу прислать код на почту), или взять тот же алгоритм сжатия , который на основе LZ - недавно где то ссылку давал,
http://forum.shelek.com/index.php/topic,7957.0.html
там в конце темы аттачи. Используется четырёхсвязный список (две связи - для дерева, ещё две - для составления префиксов слов, связи между узлами) Поначалу там казалось, что можно двумя связями обойтись - ан нет, для скорости и удобства пришлось ещё две связи. Зато как гладко всё получилось

а зачем тебе примеры то ? Улыбаюсь Так не поверил что ли ? )

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

Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 18-02-2008 07:35 » 

И всё же такие образчики программирования должны быть. Именно потому, что при использовании готовых библиотек программист не всегда может контролировать их реализации. В этом случае ответственность за ошибки или неожиданные поведения библиотечных готовых решений ложатся вроде бы на поставщика, но фактически это ведь не так.

Тут вообще сложнейший вопрос о преимуществах и недостатках повторно используемого кода. По-моему, очень многие библиотеки построены неудобно, причём причиной этого является несовершенная маркетинговая политика, рассматривающая библиотеку как рыночный продукт. Редким приятным исключением являются библиотеки коммуникационных протоколов, поскольку в их предметной области очень удачно разделяются пользовательские и служебные данные. Алгоритмы работают лишь со служебными данными. Внутрь таких библиотек, в самом деле, влезать нужно лишь при обнаружении ошибок; по своему прямому назначению они пригодны к использованию без всяких модификаций.

P.S. Правда я неодобряю незнание STL именно потому, что она является составной частью языка. Можно не использовать, но знать стоит. Хотя бы для того, чтобы знать распространённые подходы к решению типовых задач.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #10 : 18-02-2008 08:51 » 

dimka, я тоже за знание, только вот всё руки не доходят поразбираться (( Общий обзор только успел получить
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 18-02-2008 11:32 » 

Ром, я же не спорю. Но согласись - оптимизация работы с базой ну никак напрямую не связана с использованием библиотеки шаблонов Улыбаюсь А кроме того, мне с базами активно работать просто ещё не приходилось, а то, что имеется сейчас, вполне устраивает по скорости. Поэтому - спорить не могу, лишь говорю - что не приходилось использовать, и всё никак не подвернётся случай ... )
Если бы я не использовал STL (а поначалу так и было), то приходится для каждого случая писать кучу кода, дублируя решения. С STL интерфейс получается однообразным и с им легче оперировать.
Например с ассоциативными контейнерами (map) или со списками (vector): сперва объявляю новый тип - структуру, потом еще один тип - контейнер-коллекцию для этих структур. Вопросы управления памятью отпадают сами собой. Я не пишу ф-ий управления вообще - только ф-ию-член для инициализации структуры. Производительность труда возрастает на порядок.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 18-02-2008 11:45 » 

Цитата: RXL
Производительность труда возрастает на порядок.
Это ключевой момент. Когда у программиста есть возможность не спешить, он может себе позволить подход Алексей1153++, а может позволить себе и не использовать такой подход - на свой выбор. Гораздо хуже, когда программист обязан не использовать такой подход, который его больше устраивает.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 18-02-2008 12:01 » 

dimka, я тоже могу не спешить, т.к. не сильно загружен. Но есть закон подлости: если я буду не спешить, то именно в этот момент, когда я углубился в разработку и реализацию новой фичи, кому-то понадобится какой-нибудь специфичный и срочный отчет, где-нибудь проявится глюк, начнется обед или рабочий день закончится... Когда делаешь быстро, вероятность пересечения меньше, а задача решается быстрее и без нервов.
Кроме того (и не мало важно), легче поддерживать такую программу. Этой программе уже 7 лет, писали/поддерживали ее 4 программиста и очень вероятно, что я буду не последним. Надо думать и о последователях, и о себе.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #14 : 18-02-2008 12:08 » 

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

Во-во, например экстремальное программирование - норма жизни. Да меня б давно уволили, если бы я взялся программировать уже готовые конструкции. Блин завидую людям, у которых куча времени.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
sss
Специалист

ru
Offline Offline

« Ответ #15 : 19-02-2008 04:09 » new

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

while (8==8)
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #16 : 19-02-2008 07:17 » 

sss, наследоваться от STL?
Однако.
У нас есть куски кода оставшиесы с момента запрета на использование STL, так вот поиски мягко говоря не красиво реализованы. А если переписать под алгоритмы STL, то получится набор: простенький предикат, сортировка и lower_bound всё просто и красиво.

и работает очень даже быстро, просадка по скорости бывала, НО ТОЛЬКО из-за наших ошибок, навроде случайно переданного здоравённого класса по значению в функцию и т.п. Так, что STL это суперская весчь. Как говорится: вы просто неумете их готовить. Улыбаюсь
« Последнее редактирование: 19-02-2008 07:20 от LogRus » Записан

Странно всё это....
Aveic
Постоялец

ru
Offline Offline
Пол: Мужской
Yellow


« Ответ #17 : 19-02-2008 08:13 » 

Так, что STL это суперская весчь.
Согласен, я тоже за использование STL Улыбаюсь

dimka, я тоже за знание, только вот всё руки не доходят поразбираться (( Общий обзор только успел получить

Вот может именно поэтому Алексей1153++ не использует ее?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #18 : 19-02-2008 08:20 » 

может поэтому и не использует Улыбаюсь
для примера - берём того же Найка , он, помнится , обожает писать на чистом АПИ и плюётся на MFC. Хотя это тот же АПИ, только в удобном виде Улыбаюсь
Записан

sss
Специалист

ru
Offline Offline

« Ответ #19 : 19-02-2008 08:34 » 

LogRus, мои поиски не красивы тоже. Я это понимаю. Но это мои поиски...

Вот вопрос, почему MFC и VCL не используют STL?
Записан

while (8==8)
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #20 : 19-02-2008 08:55 » 

На уровне интуитивных ощущений: чем меньше опорных сторонних библиотек, тем долговечней постройка на этапе сопровождения. Например, SAP - даже GUI свой собственный, независимый от платформы. Он сам себе платформа, поэтому будет жить десятки лет даже в условиях кардинальных изменений ОС, рождения и смерти всяких MFC и т.п. вещей. Правда, трудозатраты тоже немаленькие.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #21 : 19-02-2008 09:09 » 

если не ошибаюсь, то MFC тоже уже больше 11 лет (точнее не знаю, но не меньше)
Записан

Aveic
Постоялец

ru
Offline Offline
Пол: Мужской
Yellow


« Ответ #22 : 19-02-2008 09:48 » 

Вот вопрос, почему MFC и VCL не используют STL?
гордые собаки Улыбаюсь
Записан
sss
Специалист

ru
Offline Offline

« Ответ #23 : 19-02-2008 10:05 » 

Aveic наверное и это то же. Но я все же думаю из-за сложности расширения и лишения универсальности. Да! Именно универсальности, не смотря на то, что STL образец универсальности. Первая версия моей библиотеки прожила со мной всего один год. Потом я ее стер начисто. Вторая где-то полгода... Последняя, третья, со мной уже 6 лет... В процессе мне пришлось познакомиться с книгами Кнута и Ривеста.
Записан

while (8==8)
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #24 : 19-02-2008 10:15 » 

Вот вопрос, почему MFC и VCL не используют STL?

А зачем? У MFC есть свои контейнеры, которые ориентированы на работу с собственными объектами и учитывающие их специфику, кстати на основе шаблонов. Это ещё одна из причин. Первую Димка уже назвал - независимость.


смерти всяких MFC

А что MFC уже умерли? Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #25 : 19-02-2008 10:32 » 

как умерли?? Где умерли?? почему не знайу?
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #26 : 19-02-2008 12:16 » 

Не понимаю, зачем так глубоко копать. При чем тут MFC и VCL...
Вопрос использования или неиспользования STL в своих программах.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #27 : 19-02-2008 13:56 » 

А я тут не при чём.  Скромно так...  Вопрос был задан.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #28 : 19-02-2008 15:50 » 

А что MFC уже умерли? Ага
А надо бы Улыбаюсь
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #29 : 19-02-2008 16:02 » 

dimka, не, ты чо ) Не надо.
Записан

Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines