|
|
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Знаете, вообще каждый язык несёт в себе что то, прививающее его пользователем определённые типичные подходы к решению задач. На перле народ извращается нечитабельным синтаксисом, на дельфятнике народ до посинения ищет компонентs? решающие все мыслимые и немыслимые проблемы и даже не задумывается что можно подумать и самому что то родить.. эпизодически хотя бы... Я вот работаю на С++ и на мой взгляд самое ужасное в программистах С/С++ - непреодолимая жажда велосипедостроения. Она принимает формы от неинного моздания собственных смартпойнтиеров до написания своей либы ГУИ и движка СУБД (да да - и такое на моей практике было :) ). И пусть либа страдает многими недоделками, пусть самописная база постоянно падает а написанные контейнеры нещадно жрут память и периоджически тормозят по непонятным даже автору причинам - всё равно бороться с жэтим почти бесполезно. И единственный вывод который делает автор очередного велосипеда - "да пару моментов я упустил, надо бы переписать часть кода". Конечно всё можно понять - увы модульность в С++ слабо проработана, компонентности нет и не будет, подключение сторонних библиотек порой требует хорошей квалификации и вынуждает включать в проект кучу мусорного кода... Но всё же эти усилия потом обычно с лихвой окупаются надёжно работающим приложением, сэкорномленными нервами и временем разработки. Однако большим успехами моя беспощадная и непримиримая борьба с велосипедстроителями пока не увенчалась, постоянно наталкиваюсь на кустки кода, старательными написанные коллегами, с смавмопальными потоками, строками, обёртками над виндовым оконным АПИ, самописными парсерами.. И на вопрос а почему не поискал готовое решение на меня недоумённо смотрит разработчик как на какого то дикаря и бормочет - но ведь это работает ... И что на это ответить ? :) Ну да работает... пока... а что будет завтра ? :) Господа, как перебороть эту страшную болезнь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2005, 22:13 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
ээээ.... а зачем? :) Позволь процитировать: Интеграторподключение сторонних библиотек порой требует хорошей квалификации и вынуждает включать в проект кучу мусорного кода Во по этой самой причине лично я и предпочитаю построить свой велосипед чем маяться с чужим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2005, 22:19 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
пользуйтесь готовыми велосипедами. в Бусте их полный зоопарк ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2005, 00:55 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
"Ну да работает... пока... а что будет завтра ? :)" и завтра будет работать.... и после завтра. В этом то и сила с++. Я помнится ХML парсер (облегченный) написал (за 2 дня, для тренировки мозга, 4 года назад) - говорят работает как часы и используется еще досихпор в моей старой конторе ;) Надо использовать существующие ресурсы там где необходимо и выгодно. Там где есть возможность и время написать/переписать или упростить или расширить уже придуманный кем-то код - приветствую - ибо это часть прогресса и с другой стороны также практика для рук и мозгов начинающего программиста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2005, 01:06 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
ИнтеграторНо всё же эти усилия потом обычно с лихвой окупаются надёжно работающим приложением, сэкорномленными нервами и временем разработки. ... Ну да работает... пока... а что будет завтра ? :) сторонние библиотеки - не панацея от всего. Иначе все программисты превратятся в дельфятников, рыскающих по sf.net в поисках библиотеки которая будет делать за них всю работу. Слава богу, свобода вообще включает в себя и свободу выбора, писать самому, использовать то что входит в стандарт или поискать сторонние решения. Короче, тема имеет небольшое рациональное зерно, но в целом освещает ситуацию не верно :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2005, 05:32 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
.. Жизненная ситуация. Вы приходите в новую контору (вчера токо устроился) бодрый духом и жаждущий творчества. Твой начальник шлепает на стол пачку технической документации (размером с Войну-И-Мир) и рекомендует изучить ее быстренько 2-3 дня и подхватить сопровождения. Ваш взгляд наполняется тоской и печалью. Вы листаете бесконечные листинги на процедурном С со смесью Клипера. Вы пытаетесь найти автора сего творения - но он давно уже свалил в Израиль, не оставив ни строчки комментариев. Вы пытаетесь навести порядок - но это невозможно в силу технических нюансов которые не брались в расчет во время разработки. Вы пытаетесь убедить начальника что неплохо было-бы кое-чего переписать с нуля - но натыкаетесь на стену непонимания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2005, 11:09 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
mayton[quot ] Жизненная ситуация. Вы приходите в новую контору (вчера токо устроился) бодрый духом и жаждущий творчества. Твой начальник шлепает на стол пачку технической документации (размером с Войну-И-Мир) и рекомендует изучить ее быстренько 2-3 дня и подхватить сопровождения. Ваш взгляд наполняется тоской и печалью. Вы листаете бесконечные листинги на процедурном С со смесью Клипера. Вы пытаетесь найти автора сего творения - но он давно уже свалил в Израиль, не оставив ни строчки комментариев. Вы пытаетесь навести порядок - но это невозможно в силу технических нюансов которые не брались в расчет во время разработки. Вы пытаетесь убедить начальника что неплохо было-бы кое-чего переписать с нуля - но натыкаетесь на стену непонимания. Ситуация 2: вы убеждаете шефа, что придется переписать часть кода для дальнейшей возможности раширения функционала, потом дальше/больше. В процессе рефакторинга также переписывается 80% старого кода в 5 раз более эффективным вашим. В конце концов вы добиретесь до ядра и заменяете старый код целиком. Процедурный С исчезает совсем, все четко структуированно и задокументированно. На малейшее пожелание юзера легко добавляются новые модули. Вам становится скучно случать новые запросы пользователей и делать поддержку системы. Вы сваливаете в другую контору. Приходит новый программист Вася Пупкин. Профессиональный жабист (или дельфист), по воле судьбы пишуший в с++. Прошло время, много новых технических ньюансов, проект запущен, юзера звереют хотят крови. Шеф шлепает на стол вашу доку рамерон с войну и мир и рекомендует изучить за 2-3 дня. Его взгляд наполняется тоской и печалью... У него возникаэт блестящая мысль переписать это все на яву ( дельфи ). :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2005, 12:36 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
ИнтеграторКонечно всё можно понять - увы модульность в С++ слабо проработана, компонентности нет и не будет, подключение сторонних библиотек порой требует хорошей квалификации и вынуждает включать в проект кучу мусорного кода... Чего ? Да С++ -- самый модульный в мире язык !! А дешевую компонентность свою оставь для Бейсика и Дельфы. Интегратор Господа, как перебороть эту страшную болезнь ? Дисциплиной разработки и стандартами на проектирование и кодирование. Выделением больших средств на закупки готовых библиотек и средств разработки -- библиотек дофига, но многие платные. Хотя есть еще и GNU.org ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2005, 15:47 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Тут есть еще и объективные причины - слабость стандартной библиотеки. Пока boost в стандарт не двинут -- все это будет и будет продолжаться. Взять хотябы притчу во языцах - STL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2005, 15:49 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
MasterZiv Чего ? Да С++ -- самый модульный в мире язык !! А дешевую компонентность свою оставь для Бейсика и Дельфы. Не надо пороть чушь. В С++ невозможно организовать проект так, чтобы Стартап программы инициализировал подсистемы, ничего про них не зная кроме как имя их класса в текстовом конфиге. А чтобы эти новые классы внедрить в проект, надо было бы просто положить jar файл в директорию plugins. Решение типа COM находится вне языка C++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2005, 15:21 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
fixit"Ну да работает... пока... а что будет завтра ? :)" и завтра будет работать.... и после завтра. В этом то и сила с++. Я помнится ХML парсер (облегченный) написал (за 2 дня, для тренировки мозга, 4 года назад) - говорят работает как часы и используется еще досихпор в моей старой конторе ;) Надо использовать существующие ресурсы там где необходимо и выгодно. Там где есть возможность и время написать/переписать или упростить или расширить уже придуманный кем-то код - приветствую - ибо это часть прогресса и с другой стороны также практика для рук и мозгов начинающего программиста. А вот тепепрь представьте что завтра сменит вас другой программист - как вы думает что бы он предпочёл - вникать в ваши велосипеды которыми вы так гордитесь или встретить знакомую известную либу непонимание которой можно исправить поиском инфы на просторах инета ? :) Это раз - а во вторых сколько у вас времени уйдёт на отладку/доработки написанного велосипеда.. а если их несколько ? ;) Ваш взгляд наполняется тоской и печалью. Вы листаете бесконечные листинги на процедурном С со смесью Клипера. Вы пытаетесь найти автора сего творения - но он давно уже свалил в Израиль, не оставив ни строчки комментариев Такое как раз происходит когда каждый считает своим долгом сделать свой велосипед вместо поиска стандартных решений :) Слава богу, свобода вообще включает в себя и свободу выбора, писать самому, использовать то что входит в стандарт или поискать сторонние решения. Вы мозги тренируете или являетесь участником производственного процесса ? :) Это прекрасно изучать, зарываться в исследования, извращаться с изощрёнными решениями... Но пока всё это не выливается в реальтно работающий проект который после вас и после после вас придётся поддерживать другим программистам и желательно без необходимости переписывать половину проекта :) А ваши велосипеды вероятнее всего произведут угнетающее впечатление, особенно по прошествию лет и вникать в них не каждый пожелает (и кстати правильно сделает). Чего ? Да С++ -- самый модульный в мире язык !! А дешевую компонентность свою оставь для Бейсика и Дельфы. Ндя даже и сказать нечего в ответ :) Включение исходного кожа через инклуды это компонентность ? Компонентность - это взял бинарник и засосал из него все имеющиеся в нём классы - в Сях такого нет и врятли будет. Визуально или нет - это уже детали, суть понятна. В Сях бинарного стандарта нет. Метаданных нет, вообще мало что есть к чему уже начинает привыкать общественность :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2005, 19:09 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
2Интегратор: переходите на яву и будет вам щастье... А хотя может вам лучше перейти на руководящие позиции и держаться от кода подальше. Такскать руководить производственным процессом свысока, не вникаясь в детали велосипедостроения? P.S. "Но пока всё это не выливается в реальтно работающий проект" очень часто выливается и именно в реально работающий. "А ваши велосипеды вероятнее всего произведут угнетающее впечатление, особенно по прошествию лет" По прошествию лет, живут такие проекты как скажем ядро к окнам в микрософте, ит.п. Мой велосипед порадует 20-50 чек в течении 1-3 лет и идет на свалку истории по любому. Новые технологии не дремлют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2005, 21:36 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Сергей Ильич Не надо пороть чушь. На счет этого - к автору темы. Что такое "компонент", тем более применительно к С++ - не понятно, но тем не менее, утверждается, что свойство их поддержки С++ не присуще. Сергей Ильич В С++ невозможно организовать проект так, чтобы Стартап программы инициализировал подсистемы, ничего про них не зная кроме как имя их класса в текстовом конфиге. Что такое "проект" ? В С++ нет понятия "проект". Что касается инициализации нужных мне компонет - я ее могу замечательно выполнить. Для этого не надо каких-то особых языковых средств. Сергей Ильич А чтобы эти новые классы внедрить в проект, надо было бы просто положить jar файл в директорию plugins. Мне, чтобы внедрить новые классы в проект, достаточно положить их заголовки в дирректорию include и библиотеки в дирректорию lib. С точностью до названия конкретных дирректориев я разницы не вижу. Сергей Ильич Решение типа COM находится вне языка C++. И слава Богу. Микрософт все же поумнее Борланда и Сана будет, которые все в одну кучу мешают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2005, 22:33 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Интегратор Ндя даже и сказать нечего в ответ :) Дык и правильно, объективно тут нечего говорить. Потому что С и за ним С++ был модульным, когда остальных приводимых здесь языков еще и в планах не значилось. Интегратор Включение исходного кода через инклуды это компонентность ? Я что-то не понял, какой исходный код в Include-е. Не ну конечно, если вы туда исходный код кладете -- тогда да, это клиника, это не лечат. Разговаривать не о чем. Интегратор Компонентность - это взял бинарник и засосал из него все имеющиеся в нём классы - в Сях такого нет и врятли будет. Визуально или нет - это уже детали, суть понятна. В Сях бинарного стандарта нет. Чего-то я не понял. А где есть ? В Дельфе ? В Бейсике ? В Java ? Немногим дальше оно там все ушло от того, что есть в C/C++. Вам бинарки не хватает ? Возмите precompiled header -- будет вам бинарка. Ей-богу, возможности создавать компоненты на любом из этих языков наличие или отсутствие этого дела ни мешает, ни помогает. Тут больше надо думать о том, насколько оно будет повторно исползуемым и на сколько не будет зависеть от окружения, т.е. может потенциально быть вставленном во что-то, что его использовать собирается. Тут естественно у всех трех поделок (Дельфи/Бейсик/Java), заточенных под конкретику и являющихся вещами в себе сто очков вперед супротив универсального языка C++, в котором, естественно, например, нет работы с TCP/IP, потому что не во всех средах оно есть, нет работы с базами данных, потому что что такое "база данных" - не понятно, если не предполагать, что база данных, это то, что из нее решила сделать Борланд ну и так далее ... При чем здесь бедный язык С++ скажите ? Чем он вам не модульный ? Да, тяжелый, неповоротливый, ему надо подчас кучу окружения для применения создать, но уж не модульным его назвать нельзя. Вот кто уж немодульный, так это Паскаль (только не путайте его с ObjectPascal от Borland). Вот там вся программа должна быт по определению в одном файле. А С и С++ очень даже модульные языки. Модульнее не бывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2005, 22:51 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Не, еще прочитал, еще больше не понимаю. ЧТо имеется в виду ? Интегратор Включение исходного кожа через инклуды это компонентность ? Так а чего, в ObjectPascal что ли лучше ? А, там не весь исходник "включается", а только до слова implementation, дальше типа компилятор не читает. Так ? А в Жабе , да там не только исходник , там без реально выполнимого кода ты компонент не подключишь. Зачем бы он мне при сборке был нужен ? Чем это от исходников отличается ? Тем что файл в редакторе не прочитаешь ? Интегратор Метаданных нет, вообще мало что есть к чему уже начинает привыкать общественность :). Так где они есть ? В Java ? Нет, нету. Там тот же исходник. В Делфи ? Нет, там тоже их нет. Есть только закодированный .pas. Вот в Basic они есть реально, точнее, они в COM есть. Или в CORBA, если это больше нравиться. Так оно все и для С++ применимо --пожалуйста, пользуйтесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2005, 23:01 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
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# ?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2005, 23:12 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Сергей Ильич В Java тоже нет. Но как-то мы называем ту херню, которая у нас в данный момент пишется? Не понял прикол. Ну вот и я не понял, ты про проекты начал. Сергей Ильич Программа про эти новые классы не узнает. Надо будет менять код. Меня интересует, как добавить в программу новые фичи не пересобирая проект. В Джаве элементарно можно сделать например абстрактную фабрику, которая бы порождала инстансы классов совершенно не известных на момент сборки проекта, не выходя за рамки языка. Тебя научить что ли как фабрику классов на C++ писать ? Уверяю тебя, это возможно, и даже появилось это все изначально не в Java , а задолго до его появления в других языках, С++, smalltalk. На счет "не выходя за рамки языка" -- Java -- это не язык, точнее не только язык. Поэтому на нем легко писать, не выходя за его рамки. С++ тут более честен, он явно декларирует, где кончается язык и начинается операционка. Сергей Ильич Зачем же они сделали .NET и C# ?! Ну сделали и сделали. При чем здесь это-то ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2005, 23:33 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Я так понимаю, что вопрос был о том, почему люди не исрпользуют готовые библиотеки или классы. Естественно, причин может быть множество. На мой взгляд, главные из них: 1. Не хотят платить деньги. А бесплатные и есть бесплатные, у них и качество бесплатное. Что уж говорить, если STL от MS идет с багами, то чего ждать от Васи Пупкина. 2. Не достаточно возможностей у доступной библиотеки или класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 04:11 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
MasterZiv Сергей ИльичВ Джаве элементарно можно сделать например абстрактную фабрику, которая бы порождала инстансы классов совершенно не известных на момент сборки проекта, не выходя за рамки языка. Тебя научить что ли как фабрику классов на C++ писать ? Уверяю тебя, это возможно, и даже появилось это все изначально не в Java , а задолго до его появления в других языках, С++, smalltalk. Меня интересовало, как добавить в проект новые классы, чтобы абстрактная фабрика о них узнала без пересборки проекта. Добавить в проект новые классы можно, например, положив dll в определенную директорию. Допустим, мы в из dll экспортнем функцию LoadPlugin, которая вернет нам в виде строки символов идентификатор фичи которую она реализует и vTable. Но это получится велосипед. И это будет довольно хрупкое решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 10:26 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
All ... Как известно, в С++ напрочь отсутствуют обьекты многозадачности (на уровне ЯП) а также много вкусностей вроде рефлексии бинарников и т.п. Профессионалы С++ могут по этому поводу сколько угодно растопыривать пальцы, однако все их решеня являют частные случаи и не способствуют прогрессу в целом. Большую головную боль доставляют плавающие типы данных вроде int и float. Взгляните на windows.h и вы найдете массу директив препроцессора у которыйх одна единственная цель - закрывать дырки в несоответсвтвиях типов. Расслоение проджектов на хедероы и CPP-шники давно уже всем надоело. Этот бонус был интересен для бородатых компиллеров, которым катастрофически не хватало оперативки, и для сред разработки, не поддерживающих рефлексию. Ваш покорный слуга рассматривает C++ как старого коня, который как известно борозды не портит, однако c завистью поглядывает на Digital Mars D И проч. решения, которые в будущем, возможно вытеснят C++ с арены системных разработок. Тогда, ИМХО, коня можно будет без жалости пристрелить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 10:27 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
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 :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 10:47 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
maytonВаш покорный слуга рассматривает C++ как старого коня, который как известно борозды не портит, однако c завистью поглядывает на Digital Mars D И проч. решения, которые в будущем, возможно вытеснят C++ с арены системных разработок. Тогда, ИМХО, коня можно будет без жалости пристрелить. Обратите внимание, что из всех честных компиляторов Microsoft оставил ТОЛЬКО C++. Надо же им самим на чем-то работать. Остальные "языки" насильственно опущены до уровне Васика, т.е. ниже плинтуса и генерят исключительно .Net код Старый конь может оказаться несколько жизнеспособнее чем Вы думаете ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 11:39 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Обратите внимание, что из всех честных компиляторов Microsoft оставил ТОЛЬКО C++. Надо же им самим на чем-то работать. Остальные "языки" насильственно опущены до уровне Васика, т.е. ниже плинтуса и генерят исключительно .Net код Старый конь может оказаться несколько жизнеспособнее чем Вы думаете Добавлю. Остальные языки насильственно переведены в прикладную сферу. Никому не нужен VB, генерирующий нативный код. Зато для бухгалтера-программиста средней руки, способность быстро внедрять .Net решения - голубая мечта детства. По поводу старого коня... ну что-ж. Возможно вы и правы. Отправить на свалку собственно компиллер трудно, но осуществимо. Особенно, если это будет политика большого софтверного гиганта (вроде IBM, MS или SUN). Гораздо труднее сломать психологию средненького программера-обывателя который душой прикипел к С++ и в частности к огромной свалке свободно-распространяемого сорса. Но я надеюсь, что здравый смысл победит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 12:05 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
maytonПо поводу старого коня... ну что-ж. Возможно вы и правы. Отправить на свалку собственно компиллер трудно, но осуществимо. Гмм и на чем писать будем ? Программирование не ограничивается прикладухой. И M$ это понимают гораздо лучше чем многие другие. Закрыть от общественности и оставить для внутренних нужд, это могут, но черевато. Общественность вывернется и будет хуже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 12:14 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Гмм и на чем писать будем ? Программирование не ограничивается прикладухой. И M$ это понимают гораздо лучше чем многие другие. Закрыть от общественности и оставить для внутренних нужд, это могут, но черевато. Общественность вывернется и будет хуже. Это не суть важно, на чем будем писать. Пускай это будет даже очередная реинкарнация C++, учитывающая современные требования. Важнее привить для new-generation разработчиков правильный образ мышления и стиль написания. Ссылки по теме: Digital Mars D Zonnon ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 12:35 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Можете считать меня старым перечником, но New Generation (у нас в Казани) пока не производит на меня сильного впечатления, но это уже похоже оффтопик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 12:59 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Что касается к примеру сборки мусора, так мы с ей нахлебались в текущем проекте. Пока не вынесли используемую .Net сборку в Out Process COM-сервер, добиться приемлемой производительности не удавалось. Именно из-за сборщика мусора. Хотя сборка мусора в нашем проекте как раз нафих была не нужна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 13:01 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Что касается к примеру сборки мусора, так мы с ей нахлебались в текущем проекте. Пока не вынесли используемую .Net сборку в Out Process COM-сервер, добиться приемлемой производительности не удавалось. Именно из-за сборщика мусора. Хотя сборка мусора в нашем проекте как раз нафих была не нужна. Если вы правильно выбрали структуру данных то проблем со сборкой мусора быть не должно. Кстати, что за логику вам пришлось выносить в Out Process COM-сервер, если не секрет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 13:08 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
А вы зачем инетерсуетесь ? Вы случайно не из мылиции ??? Не секрет, вынесли интерфейс к тарификатору, писанному ДРУГОЙ конторой. Наш RADIUS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 13:23 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Кстати, по поводу уборщика мусора: появилась Realtime подсистема для Джавы. Там есть кучи в которые уборщик мусора никогда не заходит. Куча для Immortal объектов и еще одна для refcounted объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 14:54 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
MasterZivЧего ? Да С++ -- самый модульный в мире язык !! А дешевую компонентность свою оставь для Бейсика и Дельфы. На С я могу просто делать ошибки, на С++ я могу их наследовать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 18:15 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Сергей Ильич Допустим, мы в из dll экспортнем функцию LoadPlugin, которая вернет нам в виде строки символов идентификатор фичи которую она реализует и vTable. Но это получится велосипед. И это будет довольно хрупкое решение. Нет, это будет не велосипед, а танк !! Трактор !!! Который будет пахать. И таких трактаров уже знаешь сколько !! И все пашут к нашей радости !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 20:15 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
mayton Тогда, ИМХО, коня можно будет без жалости пристрелить. Да когда это еще будет !! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 20:17 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
maytonЕсли вы правильно выбрали структуру данных то проблем со сборкой мусора быть не должно. Кстати, что за логику вам пришлось выносить в Out Process COM-сервер, если не секрет? В обчем почитал вчера книжку и выяснил в чем дело :) Начиная работу сборщик мусора ПРИОСТАНАВЛИВАЕТ ВСЕ ПОТОКИ. Для нашего приложения это реально плохо, поскольку за это время мимо кассы успевает пролететь порядка 5 пакетов (требования по времени отклика и пропускной способности очень жесткие). Решение с выносом .Net кода в OutProcess было идеальным, там оно никому не гадит. Попутно ушла и другая байда, до выноса приложение периодически висло под отладчиком (без отладчика все работало как пулемет), перекопали все, но причину не нашли :( После выноса .Net-а это ушло и больше не появлялось :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 09:08 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) maytonЕсли вы правильно выбрали структуру данных то проблем со сборкой мусора быть не должно. Кстати, что за логику вам пришлось выносить в Out Process COM-сервер, если не секрет? В обчем почитал вчера книжку и выяснил в чем дело :) Начиная работу сборщик мусора ПРИОСТАНАВЛИВАЕТ ВСЕ ПОТОКИ. Для нашего приложения это реально плохо, поскольку за это время мимо кассы успевает пролететь порядка 5 пакетов (требования по времени отклика и пропускной способности очень жесткие). Ну не знаю как в .NET, в Java можно сделать так чтобы уборщик мусора работал в фоновом режиме. Правда, в обычном режиме он дефрагментирует кучу, поэтому оператор new в Java очень быстрый - он просто кладет объект сверху, прибавляя размер объекта к указателю на топ кучи. При дефрагментации воздух из кучи выдавливается, и объекты проваливаются вниз. При работе в фоновом режиме оператор new пользуется списками свободной памяти и работает помедленнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 09:37 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Что-то от темы малость народ отъехал. Отвечу по исходному топику. ПОТОМУ ЧТО ГОТОВЫЕ РЕШЕНИЯ - КОШМАРНЫЙ ОТСТОЙ И ГОЛОВНАЯ БОЛЬ. Пример. У Микрософта в VC6.0 STL нету хеш-контейнеров. Ну нету. Не написали они. Беру STLPORT. Трачу полдня на его подключение. Трачу еще месяц (!) на то, чтобы посредством переписки по e-mail установить и сконфигурировать то же самое у заказчика. Встает проблема перехода на дотнет. И что же ? STLPORT под дотнетом НЕ-РА-БО-ТА-ЕТ ! Скажите, я что - за месяц свою реализацию хеш-контейнеров не напишу ? Чтобы еще и под дотнет работало ? Дальше-хуже. Понадобился мне ОДИН пакет из Boost. Повторяю - ОДИН. Ставить приходится всю бандуру. Ставится она криво, и компилироваться не хочет. Покрутил-покрутил и выкинул. Скажите, у кого не было проблем с установкой сторонних пакетов под С++ и я скажу кто ничего серьезного не писал. А вот под Дельфи - воткнул и оно работает. Все ! Вот поэтому дельфист первым делом ищет готовые решения, а С++ник пишет все сам. Такой вот Коде Реюзе получается. Washington Irving ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 10:36 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
YossarianЧто-то от темы малость народ отъехал. Отвечу по исходному топику. ПОТОМУ ЧТО ГОТОВЫЕ РЕШЕНИЯ - КОШМАРНЫЙ ОТСТОЙ И ГОЛОВНАЯ БОЛЬ. Пример. У Микрософта в VC6.0 STL нету хеш-контейнеров. Ну нету. Не написали они. Беру STLPORT. Трачу полдня на его подключение. Трачу еще месяц (!) на то, чтобы посредством переписки по e-mail установить и сконфигурировать то же самое у заказчика. Встает проблема перехода на дотнет. И что же ? STLPORT под дотнетом НЕ-РА-БО-ТА-ЕТ ! Скажите, я что - за месяц свою реализацию хеш-контейнеров не напишу ? Чтобы еще и под дотнет работало ? Дальше-хуже. Понадобился мне ОДИН пакет из Boost. Повторяю - ОДИН. Ставить приходится всю бандуру. Ставится она криво, и компилироваться не хочет. Покрутил-покрутил и выкинул. Скажите, у кого не было проблем с установкой сторонних пакетов под С++ и я скажу кто ничего серьезного не писал. А вот под Дельфи - воткнул и оно работает. Все ! Вот поэтому дельфист первым делом ищет готовые решения, а С++ник пишет все сам. Такой вот Коде Реюзе получается. Washington Irving Абсолютно согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 10:58 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) В обчем почитал вчера книжку и выяснил в чем дело :) Начиная работу сборщик мусора ПРИОСТАНАВЛИВАЕТ ВСЕ ПОТОКИ. Для нашего приложения это реально плохо, поскольку за это время мимо кассы успевает пролететь порядка 5 пакетов (требования по времени отклика и пропускной способности очень жесткие). Решение с выносом .Net кода в OutProcess было идеальным, там оно никому не гадит. Попутно ушла и другая байда, до выноса приложение периодически висло под отладчиком (без отладчика все работало как пулемет), перекопали все, но причину не нашли :( После выноса .Net-а это ушло и больше не появлялось :) Я идеологически поддерживаю раздел нативного и кросс-переносимого кода в том случае, если речь идет о distributed-взаимодействии. В вашем- же случае вы теряете преимущество .net перед другими технологиями. По поводу сбора мусора. У насбыла обратная ситуация, когда мощная система эл. документооборота, написаная на C++ (с использованием умных указателей) подтормаживала систему. Миграция кода под С#.net не изменила саму проблему сбора мусора, однако позволила смягчить режим работы авто-поинтеров и сделать его отложенным. Субьективно система заработала на 20% быстрее за счет более благоприятного распределения операций free() во времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 11:14 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
maytonЯ идеологически поддерживаю раздел нативного и кросс-переносимого кода в том случае, если речь идет о distributed-взаимодействии. В вашем- же случае вы теряете преимущество .net перед другими технологиями. Нам и не нужно было "преимущество" Нам нужно было прикрутить НАВЯЗАННЫЙ нам .Net код к своему проекту. За свою часть мы отвечаем головой, с чужим кодом все сложнее :( Вынос .Net ПОЛНОСТЬЮ решил проблему, тема закрыта :) IMHO .Net не предназначен для разработки приложений с гарантированным временем отклика и все "преимущества" при таком раскладе идут лесом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 11:19 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
авторIMHO .Net не предназначен для разработки приложений с гарантированным временем отклика и все "преимущества" при таком раскладе идут лесом. Просвети фразу.... т.е. .Net не предназначен для разработки приложений на одной машине - (не распределённое/DCOM)? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 11:28 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) IMHO .Net не предназначен для разработки приложений с гарантированным временем отклика и все "преимущества" при таком раскладе идут лесом. Здесь согласен. Более того. Я неоднократно говорил в форуме о том, что dotnet не годится для разработки ядер систем и движков БД. Однако на ниве прикладных разработок бизнес-уровня он имеет место. Гарантированное время отклика не могут гарантировать даже ОС, которые мы использует повсеместно. Ни линейка WindowsNT ни семейство *nix-ов по определению не являются осями реального времени. Такова специфика их мультизадачности. Реально только QNX и еще ряд систем (не помню названия к сожалению) попадают в этот сектор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 11:39 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Petro123 авторIMHO .Net не предназначен для разработки приложений с гарантированным временем отклика и все "преимущества" при таком раскладе идут лесом. Просвети фразу.... т.е. .Net не предназначен для разработки приложений на одной машине - (не распределённое/DCOM)? Вы читать умеете ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 11:51 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
mayton Gluk (Kazan) IMHO .Net не предназначен для разработки приложений с гарантированным временем отклика и все "преимущества" при таком раскладе идут лесом. Здесь согласен. Более того. Я неоднократно говорил в форуме о том, что dotnet не годится для разработки ядер систем и движков БД. Однако на ниве прикладных разработок бизнес-уровня он имеет место. Гарантированное время отклика не могут гарантировать даже ОС, которые мы использует повсеместно. Ни линейка WindowsNT ни семейство *nix-ов по определению не являются осями реального времени. Такова специфика их мультизадачности. Реально только QNX и еще ряд систем (не помню названия к сожалению) попадают в этот сектор. Ну ГАРАНТИРОВАННОГО времени отклика у нас на Windows разумеется нет, но подобное поведение .Net непренужденно завалило бы нам сдачу проекта. Периодические потери 5-10 пакетов, это не то чего ждут от RADIUS. Пакеты приходят с интервалом 1мс и в это время мы должны были кровь из носу уложиться. И уложились ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 11:54 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Разумеется 1мс - пиковая нагрузка, нормальная ~20 мс. Нам нужна была система с настолько гарантированным временем отклика, насколько это возможно на Windows и с хорошей пропускной способностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 12:07 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
YossarianЧто-то от темы малость народ отъехал. Отвечу по исходному топику. ПОТОМУ ЧТО ГОТОВЫЕ РЕШЕНИЯ - КОШМАРНЫЙ ОТСТОЙ И ГОЛОВНАЯ БОЛЬ. Пример. У Микрософта в VC6.0 STL нету хеш-контейнеров. Ну нету. Не написали они. Беру STLPORT. Трачу полдня на его подключение. Трачу еще месяц (!) на то, чтобы посредством переписки по e-mail установить и сконфигурировать то же самое у заказчика. Дык Вы заказчику отдаете инсталлятор с бинарью или же заставляете его все это собирать? Можно вместо ассоциативных массивов использовать наследник от std::vector< std::pair<KeyType,ValueType> > который при вставке его сортирует по ключу. А искать - бинарным поиском. Работать будет быстрее хеш-массива и фрагментировать кучу поменьше. Кроме того, в дельфе хешей тоже нет. И из-за отсутствия шаблонов полный аналог сделать нельзя. hash_map не входит в стандарт С++, а вам об этом было известно. Yossarian Ставить приходится всю бандуру. Ставится она криво, и компилироваться не хочет. Покрутил-покрутил и выкинул. Ну, вообще я сам с буст дело не имею, так что добавить нечего. Yossarian Скажите, у кого не было проблем с установкой сторонних пакетов под С++ и я скажу кто ничего серьезного не писал. А вот под Дельфи - воткнул и оно работает. Все ! Вот поэтому дельфист первым делом ищет готовые решения, а С++ник пишет все сам. Такой вот Коде Реюзе получается. Я, напимер, никаких велоспедов не изобретаю и не пишу тривиальных вещй сам. Не то чтобы я фанат С++ (скорее наоборот), но в C++ я имею те средства которые мне нужны. Оттого что средний дегенерат не понимает зачем нужно множественное наследование, функционал который оно дает нужен и при его отсутствии надо искать обходные пути. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 12:09 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Вместо Оттого что надо было написать несмотря на то что ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 12:11 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Сергей Ильич Можно вместо ассоциативных массивов использовать наследник от std::vector< std::pair<KeyType,ValueType> > который при вставке его сортирует по ключу. А искать - бинарным поиском. Работать будет быстрее хеш-массива и фрагментировать кучу поменьше. Хм.. не согласен с фразой работать будет быстрее хеш-массива . Имеются в виду частные случаи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 12:31 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Petro123 авторIMHO .Net не предназначен для разработки приложений с гарантированным временем отклика и все "преимущества" при таком раскладе идут лесом. Просвети фразу.... т.е. .Net не предназначен для разработки приложений на одной машине - (не распределённое/DCOM)? Вы читать умеете ? ))) я скорее практик чем теоретик - теории не хватает, к сожалению. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 12:39 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Я нервно реагирую, когда мне пытаются приписать то чего я НЕ ГОВОРИЛ, делая какие-то запредельные логические выводы. Я то-же практик. P.S. И Вам того-же P.P.S. Вдвойне ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 13:09 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
mayton Сергей Ильич Можно вместо ассоциативных массивов использовать наследник от std::vector< std::pair<KeyType,ValueType> > который при вставке его сортирует по ключу. А искать - бинарным поиском. Работать будет быстрее хеш-массива и фрагментировать кучу поменьше. Хм.. не согласен с фразой работать будет быстрее хеш-массива . Имеются в виду частные случаи? К сожалению, я не сталкивался с задачами где негарантированное константное время хоть как-то по перформансу опережало гарантированное логарифмическое. Может быть, в этом мой пробел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 14:42 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Сергей Ильич К сожалению, я не сталкивался с задачами где негарантированное константное время хоть как-то по перформансу опережало гарантированное логарифмическое. Может быть, в этом мой пробел. Практически, можно регулировать производительность хеша, коэффициентом загрузки. При малом количестве промахов можно довести отклик до константы. Правда это удобно для хешей которые не растут. В случае роста, реорганизация потребует гораздо большего времени чем расширение Б-дерева или Пирамиды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 15:42 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Petro123...Вот поэтому дельфист первым делом ищет готовые решения, а С++ник пишет все сам. Такой вот Коде Реюзе получается. Washington Irving Абсолютно согласен.[/quot] И я подпишусь. Именно так все и обстоит. А беда вся из-за бедности стандартной библиотеки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 23:19 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
mayton Сергей Ильич К сожалению, я не сталкивался с задачами где негарантированное константное время хоть как-то по перформансу опережало гарантированное логарифмическое. Может быть, в этом мой пробел. Практически, можно регулировать производительность хеша, коэффициентом загрузки. При малом количестве промахов можно довести отклик до константы. Правда это удобно для хешей которые не растут. В случае роста, реорганизация потребует гораздо большего времени чем расширение Б-дерева или Пирамиды. Время доступа к элементу хэш-таблицы в теории не зависит от N, т.е. практически константа. Правда это статистически и при условии, что хэш-функция хорошая. Поэтому это - самый быстрый из способов поиска, но он требует большого объема памяти и требователен к хэш-функции, которая не может быть универсальной и хорошей одновременно. Но логарифмического бинарного поиска она всяко "круче", но не всегда , естественно. На счет переполнения - не согласен, способов обработки переполнения много, и не все они требуют какого-то времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 23:34 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Сергей Ильич Yossarian ПОТОМУ ЧТО ГОТОВЫЕ РЕШЕНИЯ - КОШМАРНЫЙ ОТСТОЙ И ГОЛОВНАЯ БОЛЬ. Дык Вы заказчику отдаете инсталлятор с бинарью или же заставляете его все это собирать? Можно вместо ассоциативных массивов использовать наследник от std::vector< std::pair<KeyType,ValueType> > который при вставке его сортирует по ключу. А искать - бинарным поиском. Работать будет быстрее хеш-массива и фрагментировать кучу поменьше. Дык, Сергей Ильич, давайте не будем обсуждать мои взаимоотношения с заказчиком и конкретные технические решения, сделанные при решении конкретной задачи. Вы ведь не будете утверждать что хеш-массивы вообще не нужны ? Да и дело не в хеш-массивах, а в общей ублюдочности большинства С++ных библиотек. Ни шаблоны не спасают, ни стандарт в 1000 страниц. Так что данное Ваше возражение = null and void. Сергей Ильич Кроме того, в дельфе хешей тоже нет. И из-за отсутствия шаблонов полный аналог сделать нельзя. Опаньки! С каких пор наличие шаблонов стало необходимым для реализации хешей ? Что ж бедные программисты НА ЧИСТОМ С не знали об этом ? Бред. Сергей Ильич Я, напимер, никаких велоспедов не изобретаю и не пишу тривиальных вещй сам. Не то чтобы я фанат С++ (скорее наоборот), но в C++ я имею те средства которые мне нужны. Оттого что средний дегенерат не понимает зачем нужно множественное наследование, функционал который оно дает нужен и при его отсутствии надо искать обходные пути. (Ну дегенератами других ругать у нас все здоровы.) Про множественное наследование мне это опять же непонятно. Я не знаю задач, которые невозможно было бы решить без множественного наследования, так же я не знаю задач, которые нельзя было бы решить без GOTO. По мне так множественное наследование - это бантик. С ним бывает красивше, но и без него жить можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2005, 12:49 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
YossarianПо мне так множественное наследование - это бантик. С ним бывает красивше, но и без него жить можно. Можно, но недолго и мучительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2005, 13:02 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
MasterZiv YossarianПо мне так множественное наследование - это бантик. С ним бывает красивше, но и без него жить можно. Можно, но недолго и мучительно. Нееее... наоборот. С множественным наследованием жить тяжко. А без него очень просто и легко. Вообще, считаю множественное наследование злом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2005, 18:45 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Ты просто не умеешь его готовить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 00:17 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
MasterZivТы просто не умеешь его готовить... Поддерживаю :) Абстрактные классы + множественное наследование - те же интерфейсы в Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 10:12 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
gardenman MasterZivТы просто не умеешь его готовить... Поддерживаю :) Абстрактные классы + множественное наследование - те же интерфейсы в Java. нифига себе! А если так? Абстрактные классы + множественное наследование - те же интерфейсы в Delphi . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 14:26 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
YossarianВы ведь не будете утверждать что хеш-массивы вообще не нужны ? Да и дело не в хеш-массивах, а в общей ублюдочности большинства С++ных библиотек. Ни шаблоны не спасают, ни стандарт в 1000 страниц. Так что данное Ваше возражение = null and void. Проекты собираю nmake'ом чтобы иметь возможность их пересобрать где угодно. Положить буст и прочую ботву в поддиректории проекта и настроить mak файл чтобы он цеплял все что нужно. В Джаве использую Ант для сборки. По той же причине - чтобы не надо было обучать заказчика настраивать среду. Yossarian Сергей Ильич Кроме того, в дельфе хешей тоже нет. И из-за отсутствия шаблонов полный аналог сделать нельзя. Опаньки! С каких пор наличие шаблонов стало необходимым для реализации хешей ? Что ж бедные программисты НА ЧИСТОМ С не знали об этом ? Бред. Сам дурак. На чистом C нельзя сделать полный аналог std::hash_map по той причине, что структура данных там будет другой. Для того чтобы размещать в хеше данные любого типа их надо будет размещать в куче и пользоваться void* указателями на ключ и на ассоциированное значение. При имении шаблонов значения ключей и ассоциированные значения можно размещать прямо в узле, уменьшая расход на доп. указатели и фрагментацию памяти. Кроме того, хранимые ключи и значения не надо ни от чего наследовать (от TCollectionItem например). При работе с std::hash_map не происходят виртуальные вызовы и проч. полиморфные вещи. Эстеты еще оценят type safety данного контейнера. Yossarian Сергей Ильич Оттого что средний дегенерат не понимает зачем нужно множественное наследование, функционал который оно дает нужен и при его отсутствии надо искать обходные пути. (Ну дегенератами других ругать у нас все здоровы.) Про множественное наследование мне это опять же непонятно. Я не знаю задач, которые невозможно было бы решить без множественного наследования, так же я не знаю задач, которые нельзя было бы решить без GOTO. По мне так множественное наследование - это бантик. С ним бывает красивше, но и без него жить можно. Если класс содержит в себе несколько разных алгоритмов, то лучше его разбить на поведения и вынести их в базовые классы. Аггрегирование тут будет работать через жопу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 17:16 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Сергей ИльичСам дурак. На чистом C нельзя сделать полный аналог std::hash_map по той причине, что структура данных там будет другой. Для того чтобы размещать в хеше данные любого типа их надо будет размещать в куче и пользоваться void* указателями на ключ и на ассоциированное значение. При имении шаблонов значения ключей и ассоциированные значения можно размещать прямо в узле, уменьшая расход на доп. указатели и фрагментацию памяти. Кроме того, хранимые ключи и значения не надо ни от чего наследовать (от TCollectionItem например). При работе с std::hash_map не происходят виртуальные вызовы и проч. полиморфные вещи. Эстеты еще оценят type safety данного контейнера. О господи.... Поверь старому любителю процедурных языков - хеш-карты делаются на С с легкостью необычайной. Всяческие темплейты и классы только усложняют исходный код. И работают оно в итоге медленнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 18:02 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
то, что шаблоны усложняют код - это ну очень сильно сказано.... Если б я писал без шаблонов... мои исходники были бы раз в 10 длиннее... если не в сто! а уж копался бы я в этом дерьме.. до пенсии... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 18:43 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Товарищи! Не все велосипеды еще построены!... За работу, товарищи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 18:44 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
White Owl Сергей ИльичСам дурак. На чистом C нельзя сделать полный аналог std::hash_map по той причине, что структура данных там будет другой. О господи.... Поверь старому любителю процедурных языков - хеш-карты делаются на С с легкостью необычайной. Всяческие темплейты и классы только усложняют исходный код. И работают оно в итоге медленнее. Процедурные языки - это недоделанные объектно-ориентированные языки. Программисту нужны контексты вполнения функций, области видимости, зависимость реализации функции от контекста, повторное использование готового кода. Без этого программу которая сложнее "Hello world" написать невозможно. Если этого функционала на уровне языка нет, то его придется эмулипровать. Как все это реализуется в C? Контексты (объекты) реализуются так - пишется структура. А потом пишутся функции, которые принимают указатель на эту структуру первым параметром. Та информация которая лежит в структуре - это контекст. То есть классы все равно есть в любой нетривиальной программе на C, но указатель this передается явно, а не неявно. Области видимости... Для в каждой нетривиальной программы на С у каждой функции делается префикс, чтобы избежать конфлика имен. То есть вместо ClassName::method пишем ClassNameMethod. Если не эстеты то смириться с этим можно. Дальше начинается мудизм. Зависимость реализации функции от контекста можно сделать с помошью enum и оператора switch. Можно в контекст внести указатель на функцию, но этот указатель надо где-то заполнить. Чаще всего это делается в "конструкторе" , где используется тот же switch с метками. Или же надо сделать несколько "конструкторов", генерящих разные контексты. В первом случае пользовантелю кода расширить модуль чтобы добавить в него новые фичи невозможно, во втором - можно через хак, то есть тоже почти невозможно. Все это приводило к появлению запутанных и совершенно неподдерживаемых программ. Чтобы от этого уйти, появилось ООП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2005, 21:06 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
>Сам дурак >Процедурные языки - это недоделанные объектно-ориентированные языки Я думаю на этой оптимистической ноте можно закончить обсуждение. Washington Irving ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 12:04 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Сергей ИльичПроцедурные языки - это недоделанные объектно-ориентированные языки. Хорошо сказал :) Принцип реализации сложных структур в процедурном языке ты понимаешь, молодец. А вот то, что ты считаешь его настолько сложным - это у тебя просто недостаток опыта. Проверять, чувствую, ты не будешь, но тогда просто поверь что написать всю эту очень-страшную-систему на процедурном языке так же легко как и на объектном. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 18:58 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
... тем более, что люди так и делали много-много лет до появления ОО языков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 21:20 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
MasterZiv... тем более, что люди так и делали много-много лет до появления ОО языков. а еще, много-много лет люди жрали мясо сырым до появления в их быту огня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 22:25 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Интересно, а нафига ООП вообще нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 23:02 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Ну вот... начали с велосипедов, а закончили провокациями. По сабжу. Лично для меня ООП - всего лишь очередная техника программирования и отнюдь не идеология. Я могу писать эффективный код на процедурном ЯП но зачем рвать ж.... если для ускорения процесса разработки создан роскошный инструментаций, который в сокращает количество кода на 10-20% (для больших систем). Уж поверьте моему опыту. Программер ленив по определению, и если есть возможность чего-то не написать - будьте уверены - не напишет. А вы говорите - зачем дескать нужно.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 09:39 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
mayton Ну а как тут без провокаций :) Некоторые предыдущие заявления настолько ...э необычны, что очень хочется у афтаров спросить об их видении назначения ООП. Еще повеселило про шаблоны - дескать и код усложняют, да еще и медленнее все работает! Также интересное заявление о легкой эмуляции generic'ов в структурном C... В общем топик безусловно интересный :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 14:06 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
White Owl авторна процедурном языке так же легко как и на объектном. А если место процедурного языка поставить а) ассемблер б) машину Тьюринга г) вычислимые функции ... ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 14:08 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
funikovyuri ... Ага. Вы на статистику посмотрите. Нас уже 1000 человек прочитало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 14:09 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
mayton Ну а что - зато отвлекаем внимание от темы всех времен и народов Чем отличается union от enum ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 14:17 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
funikovyuriНу а что - зато отвлекаем внимание от темы всех времен и народов ... неееее.. енто мелко.... вот тут круче... BSWAP всего за 3988 циклов ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 15:57 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
funikovyuriНу а как тут без провокаций :) Некоторые предыдущие заявления настолько ...э необычны, что очень хочется у афтаров спросить об их видении назначения ООП. А ты спроси, мы ответим :) funikovyuriЕще повеселило про шаблоны - дескать и код усложняют, да еще и медленнее все работает! Также интересное заявление о легкой эмуляции generic'ов в структурном C... Использование шаблонов код действительно упрощает. Но видишь ли в чем проблема, эти шаблоны кто-то должен сначала написать. Лично мне к сожалению не удается быть чисто юзером библиотек классов и шаблонов. Мне их сочинять приходится. Так вот придумать архитектуру системы и реализовать ее на основе структур и процедур на порядок проще чем на основе шаблонов и классов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 18:26 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Мадыратыр, убей топик !! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 23:47 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
MasterZivМадыратыр, убей топик !! Чего орешь ??? Нету тут модератора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 10:01 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
White Owl Гы гы А ты спроси, мы ответим :) Спросил! Так вот придумать архитектуру системы и реализовать ее на основе структур и процедур на порядок проще чем на основе шаблонов и классов. Я думаю ясно, что это только твое мнение и многои, например я, придерживаются противоположного. Т.е. что generic'и и классы позволяют реализовать структуру и алгоритмы к ней яснее и проще чем средства структурного программирования Ну и еще я не услышал объяснения того как шаблоны замедляют работу приложения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 11:44 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
funikovyuri Ну и еще я не услышал объяснения того как шаблоны замедляют работу приложения Я бы сказал, что шаблоны порождают некоторое количество избыточного бинарного кода, и как следтвие слегка увеличивают размер библиотек. ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 12:43 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
mayton Гы во-первых, разговор про производительность, а не про размер во-вторых, размер в пределах единицы сборки (.dll, .exe, .bpl и т.д.) при грамотном использовании шаблонов расти не будет. Он может расти так как один и тот же код шаблона не разделяем между разными модулями, но это отдельный разговор... в-третьих, увеличение размера это не особенность generic'ов как таковых, а только их физической реализации в С++. Например их же реализация в java этого эффекта лишена вообще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 12:51 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Согласен. Пускай White Owl прокомментирует свою фразу о медлительности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 13:00 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
А я говорил что шаблоны замедляют работу? Тогда прошу прощения, описка, имелось в виду замедляют разработку. И я уже объяснял почему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 18:38 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
White OwlА я говорил что шаблоны замедляют работу? Тогда прошу прощения, описка, имелось в виду замедляют разработку. И я уже объяснял почему. Использование шаблонов замедляет разработку, зато ускоряет добавление нового функционала и упращает поддержку кода. Посчитайте, что жизненном цикле ПО обходится дороже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 19:15 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
И еще по теме. В организации с большими обьемами кода и количеством поддерживаемых версий продукта, а также правильным отношением к ведению проектов собственное велосипедостроение более экономически целесообразно нежели использование велосипедов сторонних производителей. У разработчиков одиночек или маленьких команд все с точностью до наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 19:50 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Очень показателен похожий топик в форуме по java. Там человек решил написать свой Base64 декодер так весь форум его отговаривал и советовал взять готовый Я, например, тоже высказался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 23:19 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) MasterZivМадыратыр, убей топик !! Чего орешь ??? Нету тут модератора Знаю. Потому и ору. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 02:40 |
|
||
|
Философия велосипедостроения.
|
|||
|---|---|---|---|
|
#18+
maytonЯ бы сказал, что шаблоны порождают некоторое количество избыточного бинарного кода, и как следтвие слегка увеличивают размер библиотек. ИМХО. Это все недоказуемо. Когда-то - да, когда-то - нет. Такие споры велись не раз и ни к чему ни приводили. Т.е. нельзя сказать, что шаблоны -- это медленно, или шаблоны -- это пухлые .exe. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 02:43 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2032631]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
53ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
88ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 375ms |

| 0 / 0 |
