(возможно, очень субъективное мнение) Собственно меня всегда мучал и мучает по сию минуту вопрос -- почему важность алгоритмов для программиста зачастую преувеличивается (ханжами, наверное) ? Алгоритмы -- это удел математиков. Пусть они их и (пере)открывают, изучают, описывают и т.д. А программист -- ремесленник, а не ученый -- он должен решать задачи другого, прикладного плана и программировать, а не сидеть и вкуриваться в алгоритмы. Если есть задача -- открыл допустим того же Кнута и/или Кормена, нашел требуемое, вкурился, реализовал на своем языке. Или, если вкуривать лень, или не вкуривается ни в какую (даже с грибами), то заюзал справочник в духе "Алгоритмы на C++" Роберта Седжвика или его же "Фундаментальные алгоритмы на C" -- посмотрел, использовал. Все. А то есть некоторые любители покричать, что мол "Кнут это вечное, обязательное к чтению" и т.п. Не спорю. Алгоритмы бессмертны, но все же -- кесарю кесарево. Я может чего не понимаю, но если честно, много ли программистов (именно программистов, а не профессиональных математиков, переквалифицировавшихся в программистов) смогут читать, и самое главное, понимать Кнута ? Понимать формулы, уравнения, которые он использует; решать задачи в конце глав ? По-моему, единицы. Короче я к чему -- читать Кнута (и прочих), безусловно, надо, но по диагонали. Обращая внимание лишь то, что может пригодиться программисту в его ремесле. А не, пардон, задротствовать с (M)MIX'ом и фундаментальными проблемами математики. А сэкономленное время лучше потратить на изучение архитектуры PC, операционных систем, процессоров.
Guru_of_Zen потому что программирование это и есть умение составлять алгоритмы для достижения заданных целей. все остальное - вспомогательно и второстепенно. вы б попрактиковались чтоли. в проекте каком поучаствовали. многие б вопросы и разъяснились бы сами собой. и насчет существования наилучшего яп, и насчет стандартов, которые гдето там кажется что есть и, предположительно, ктото придерживается, и насчет бесплатности по и труда программиста. а ммикс учить как раз лишнее. кнут объяснил на примере того, что понятно было ему. он человек старый и потому воспользовался ассемблером современного ему компа. ну а математику программисту, да, необходимо знать или хотябы не бояться. и, да, математика это тоже труд и от нее устаешь и как от переноски мешков нетренированные мышцы болят, так и от математики нетренированные мозги болят. тренируйтесь.
С тех пор как Кнут начал писать свои труды много чего изменилось. Он был хорош как учёбный и справочный материал для своего времени, сейчас же это скорее научный фундаментальный труд, со всеми вытекающими. Сегодня существует масса более доступных, интересных и полезных книг и курсов лекций по алгоритмам (кстати, чем Кормен не угодил? Хорошая книга), которые следует прочитать, хотя бы по диагонали, любому программисту. Почему любому? Потому что есть важное для любого специалиста понятие -- база знаний. Человек мыслит в рамках тех знаний, которые он имеет. Не зная ничего кроме метода перебора (выражаюсь утрировано), специалист будет мыслить весьма ограниченно и однообразно. Любой программист, который знает только C тоже мыслит только процедурными категориями, даже не понимая, что существуют и другие подходы, возможно более эффективные или даже просто интересные.
qqwe дак я малость про другое как бы. я не спорю, что и математику знать надо (не до умопомрачения, но хотя бы минимум в области решаемой задачи), и алгоритмы знать и юзать надо. речь про другое -- многие ли потянут кнута ? вот вы пафосный пост залудили, а кнута сколько страниц после вступления осилили, пока мозги не озябли ? W4FhLF вот и я примерно про то же. смежные с программированием области -- математику, алгоритмы -- следует знать неглубоко, метров пяти хватит. для прикладных задач зачастую хватит и справочника примеров реализации алгоритмов.
Guru_of_Zen современные модны не отслеживаю. потому могу не знать что есть "пафосность". и как "не пафосность". и зачем я должен эту самую "непафосность" юзать. а кнута, то что мне надо было, да, прочел. самопальную версию из сетки. ту, что на латехе без картинок. местами он немного уходит в академичность, но а) тогда не писали проги картинками и не ставили задачу сделать проганье проще букваря и доступным каждому имбицилу. б) там не ставится задача заставить вас вызубрить набор алгосов. там ставится задача научить эти алгосы разрабатывать, объяснить почему и зачем так. и все это языком математики, который заставляет мыслить доказательно, а не на уровне кухни - кто кого перекричит или круче распальцовку состроит. впрочем, если вам тяжел кнут, зачем его ругать? вы его просто не употребляйте. есть выбор и из других авторов. есть и в стиле анекдота пишущие. и даже в виде комиксов.
Сам первые 3 тома Кнута прочитал, когда ещё начинал программировать. Задачи с индексом больше 20 редко получалось решать. Там есть то, что может пригодиться каждому, но также много редко используемых алгоритмов. Например алгоритм нахождения производных, может и пригодиться если писать какой-нибудь новый Mapple. А поднятая тема в чем-то и правильна. Составлять алгоритмы аналогичные представленным в учебниках, например в виде блок схем, как правило не представляется возможным. На каком языке научился кодить, на том у тебя и будут все алгоритмы состовляться.
Твое мнение никого здесь не интересует, поверь. Единственная умная фраза за все время твоего прибывания на васме. Ты абсолютно ничего не понимаешь и не знаешь. _http://wasm.ru/forum/viewtopic.php?id=38197 Начни хоть с чего-нибудь. Если ты хоть что-то понимал в компьютерах, то понял бы, какую чушь ты несешь. Архитектура ПИ СИ включает в себя и ОС и ЦП... семиуровневая ( но не всегда) модель. Архитектура определяется рядом свойств, котор. обесп. функционирование ПО и устройствами периферии. А ты перечисляешь их через запятую. Можно уносить. Ни в одном, даже малюсеньком _реальном_ проекте, ты не участвовал. Сл-но, всё, что ты говоришь - чушь. EOF
Nesmysl Ага тока зарегился уже умозаключениями сыпет или может быть ты сторожила просто ник сменил? Guru_of_Zen Я бы не советовал начинать с Кнута - книга от профессора для профессоров, Бил Гейтс в своей книге Дорого домой написал примерно так - "Если вы понимаете Кнута то вам дорога в Микрософт" примерно так надеюсь смысл сохранил, цитата из цитаты книги Криса Касперски (не помню к сожалению какой). Кнут - это высокий показатель, прочитать могут все но понять все черт его знает какой процент от прочитавших
Nesmysl ты похоже местный бог раз такие выводы обо всех делаешь. Насчет Кнута, чел борится за эффективность и тут все ясно, потому что все чаще выходит быдлокод на рынок ПО, и все всё чаще начинают думать что машинам уже похер насколько громозкое гавно ты напишешь, поэтому читать всегда стоит, а главное понимать это все. Поняв принципы качества Кнута и знать как оценивать эффективность алгоритмов и знать как правильно их проектировать должен каждый программист. Я честно говоря считаю что программист это впервую очередь математик, а не человек который знает кучу технологии но качественно пользовать их не умеет.
Не согласен. Зависит от задач. В прикладном програминге - да. В системном считаю что если есть мозги, то и код будет не черезжопным.
подерживаю JCronuz Гейтса к сожелению не читал, но Кнута читал первые 3-4 главы, причем не "просто" прочитать, а надо еще и осмыслить+) поэтому отложил до лучших времен. ТС вообще математика для программиста нужна для облегчение своего труда(как и знание языка и API и т.д),чем больше знаешь тем меньше кода прописываешь тем меньше пишишь было-код. Ктони-ть может посоветовать хорошую книжку по построению алгоритмов в играх? желеталено не то как с помощью GUI можно построить доску и передвегать фигуры, вообщем нужно что-то вроде просчитывание комбинаций в шахматах и т.д? заранее спасибо.
Я дико извиняюсь, но читаешь вас и смешно: "я думаю что программист должен", "а я считаю что программист не должен". Может, прежде чем "думать" и "считать", для начала немножко в тему въехать? Найдите, к примеру, в Тырнете документ "Квалификационные требования (профессиональный стандарт) в области информационных технологий по профессии "Программист", например, здесь: www.minkomsvjaz.ru/upload/docs/2008021210375cz.doc. И ознакомьтесь. Просто так, для общего развития и осознания, что такое "программист" и какие они бывают. Для тех, кому "многабукаф", намекну: профессия делится на 4 (четыре) квалификационные уровня. Самый нижний - это как раз те, кому Кнут, чтобы зарабатывать деньги кодингом, нафик не нужен и вреден. И математику достаточно знать в объеме 8 класса средней школы. Но ведь кроме него, есть еще 3 уровня... Короче, крохотное пожеланьице от меня, читателя в режиме readonly: форум - он один на всех. Даже ругаться и меряться письками надо на как можно более высоком уровне, ознакомившись с вопросом, чтобы и другим интересно читать было. А пока одни школьные рассуждения, плоская Земля или треугольная.
Если ты хоть что-то понимал в компьютерах, то понял бы, какую чушь ты несешь. 1) Архитектура IBM PC это архитектура проца 8086 + BIOS . ОС может быть разная. 2) семиуровневая модель OSI это и вовсе к сетям ... так что слышали звон.
drmad здесь никто и не собирается ничем мерятся. Я выразил свое мнение по поводу того что стоит читать. а то что ты там ориентируешься по требованиям молодец конечно, но на собеседовании тебя по этим пунктикам спрашивать не будут. а про 8-й класс ты вообще зря сказал, одно дело подходить под конкретную квалификацию и совсем другое совершенствовать себя и свой профессионализм.
Как это -- "программист -- ремесленник"? Это быдло-кодировщик -- ремесленник. Code-monkey -- ремесленник. Программировать != писать код. Масса задач именно прикладного плана не имеют готовых решений и алгоритмов. Самое прекрасное в призвании программиста -- умение думать и решать уникальные задачи. Тогда это уже даже не наукой становится, а искусством. Кнут не зря назвал томы свои "искусство программирования". Чтобы произошел апгрейд от простого исполнителя к профи базу необходимо знать. Алгоритмы и математика -- это база. Если строишь туалет на даче, так как бы вроде особо и не нужны сложные расчеты и дисциплины специальные. Но строят ведь не только туалеты. Хотя...-- каждому своё. Кому -- ремесло, кому -- наука, кому -- искусство.
интересно, многие ли тут О большое произвольного алгоритма посчитают? =) слышал такое мнение, что это обязан знать и уметь каждый, кто называет себя программистом. я с этим не согласен. наверное потому, что сам не уемею и не знаю этого. ну разве что только понять разницу между O(1) and O(nlogn) =)