Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.20;
Скачать: CL | DM;

Вниз

Программирование: теория и практика.   Найти похожие ветки 

 
Alx2 ©   (2007-04-19 00:55) [0]

Как часто в повседневной работе вами используется знание классики?  Используется ли, например, понятие сложности алгоритма?
А случалось ли писать биномиальные пирамиды, кучи, фибоначчиевые пирамиды, AVL, B-деревья, всевозможные сортировки, для решения практических задач? И нужно ли это сейчас знать программисту-прикладнику, или гораздо важнее знать, где можно найти готовые решения?


 
Jeer ©   (2007-04-19 01:16) [1]

Alx2 ©   (19.04.07 00:55)

Конечно приходилось:)
А как же без матчасти + собственные изыски ?
Это же интересно, "ну а денешки, а денешки - потом" :)


 
Германн ©   (2007-04-19 01:21) [2]

<offtop>
На дверь в наш техотдел некий шутник прилепил скотчем бумажку с текстом:
"Теория - это когда все всё знают, но ничего не работает!
Практика - это когда всё работает, но никто не знает почему!
В этом месте мы совмещаем теорию и практику. Ничего не работает и никто не знает почему!"
</offtop>

P.S. Знание классики (теории и т.д.) ещё никогда никому не мешало. Лишь бы мозги были. А вот отсутствие таких знаний очень часто может затруднить жизнь, даже при хорошо работающем мозге. Имхо.


 
Юрий Зотов ©   (2007-04-19 01:30) [3]

> Alx2 ©   (19.04.07 00:55)  
> гораздо важнее знать, где можно найти готовые решения?

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


 
MBo ©   (2007-04-19 06:52) [4]

>Используется ли, например, понятие сложности алгоритма?

Да, периодически

>А случалось ли писать ...

биномиальные и фиб. кучи - нет, т.к. не было задач, для которых требуются их особые свойства (быстрое слияние). Обычные кучи  - да, двусторонняя косвенная очередь по приоритетам требовалась,  да и другие базовые структуры данных периодически нужны бывают.
Сортировки - да, практически использую около 5 алгоритмов.

> нужно ли это сейчас знать программисту-прикладнику, или гораздо важнее знать, где можно найти готовые решения

немного это здесь обсуждалось.
http://delphimaster.net/view/15-1176199472/

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


 
Джо ©   (2007-04-19 07:11) [5]

> [0] Alx2 ©   (19.04.07 00:55)
> Как часто в повседневной работе вами используется знание
> классики?  Используется ли, например, понятие сложности
> алгоритма?
> А случалось ли писать биномиальные пирамиды, кучи, фибоначчиевые
> пирамиды, AVL, B-деревья, всевозможные сортировки, для решения
> практических задач? И нужно ли это сейчас знать программисту-
> прикладнику, или гораздо важнее знать, где можно найти готовые
> решения?

Знать, где можно найти — несомненно нужно.
Для сего требуется иметь хотя бы общее представление.
Ничего из перечисленного руками никогда не писал, нужды не было.


 
TUser ©   (2007-04-19 08:17) [6]

> Используется ли, например, понятие сложности алгоритма?

Регулярно. Часто задумываюсь о нем, когда что-нибудь тормозит. Иногда - еще и перед тем, как писать. :(

> А случалось ли писать биномиальные пирамиды, кучи, фибоначчиевые  пирамиды, AVL, B-деревья, всевозможные сортировки, для решения  практических задач?

Из этого всего - сортировки. Но из алгоритмов вообще пользовался кое-чем.

> И нужно ли это сейчас знать программисту-прикладнику

хз

> или гораздо важнее знать, где можно найти готовые решения?

Это тоже важно. Но интересно, если все будут знать только где нагуглить готовое решение, то откуда они - готовые решения - будут возникать?


 
iZEN ©   (2007-04-19 09:20) [7]


> Alx2 ©   (19.04.07 00:55)

Гораздо важнее знать, где это можно найти. Так как если что-то уже есть, и подтвердило свою надёжность во многих проектах, то зачем изобретать такое же своё, ведь придётся это ещё и тестировать?


 
Megabyte ©   (2007-04-19 09:30) [8]


> iZEN ©  (19.04.07 09:20) [7]

Гораздо важнее знать, где это можно найти. Так как если что-то уже есть, и подтвердило свою надёжность во многих проектах, то зачем изобретать так

Тут выбирать между, что лучше имхо не уместно. Все таки и то(уметь найти), и другое(понимать хотя бы). Если  знаешь, где найти, но не понимаешь, как это работает, то тупо сложнее будет отловить баги/логические ошибки...


 
Ega23 ©   (2007-04-19 09:36) [9]

Основы знать - ИМХО надо.
Я вот, например, совершенно не помню ни одного алгоритма сортировки. Даже пузырька не помню.
Но есть тетрадочка, где это записано. А также множество дугих алгоритмов. А также помню, как сравнивать эффективность.

Так что если потребуется (что вряд-ли, но всякое бывает) - вспомню достаточно быстро.


 
Игорь Шевченко ©   (2007-04-19 09:37) [10]

В-деревья и всевозможные сортировки безусловно приходилось писать :)


>  И нужно ли это сейчас знать программисту-прикладнику, или
> гораздо важнее знать, где можно найти готовые решения?


Нужно конечно. Хотя бы для того, чтобы знать, что искать.

Я бы всем рекомендовал к обязательному прочтению книжку Гудмана и Хидетниеми "Введение в разработку и анализ алгоритмов", книжка довольно популярно дает базовые знания, достаточные для ориентации в море готовых решений :)


 
Alx2 ©   (2007-04-19 09:53) [11]

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

Хотя, приходя в магазин за товаром, мы ожидаем от него определенного поведния, умеем его использовать и совершенно в другой области лежит любопытство относительно его устройства. Тут уже существенно знание "где что и почем".


 
Jeer ©   (2007-04-19 10:44) [12]

Для студентов полезно будет написанное и выстраданное студентами же.

http://rain.ifmo.ru/cat/view.php/

Alx2 ©   (19.04.07 09:53) [11]

> Но, с другой стороны, построение софта напоминает сборку
> устройства из агрегатов с подходящим (как кажется) поведением.
>  


Верно, но неплохо когда сборщик практиковался также в создании сборочных единиц.
Это полезно во всех смыслах, а кроме того, рано или поздно набирается библиотека проверенных решений (алгоритмов/реализаций), что только положительно сказывается на скорости и надежности разработок.


 
atruhin ©   (2007-04-19 13:52) [13]

Простой пример, нужен быстрый поиск строк в коллекции:
Заходишь на свалку компонентов и видишь несколько типов коллекций строк:
1. Стандартный поиск перебором;
2. Поиск половинным делением в отсортированной коллекции;
3. Поиск в b-tree
4. Поиск в хэш таблице.
Если ты не знаешь принцип действия данных алгоритмов, как сможешь выбрать нужное?
Ведь у каждого из этих алгоритмов есть свои плюсы и минусы,
каждый работает по разному на разных наборах данных.



Страницы: 1 вся ветка

Текущий архив: 2007.05.20;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.03 c
2-1178251152
RomanLN
2007-05-04 07:59
2007.05.20
как создать таблицу через SQL ?


15-1177074037
Сергей М.
2007-04-20 17:00
2007.05.20
Фокс-геморрой


2-1178037815
Антон Шестаков
2007-05-01 20:43
2007.05.20
Меню как в Nero


2-1177669220
Knight
2007-04-27 14:20
2007.05.20
Классы на базе TList...


2-1177636529
SteveVUspen
2007-04-27 05:15
2007.05.20
Как поменять иконку у приложения?