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, Супермодераторы



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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