2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 
Сообщение29.09.2008, 13:18 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Оптимальность реализации под конкретную задачу - это лишь одно из условий, предъявляемых к пакетам. Во многих случаях далеко не самое главное, особенно при профессиональном программировании. Вообще в данном случае налицо иррациональное и отчасти параноидальное поведение (надеюсь, без обид :wink: ). В том числе и при выборе компилятора, и операционной системы, и среды разработки. Я лично сижу на MSVC-2005, это официальная среда разработки в фирме, где я работаю, особых нареканий я к ней не имею, отладчик меня лично вполне устраивает. Пожелание "минимализма" приводит к тому, что время тратится на настройку системы и на то, чтобы заставить ее работать.

AlexNew в сообщении #146140 писал(а):
но самое не интересное что пока толком не получается работать с отладчиком


Я предпочитаю тратить время на освоение программы, а не ее настройку.

 Профиль  
                  
 
 
Сообщение29.09.2008, 13:36 


12/09/08

2262
PAV в сообщении #147296 писал(а):
Оптимальность реализации под конкретную задачу - это лишь одно из условий, предъявляемых к пакетам. Во многих случаях далеко не самое главное, особенно при профессиональном программировании.
Да, с сожалением приходится отметить, что оптимизация по затратам на разработку (денежным и временнЫм) в профессиональном программировании не редка. Результатами такой оптимизации могут в полной мере насладиться пользователи популярных проприетарных продуктов. Эти результаты отчасти компенсируются гениальными маркетинговыми ходами. Например, даунгрейд с Висты на XP стоит дополнительных денег. Отчасти они стимулируют эволюцию железа, более быструю, чем требовалось бы при повсеместном аккуратном программировании. Но в долгосрочной перспективе я вижу большой вред от распространенности такого подхода.

 Профиль  
                  
 
 
Сообщение29.09.2008, 17:02 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
вздымщик Цыпа в сообщении #147300 писал(а):
Да, с сожалением приходится отметить, что оптимизация по затратам на разработку (денежным и временнЫм) в профессиональном программировании не редка. Результатами такой оптимизации могут в полной мере насладиться пользователи популярных проприетарных продуктов.
Отчасти они стимулируют эволюцию железа, более быструю, чем требовалось бы при повсеместном аккуратном программировании. Но в долгосрочной перспективе я вижу большой вред от распространенности такого подхода.


Это не совсем верное суждение в контексте обсуждаемого вопроса о полезности STL и других готовых пакетов, автоматизирующих процесс создания программ. И неправильно думать, что они приносят вред. Просто каждый инструмент предназначен для своего использования.
Есть программы, в которых оптимальность по времени работы вообще несущественна. А в тех, где существенна, совершенно не нужно оптимизировать все. Оптимизировать нужно только те части, которые вызываются очень много раз. Низкоуровневые процедуры, вложенные циклы и т.д. А при написании управляющей части это совершенно не важно, зато важно создавать много достаточно сложных структур данных и аккуратно с ними работать. Писать при этом вручную все массивы, вектора и проч. конечно можно, затачиваясь на конкретную задачу, оптимизируя количество выделений памяти и т.д. Но это может быть весьма расточительно с точки зрения высококвалифицированного труда профессиональных программистов.
Кроме того, при написании самому вручную неизбежны ошибки, как бы хорошо ты ни писал. Потом их придется находить и исправлять.
Использование готового пакета во всех этих смыслах эффективнее и надежнее.
Собственно, именно поэтому владение подобными пакетами требуется от профессиональных программистов. С их помощью можно написать требуемый технический управляющий код быстро и надежно, направив основные усилия на работу с содержательной частью. А человек, не знающий STL (и гордящийся этим :wink: ) сделает то же самое за три дня вместо одного. Да, это может работать в 10 раз эффективнее... 5 миллисекунд вместо 50... в части программы, которая вызывается несколько раз за всю работу.

 Профиль  
                  
 
 
Сообщение30.09.2008, 12:50 


12/09/08

2262
PAV в сообщении #147345 писал(а):
Просто каждый инструмент предназначен для своего использования.
Это верно. Но в применении к STL (будем для определенности говорить о контейнерах: list, map, vector) это правило означает, что сфера ее применения исчезающе узка. Типичны две ситуации:
1) Структура данных настолько проста, что незачем привлекать ни одну громоздкую конструкцию из STL. Она описывается двумя-тремя функциями, которые настолько элементарны, что ошибиться в них невозможно. Ни о каких дополнительных сутках на реализацию говорить не приходится. Минуты.
2) Структура данных и теребуемые способы доступа к ней вроде бы похожи на одно из тех, что предлагается STL но реализации STL «чуть-чуть не хватает». Типичный пример: map с многопоточным доступом к нему. Если его попротектить одним локом, то это узкое место, на котором будет постоянно кто-то спать. Значит все равно надо писать такой map самому.

Кроме того, общность контейнеров диктует правило: данные отдельно, линки отдельно. Это значит, что при формировании структуры лишние аллоки, при доступе лишние дереференсы. Лишний дереф — это не так безобидно, как кажется. Это вовсе не только одна инструкция. Он снижает эффективность процессорного кэша. Также «положить» объект в контейнер — это всегда копирование, а иногда и не одно, что вообще абсурд, поскольку накладывает обязательное требование на объекты быть копируемыми, либо вынуждает класть в контейнер указатель, что означает еще один маллок и еще один дереф, Сконструировать же объект сразу где надо нет никакой возможности (плейсмент нью не предлагать).

Таким образом, все существенное в программе надо писать без STL. А несущественное можно вообще писать на чем угодно, хоть на перле, хоть на питоне и вообще сплавить смежнику.

Кроме того, этих реализаций STL наплодили массу и не смотря на то, что она «как бы стандартная» у каждой реализации свои тараканы. У вижаковой свои, у стлпорта свои, у гнутой свои. Это делает программу, плотно использующую STL, совершенно непереносимой, либо заставляет включать какую-то версию STL внутрь и таскать за собой.

Вообще, мои наблюдения показывают что очень многие проходят следующие стадии относительно STL:
1) Пионер-геройская. Фтопку STL, STL — это попсово, мы напишем себе свою шаблонную библиотеку. Крутую, с блэкджеком и шлюхами.
2) Многоопытная. Фтопку свои поделки, они все равно ничем не лучше STL. Будем везде использовать STL и от коллег потребуем того же. Каждый случай ее неиспользования требует веских аргументов.
3) Уж-не-знаю-как-обозначить. Фтопку STL (вторично). От нее одни проблемы, с лихвой перекрывающие все ее плюсы. Будем данные хранить так, как нам надо, а не как оно «стандарнтно». Пусть это будет стопиццот способов, но каждый из них уместен там, где используется.

 Профиль  
                  
 
 
Сообщение30.09.2008, 13:55 
Экс-модератор
Аватара пользователя


11/07/08
1169
Frankfurt
вздымщик Цыпа писал(а):
Она описывается двумя-тремя функциями, которые настолько элементарны, что ошибиться в них невозможно.


Удивительным образом, в "сложных" функциях обычно ошибок меньше, не замечали? :)

 Профиль  
                  
 
 
Сообщение30.09.2008, 14:10 


12/09/08

2262
bubu gaga в сообщении #147531 писал(а):
Удивительным образом, в "сложных" функциях обычно ошибок меньше, не замечали?
Нет, не замечал. Не хочу хвастать, но у меня каким-то образом получается их действительно так мало, что какую-то статистику по ним вести не получается. Возможно, именно поэтому за много лет я так и не научился виртуозно управляться с gdb и знаю только элементарные его функции.

 Профиль  
                  
 
 
Сообщение03.10.2008, 04:50 
Аватара пользователя


28/06/08
1706
Sanyok писал(а):
Dev-Cpp не пробовали?

Sanyok спасибо Большое,отличный совет, похоже идеально для новичка.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: Schrodinger's cat


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group