powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Философия велосипедостроения.
88 сообщений из 88, показаны все 4 страниц
Философия велосипедостроения.
    #33299539
Интегратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знаете, вообще каждый язык несёт в себе что то, прививающее его пользователем определённые типичные подходы к решению задач. На перле народ извращается нечитабельным синтаксисом, на дельфятнике народ до посинения ищет компонентs? решающие все мыслимые и немыслимые проблемы и даже не задумывается что можно подумать и самому что то родить.. эпизодически хотя бы... Я вот работаю на С++ и на мой взгляд самое ужасное в программистах С/С++ - непреодолимая жажда велосипедостроения. Она принимает формы от неинного моздания собственных смартпойнтиеров до написания своей либы ГУИ и движка СУБД (да да - и такое на моей практике было :) ). И пусть либа страдает многими недоделками, пусть самописная база постоянно падает а написанные контейнеры нещадно жрут память и периоджически тормозят по непонятным даже автору причинам - всё равно бороться с жэтим почти бесполезно. И единственный вывод который делает автор очередного велосипеда - "да пару моментов я упустил, надо бы переписать часть кода". Конечно всё можно понять - увы модульность в С++ слабо проработана, компонентности нет и не будет, подключение сторонних библиотек порой требует хорошей квалификации и вынуждает включать в проект кучу мусорного кода... Но всё же эти усилия потом обычно с лихвой окупаются надёжно работающим приложением, сэкорномленными нервами и временем разработки. Однако большим успехами моя беспощадная и непримиримая борьба с велосипедстроителями пока не увенчалась, постоянно наталкиваюсь на кустки кода, старательными написанные коллегами, с смавмопальными потоками, строками, обёртками над виндовым оконным АПИ, самописными парсерами.. И на вопрос а почему не поискал готовое решение на меня недоумённо смотрит разработчик как на какого то дикаря и бормочет - но ведь это работает ... И что на это ответить ? :) Ну да работает... пока... а что будет завтра ? :)


Господа, как перебороть эту страшную болезнь ?
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33299543
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ээээ.... а зачем? :)
Позволь процитировать:
Интеграторподключение сторонних библиотек порой требует хорошей квалификации и вынуждает включать в проект кучу мусорного кода
Во по этой самой причине лично я и предпочитаю построить свой велосипед чем маяться с чужим.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33299635
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пользуйтесь готовыми велосипедами. в Бусте их полный зоопарк
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33299637
fixit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Ну да работает... пока... а что будет завтра ? :)"


и завтра будет работать.... и после завтра. В этом то и сила с++.
Я помнится ХML парсер (облегченный) написал (за 2 дня, для тренировки мозга, 4 года назад) - говорят работает как часы и используется еще досихпор в моей старой конторе ;) Надо использовать существующие ресурсы там где необходимо и выгодно. Там где есть возможность и время написать/переписать или упростить или расширить уже придуманный кем-то код - приветствую - ибо это часть прогресса и с другой стороны также практика для рук и мозгов начинающего программиста.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33299672
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИнтеграторНо всё же эти усилия потом обычно с лихвой окупаются надёжно работающим приложением, сэкорномленными нервами и временем разработки.

...


Ну да работает... пока... а что будет завтра ? :)


сторонние библиотеки - не панацея от всего. Иначе все программисты превратятся в дельфятников, рыскающих по sf.net в поисках библиотеки которая будет делать за них всю работу.

Слава богу, свобода вообще включает в себя и свободу выбора, писать самому, использовать то что входит в стандарт или поискать сторонние решения.

Короче, тема имеет небольшое рациональное зерно, но в целом освещает ситуацию не верно :-)
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33299685
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
..

Жизненная ситуация. Вы приходите в новую контору (вчера токо устроился)
бодрый духом и жаждущий творчества. Твой начальник шлепает на стол
пачку технической документации (размером с Войну-И-Мир) и рекомендует
изучить ее быстренько 2-3 дня и подхватить сопровождения. Ваш взгляд наполняется тоской и печалью. Вы листаете бесконечные листинги на
процедурном С со смесью Клипера. Вы пытаетесь найти автора сего
творения - но он давно уже свалил в Израиль, не оставив ни строчки
комментариев. Вы пытаетесь навести порядок - но это невозможно
в силу технических нюансов которые не брались в расчет во время
разработки. Вы пытаетесь убедить начальника что неплохо было-бы
кое-чего переписать с нуля - но натыкаетесь на стену непонимания.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33299729
fixit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton[quot ]

Жизненная ситуация. Вы приходите в новую контору (вчера токо устроился)
бодрый духом и жаждущий творчества. Твой начальник шлепает на стол
пачку технической документации (размером с Войну-И-Мир) и рекомендует
изучить ее быстренько 2-3 дня и подхватить сопровождения. Ваш взгляд наполняется тоской и печалью. Вы листаете бесконечные листинги на
процедурном С со смесью Клипера. Вы пытаетесь найти автора сего
творения - но он давно уже свалил в Израиль, не оставив ни строчки
комментариев. Вы пытаетесь навести порядок - но это невозможно
в силу технических нюансов которые не брались в расчет во время
разработки. Вы пытаетесь убедить начальника что неплохо было-бы
кое-чего переписать с нуля - но натыкаетесь на стену непонимания.

Ситуация 2: вы убеждаете шефа, что придется переписать часть кода для дальнейшей возможности раширения функционала, потом дальше/больше. В процессе рефакторинга также переписывается 80% старого кода в 5 раз более эффективным вашим. В конце концов вы добиретесь до ядра и заменяете старый код целиком. Процедурный С исчезает совсем, все четко структуированно и задокументированно. На малейшее пожелание юзера легко добавляются новые модули. Вам становится скучно случать новые запросы пользователей и делать поддержку системы. Вы сваливаете в другую контору.
Приходит новый программист Вася Пупкин. Профессиональный жабист (или дельфист), по воле судьбы пишуший в с++. Прошло время, много новых технических ньюансов, проект запущен, юзера звереют хотят крови. Шеф шлепает на стол вашу доку рамерон с войну и мир и рекомендует изучить за 2-3 дня. Его взгляд наполняется тоской и печалью... У него возникаэт блестящая мысль переписать это все на яву ( дельфи ).
:-)
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33299833
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИнтеграторКонечно всё можно понять - увы модульность в С++ слабо проработана, компонентности нет и не будет, подключение сторонних библиотек порой требует хорошей квалификации и вынуждает включать в проект кучу мусорного кода...

Чего ? Да С++ -- самый модульный в мире язык !! А дешевую компонентность свою оставь для Бейсика и Дельфы.

Интегратор
Господа, как перебороть эту страшную болезнь ?
Дисциплиной разработки и стандартами на проектирование и кодирование.
Выделением больших средств на закупки готовых библиотек и средств разработки -- библиотек дофига, но многие платные. Хотя есть еще и GNU.org
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33299835
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут есть еще и объективные причины - слабость стандартной библиотеки.
Пока boost в стандарт не двинут -- все это будет и будет продолжаться.
Взять хотябы притчу во языцах - STL.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33300201
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Чего ? Да С++ -- самый модульный в мире язык !! А дешевую компонентность свою оставь для Бейсика и Дельфы.
Не надо пороть чушь. В С++ невозможно организовать проект так, чтобы Стартап программы инициализировал подсистемы, ничего про них не зная кроме как имя их класса в текстовом конфиге. А чтобы эти новые классы внедрить в проект, надо было бы просто положить jar файл в директорию plugins.
Решение типа COM находится вне языка C++.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33300256
Интегратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixit"Ну да работает... пока... а что будет завтра ? :)"


и завтра будет работать.... и после завтра. В этом то и сила с++.
Я помнится ХML парсер (облегченный) написал (за 2 дня, для тренировки мозга, 4 года назад) - говорят работает как часы и используется еще досихпор в моей старой конторе ;) Надо использовать существующие ресурсы там где необходимо и выгодно. Там где есть возможность и время написать/переписать или упростить или расширить уже придуманный кем-то код - приветствую - ибо это часть прогресса и с другой стороны также практика для рук и мозгов начинающего программиста.

А вот тепепрь представьте что завтра сменит вас другой программист - как вы думает что бы он предпочёл - вникать в ваши велосипеды которыми вы так гордитесь или встретить знакомую известную либу непонимание которой можно исправить поиском инфы на просторах инета ? :)
Это раз - а во вторых сколько у вас времени уйдёт на отладку/доработки написанного велосипеда.. а если их несколько ? ;)


Ваш взгляд наполняется тоской и печалью. Вы листаете бесконечные листинги на
процедурном С со смесью Клипера. Вы пытаетесь найти автора сего
творения - но он давно уже свалил в Израиль, не оставив ни строчки
комментариев


Такое как раз происходит когда каждый считает своим долгом сделать свой велосипед вместо поиска стандартных решений :)


Слава богу, свобода вообще включает в себя и свободу выбора, писать самому, использовать то что входит в стандарт или поискать сторонние решения.


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


Чего ? Да С++ -- самый модульный в мире язык !! А дешевую компонентность свою оставь для Бейсика и Дельфы.


Ндя даже и сказать нечего в ответ :) Включение исходного кожа через инклуды это компонентность ? Компонентность - это взял бинарник и засосал из него все имеющиеся в нём классы - в Сях такого нет и врятли будет. Визуально или нет - это уже детали, суть понятна. В Сях бинарного стандарта нет. Метаданных нет, вообще мало что есть к чему уже начинает привыкать общественность :).
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33300307
fixit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Интегратор:

переходите на яву и будет вам щастье...
А хотя может вам лучше перейти на руководящие позиции и держаться от кода подальше. Такскать руководить производственным процессом свысока, не вникаясь в детали велосипедостроения?

P.S.
"Но пока всё это не выливается в реальтно работающий проект"

очень часто выливается и именно в реально работающий.

"А ваши велосипеды вероятнее всего произведут угнетающее впечатление, особенно по прошествию лет"

По прошествию лет, живут такие проекты как скажем ядро к окнам в микрософте, ит.п. Мой велосипед порадует 20-50 чек в течении 1-3 лет и идет на свалку истории по любому. Новые технологии не дремлют.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33300326
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Ильич
Не надо пороть чушь.


На счет этого - к автору темы. Что такое "компонент", тем более применительно к С++ - не понятно, но тем не менее, утверждается, что свойство их поддержки С++ не присуще.

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

Что такое "проект" ? В С++ нет понятия "проект". Что касается инициализации нужных мне компонет - я ее могу замечательно выполнить. Для этого не надо каких-то особых языковых средств.

Сергей Ильич
А чтобы эти новые классы внедрить в проект, надо было бы просто положить jar файл в директорию plugins.


Мне, чтобы внедрить новые классы в проект, достаточно положить их заголовки в дирректорию include и библиотеки в дирректорию lib. С точностью до названия конкретных дирректориев я разницы не вижу.

Сергей Ильич
Решение типа COM находится вне языка C++.


И слава Богу. Микрософт все же поумнее Борланда и Сана будет, которые все в одну кучу мешают.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33300333
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интегратор
Ндя даже и сказать нечего в ответ :)

Дык и правильно, объективно тут нечего говорить.
Потому что С и за ним С++ был модульным, когда
остальных приводимых здесь языков еще и в планах не значилось.

Интегратор
Включение исходного кода через инклуды это компонентность ?

Я что-то не понял, какой исходный код в Include-е.
Не ну конечно, если вы туда исходный код кладете -- тогда да, это клиника,
это не лечат. Разговаривать не о чем.

Интегратор
Компонентность - это взял бинарник и засосал из него все имеющиеся в нём классы - в Сях такого нет и врятли будет. Визуально или нет - это уже детали, суть понятна. В Сях бинарного стандарта нет.


Чего-то я не понял. А где есть ? В Дельфе ? В Бейсике ? В Java ?
Немногим дальше оно там все ушло от того, что есть в C/C++.
Вам бинарки не хватает ? Возмите precompiled header -- будет вам бинарка.
Ей-богу, возможности создавать компоненты на любом из этих языков наличие или отсутствие этого дела ни мешает, ни помогает.
Тут больше надо думать о том, насколько оно будет повторно исползуемым и
на сколько не будет зависеть от окружения, т.е. может потенциально быть вставленном во что-то, что его использовать собирается.
Тут естественно у всех трех поделок (Дельфи/Бейсик/Java), заточенных под конкретику и являющихся вещами в себе сто очков вперед супротив универсального языка C++, в котором, естественно, например, нет работы с TCP/IP, потому что не во всех средах оно есть, нет работы с базами данных, потому что что такое "база данных" - не понятно, если не предполагать, что база данных, это то, что из нее решила сделать Борланд ну и так далее ...

При чем здесь бедный язык С++ скажите ? Чем он вам не модульный ?
Да, тяжелый, неповоротливый, ему надо подчас кучу окружения для применения создать, но уж не модульным его назвать нельзя. Вот кто уж немодульный, так это Паскаль (только не путайте его с ObjectPascal от Borland). Вот там вся программа должна быт по определению в одном файле.
А С и С++ очень даже модульные языки. Модульнее не бывает.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33300335
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, еще прочитал, еще больше не понимаю. ЧТо имеется в виду ?

Интегратор
Включение исходного кожа через инклуды это компонентность ?

Так а чего, в ObjectPascal что ли лучше ? А, там не весь исходник "включается", а только до слова implementation, дальше типа компилятор не читает. Так ? А в Жабе , да там не только исходник ,
там без реально выполнимого кода ты компонент не подключишь.
Зачем бы он мне при сборке был нужен ? Чем это от исходников
отличается ? Тем что файл в редакторе не прочитаешь ?

Интегратор
Метаданных нет, вообще мало что есть к чему уже начинает привыкать общественность :).


Так где они есть ? В Java ? Нет, нету. Там тот же исходник. В Делфи ?
Нет, там тоже их нет. Есть только закодированный .pas.
Вот в Basic они есть реально, точнее, они в COM есть. Или в CORBA, если это больше нравиться. Так оно все и для С++ применимо --пожалуйста, пользуйтесь.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33300341
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv Сергей Ильич
Не надо пороть чушь.

На счет этого - к автору темы. Что такое "компонент", тем более применительно к С++ - не понятно, но тем не менее, утверждается, что свойство их поддержки С++ не присуще.

Автор намекает, что в C++ проще свой велосипед наваять, чем воспользоваться чужим кодом (Из-за разных calling conventions, name mangling, отсутствия метаинформации, разных отклонений от стандарта у разных компиляторов, const char* vs const wchar_t* vs CString vs WTL::CString vs std::string vs std::wstring vs std::basic_string<> vs CComBSTR vs _bstr_t, невозможности динамически линковать шаблоны итд). В принципе, я с ним согласен. Хотя и считаю нужным ставить синяки тем, кто так делает.

MasterZiv
Сергей Ильич
В С++ невозможно организовать проект так, чтобы Стартап программы инициализировал подсистемы, ничего про них не зная кроме как имя их класса в текстовом конфиге.

Что такое "проект" ? В С++ нет понятия "проект". Что касается инициализации нужных мне компонет - я ее могу замечательно выполнить. Для этого не надо каких-то особых языковых средств.

В Java тоже нет. Но как-то мы называем ту херню, которая у нас в данный момент пишется? Не понял прикол.

MasterZiv
Сергей Ильич
А чтобы эти новые классы внедрить в проект, надо было бы просто положить jar файл в директорию plugins.

Мне, чтобы внедрить новые классы в проект, достаточно положить их заголовки в дирректорию include и библиотеки в дирректорию lib. С точностью до названия конкретных дирректориев я разницы не вижу.

Программа про эти новые классы не узнает. Надо будет менять код. Меня интересует, как добавить в программу новые фичи не пересобирая проект. В Джаве элементарно можно сделать например абстрактную фабрику, которая бы порождала инстансы классов совершенно не известных на момент сборки проекта, не выходя за рамки языка.

MasterZiv
Сергей Ильич
Решение типа COM находится вне языка C++.


И слава Богу. Микрософт все же поумнее Борланда и Сана будет, которые все в одну кучу мешают.[/quot]
Зачем же они сделали .NET и C# ?!
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33300347
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Ильич
В Java тоже нет. Но как-то мы называем ту херню, которая у нас в данный момент пишется? Не понял прикол.

Ну вот и я не понял, ты про проекты начал.

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


Тебя научить что ли как фабрику классов на C++ писать ? Уверяю тебя, это возможно, и даже появилось это все изначально не в Java , а задолго до его появления в других языках, С++, smalltalk. На счет "не выходя за рамки языка" -- Java -- это не язык, точнее не только язык. Поэтому на нем легко писать, не выходя за его рамки. С++ тут более честен, он явно декларирует, где кончается язык и начинается операционка.

Сергей Ильич
Зачем же они сделали .NET и C# ?!
Ну сделали и сделали. При чем здесь это-то ?
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33300409
AndreiNz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю, что вопрос был о том, почему люди не исрпользуют готовые библиотеки или классы. Естественно, причин может быть множество. На мой взгляд, главные из них:
1. Не хотят платить деньги. А бесплатные и есть бесплатные, у них и качество бесплатное. Что уж говорить, если STL от MS идет с багами, то чего ждать от Васи Пупкина.

2. Не достаточно возможностей у доступной библиотеки или класса.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33300650
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv Сергей ИльичВ Джаве элементарно можно сделать например абстрактную фабрику, которая бы порождала инстансы классов совершенно не известных на момент сборки проекта, не выходя за рамки языка.

Тебя научить что ли как фабрику классов на C++ писать ? Уверяю тебя, это возможно, и даже появилось это все изначально не в Java , а задолго до его появления в других языках, С++, smalltalk.
Меня интересовало, как добавить в проект новые классы, чтобы абстрактная фабрика о них узнала без пересборки проекта.
Добавить в проект новые классы можно, например, положив dll в определенную директорию.
Допустим, мы в из dll экспортнем функцию LoadPlugin, которая вернет нам в виде строки символов идентификатор фичи которую она реализует и vTable.
Но это получится велосипед. И это будет довольно хрупкое решение.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33300653
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
All
...


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

Большую головную боль доставляют плавающие типы
данных вроде int и float. Взгляните на windows.h
и вы найдете массу директив препроцессора
у которыйх одна единственная цель - закрывать
дырки в несоответсвтвиях типов.

Расслоение проджектов на хедероы и CPP-шники
давно уже всем надоело. Этот бонус был интересен
для бородатых компиллеров, которым катастрофически
не хватало оперативки, и для сред разработки, не
поддерживающих рефлексию.

Ваш покорный слуга рассматривает C++ как старого коня,
который как известно борозды не портит, однако c завистью
поглядывает на Digital Mars D И проч. решения, которые
в будущем, возможно вытеснят C++ с арены системных
разработок. Тогда, ИМХО, коня можно будет без жалости
пристрелить.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33300696
Интегратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivТут естественно у всех трех поделок (Дельфи/Бейсик/Java), заточенных под конкретику и являющихся вещами в себе сто очков вперед супротив универсального языка C++, в котором, естественно, например, нет работы с TCP/IP, потому что не во всех средах оно есть, нет работы с базами данных, потому что что такое "база данных" - не понятно, если не предполагать, что база данных, это то, что из нее решила сделать Борланд ну и так далее ...


А вы пишете универсальный софт который оперирует абстрактым понятием база данных или взаимодейтсвует с СУБД SQL Server например ? :)


в C++ проще свой велосипед наваять, чем воспользоваться чужим кодом (Из-за разных calling conventions, name mangling, отсутствия метаинформации, разных отклонений от стандарта у разных компиляторов, const char* vs const wchar_t* vs CString vs WTL::CString vs std::string vs std::wstring vs std::basic_string<> vs CComBSTR vs _bstr_t, невозможности динамически линковать шаблоны итд).


Это и имел в виду ;)

[quot]
Добавить в проект новые классы можно, например, положив dll в определенную директорию.
Допустим, мы в из dll экспортнем функцию LoadPlugin, которая вернет нам в виде строки символов идентификатор фичи которую она реализует и vTable.
[quot]

Если мы обсуждаем язык С++ то никакой vTable там вобщем то нет :) Ну даже если ваш любимый компилятор её реализует то не факт что он её реализует так как вам хотелось бы :)

Это раз, во вторых таким образом я буду создавать объекты на куче а вот на стеке увы... Ну и не забываем что надо будет всем потенциальным разработчиккам плагинов стучать по мозгам дабы линковали с dll CRT :).
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33300854
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВаш покорный слуга рассматривает C++ как старого коня,
который как известно борозды не портит, однако c завистью
поглядывает на Digital Mars D И проч. решения, которые
в будущем, возможно вытеснят C++ с арены системных
разработок. Тогда, ИМХО, коня можно будет без жалости
пристрелить.

Обратите внимание, что из всех честных компиляторов Microsoft оставил ТОЛЬКО C++. Надо же им самим на чем-то работать. Остальные "языки" насильственно опущены до уровне Васика, т.е. ниже плинтуса и генерят исключительно .Net код

Старый конь может оказаться несколько жизнеспособнее чем Вы думаете
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33300943
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)
Обратите внимание, что из всех честных компиляторов Microsoft оставил ТОЛЬКО C++. Надо же им самим на чем-то работать. Остальные "языки" насильственно опущены до уровне Васика, т.е. ниже плинтуса и генерят исключительно .Net код

Старый конь может оказаться несколько жизнеспособнее чем Вы думаете


Добавлю. Остальные языки насильственно переведены в прикладную
сферу. Никому не нужен VB, генерирующий нативный код. Зато
для бухгалтера-программиста средней руки, способность быстро
внедрять .Net решения - голубая мечта детства.

По поводу старого коня... ну что-ж. Возможно вы и правы. Отправить
на свалку собственно компиллер трудно, но осуществимо. Особенно, если
это будет политика большого софтверного гиганта (вроде IBM, MS или SUN).
Гораздо труднее сломать психологию средненького программера-обывателя
который душой прикипел к С++ и в частности к огромной свалке
свободно-распространяемого сорса. Но я надеюсь, что здравый
смысл победит.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33300991
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПо поводу старого коня... ну что-ж. Возможно вы и правы. Отправить
на свалку собственно компиллер трудно, но осуществимо.

Гмм и на чем писать будем ? Программирование не ограничивается прикладухой. И M$ это понимают гораздо лучше чем многие другие.
Закрыть от общественности и оставить для внутренних нужд, это могут, но черевато. Общественность вывернется и будет хуже.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33301063
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)
Гмм и на чем писать будем ? Программирование не ограничивается прикладухой. И M$ это понимают гораздо лучше чем многие другие.
Закрыть от общественности и оставить для внутренних нужд, это могут, но черевато. Общественность вывернется и будет хуже.

Это не суть важно, на чем будем писать. Пускай это будет
даже очередная реинкарнация C++, учитывающая современные
требования. Важнее привить для new-generation разработчиков
правильный образ мышления и стиль написания.

Ссылки по теме:

Digital Mars D
Zonnon
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33301152
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можете считать меня старым перечником, но New Generation (у нас в Казани) пока не производит на меня сильного впечатления, но это уже похоже оффтопик
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33301159
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что касается к примеру сборки мусора, так мы с ей нахлебались в текущем проекте. Пока не вынесли используемую .Net сборку в Out Process COM-сервер, добиться приемлемой производительности не удавалось. Именно из-за сборщика мусора. Хотя сборка мусора в нашем проекте как раз нафих была не нужна.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33301189
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Что касается к примеру сборки мусора, так мы с ей нахлебались в текущем проекте. Пока не вынесли используемую .Net сборку в Out Process COM-сервер, добиться приемлемой производительности не удавалось. Именно из-за сборщика мусора. Хотя сборка мусора в нашем проекте как раз нафих была не нужна.

Если вы правильно выбрали структуру данных то проблем со сборкой
мусора быть не должно. Кстати, что за логику вам пришлось
выносить в Out Process COM-сервер, если не секрет?
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33301239
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вы зачем инетерсуетесь ? Вы случайно не из мылиции ???
Не секрет, вынесли интерфейс к тарификатору, писанному ДРУГОЙ конторой.
Наш RADIUS
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33301494
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, по поводу уборщика мусора: появилась Realtime подсистема для Джавы. Там есть кучи в которые уборщик мусора никогда не заходит. Куча для Immortal объектов и еще одна для refcounted объектов.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33302149
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЧего ? Да С++ -- самый модульный в мире язык !! А дешевую компонентность свою оставь для Бейсика и Дельфы.
На С я могу просто делать ошибки, на С++ я могу их наследовать!
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33302368
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Ильич
Допустим, мы в из dll экспортнем функцию LoadPlugin, которая вернет нам в виде строки символов идентификатор фичи которую она реализует и vTable.
Но это получится велосипед. И это будет довольно хрупкое решение.

Нет, это будет не велосипед, а танк !! Трактор !!! Который будет пахать.
И таких трактаров уже знаешь сколько !! И все пашут к нашей радости !!!
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33302371
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Тогда, ИМХО, коня можно будет без жалости
пристрелить.
Да когда это еще будет !!
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33305236
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЕсли вы правильно выбрали структуру данных то проблем со сборкой
мусора быть не должно. Кстати, что за логику вам пришлось
выносить в Out Process COM-сервер, если не секрет?

В обчем почитал вчера книжку и выяснил в чем дело :) Начиная работу сборщик мусора ПРИОСТАНАВЛИВАЕТ ВСЕ ПОТОКИ. Для нашего приложения это реально плохо, поскольку за это время мимо кассы успевает пролететь порядка 5 пакетов (требования по времени отклика и пропускной способности очень жесткие). Решение с выносом .Net кода в OutProcess было идеальным, там оно никому не гадит.
Попутно ушла и другая байда, до выноса приложение периодически висло под отладчиком (без отладчика все работало как пулемет), перекопали все, но причину не нашли :( После выноса .Net-а это ушло и больше не появлялось :)
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33305290
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) maytonЕсли вы правильно выбрали структуру данных то проблем со сборкой
мусора быть не должно. Кстати, что за логику вам пришлось
выносить в Out Process COM-сервер, если не секрет?

В обчем почитал вчера книжку и выяснил в чем дело :) Начиная работу сборщик мусора ПРИОСТАНАВЛИВАЕТ ВСЕ ПОТОКИ. Для нашего приложения это реально плохо, поскольку за это время мимо кассы успевает пролететь порядка 5 пакетов (требования по времени отклика и пропускной способности очень жесткие).
Ну не знаю как в .NET, в Java можно сделать так чтобы уборщик мусора работал в фоновом режиме. Правда, в обычном режиме он дефрагментирует кучу, поэтому оператор new в Java очень быстрый - он просто кладет объект сверху, прибавляя размер объекта к указателю на топ кучи. При дефрагментации воздух из кучи выдавливается, и объекты проваливаются вниз. При работе в фоновом режиме оператор new пользуется списками свободной памяти и работает помедленнее.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33305472
Yossarian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то от темы малость народ отъехал. Отвечу по исходному топику.
ПОТОМУ ЧТО ГОТОВЫЕ РЕШЕНИЯ - КОШМАРНЫЙ ОТСТОЙ И ГОЛОВНАЯ БОЛЬ.

Пример.
У Микрософта в VC6.0 STL нету хеш-контейнеров. Ну нету. Не написали они.
Беру STLPORT. Трачу полдня на его подключение. Трачу еще месяц (!)
на то, чтобы посредством переписки по e-mail установить и сконфигурировать
то же самое у заказчика. Встает проблема перехода на дотнет. И что же ?
STLPORT под дотнетом НЕ-РА-БО-ТА-ЕТ !

Скажите, я что - за месяц свою реализацию хеш-контейнеров не напишу ?
Чтобы еще и под дотнет работало ?

Дальше-хуже. Понадобился мне ОДИН пакет из Boost. Повторяю - ОДИН.
Ставить приходится всю бандуру. Ставится она криво, и компилироваться
не хочет. Покрутил-покрутил и выкинул.

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

А вот под Дельфи - воткнул и оно работает. Все ! Вот поэтому дельфист
первым делом ищет готовые решения, а С++ник пишет все сам. Такой
вот Коде Реюзе получается.

Washington Irving
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33305553
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YossarianЧто-то от темы малость народ отъехал. Отвечу по исходному топику.
ПОТОМУ ЧТО ГОТОВЫЕ РЕШЕНИЯ - КОШМАРНЫЙ ОТСТОЙ И ГОЛОВНАЯ БОЛЬ.

Пример.
У Микрософта в VC6.0 STL нету хеш-контейнеров. Ну нету. Не написали они.
Беру STLPORT. Трачу полдня на его подключение. Трачу еще месяц (!)
на то, чтобы посредством переписки по e-mail установить и сконфигурировать
то же самое у заказчика. Встает проблема перехода на дотнет. И что же ?
STLPORT под дотнетом НЕ-РА-БО-ТА-ЕТ !

Скажите, я что - за месяц свою реализацию хеш-контейнеров не напишу ?
Чтобы еще и под дотнет работало ?

Дальше-хуже. Понадобился мне ОДИН пакет из Boost. Повторяю - ОДИН.
Ставить приходится всю бандуру. Ставится она криво, и компилироваться
не хочет. Покрутил-покрутил и выкинул.

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

А вот под Дельфи - воткнул и оно работает. Все ! Вот поэтому дельфист
первым делом ищет готовые решения, а С++ник пишет все сам. Такой
вот Коде Реюзе получается.
Washington Irving
Абсолютно согласен.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33305638
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)
В обчем почитал вчера книжку и выяснил в чем дело :) Начиная работу сборщик мусора ПРИОСТАНАВЛИВАЕТ ВСЕ ПОТОКИ. Для нашего приложения это реально плохо, поскольку за это время мимо кассы успевает пролететь порядка 5 пакетов (требования по времени отклика и пропускной способности очень жесткие). Решение с выносом .Net кода в OutProcess было идеальным, там оно никому не гадит.
Попутно ушла и другая байда, до выноса приложение периодически висло под отладчиком (без отладчика все работало как пулемет), перекопали все, но причину не нашли :( После выноса .Net-а это ушло и больше не появлялось :)


Я идеологически поддерживаю раздел нативного и кросс-переносимого
кода в том случае, если речь идет о distributed-взаимодействии. В вашем-
же случае вы теряете преимущество .net перед другими технологиями.

По поводу сбора мусора. У насбыла обратная ситуация, когда мощная система эл. документооборота, написаная на C++ (с использованием умных указателей) подтормаживала систему. Миграция кода под С#.net не изменила саму проблему сбора мусора, однако позволила смягчить режим работы авто-поинтеров и сделать его отложенным. Субьективно система заработала на 20% быстрее за счет более благоприятного распределения операций free() во времени.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33305671
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ идеологически поддерживаю раздел нативного и кросс-переносимого
кода в том случае, если речь идет о distributed-взаимодействии. В вашем-
же случае вы теряете преимущество .net перед другими технологиями.


Нам и не нужно было "преимущество" Нам нужно было прикрутить НАВЯЗАННЫЙ нам .Net код к своему проекту. За свою часть мы отвечаем головой, с чужим кодом все сложнее :( Вынос .Net ПОЛНОСТЬЮ решил проблему, тема закрыта :)

IMHO .Net не предназначен для разработки приложений с гарантированным временем отклика и все "преимущества" при таком раскладе идут лесом.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33305710
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторIMHO .Net не предназначен для разработки приложений с гарантированным временем отклика и все "преимущества" при таком раскладе идут лесом.
Просвети фразу.... т.е. .Net не предназначен для разработки приложений на одной машине - (не распределённое/DCOM)?
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33305777
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)
IMHO .Net не предназначен для разработки приложений с гарантированным временем отклика и все "преимущества" при таком раскладе идут лесом.


Здесь согласен. Более того. Я неоднократно говорил в форуме
о том, что dotnet не годится для разработки ядер систем и движков
БД. Однако на ниве прикладных разработок бизнес-уровня он
имеет место.

Гарантированное время отклика не могут гарантировать даже
ОС, которые мы использует повсеместно. Ни линейка WindowsNT
ни семейство *nix-ов по определению не являются осями реального
времени. Такова специфика их мультизадачности. Реально только QNX
и еще ряд систем (не помню названия к сожалению) попадают в этот
сектор.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33305835
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123 авторIMHO .Net не предназначен для разработки приложений с гарантированным временем отклика и все "преимущества" при таком раскладе идут лесом.
Просвети фразу.... т.е. .Net не предназначен для разработки приложений на одной машине - (не распределённое/DCOM)?


Вы читать умеете ?
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33305844
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton Gluk (Kazan)
IMHO .Net не предназначен для разработки приложений с гарантированным временем отклика и все "преимущества" при таком раскладе идут лесом.


Здесь согласен. Более того. Я неоднократно говорил в форуме
о том, что dotnet не годится для разработки ядер систем и движков
БД. Однако на ниве прикладных разработок бизнес-уровня он
имеет место.

Гарантированное время отклика не могут гарантировать даже
ОС, которые мы использует повсеместно. Ни линейка WindowsNT
ни семейство *nix-ов по определению не являются осями реального
времени. Такова специфика их мультизадачности. Реально только QNX
и еще ряд систем (не помню названия к сожалению) попадают в этот
сектор.

Ну ГАРАНТИРОВАННОГО времени отклика у нас на Windows разумеется нет, но подобное поведение .Net непренужденно завалило бы нам сдачу проекта. Периодические потери 5-10 пакетов, это не то чего ждут от RADIUS. Пакеты приходят с интервалом 1мс и в это время мы должны были кровь из носу уложиться. И уложились
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33305905
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разумеется 1мс - пиковая нагрузка, нормальная ~20 мс. Нам нужна была система с настолько гарантированным временем отклика, насколько это возможно на Windows и с хорошей пропускной способностью.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33305917
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YossarianЧто-то от темы малость народ отъехал. Отвечу по исходному топику.
ПОТОМУ ЧТО ГОТОВЫЕ РЕШЕНИЯ - КОШМАРНЫЙ ОТСТОЙ И ГОЛОВНАЯ БОЛЬ.

Пример.
У Микрософта в VC6.0 STL нету хеш-контейнеров. Ну нету. Не написали они.
Беру STLPORT. Трачу полдня на его подключение. Трачу еще месяц (!)
на то, чтобы посредством переписки по e-mail установить и сконфигурировать
то же самое у заказчика.

Дык Вы заказчику отдаете инсталлятор с бинарью или же заставляете его все это собирать?
Можно вместо ассоциативных массивов использовать наследник от std::vector< std::pair<KeyType,ValueType> > который при вставке его сортирует по ключу. А искать - бинарным поиском. Работать будет быстрее хеш-массива и фрагментировать кучу поменьше.
Кроме того, в дельфе хешей тоже нет. И из-за отсутствия шаблонов полный аналог сделать нельзя.

hash_map не входит в стандарт С++, а вам об этом было известно.

Yossarian
Ставить приходится всю бандуру. Ставится она криво, и компилироваться
не хочет. Покрутил-покрутил и выкинул.

Ну, вообще я сам с буст дело не имею, так что добавить нечего.

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

А вот под Дельфи - воткнул и оно работает. Все ! Вот поэтому дельфист
первым делом ищет готовые решения, а С++ник пишет все сам. Такой
вот Коде Реюзе получается.

Я, напимер, никаких велоспедов не изобретаю и не пишу тривиальных вещй сам. Не то чтобы я фанат С++ (скорее наоборот), но в C++ я имею те средства которые мне нужны.
Оттого что средний дегенерат не понимает зачем нужно множественное наследование, функционал который оно дает нужен и при его отсутствии надо искать обходные пути.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33305925
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо Оттого что надо было написать несмотря на то что
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33306003
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Ильич
Можно вместо ассоциативных массивов использовать наследник от std::vector< std::pair<KeyType,ValueType> > который при вставке его сортирует по ключу. А искать - бинарным поиском. Работать будет быстрее хеш-массива и фрагментировать кучу поменьше.


Хм.. не согласен с фразой работать будет быстрее хеш-массива .
Имеются в виду частные случаи?
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33306025
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) Petro123 авторIMHO .Net не предназначен для разработки приложений с гарантированным временем отклика и все "преимущества" при таком раскладе идут лесом.
Просвети фразу.... т.е. .Net не предназначен для разработки приложений на одной машине - (не распределённое/DCOM)?

Вы читать умеете ?
))) я скорее практик чем теоретик - теории не хватает, к сожалению.
Удачи!
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33306129
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я нервно реагирую, когда мне пытаются приписать то чего я НЕ ГОВОРИЛ, делая какие-то запредельные логические выводы.
Я то-же практик.

P.S. И Вам того-же
P.P.S. Вдвойне
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33306467
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton Сергей Ильич
Можно вместо ассоциативных массивов использовать наследник от std::vector< std::pair<KeyType,ValueType> > который при вставке его сортирует по ключу. А искать - бинарным поиском. Работать будет быстрее хеш-массива и фрагментировать кучу поменьше.


Хм.. не согласен с фразой работать будет быстрее хеш-массива .
Имеются в виду частные случаи?
К сожалению, я не сталкивался с задачами где негарантированное константное время хоть как-то по перформансу опережало гарантированное логарифмическое. Может быть, в этом мой пробел.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33306717
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Ильич
К сожалению, я не сталкивался с задачами где негарантированное константное время хоть как-то по перформансу опережало гарантированное логарифмическое. Может быть, в этом мой пробел.

Практически, можно регулировать производительность хеша, коэффициентом
загрузки. При малом количестве промахов можно довести отклик до константы.
Правда это удобно для хешей которые не растут. В случае роста, реорганизация потребует гораздо большего времени чем расширение Б-дерева или Пирамиды.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33307632
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123...Вот поэтому дельфист
первым делом ищет готовые решения, а С++ник пишет все сам. Такой
вот Коде Реюзе получается.
Washington Irving
Абсолютно согласен.[/quot]

И я подпишусь. Именно так все и обстоит. А беда вся из-за бедности стандартной библиотеки.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33307640
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton Сергей Ильич
К сожалению, я не сталкивался с задачами где негарантированное константное время хоть как-то по перформансу опережало гарантированное логарифмическое. Может быть, в этом мой пробел.

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

Время доступа к элементу хэш-таблицы в теории не зависит от N, т.е. практически константа. Правда это статистически и при условии, что хэш-функция хорошая. Поэтому это - самый быстрый из способов поиска, но он требует большого объема памяти и требователен к хэш-функции, которая не может быть универсальной и хорошей одновременно. Но логарифмического бинарного поиска она всяко "круче", но не всегда , естественно.
На счет переполнения - не согласен, способов обработки переполнения много,
и не все они требуют какого-то времени.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33308712
Yossarian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Ильич Yossarian
ПОТОМУ ЧТО ГОТОВЫЕ РЕШЕНИЯ - КОШМАРНЫЙ ОТСТОЙ И ГОЛОВНАЯ БОЛЬ.


Дык Вы заказчику отдаете инсталлятор с бинарью или же заставляете его все это собирать?
Можно вместо ассоциативных массивов использовать наследник от std::vector< std::pair<KeyType,ValueType> > который при вставке его сортирует по ключу. А искать - бинарным поиском. Работать будет быстрее хеш-массива и фрагментировать кучу поменьше.


Дык, Сергей Ильич, давайте не будем обсуждать мои взаимоотношения
с заказчиком и конкретные технические решения, сделанные при решении
конкретной задачи. Вы ведь не будете утверждать что хеш-массивы вообще
не нужны ? Да и дело не в хеш-массивах, а в общей ублюдочности
большинства С++ных библиотек. Ни шаблоны не спасают, ни стандарт в 1000
страниц. Так что данное Ваше возражение = null and void.

Сергей Ильич
Кроме того, в дельфе хешей тоже нет. И из-за отсутствия шаблонов полный аналог сделать нельзя.


Опаньки! С каких пор наличие шаблонов стало необходимым для реализации
хешей ? Что ж бедные программисты НА ЧИСТОМ С не знали об этом ? Бред.

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

(Ну дегенератами других ругать у нас все здоровы.)
Про множественное наследование мне это опять же непонятно.
Я не знаю задач, которые невозможно было бы решить без множественного
наследования, так же я не знаю задач, которые нельзя было бы решить без
GOTO. По мне так множественное наследование - это бантик. С ним бывает
красивше, но и без него жить можно.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33308768
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YossarianПо мне так множественное наследование - это бантик. С ним бывает
красивше, но и без него жить можно.

Можно, но недолго и мучительно.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33310072
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv YossarianПо мне так множественное наследование - это бантик. С ним бывает красивше, но и без него жить можно.
Можно, но недолго и мучительно.
Нееее... наоборот. С множественным наследованием жить тяжко. А без него очень просто и легко. Вообще, считаю множественное наследование злом.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33310403
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты просто не умеешь его готовить...
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33310788
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivТы просто не умеешь его готовить...
Поддерживаю :)
Абстрактные классы + множественное наследование - те же интерфейсы в Java.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33311723
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman MasterZivТы просто не умеешь его готовить...
Поддерживаю :)
Абстрактные классы + множественное наследование - те же интерфейсы в Java.
нифига себе! А если так?

Абстрактные классы + множественное наследование - те же интерфейсы в Delphi .
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33312369
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YossarianВы ведь не будете утверждать что хеш-массивы вообще
не нужны ? Да и дело не в хеш-массивах, а в общей ублюдочности
большинства С++ных библиотек. Ни шаблоны не спасают, ни стандарт в 1000
страниц. Так что данное Ваше возражение = null and void.

Проекты собираю nmake'ом чтобы иметь возможность их пересобрать где угодно. Положить буст и прочую ботву в поддиректории проекта и настроить mak файл чтобы он цеплял все что нужно. В Джаве использую Ант для сборки. По той же причине - чтобы не надо было обучать заказчика настраивать среду.

Yossarian
Сергей Ильич
Кроме того, в дельфе хешей тоже нет. И из-за отсутствия шаблонов полный аналог сделать нельзя.

Опаньки! С каких пор наличие шаблонов стало необходимым для реализации
хешей ? Что ж бедные программисты НА ЧИСТОМ С не знали об этом ? Бред.

Сам дурак.
На чистом C нельзя сделать полный аналог std::hash_map по той причине, что структура данных там будет другой.
Для того чтобы размещать в хеше данные любого типа их надо будет размещать в куче и пользоваться void* указателями на ключ и на ассоциированное значение.
При имении шаблонов значения ключей и ассоциированные значения можно размещать прямо в узле, уменьшая расход на доп. указатели и фрагментацию памяти. Кроме того, хранимые ключи и значения не надо ни от чего наследовать (от TCollectionItem например). При работе с std::hash_map не происходят виртуальные вызовы и проч. полиморфные вещи. Эстеты еще оценят type safety данного контейнера.

Yossarian
Сергей Ильич
Оттого что средний дегенерат не понимает зачем нужно множественное наследование, функционал который оно дает нужен и при его отсутствии надо искать обходные пути.
(Ну дегенератами других ругать у нас все здоровы.)
Про множественное наследование мне это опять же непонятно.
Я не знаю задач, которые невозможно было бы решить без множественного
наследования, так же я не знаю задач, которые нельзя было бы решить без
GOTO. По мне так множественное наследование - это бантик. С ним бывает
красивше, но и без него жить можно.
Если класс содержит в себе несколько разных алгоритмов, то лучше его разбить на поведения и вынести их в базовые классы. Аггрегирование тут будет работать через жопу.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33312512
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ИльичСам дурак.
На чистом C нельзя сделать полный аналог std::hash_map по той причине, что структура данных там будет другой.
Для того чтобы размещать в хеше данные любого типа их надо будет размещать в куче и пользоваться void* указателями на ключ и на ассоциированное значение.
При имении шаблонов значения ключей и ассоциированные значения можно размещать прямо в узле, уменьшая расход на доп. указатели и фрагментацию памяти. Кроме того, хранимые ключи и значения не надо ни от чего наследовать (от TCollectionItem например). При работе с std::hash_map не происходят виртуальные вызовы и проч. полиморфные вещи. Эстеты еще оценят type safety данного контейнера.
О господи.... Поверь старому любителю процедурных языков - хеш-карты делаются на С с легкостью необычайной. Всяческие темплейты и классы только усложняют исходный код. И работают оно в итоге медленнее.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33312595
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то, что шаблоны усложняют код - это ну очень сильно сказано....
Если б я писал без шаблонов... мои исходники были бы раз в 10 длиннее...
если не в сто! а уж копался бы я в этом дерьме.. до пенсии...
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33312597
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товарищи! Не все велосипеды еще построены!...
За работу, товарищи!
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33313230
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl Сергей ИльичСам дурак.
На чистом C нельзя сделать полный аналог std::hash_map по той причине, что структура данных там будет другой.

О господи.... Поверь старому любителю процедурных языков - хеш-карты делаются на С с легкостью необычайной. Всяческие темплейты и классы только усложняют исходный код. И работают оно в итоге медленнее.
Процедурные языки - это недоделанные объектно-ориентированные языки. Программисту нужны контексты вполнения функций, области видимости, зависимость реализации функции от контекста, повторное использование готового кода. Без этого программу которая сложнее "Hello world" написать невозможно. Если этого функционала на уровне языка нет, то его придется эмулипровать.

Как все это реализуется в C? Контексты (объекты) реализуются так - пишется структура. А потом пишутся функции, которые принимают указатель на эту структуру первым параметром. Та информация которая лежит в структуре - это контекст. То есть классы все равно есть в любой нетривиальной программе на C, но указатель this передается явно, а не неявно. Области видимости... Для в каждой нетривиальной программы на С у каждой функции делается префикс, чтобы избежать конфлика имен. То есть вместо ClassName::method пишем ClassNameMethod. Если не эстеты то смириться с этим можно. Дальше начинается мудизм. Зависимость реализации функции от контекста можно сделать с помошью enum и оператора switch. Можно в контекст внести указатель на функцию, но этот указатель надо где-то заполнить. Чаще всего это делается в "конструкторе" , где используется тот же switch с метками. Или же надо сделать несколько "конструкторов", генерящих разные контексты. В первом случае пользовантелю кода расширить модуль чтобы добавить в него новые фичи невозможно, во втором - можно через хак, то есть тоже почти невозможно.

Все это приводило к появлению запутанных и совершенно неподдерживаемых программ. Чтобы от этого уйти, появилось ООП.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33314552
Yossarian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Сам дурак
>Процедурные языки - это недоделанные объектно-ориентированные языки

Я думаю на этой оптимистической ноте можно закончить обсуждение.

Washington Irving
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33315907
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ИльичПроцедурные языки - это недоделанные объектно-ориентированные языки.
Хорошо сказал :)

Принцип реализации сложных структур в процедурном языке ты понимаешь, молодец. А вот то, что ты считаешь его настолько сложным - это у тебя просто недостаток опыта. Проверять, чувствую, ты не будешь, но тогда просто поверь что написать всю эту очень-страшную-систему на процедурном языке так же легко как и на объектном.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33316051
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... тем более, что люди так и делали много-много лет до появления ОО языков.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33316090
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv... тем более, что люди так и делали много-много лет до появления ОО языков.
а еще, много-много лет люди жрали мясо сырым до появления в их быту огня.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33316107
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, а нафига ООП вообще нужно?
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33316419
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот... начали с велосипедов, а закончили провокациями.

По сабжу. Лично для меня ООП - всего лишь очередная техника
программирования и отнюдь не идеология. Я могу писать эффективный
код на процедурном ЯП но зачем рвать ж.... если для ускорения
процесса разработки создан роскошный инструментаций, который
в сокращает количество кода на 10-20% (для больших систем).
Уж поверьте моему опыту. Программер ленив по определению,
и если есть возможность чего-то не написать - будьте
уверены - не напишет.

А вы говорите - зачем дескать нужно..
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33317446
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Ну а как тут без провокаций :) Некоторые предыдущие заявления настолько ...э необычны, что очень хочется у афтаров спросить об их видении назначения ООП.

Еще повеселило про шаблоны - дескать и код усложняют, да еще и медленнее все работает! Также интересное заявление о легкой эмуляции generic'ов в структурном C...

В общем топик безусловно интересный :)
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33317457
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl

авторна процедурном языке так же легко как и на объектном.

А если место процедурного языка поставить
а) ассемблер
б) машину Тьюринга
г) вычислимые функции
...

?
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33317461
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuri
...


Ага. Вы на статистику посмотрите. Нас уже 1000 человек прочитало.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33317486
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Ну а что - зато отвлекаем внимание от темы всех времен и народов Чем отличается union от enum ...
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33317841
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuriНу а что - зато отвлекаем внимание от темы всех времен и народов ...


неееее.. енто мелко....
вот тут круче...

BSWAP всего за 3988 циклов !
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33318251
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuriНу а как тут без провокаций :) Некоторые предыдущие заявления настолько ...э необычны, что очень хочется у афтаров спросить об их видении назначения ООП.
А ты спроси, мы ответим :)

funikovyuriЕще повеселило про шаблоны - дескать и код усложняют, да еще и медленнее все работает! Также интересное заявление о легкой эмуляции generic'ов в структурном C...
Использование шаблонов код действительно упрощает. Но видишь ли в чем проблема, эти шаблоны кто-то должен сначала написать. Лично мне к сожалению не удается быть чисто юзером библиотек классов и шаблонов. Мне их сочинять приходится. Так вот придумать архитектуру системы и реализовать ее на основе структур и процедур на порядок проще чем на основе шаблонов и классов.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33318595
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мадыратыр, убей топик !!
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33319000
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivМадыратыр, убей топик !!

Чего орешь ??? Нету тут модератора
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33319360
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl

Гы гы

А ты спроси, мы ответим :)
Спросил!


Так вот придумать архитектуру системы и реализовать ее на основе структур и процедур на порядок проще чем на основе шаблонов и классов.
Я думаю ясно, что это только твое мнение и многои, например я, придерживаются противоположного. Т.е. что generic'и и классы позволяют реализовать структуру и алгоритмы к ней яснее и проще чем средства структурного программирования

Ну и еще я не услышал объяснения того как шаблоны замедляют работу приложения
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33319688
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuri
Ну и еще я не услышал объяснения того как шаблоны замедляют работу приложения

Я бы сказал, что шаблоны порождают некоторое количество
избыточного бинарного кода, и как следтвие слегка увеличивают
размер библиотек. ИМХО.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33319721
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Гы

во-первых, разговор про производительность, а не про размер

во-вторых, размер в пределах единицы сборки (.dll, .exe, .bpl и т.д.) при грамотном использовании шаблонов расти не будет. Он может расти так как один и тот же код шаблона не разделяем между разными модулями, но это отдельный разговор...

в-третьих, увеличение размера это не особенность generic'ов как таковых, а только их физической реализации в С++. Например их же реализация в java этого эффекта лишена вообще
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33319774
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен. Пускай White Owl прокомментирует свою фразу о медлительности.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33321039
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я говорил что шаблоны замедляют работу? Тогда прошу прощения, описка, имелось в виду замедляют разработку. И я уже объяснял почему.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33321132
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlА я говорил что шаблоны замедляют работу? Тогда прошу прощения, описка, имелось в виду замедляют разработку. И я уже объяснял почему.

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

Посчитайте, что жизненном цикле ПО обходится дороже.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33321184
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще по теме.

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

У разработчиков одиночек или
маленьких команд все с точностью до наоборот.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33321314
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень показателен похожий топик в форуме по java. Там человек решил написать свой Base64 декодер так весь форум его отговаривал и советовал взять готовый

Я, например, тоже высказался.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33321390
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) MasterZivМадыратыр, убей топик !!

Чего орешь ??? Нету тут модератора

Знаю. Потому и ору.
...
Рейтинг: 0 / 0
Философия велосипедостроения.
    #33321391
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ бы сказал, что шаблоны порождают некоторое количество
избыточного бинарного кода, и как следтвие слегка увеличивают
размер библиотек. ИМХО.

Это все недоказуемо. Когда-то - да, когда-то - нет. Такие споры велись не раз и ни к чему ни приводили. Т.е. нельзя сказать, что шаблоны -- это медленно, или шаблоны -- это пухлые .exe.
...
Рейтинг: 0 / 0
88 сообщений из 88, показаны все 4 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Философия велосипедостроения.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]