Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.046 c
6-1163627850
skiner
2006-11-16 00:57
2007.05.20
Как передать текст с ServerSocket на ClientSocket?


1-1174637714
tytus
2007-03-23 11:15
2007.05.20
Запущенное приложение и панель задач.


2-1178083513
user gosha
2007-05-02 09:25
2007.05.20
Доступ к Web-сервису из Delphi


2-1177648851
sergeyst
2007-04-27 08:40
2007.05.20
Совместная работа над проектом


1-1174579137
DelphiLexx
2007-03-22 18:58
2007.05.20
Рассылка сообщений дочерним окнам





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский