Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« : 17-02-2008 14:26 » |
|
Алексей1153++, STL - это часть стандарта языка, что значит, ты её не используешь? Вад, вот так как-то не прижилось у меня
|
|
« Последнее редактирование: 17-02-2008 19:08 от Вад »
|
Записан
|
|
|
|
Sands
Помогающий
Offline
|
|
« Ответ #1 : 17-02-2008 14:32 » |
|
Алексей1153++, Счастливый ты человек, однако(ето к вопросу о начальстве) )). А нащет STL - неужели никогда не было потребности использовать контейнеры? Или предпочитаеш самописные?
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #2 : 17-02-2008 14:40 » |
|
сам пишу. И получаю каждый раз от этого удовольствие
|
|
|
Записан
|
|
|
|
Aveic
Постоялец
Offline
Пол:
Yellow
|
|
« Ответ #3 : 17-02-2008 17:50 » |
|
и как тогда называется твоя Template Library? ATL тоже подходит = Алексей Template Library да это я так Интересно, какие уже шаблоны ты написал?
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #4 : 17-02-2008 19:18 » |
|
Aveic, он же сказал, что пишет, а не шаблоны использует. Смысл в этом есть, но требует терпения, любви к усидчивости и определённой экономической свободы. Смысл в том, что 100 раз написанное усваивается прочно, со всеми подробностями и особенностями, как сборка АК.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #5 : 17-02-2008 19:49 » |
|
терпения и усидчивости хватает ))
а 100 раз одно и то же одинаково не выходит - всегда свои особенности и тонкости, под одну гребёнку всё не построишь - тем и удивляет, как можно использовать библиотечный класс (настроенный под общие нужды), когда можно написать для конкретной задачи более тонко настроенный классик, совсем небольшой , но такой точный
|
|
« Последнее редактирование: 17-02-2008 19:54 от Алексей1153++ »
|
Записан
|
|
|
|
Aveic
Постоялец
Offline
Пол:
Yellow
|
|
« Ответ #6 : 17-02-2008 20:16 » |
|
Aveic, он же сказал, что пишет, а не шаблоны использует. Я то правильно понял, это ты меня не понял а 100 раз одно и то же одинаково не выходит - всегда свои особенности и тонкости, под одну гребёнку всё не построишь - тем и удивляет, как можно использовать библиотечный класс (настроенный под общие нужды), когда можно написать для конкретной задачи более тонко настроенный классик, совсем небольшой , но такой точный
но с другой стороны зачем изобретать велосипед хотя все равно все не воссоздашь? А реализации каких шаблонов ты делал уже, Алексей1135++? Наверное, аналоги vector,list,map 100% есть? Можно на них взглянуть?
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #7 : 17-02-2008 22:02 » |
|
Леш, в STL алгоритмы оптимизированные, а конструкции в меру удобны. Как пример - из моей практики. За год, как я начал активно применять STL, мне удалось на порядок снизить количество запросов к БД, кешируя данные в ассоциативных контейнерах - это я переписываю части программы, написанной моими предшественниками - они написали так, что по каждому чиху надо обращаться в базу. Раньше, когда писал исключительно на С и под Linux, то тоже пользовался связанными списками (стибрил код из ядра Linux и дополнил для многопоточности) и самописной индексацией. STL нахожу довольно удобной и пока использую ее возможности дай бог на 10%.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #8 : 18-02-2008 05:05 » |
|
Aveic, а я и не изобретал велосипед. Я делал инструмент, настроенный под задачу. И реализаций шаблонов я тоже не делал )) , а аналоги есть- например кольцевой буфер очереди сообщений с критической секцией (могу прислать код на почту), или взять тот же алгоритм сжатия , который на основе LZ - недавно где то ссылку давал, http://forum.shelek.com/index.php/topic,7957.0.htmlтам в конце темы аттачи. Используется четырёхсвязный список (две связи - для дерева, ещё две - для составления префиксов слов, связи между узлами) Поначалу там казалось, что можно двумя связями обойтись - ан нет, для скорости и удобства пришлось ещё две связи. Зато как гладко всё получилось а зачем тебе примеры то ? Так не поверил что ли ? ) Ром, я же не спорю. Но согласись - оптимизация работы с базой ну никак напрямую не связана с использованием библиотеки шаблонов А кроме того, мне с базами активно работать просто ещё не приходилось, а то, что имеется сейчас, вполне устраивает по скорости. Поэтому - спорить не могу, лишь говорю - что не приходилось использовать, и всё никак не подвернётся случай ... )
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #9 : 18-02-2008 07:35 » |
|
И всё же такие образчики программирования должны быть. Именно потому, что при использовании готовых библиотек программист не всегда может контролировать их реализации. В этом случае ответственность за ошибки или неожиданные поведения библиотечных готовых решений ложатся вроде бы на поставщика, но фактически это ведь не так.
Тут вообще сложнейший вопрос о преимуществах и недостатках повторно используемого кода. По-моему, очень многие библиотеки построены неудобно, причём причиной этого является несовершенная маркетинговая политика, рассматривающая библиотеку как рыночный продукт. Редким приятным исключением являются библиотеки коммуникационных протоколов, поскольку в их предметной области очень удачно разделяются пользовательские и служебные данные. Алгоритмы работают лишь со служебными данными. Внутрь таких библиотек, в самом деле, влезать нужно лишь при обнаружении ошибок; по своему прямому назначению они пригодны к использованию без всяких модификаций.
P.S. Правда я неодобряю незнание STL именно потому, что она является составной частью языка. Можно не использовать, но знать стоит. Хотя бы для того, чтобы знать распространённые подходы к решению типовых задач.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #10 : 18-02-2008 08:51 » |
|
dimka, я тоже за знание, только вот всё руки не доходят поразбираться (( Общий обзор только успел получить
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #11 : 18-02-2008 11:32 » |
|
Ром, я же не спорю. Но согласись - оптимизация работы с базой ну никак напрямую не связана с использованием библиотеки шаблонов А кроме того, мне с базами активно работать просто ещё не приходилось, а то, что имеется сейчас, вполне устраивает по скорости. Поэтому - спорить не могу, лишь говорю - что не приходилось использовать, и всё никак не подвернётся случай ... ) Если бы я не использовал STL (а поначалу так и было), то приходится для каждого случая писать кучу кода, дублируя решения. С STL интерфейс получается однообразным и с им легче оперировать. Например с ассоциативными контейнерами (map) или со списками (vector): сперва объявляю новый тип - структуру, потом еще один тип - контейнер-коллекцию для этих структур. Вопросы управления памятью отпадают сами собой. Я не пишу ф-ий управления вообще - только ф-ию-член для инициализации структуры. Производительность труда возрастает на порядок.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #12 : 18-02-2008 11:45 » |
|
Производительность труда возрастает на порядок. Это ключевой момент. Когда у программиста есть возможность не спешить, он может себе позволить подход Алексей1153++, а может позволить себе и не использовать такой подход - на свой выбор. Гораздо хуже, когда программист обязан не использовать такой подход, который его больше устраивает.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #13 : 18-02-2008 12:01 » |
|
dimka, я тоже могу не спешить, т.к. не сильно загружен. Но есть закон подлости: если я буду не спешить, то именно в этот момент, когда я углубился в разработку и реализацию новой фичи, кому-то понадобится какой-нибудь специфичный и срочный отчет, где-нибудь проявится глюк, начнется обед или рабочий день закончится... Когда делаешь быстро, вероятность пересечения меньше, а задача решается быстрее и без нервов. Кроме того (и не мало важно), легче поддерживать такую программу. Этой программе уже 7 лет, писали/поддерживали ее 4 программиста и очень вероятно, что я буду не последним. Надо думать и о последователях, и о себе.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Джон
просто
Администратор
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
Специалист
Offline
|
|
« Ответ #15 : 19-02-2008 04:09 » |
|
Мое мнение, STL это конечно круто но... Порождение классов от стандартных просто ад или вообще невозможно. Любое изменение превращает библиотеку уже не в STL. Использование STL приводит к тому, что у программист не пишет собой продуманные классы, которые в последствии будут помогать ему в работе не хуже STL. Вообще, что это за заказчик - задание на ночь? Студенты перед зачетом? Слава богу что я не использую STL. Поверьте, пробовал. Получалось, что я каждый раз ради поддержки STL мудрил с основным кодом. Я не спорю - STL шедевр, основное преимущество которого безошибочность и предсказуемость поведения. Создание аналога STL работа адская... Но именно создание такого аналога и есть развитие. Не боги горшки обжигают.
|
|
|
Записан
|
while (8==8)
|
|
|
Антон (LogRus)
|
|
« Ответ #16 : 19-02-2008 07:17 » |
|
sss, наследоваться от STL? Однако. У нас есть куски кода оставшиесы с момента запрета на использование STL, так вот поиски мягко говоря не красиво реализованы. А если переписать под алгоритмы STL, то получится набор: простенький предикат, сортировка и lower_bound всё просто и красиво. и работает очень даже быстро, просадка по скорости бывала, НО ТОЛЬКО из-за наших ошибок, навроде случайно переданного здоравённого класса по значению в функцию и т.п. Так, что STL это суперская весчь. Как говорится: вы просто неумете их готовить.
|
|
« Последнее редактирование: 19-02-2008 07:20 от LogRus »
|
Записан
|
Странно всё это....
|
|
|
Aveic
Постоялец
Offline
Пол:
Yellow
|
|
« Ответ #17 : 19-02-2008 08:13 » |
|
Так, что STL это суперская весчь.
Согласен, я тоже за использование STL dimka, я тоже за знание, только вот всё руки не доходят поразбираться (( Общий обзор только успел получить
Вот может именно поэтому Алексей1153++ не использует ее?
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #18 : 19-02-2008 08:20 » |
|
может поэтому и не использует для примера - берём того же Найка , он, помнится , обожает писать на чистом АПИ и плюётся на MFC. Хотя это тот же АПИ, только в удобном виде
|
|
|
Записан
|
|
|
|
sss
Специалист
Offline
|
|
« Ответ #19 : 19-02-2008 08:34 » |
|
LogRus, мои поиски не красивы тоже. Я это понимаю. Но это мои поиски...
Вот вопрос, почему MFC и VCL не используют STL?
|
|
|
Записан
|
while (8==8)
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #20 : 19-02-2008 08:55 » |
|
На уровне интуитивных ощущений: чем меньше опорных сторонних библиотек, тем долговечней постройка на этапе сопровождения. Например, SAP - даже GUI свой собственный, независимый от платформы. Он сам себе платформа, поэтому будет жить десятки лет даже в условиях кардинальных изменений ОС, рождения и смерти всяких MFC и т.п. вещей. Правда, трудозатраты тоже немаленькие.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #21 : 19-02-2008 09:09 » |
|
если не ошибаюсь, то MFC тоже уже больше 11 лет (точнее не знаю, но не меньше)
|
|
|
Записан
|
|
|
|
Aveic
Постоялец
Offline
Пол:
Yellow
|
|
« Ответ #22 : 19-02-2008 09:48 » |
|
Вот вопрос, почему MFC и VCL не используют STL?
гордые собаки
|
|
|
Записан
|
|
|
|
sss
Специалист
Offline
|
|
« Ответ #23 : 19-02-2008 10:05 » |
|
Aveic наверное и это то же. Но я все же думаю из-за сложности расширения и лишения универсальности. Да! Именно универсальности, не смотря на то, что STL образец универсальности. Первая версия моей библиотеки прожила со мной всего один год. Потом я ее стер начисто. Вторая где-то полгода... Последняя, третья, со мной уже 6 лет... В процессе мне пришлось познакомиться с книгами Кнута и Ривеста.
|
|
|
Записан
|
while (8==8)
|
|
|
Джон
просто
Администратор
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."
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #25 : 19-02-2008 10:32 » |
|
как умерли?? Где умерли?? почему не знайу?
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #26 : 19-02-2008 12:16 » |
|
Не понимаю, зачем так глубоко копать. При чем тут MFC и VCL... Вопрос использования или неиспользования STL в своих программах.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Джон
просто
Администратор
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
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #28 : 19-02-2008 15:50 » |
|
А что MFC уже умерли? А надо бы
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #29 : 19-02-2008 16:02 » |
|
dimka, не, ты чо ) Не надо.
|
|
|
Записан
|
|
|
|
|