русский
Germany.ruForen → Архив Досок→ Webdesign und Hosting

программисткие курсы

649  1 2 3 4 5 6 alle
voxel3d Мальчик ветра04.12.05 12:57
voxel3d
NEW 04.12.05 12:57 
in Antwort Wlad75 04.12.05 12:41
В ответ на:
Да возьмите тот же STL c его шаблонами-контейнерами. Для некоторых из них задана операция сортировки (std::list<>::sort()), но упорядоченность имеет смысл не всегда. Если для объектов класса Object задать операции сравнения невозможно (и не нужно), то можно ли использовать контейнер std::list<Object>?

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

Всё он понял, если Вы не знаете, что в C++ Вы имеете такую же свободу в управлении памятью как и в С, то совет почитать документацию вполне разумен.
Dropbox - средство синхронизации и бэкапа файлов.
#81 
Murr коренной житель04.12.05 12:57
Murr
NEW 04.12.05 12:57 
in Antwort scorpi_ 04.12.05 10:05
есть небольшой оверхед при вызове виртуальных функций
-----
а в С та же функция вызывается через указатель.
=====
1. Читай внимательно. Ключевое слово - виртуальные.
2. В том же Си можно получить обе имплементации. Руками, правда...
#82 
scorpi_ скептик04.12.05 13:05
04.12.05 13:05 
in Antwort Wlad75 04.12.05 12:41
У нас море шаблонов в проекте, но практически все они используются лишь единожды
Пооже Вы на самом деле не понимаете для чего нужны шаблоны...
Для некоторых из них задана операция сортировки (std::list<>::sort()), но упорядоченность имеет смысл не всегда.
Кто же заставляет Вас использовать данную функцию? Если Вы её не используете, то приличный linker её в executable и не включит. Кроме того, Вы видимо не понимаете почему std::list имеет собственную функцию сортировки?
Если для объектов класса Object задать операции сравнения невозможно (и не нужно), то можно ли использовать контейнер std::list<Object>?
Одно из преимуществ использования STL - как раз возможность отказа от общего предка -> flache Klassenhierrarchie -> strengere Typisierung.
каким-то образом ограничивать использование std::list<Object>
При приличном дизайне все классы имеющие наследниковв должны быть абстрактными. Тогда и проблем таких не возникает.
Или такой пример: операция нормализации для шаблона Vector3D<> имеет смысл?
Вы не знаете как запретить использование какой-либо операции для определённых типов?
#83 
scorpi_ скептик04.12.05 13:08
NEW 04.12.05 13:08 
in Antwort Murr 04.12.05 12:57
Я же не оспариваю справедливость твоего высказывания, просто дополняю. Впрочем если говорить о виртуальных функциях в С++, то надо приводить эквивалентный дизайн в С.
#84 
Murr коренной житель04.12.05 13:09
Murr
NEW 04.12.05 13:09 
in Antwort Wlad75 04.12.05 12:41
Как можно при этом что-то гарантировать относительно времени реакции системы?
-----
Опсс... Если уж вы делаете систему, которая, по вашему утверждению, будет использоваться в операционных, то "ограниченность рессурсов" явно отходит на дальний план перед веменем реакции.
но получается программирование для С++, а не использование С++ для реализации решения конкретной задачи.
-----
Вы нашли в этом плане какие-то бенефиты при использовании "чистого Си"?
А также "оверхед" программирования шаблонов
-----
Читайте Скорпи. От себя добавлю, что можно принудить компилятор инлайнить специфические функторы.
Вы просто не поняли в чем состоит проблема фрагментации адресного пространства.
-----
Я бы давно уже не работал Программистом если не понимал этой проблемы и не знал как с нею обходится.
P.S. Тут на форумах уже трое программистов говорят вам, что ООП-решение/реализация нисколько не проигрывает функциональной. Стоит подумать над этим...
<--- nobody harmed in this action -->
#85 
Murr коренной житель04.12.05 13:13
Murr
NEW 04.12.05 13:13 
in Antwort scorpi_ 04.12.05 13:08
Впрочем если говорить о виртуальных функциях в С++, то надо приводить эквивалентный дизайн в С.
-----
Топорно он описан выше - vtable против массива указателей.
#86 
scorpi_ скептик04.12.05 13:16
NEW 04.12.05 13:16 
in Antwort Murr 04.12.05 13:13
Да я в курсе, если мне не изменяет память Netscape был таким макаром на С написан...
#87 
Murr коренной житель04.12.05 13:35
Murr
NEW 04.12.05 13:35 
in Antwort voxel3d 04.12.05 12:57
в C++ Вы имеете такую же свободу в управлении памятью как и в С
-----
Как ты писал выше - более гикую.
#88 
Murr коренной житель04.12.05 13:41
Murr
NEW 04.12.05 13:41 
in Antwort scorpi_ 04.12.05 13:16
если мне не изменяет память Netscape был таким макаром на С написан...
-----
Я посмотрел объем соурсов... и стиль... и решил что мне не хочется в этом разбираться...
#89 
scorpi_ скептик04.12.05 13:44
NEW 04.12.05 13:44 
in Antwort Murr 04.12.05 13:41, Zuletzt geändert 04.12.05 13:45 (scorpi_)
Мне тоже не хочется Я как-то хотел поучаствовать в написании Лисы, но посмотрев исходники от этой идеи отказался. Не в последную очередь потому-что вместо использования STL они изобретают велосипед и пишут всё сами. Мотивируя этот шаг гипотетическим использованием Лисы на каких-нибудь экзотических платформах, где STL отсутствует...
#90 
Murr коренной житель04.12.05 13:48
Murr
NEW 04.12.05 13:48 
in Antwort scorpi_ 04.12.05 13:44
При том объеме, который имеют исходники Лисы... хммм... легче портировать STL на другую платформу... даже при условии, что придется делать и компилятор.
#91 
Wlad75 местный житель04.12.05 13:50
NEW 04.12.05 13:50 
in Antwort scorpi_ 04.12.05 10:29
В ответ на:
То есть Вы в принципе отрицаете пригодность OOP-языков для Вашей задачи

Нет. Я использую С++ и ООП, но лишь там, где это дает явные преимущества. Общие решения не могуть быть эффективней частных. Готовые шаблоны CGAL/STL в нашем конкретном случае не эффективны. Конечно, ту же нашу специфическую сортировку можно было бы оформить в виде шаблона, но совсем нет необходимости, времени и желания думать сейчас о том, как этот шаблон мог бы работать с другими типами данных в будущем. Тем более, что данный метод сортировки применял всего лишь дважды до этого - в программах на ассемблере и на Java. Чем в тех случаях помог бы готовый С++ шаблон?
[оран]"Мы появляемся на свет для того, чтобы помочь друг другу пережить эту самую жизнь, в чем бы там ни был ее смысл" (К. Воннегут)[/оран]
#92 
scorpi_ скептик04.12.05 14:23
NEW 04.12.05 14:23 
in Antwort Wlad75 04.12.05 13:50
Общие решения не могуть быть эффективней частных.
Общие решения в виде шаблонов дают более высокую производительность труда при более высоком качестве кода и неизменной скорости исполнения кода.
Готовые шаблоны CGAL/STL в нашем конкретном случае не эффективны.
Так всё таки, в чём это заключается? Пример с сортировкой мы опровергли, с использованием памяти тоже. Что ещё?
но совсем нет необходимости, времени и желания думать сейчас о том, как этот шаблон мог бы работать с другими типами данных в будущем
Прелесть в том, что об этом думать как раз и не надо. Мне впрочем аж интересно стало, что за алгоритм-то там использовался?
Чем в тех случаях помог бы готовый С++ шаблон?
Возможностью использования его со стандартными контейнерами. Кстати, вопрос - в чём Вы храните данные?
#93 
Murr коренной житель04.12.05 14:24
Murr
NEW 04.12.05 14:24 
in Antwort Wlad75 04.12.05 13:50
Я использую С++ и ООП, но лишь там, где это дает явные преимущества.
-----
Ну хорошо, еще раз. Нет у "чистого С" никаких преимуществ перед С++. Вообще нет. Это тестилось неоднократно и всегда получался один и тот же результат - нет никаких преимуществ у "чистого С", нет провала в производительности при использовании С++. Все остальное - квалификация исполнителей и понимание ими задачи.
У особо упертых я обычно спрашиваю - вы понимаете, что все, что вы кодируете, суть - автомат(машина состояний с памятью) и что разные языки всего лишь разные инструменты определения этого автомата? Входные и выходные данные у вас одни и те же и алгоритм преобразования - тот же...
Конечно, ту же нашу специфическую сортировку можно было бы оформить в виде шаблона, но совсем нет необходимости, времени и желания думать сейчас о том, как этот шаблон мог бы работать с другими типами данных в будущем.
-----
А в каком месте тут надо думать? Тут всего лишь надо затратить тоже самое, максимум х1.3, время на оформление кода в виде шаблона. Ну а бенефиты... хммм... самый простой - будет единый стиль кода во всем проекте... более сложный - замена вашего алгоритма сортировки на еще более вычурный, без переработки остального кода...
#94 
Wlad75 местный житель04.12.05 15:13
NEW 04.12.05 15:13 
in Antwort scorpi_ 04.12.05 09:49
В ответ на:
Ваши программисты никогда не слышали о std::deque

std::deque абсолютно не решает проблемы.
Еще раз о фрагментации адресного пространства. Речь идет о 32-битных системах. 32-битный указатель может адресовать до 4GB памяти. Когда оператор new или функция alloc/malloc/calloc запрашивает блок памяти размером 1GB, менеджер памяти резервирует кусок адресного пространства и возвращает указатель на начало этого куска. Предположим, что это указатель 0x00000000 и он является вполне нормальным указателем. Тогда адреса [0x00000000;0x40000000) зарезервированы под этот блок. До тех пор, пока программа не освободила его, менеджер памяти не может вернуть указатель из диапазона [0x00000000;0x40000000). Если теперь для наращивания размера массива данных до 1.5GB использовать new, то менеджер памяти может быть вернет указатель 0x40000000 и адреса [0x40000000;0xA0000000) будут зарезервированы под этот новый блок. Затем происходит переписывание данных и освобождение первого блока. Последующая попытка расширить блок при помощи оператора new до 2GB не пройдет, хотя в системе есть еще 2.5GB. Просто эти 2.5GB разбиты на два блока размером 1GB (адреса [0x00000000;0x40000000)) и 1.5GB (адреса [0xA0000000;0xFFFFFFFF]), а нужен один размером 2GB. При использовании realloc в описанном выше случае проблема фрагментации не возникнет. В рамках new/delete я решения не вижу. Аллокаторы предоставляют методы allocate/deallocate, но нет reallocate. В std::deque наращивание зарезервированного блока происходит при помощи последовательности вызовов allocate-copy-deallcoate, что работать не будет.
[оран]"Мы появляемся на свет для того, чтобы помочь друг другу пережить эту самую жизнь, в чем бы там ни был ее смысл" (К. Воннегут)[/оран]
#95 
scorpi_ скептик04.12.05 15:35
NEW 04.12.05 15:35 
in Antwort Wlad75 04.12.05 15:13, Zuletzt geändert 04.12.05 15:52 (scorpi_)
В std::deque наращивание зарезервированного блока происходит при помощи последовательности вызовов allocate-copy-deallcoate, что работать не будет.
Читайте документацию. То что Вы описываете, это std::vector. Естественно у Вас будут проблемы, если вектору делать resize с 1 гига до полутора.
В рамках new/delete я решения не вижу.
Спросите у специалиста. В пределах 80-90 евро/час Вам окажут помощь. http://www.gulp.de
PS Впрочем я смотрю почасовые ставки упали, так что до 70. Самых дешёвых брать не советую.
#96 
Wlad75 местный житель04.12.05 15:49
NEW 04.12.05 15:49 
in Antwort scorpi_ 04.12.05 13:05
В ответ на:
Вы не знаете как запретить использование какой-либо операции для определ╦нных типов?

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

Я действительно не понимаю зачем нужны шаблоны, которым заведомо не будет применения, кроме этого одного конкретного случая и одного конкретного типа параметра.
В ответ на:
Кто же заставляет Вас использовать данную функцию? Если Вы е╦ не используете, то приличный linker е╦ в executable и не включит. Кроме того, Вы видимо не понимаете почему std::list имеет собственную функцию сортировки?

Где я говорил о том, что использую эту функцию? Я говорил об использовании класса std::list<Object>, одна из функций которого явно не имеет никакого смысла (еще раз, речь о шаблоне с конкретным классом Object в качестве параметра, для которого операции сравнения просто бессмысленны).
В ответ на:
Одно из преимуществ использования STL - как раз возможность отказа от общего предка

В огороде бузина, а в Киеве дядька. Зачем мне эта "плоская иерархия"?
В ответ на:
При приличном дизайне все классы имеющие наследниковв должны быть абстрактными

Какие наследники? Вы о чем? Хотя... Я понял о чем. О программировании для С++, а не о программировании на С++.
Пардон, но эта дискуссия более совсем не итнересна.
[оран]"Мы появляемся на свет для того, чтобы помочь друг другу пережить эту самую жизнь, в чем бы там ни был ее смысл" (К. Воннегут)[/оран]
#97 
toptop постоялец04.12.05 15:52
NEW 04.12.05 15:52 
in Antwort scorpi_ 04.12.05 10:00, Zuletzt geändert 04.12.05 15:53 (toptop)
Я в свое время пришел к Berater-у из тогда еще Arbeitsamt-а с просьбой оплатить мне подобное заочное обучение. Объяснил, что мне не столько нужны профессиональные знания, сколько нужна немецекая корочка. Он мне сразу обрубил, что заочные курсы не котируются - мы подберем что-нибудь очное и нашел через пару месяцев. Правда, не очень программирование, не очень качественно, но деньгу платили и слов я там набрался достаточно, т.к. пришлось и Steuer, и Mathe, и Telefontrainig и прочую муть учить, ну прямо как в советском ВУЗе. Это было, правда в Саксонии, а это почти СиСиСиПи.
Я думаю, что Arbeitsagentur проще и выгоднее настойчивого просителя на свои курсы направить, чем выплачивать гос.деньги какому-то фернуниверситету. Им, естественно, безразлично качество, т.к. они себе плюсик поставят, а не кому-то.
#98 
scorpi_ скептик04.12.05 16:01
NEW 04.12.05 16:01 
in Antwort Wlad75 04.12.05 15:49
Вы не знаете как запретить использование какой-либо операции для определённых типов?
Как это относится к задаче обработки медицинских изображений? Почему я должен уделять внимание этим вещам, если в моем случае они явно ничего полезного в код не добавляют?

Это отражает логику работы Вашей программы. Поможет например избежать того, что кто-нибудь эту операцию использует в неправильной ситуации. Или Вы думаете, что Ваши программисты способны всё держать в голове?
Я действительно не понимаю зачем нужны шаблоны, которым заведомо не будет применения, кроме этого одного конкретного случая и одного конкретного типа параметра.
Применить в данном случае обычный класс запрещает религия? Если это third party шаблон, тогда тем более непонятно почему это Вас так волнует... Или Вы не понимаете как работают шаблоны?
Я говорил об использовании класса std::list<Object>, одна из функций которого явно не имеет никакого смысла
Эта функция Вам спать не даёт? Почему она Вас так беспокоит?
В огороде бузина, а в Киеве дядька. Зачем мне эта "плоская иерархия"?
Более точное отражение реальных объектов, более строгое типизирование -> меньше ошибок.
Пардон, но эта дискуссия более совсем не итнересна.
Естественно, ибо Ваша некомпетентность стала всем ясна.
#99 
scorpi_ скептик04.12.05 16:03
NEW 04.12.05 16:03 
in Antwort toptop 04.12.05 15:52
От Arbeitsagentur вообще нелепо чего-либо ожидать. Самому надо действовать.
1 2 3 4 5 6 alle