Алгоритмы для программистов

Тема в разделе "WASM.HEAP", создана пользователем Guru_of_Zen, 4 сен 2010.

  1. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    (возможно, очень субъективное мнение)

    Собственно меня всегда мучал и мучает по сию минуту вопрос -- почему важность алгоритмов для программиста зачастую преувеличивается (ханжами, наверное) ?

    Алгоритмы -- это удел математиков. Пусть они их и (пере)открывают, изучают, описывают и т.д.

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

    Если есть задача -- открыл допустим того же Кнута и/или Кормена, нашел требуемое, вкурился, реализовал на своем языке.

    Или, если вкуривать лень, или не вкуривается ни в какую (даже с грибами), то заюзал справочник в духе "Алгоритмы на C++" Роберта Седжвика или его же "Фундаментальные алгоритмы на C" -- посмотрел, использовал. Все.

    А то есть некоторые любители покричать, что мол "Кнут это вечное, обязательное к чтению" и т.п. Не спорю. Алгоритмы бессмертны, но все же -- кесарю кесарево.

    Я может чего не понимаю, но если честно, много ли программистов (именно программистов, а не профессиональных математиков, переквалифицировавшихся в программистов) смогут читать, и самое главное, понимать Кнута ? Понимать формулы, уравнения, которые он использует; решать задачи в конце глав ? По-моему, единицы.

    Короче я к чему -- читать Кнута (и прочих), безусловно, надо, но по диагонали. Обращая внимание лишь то, что может пригодиться программисту в его ремесле. А не, пардон, задротствовать с (M)MIX'ом и фундаментальными проблемами математики. А сэкономленное время лучше потратить на изучение архитектуры PC, операционных систем, процессоров.
     
  2. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    Guru_of_Zen
    потому что программирование это и есть умение составлять алгоритмы для достижения заданных целей. все остальное - вспомогательно и второстепенно.
    вы б попрактиковались чтоли. в проекте каком поучаствовали. многие б вопросы и разъяснились бы сами собой. и насчет существования наилучшего яп, и насчет стандартов, которые гдето там кажется что есть и, предположительно, ктото придерживается, и насчет бесплатности по и труда программиста.

    а ммикс учить как раз лишнее. кнут объяснил на примере того, что понятно было ему. он человек старый и потому воспользовался ассемблером современного ему компа.
    ну а математику программисту, да, необходимо знать или хотябы не бояться. и, да, математика это тоже труд и от нее устаешь и как от переноски мешков нетренированные мышцы болят, так и от математики нетренированные мозги болят. тренируйтесь.
     
  3. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    qqwe +1
     
  4. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    С тех пор как Кнут начал писать свои труды много чего изменилось. Он был хорош как учёбный и справочный материал для своего времени, сейчас же это скорее научный фундаментальный труд, со всеми вытекающими. Сегодня существует масса более доступных, интересных и полезных книг и курсов лекций по алгоритмам (кстати, чем Кормен не угодил? Хорошая книга), которые следует прочитать, хотя бы по диагонали, любому программисту.

    Почему любому? Потому что есть важное для любого специалиста понятие -- база знаний. Человек мыслит в рамках тех знаний, которые он имеет. Не зная ничего кроме метода перебора (выражаюсь утрировано), специалист будет мыслить весьма ограниченно и однообразно. Любой программист, который знает только C тоже мыслит только процедурными категориями, даже не понимая, что существуют и другие подходы, возможно более эффективные или даже просто интересные.
     
  5. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    qqwe
    дак я малость про другое как бы.
    я не спорю, что и математику знать надо (не до умопомрачения, но хотя бы минимум в области решаемой задачи), и алгоритмы знать и юзать надо.

    речь про другое -- многие ли потянут кнута ? вот вы пафосный пост залудили, а кнута сколько страниц после вступления осилили, пока мозги не озябли ? ;)

    W4FhLF
    вот и я примерно про то же.
    смежные с программированием области -- математику, алгоритмы -- следует знать неглубоко, метров пяти хватит. для прикладных задач зачастую хватит и справочника примеров реализации алгоритмов.
     
  6. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    Guru_of_Zen
    современные модны не отслеживаю. потому могу не знать что есть "пафосность". и как "не пафосность". и зачем я должен эту самую "непафосность" юзать.

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

    впрочем, если вам тяжел кнут, зачем его ругать? вы его просто не употребляйте. есть выбор и из других авторов. есть и в стиле анекдота пишущие. и даже в виде комиксов.
     
  7. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Сам первые 3 тома Кнута прочитал, когда ещё начинал программировать. Задачи с индексом больше 20 редко получалось решать. Там есть то, что может пригодиться каждому, но также много редко используемых алгоритмов. Например алгоритм нахождения производных, может и пригодиться если писать какой-нибудь новый Mapple.
    А поднятая тема в чем-то и правильна. Составлять алгоритмы аналогичные представленным в учебниках, например в виде блок схем, как правило не представляется возможным. На каком языке научился кодить, на том у тебя и будут все алгоритмы состовляться.
     
  8. Nesmysl

    Nesmysl New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2010
    Сообщения:
    33
    Твое мнение никого здесь не интересует, поверь.

    Единственная умная фраза за все время твоего прибывания на васме. Ты абсолютно ничего не понимаешь и не знаешь.

    _http://wasm.ru/forum/viewtopic.php?id=38197
    Начни хоть с чего-нибудь.

    Если ты хоть что-то понимал в компьютерах, то понял бы, какую чушь ты несешь.
    Архитектура ПИ СИ включает в себя и ОС и ЦП... семиуровневая ( но не всегда) модель.
    Архитектура определяется рядом свойств, котор. обесп. функционирование ПО и устройствами периферии.
    А ты перечисляешь их через запятую.

    Можно уносить. Ни в одном, даже малюсеньком _реальном_ проекте, ты не участвовал. Сл-но, всё, что ты говоришь - чушь.

    EOF
     
  9. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Nesmysl
    Ага тока зарегился уже умозаключениями сыпет или может быть ты сторожила просто ник сменил?

    Guru_of_Zen
    Я бы не советовал начинать с Кнута - книга от профессора для профессоров, Бил Гейтс в своей книге Дорого домой написал примерно так - "Если вы понимаете Кнута то вам дорога в Микрософт" примерно так надеюсь смысл сохранил, цитата из цитаты книги Криса Касперски (не помню к сожалению какой). Кнут - это высокий показатель, прочитать могут все но понять все черт его знает какой процент от прочитавших
     
  10. link

    link Member

    Публикаций:
    0
    Регистрация:
    3 янв 2008
    Сообщения:
    52
    Nesmysl ты похоже местный бог раз такие выводы обо всех делаешь.

    Насчет Кнута, чел борится за эффективность и тут все ясно, потому что все чаще выходит быдлокод на рынок ПО, и все всё чаще начинают думать что машинам уже похер насколько громозкое гавно ты напишешь, поэтому читать всегда стоит, а главное понимать это все. Поняв принципы качества Кнута и знать как оценивать эффективность алгоритмов и знать как правильно их проектировать должен каждый программист.
    Я честно говоря считаю что программист это впервую очередь математик, а не человек который знает кучу технологии но качественно пользовать их не умеет.
     
  11. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Nesmysl
    Еще одно такое резкое обращение к собеседнику\ам - и вы уйдете в бан. Можете не сомневаться.
     
  12. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    Не согласен. Зависит от задач. В прикладном програминге - да.
    В системном считаю что если есть мозги, то и код будет не черезжопным.
     
  13. not1

    not1 Member

    Публикаций:
    0
    Регистрация:
    6 окт 2009
    Сообщения:
    137
    подерживаю JCronuz Гейтса к сожелению не читал, но Кнута читал первые 3-4 главы, причем не "просто" прочитать, а надо еще и осмыслить+) поэтому отложил до лучших времен.
    ТС вообще математика для программиста нужна для облегчение своего труда(как и знание языка и API и т.д),чем больше знаешь тем меньше кода прописываешь тем меньше пишишь было-код.
    Ктони-ть может посоветовать хорошую книжку по построению алгоритмов в играх? желеталено не то как с помощью GUI можно построить доску и передвегать фигуры, вообщем нужно что-то вроде просчитывание комбинаций в шахматах и т.д? заранее спасибо.
     
  14. drmad

    drmad New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    332
    Адрес:
    Russia
    Я дико извиняюсь, но читаешь вас и смешно: "я думаю что программист должен", "а я считаю что программист не должен". Может, прежде чем "думать" и "считать", для начала немножко в тему въехать?

    Найдите, к примеру, в Тырнете документ "Квалификационные требования (профессиональный стандарт) в области информационных технологий по профессии "Программист", например, здесь: www.minkomsvjaz.ru/upload/docs/2008021210375cz.doc. И ознакомьтесь. Просто так, для общего развития и осознания, что такое "программист" и какие они бывают.

    Для тех, кому "многабукаф", намекну: профессия делится на 4 (четыре) квалификационные уровня. Самый нижний - это как раз те, кому Кнут, чтобы зарабатывать деньги кодингом, нафик не нужен и вреден. И математику достаточно знать в объеме 8 класса средней школы. Но ведь кроме него, есть еще 3 уровня...

    Короче, крохотное пожеланьице от меня, читателя в режиме readonly: форум - он один на всех. Даже ругаться и меряться письками надо на как можно более высоком уровне, ознакомившись с вопросом, чтобы и другим интересно читать было. А пока одни школьные рассуждения, плоская Земля или треугольная. :dntknw:
     
  15. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    Если ты хоть что-то понимал в компьютерах, то понял бы, какую чушь ты несешь.


    1) Архитектура IBM PC это архитектура проца 8086 + BIOS . ОС может быть разная.
    2) семиуровневая модель OSI это и вовсе к сетям ... так что слышали звон.
     
  16. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    А твое и подавно ...
     
  17. link

    link Member

    Публикаций:
    0
    Регистрация:
    3 янв 2008
    Сообщения:
    52
    drmad здесь никто и не собирается ничем мерятся. Я выразил свое мнение по поводу того что стоит читать. а то что ты там ориентируешься по требованиям молодец конечно, но на собеседовании тебя по этим пунктикам спрашивать не будут. а про 8-й класс ты вообще зря сказал, одно дело подходить под конкретную квалификацию и совсем другое совершенствовать себя и свой профессионализм.
     
  18. Enterado

    Enterado New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2008
    Сообщения:
    99
    Как это -- "программист -- ремесленник"? Это быдло-кодировщик -- ремесленник. Code-monkey -- ремесленник. Программировать != писать код. Масса задач именно прикладного плана не имеют готовых решений и алгоритмов. Самое прекрасное в призвании программиста -- умение думать и решать уникальные задачи. Тогда это уже даже не наукой становится, а искусством. Кнут не зря назвал томы свои "искусство программирования". Чтобы произошел апгрейд от простого исполнителя к профи базу необходимо знать. Алгоритмы и математика -- это база. Если строишь туалет на даче, так как бы вроде особо и не нужны сложные расчеты и дисциплины специальные. Но строят ведь не только туалеты. Хотя...-- каждому своё. Кому -- ремесло, кому -- наука, кому -- искусство.
     
  19. NeuronViking

    NeuronViking New Member

    Публикаций:
    0
    Регистрация:
    29 окт 2004
    Сообщения:
    476
    Адрес:
    где-то в Сиднее
    интересно, многие ли тут О большое произвольного алгоритма посчитают? =)
    слышал такое мнение, что это обязан знать и уметь каждый, кто называет себя программистом. я с этим не согласен. наверное потому, что сам не уемею и не знаю этого. ну разве что только понять разницу между O(1) and O(nlogn) =)
     
  20. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    NeuronViking
    Наверное.
    Попробуйте, это не так сложно.