автоуказатели

Тема в разделе "LANGS.C", создана пользователем maksim_, 26 окт 2009.

  1. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    То, что происходит с STL в этом топике, называется не "оффтопик", а "кощунство" :-D
     
  2. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    _DEN_
    Это называется "неполовозрелый экстремизм", то есть когда кто-то считает, что он знает и умеет С++ лучше, чем все те плебеи, что сочиняли ISO/IEC 14882, например недоумок Страуструп.
     
  3. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Ustus

    У тебя на личном фронте все хорошо?
     
  4. Voodoo

    Voodoo New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2003
    Сообщения:
    297
    Адрес:
    Новосибирск
    Простите меня за безграмотность, конечно, но разве не имеет? Совсем-совсем никакого? Я полистал исходники, конечно, но все-таки не понял.
     
  5. nop_

    nop_ New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2007
    Сообщения:
    61
    Недостаточно.

    Целый - не нужен.

    refCounter и сопутствующая обвязка - это как раз и есть увеличение кода. А это, как минимум, дополнительное место для ошибок. Ты смешиваешь в кучу код, написанный тобой (командой, фирмой) и готовый библиотечный код (в данном случае stl/boost). Да, есть факторы, которые не дают возможности примять в "ембедет" решениях библиотечный код. Но во первых, это далеко не всегда те, что ты перечислил, во вторых - не было бы этих факторов, грамотные (как ты выразился) разработчики воспользовались бы этим.

    Аналог чего-либо все равно выльется в сравнимый по размерам код. Остается сравнить качество. Кроме того, новый разрабочик _уже_ будет знаком с stl и скорее всего с boost, тогда как обучать его применению собственных велосипедов придется отдельно, а это в конечном итоге приведет к удорожанию разработки.
     
  6. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    _DEN_
    Какой странный вопрос... А почему вы спрашиваете? :)

    Это не диагноз, если непонятно - поясняю:
    Библиотеки, в частности STL, сочиняются не просто так и не кем попало. Много больших серьезных дядей чешут над ними бороду и у меня нет повода подозревать их в некомпетентности. Кстати boost, хотя и не включена в стандарт, делается не без участия тех людей, которые писали STL, так что можно считать, что boost рано или поздно будет перетекать в STL, не все, конечно и, возможно, не совсем в изначальном виде.
    Теперь что я имею ввиду под "неполовозрелым экстремизмом".
    Под экстремизмом я имею ввиду суждение на тему: "я не буду использовать ХХХ, потому что оное используют только лохи". У многих людей имеются предпочтения, в том числе и по инструментариям разработки но возводить это в принцип... Ну не экстремизм ли?
    А неполовозрелый он потому что проистекает из недостатка опыта помноженного на излишнюю самоуверенность. У некоторых людей со временем опыт приходит, а излишки самоуверенности уходят. Иногда этого не случается. В таком случае это диагноз. Причем это не лечится, потому что никто лечить не будет, потому что проще найти троих адекватных специалистов, чем переделать одного неадекватного.
    И вообще чьи это слова:
    :):):)
    Только я не пойму при чем здесь нравится/не нравится? Удобно же! И практически бесплатно, а то и лучше.

    А кто сказал, что я не доктор? :):):) Кстати, я заметил, на этом форуме "вы" обычно говорят, когда хотят тонко оскорбить собеседника. :):):)
     
  7. nop_

    nop_ New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2007
    Сообщения:
    61
    std::auto_ptr выполняет определенные задачи. Там где эти задачи необходимы - эмуляция поведения std::auto_ptr приведет к таким же затратам (как минимум).

    В общем же случае, оверхед от собственных реализаций умных указателей может быть больше чем от библиотечных, т.к. при реализации последних могут быть использованы некоторые техники, препятствующие, например, template bloat - такая применяется в реализации std::tr1::shared_ptr от MSVC. В старых версиях MSVC (в шестерке, насколько я помню) при реализации std::auto_ptr также использовался подобный прием, но в реализации были некоторые кривоватости по поводу совместимости со стандартом.

    Разумеется, подобное может применяться и в собственных реализациях. Но есть некоторые сомнения в том, что "среднестатистическая" велосипедная реализация умного указателя их применяет.

    PS: Как минимум странно видеть такие вопросы в отношении все-таки разных вещей - по аналогии: двухколесный велосипед - имеет ли он оверхед по сравнению с ногами? Когда достаточно ног - несомненно имеет. Когда недостаточно - собственную реализацию велосипеда уже можно рассматривать как оверхед (как минимум по затратам на производство и времени).
     
  8. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    Кстати, если уже я взялся искать правду (да, неблагодарное занятие... а шо делать? :) )
    Смарт-пойнтеры появились не потому что их кому-то захотелось, а потому что так вышло.
    Поясняю.
    ООП - значит полиморфизм. Полиморфизм - значит упомянутый уже pimpl.
    Исключения - значит "низкоуровневый" С-шный пойнтер небезопасен. Следовательно - RAII.
    RAII + pimpl = smart pointer, ну а дальше по категориям - максимально простой - scoped_ptr, с разрушающим копирование - auto_ptr, с разделенным владением - shared_ptr, дополнительный, чтобы выкручиваться из циклических shared_ptr - weak_ptr.

    Поэтому, если не используются исключения или полиморфизм, то скорее всего можно обойтись без сабжа. Но только это как раз то случай, когда
    :):):)

    Voodoo
    Конечно не имеет, по крайней мере в классической реализации. Да и зачем?
    В чем же собственно вся задумка - пользуешься стандартной библиотекой - получаешь хороший код.
    Ну, по крайней мере так задумывалось :)
    Меня, например, раздражает, что gcc до сих пор memset через stos делает. Ну тормоза же!
     
  9. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    упомянутый Вами диагноз.
     
  10. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    да нет, не экстремизм. если я пишу свою библиотеку стд функций/классов - то это отчасти для того, чтобы знать как всё это работает. в противном случае, начнут вылазить баги непонятно откуда.
     
  11. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    maksim_
    а не практичней и полезней смотреть грамотные сорцы уже сделанного?
    и далеко не дураки это делали :)
     
  12. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    это вот какрас про кривых велосипедистов..
     
  13. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    а при чём тут кривие велосипеды? разбираться в документации на библиотеку, в особенностях реализации можно дольше, чем писать самому. толком не разобрался - полезли баги.

    может и полезней. в принципе, методы мат физики тоже можно по учебнику учить и смотреть как умные дядьки решали сложные задачи. но чтобы научиться решать задачи по ммф - нужно решать задачи по ммф. чтобы научиться программировать - нужно программировать. в общих чертах я себе и устройство термоядерного реактора представляю, но вот проблема - собрать не могу.
     
  14. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Ustus
    _DEN_
    Какой странный вопрос... А почему вы спрашиваете? :)


    Бггг))) А интересуюсь... Как было в одном кино... Нервный ты какой-то :)
     
  15. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    cupuyc
    Ну я же от этого не кричу, что gcc - сакс... просто обидно, так-то компилер неплохой.

    maksim_
    Вообще-то в стандарте написано, как оно должно работать.
    И кто сказал, что ошибки легче обнаружить в самописном коде? В библиотеке-то попробуй ошибись - тут же злобные бета-тестеры порвут на тряпки :) А если тестеры пропустят - потребитель может так порвать, что и тряпок не останется. :):) Ну и главное - зачем делать то, что все равно сделают немцы? (с) :):):)

    _DEN_
    Э... собственно, я тоже цитировал :) (с) забыл поставить :):):)

    Если можно, то все-таки на ты... ну правда, напрягает...
    Всегда готов подучиться :)
    Значит ситуация такая -
    Код (C++):
    1. void f(void* p1, void* p2, void* p3, void* p4)
    2. {
    3.     memset(p1, 0, 2);
    4.     memset(p2, 0, 4);
    5.     memset(p3, 0, 16);
    6.     memset(p4, 0, 1024);
    7. }
    компилируется во что-то наподобие:
    Код (ASM):
    1. _Z1fPvS_S_S_:
    2. .LFB8:
    3.     pushl   %ebp
    4. .LCFI0:
    5.     movl    %esp, %ebp
    6. .LCFI1:
    7.     pushl   %edi
    8. .LCFI2:
    9.     movl    8(%ebp), %ecx
    10.     movl    16(%ebp), %edi
    11.     movw    $0, (%ecx)
    12.     movl    12(%ebp), %edx
    13.     cld
    14.     movl    $4, %ecx
    15.     xorl    %eax, %eax
    16.     movl    $0, (%edx)
    17.     rep
    18.     stosl
    19.     movl    20(%ebp), %edx
    20.     movl    $1024, 16(%ebp)
    21.     movl    $0, 12(%ebp)
    22.     movl    %edx, 8(%ebp)
    23.     movl    (%esp), %edi
    24.     leave
    25. .LCFI3:
    26.     jmp memset
    27. .LFE8:
    компилера правда поновее под рукой нет, только куэнисксовый 3.3.5, но можете мне поверить, линуховый 4.3 не лучше. Только если разрешить MMX/SSE он их пользует, но это приемлемо не для всех случаев, например не всегда железо позволяет.
    Научите меня, как научить его, как сделать лучше, и я таки буду вас уважать :):):)

    Вам показалось :) где там упреки? Тем более в вашу сторону :) Наоборот, я даже цитирую в сугубо положительном смысле :):):)
     
  16. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    одно дело сделаные студентами на коленке библиотеки.
    Их лучше не использовать, а написать свой велосипед (если конечно готового грамотного решения - нет).
    Другое - библиотеки, написанные специалистами и протестированные очень большим количеством людей.
    Такие библиотеки обязательно использовать, вместо написания своих велосипедов.
    Сомневаюсь что изучение документации займет времени больше чем написание своей реализации.
     
  17. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    аффтар, если ты такой умный, и считаешь что дядьки-девелоперы всяких там STL и boost-ов тебе не указ, то расскажи нам, сколько больших, успешных, внедренных проектов ты разработал? и покажи нам, как за счёт твоих самописных лисапедов ты поимел в чём-то выигрыш? сколько в твоих проектах работало разработчиков, 10, 100? и все они юзали твой кодес, и при этом не вспоминали твоих родственников?
    мне очень интересно посмотреть на твои лисапеды, можт тоже на них с всяких STL перепрыгну... короче, жду.
    итого, мне нужно все то что есть в STL, только лучше(!). ведь именно ты об этом фактически и говорил, расхваливая свои самокаты.
    ps: да простят меня уважаемые васмеры за подобные эмоции.
     
  18. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    я сам люблю работать с автоуказателями и считаю, что нужно следовать концепции: иногда лучше жевать, чем говорить. тем более о том, о чем не имеешь ни малейшего понимания. иначе это выглядит как минимум некрасиво.
     
  19. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    от имени maksim_ из под этого логина
    некоторым людям, вроде Вас, бесполезно объяснять - всё равно не поймут. если желаете понять - прочтите мой пост ещё раз и ткните мне пальцем где я говорил что умные дядьки пишут плохо и что я напишу лучше.
     
  20. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    cupuyc