Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Философия программирования > Алгоритмы. Учебники |
Автор: webz 3.1.2010, 18:43 |
Добрый день. Не знаю, правильно ли выбрал раздел для вопроса. У меня несколько вопросов: Начал изучать программирование (около 2 месяцев PHP, если точно) Столкнулся с тем, что сам синтаксис языка выучить, найти нужную функцию в документации относительно просто. Но никак не получается начать "думать" как программист. Видеть как-то решение задачи.. Дальнейшие поиски повернули в сторону алгоритмов. Видимо это самое важное, а как написать на языке уже второй вопрос. Учебники, которые находил (книги Кнута, книга Кормена "Алгоритмы. Построение и анализ") - все требует знания математики. У меня эти знания со школы уже подвыветрились. Может есть что-то более доступное для понимания? Если заниматься с преподавателем математики - на чем акцентировать внимание? Рад услышать любые советы. |
Автор: kemiisto 3.1.2010, 19:14 |
Есть. Например, http://www.williamspublishing.com/Books/5-8459-0987-2.html. Или недавно вышедшая http://findbook.ru/search/d1?isbn=978-5-94074-584-6&r=0&s=1&viewsize=15&startidx=0. Но без математики всё же никак. Надо знать многие разделы математического анализа. Можно воспользоваться классическим учебником В. А. Ильин, В. А. Садовничий, Бл. Х. Сендов, Математический анализ. В 2 частях. В продаже сам найти не смог, но по сети ходит электронная версия середины 80-х. Ну и без дискретной математики далеко не уедешь. Тут могу рекомендовать два труда с одинаковым названием "Дискретная математика для программистов" за авторством Ф. А. Новикова и Р. Хаггарти. |
Автор: webz 3.1.2010, 21:16 |
kemiisto, спасибо! |
Автор: maxdiver 4.1.2010, 00:39 |
По моему скромному мнению, математика не настолько уж необходима, чтобы начинать с неё. Хотя я сам как раз таки алгоритмами достаточно плотно занимаюсь, но всё же, на мой взгляд, чтобы стать хорошим программистом, не обязательно начинать с всяких графов, теории сложности, и прочего. Конкретную книгу я советовать не буду, тем более тут всё от языка сильно зависит. Только PHP на эту роль никак не тянет ![]() Лично я поступал следующим образом: сначала я некоторое время тратил на хорошее изучение синтаксиса языка. Несколько месяцев я читал различные книги, начиная с самых азов, и постепенно переходя ко всё более углубленным книгам. За это время помимо самого языка впитывается и его "философия", ведь в этих книгах даются рекомендации опытных людей, обобщающие в себе огромный накопленный опыт. И только потом я устанавливаю среду программирования себе на компьютер. Затем я ставлю себе какую-нибудь учебную задачу, поначалу простую, но и чтобы ей было интересно заниматься, и долблю-долблю её, пока всё не выйдет так, как я и хотел, и чтобы при этом и код был достаточно красивым и отвечал требованиям профессионалов ![]() И математика при этом редко оказывается нужна, точнее, когда оказывалось необходимым решить конкретную задачу, я искал книги/статьи по теме и разбирался в решении. Изучать все подряд алгоритмы, пусть даже и совсем базовые и простые, в такой ситуации мне кажется неразумным. Дискретная математика, комбинаторика, теория чисел - во всё это я углубился позже, когда вплотную занялся олимпиадами (опомнился вдруг, в универе, поиграться решил ![]() ![]() |
Автор: Pavia 4.1.2010, 14:28 |
Математика в алгоритмах не так важна. Важно абстрактное мышление которому как раз и учит математика. А также математика это язык на котором приходится разговаривать чтобы понимать некоторые вещи. Предлагаю начать с "С. Окулов Программирование в алгоритмах". Алгоритмы можно писать на любом языке. Даже на бэсике. В книжке достаточно теории для реализации и есть задачи. И минимум математике. А если захочется задач по интересней то можно найти много сборников. К примеру "Особенности национальных задач по информатике". Можно найти также много книг с математикой. Сам я увлекся распознаванием образов и обработкой сигналов. Вот тут мне встретилась вся высшая математика и не только. |
Автор: webz 5.1.2010, 15:14 |
maxdiver, Pavia, спасибо большое за ответы! |
Автор: _Y_ 8.1.2010, 19:55 |
Не знаю, подойдет ли это Вам, но сам я большой поклонник http://ru.wikipedia.org/wiki/%D0%91%D0%BB%D0%BE%D0%BA-%D1%81%D1%85%D0%B5%D0%BC%D0%B0. Алгоритм расписывается в виде схемы и, таким образом, становится ясным и наглядным. Может стОит взять пару-тройку несложных общеизвестных алгоритмов (например сортировку перестановкой, сортировку пузырьком, еще что-нибудь) и попробовать самому расписать их в виде блок-схем по всем правилам? Потом взяться за собственную задачу, не намного более сложную, и нарисовать до того, как начать программировать. Понятно, что когда пойдут сложные задачи, придется составлять отдельные схемы для подпрограмм (методов, функций). Когда втянетесь, уже не будете, конечно, рисовать блок-схемы для всего, что понадобилось. Просто представлять будете себе ясно шаги алгоритма, а уж разрисовывать - только самые сложные и запутанные структуры. |
Автор: Vad118 10.1.2010, 02:01 | ||
Кстати говоря ведь именно так и проходит обучение программированию в учебных заведениях. Берите учебник по программированию, по любому языку(можно и по php главное чтоб там были как-раз задачки подобного типа - сортировка пузырьком, поиск в массиве, и прочие элементарные, если таковых нет, ищите другой учебник ![]() Никакая высшая математика, и проч. не понадобится, всё что вам нужно - алгебра логики - это школьникам ещё дают - элементарщина, если пороетесь в инете найдёте. В принципе дискретная математика тоже в эту сторону. Но основой этих простых алгоритмов будет только ваше собственное логическое мышление, а когда набьёте руку на этих простых задачах, сами поймёте что вам нужно дальше. |
Автор: esperanto 13.1.2010, 00:31 | ||
1) Нет. Не так. 2) Вы заблужаетесь, мало выдумать алгоритм. Наде уметь доказать что он работает правильно. Уметь посчитать его сложность и оценить эффективность. |
Автор: hkdkest 14.1.2010, 14:24 |
без азов математики никуда (то что в школе проходят) |
Автор: bumbastic 15.1.2010, 14:40 | ||
kemiisto, не подскажете где ее можно скачать в электронном виде? очень нужно! сам не нашел |
Автор: bumbastic 18.1.2010, 15:21 |
нет значит в электронном виде? так понимать "молчание НЕягнят"? ![]() Альфред В.Ахо, Джон Э.Хопкрофт, Джеффри Д.Уильман "Структуры данных и алгоритмы" очень доступно написано. даже я понял ![]() |
Автор: jijidesign 31.8.2010, 17:10 |
ох, ох. Да, да абстракция это хорошо, НО мы забываем что программисты люди конкретные, и им много приходится думать, рассуждать, связывать цепочки и анализировать это. Логическое мышление - это наше все. Как говорят люди играющие на профессиональном уровне в шахматы, бридж могут стать хорошими программистами. А математика, не вся нужна программистам, ну конечно программисткую математику не надо запрещать, а вот мат анализ бывает лишний, просто у нас в РОССИИ всей же обучают по Советской программе, когда все 5 курсов долбят матаном. Да это полезно, но не всегда. Вид может человеку некогда не пригодится векторная алгебра, линейная алгебра, аналит. геометрия - он просто не хочет писать свой 3D движок. Так что, надо определится чем хочешь заниматься, какими отраслями, и с этого пункта уже ориентироваться на какие в первую очередь нужны знания. ;) Например я стал изучать математику, не потому что мне нужно, а потому что нравится, и охота научится решать самому сложные примеры, и искать свои методы решения. - Нравится, и все. Хотя, лень убивает бывает. Так что удачи в свои начинаниях, помни всегда правило дедушки "Учись, учист и еще раз учись". Надеюсь чью то самооценку не задел. |
Автор: kemiisto 31.8.2010, 17:19 | ||
Хороший двухтомник. Удалось купить у букинистов. Кстати говоря, вышла новая версия классичсекого труда Н. Вирта. http://findbook.ru/search/d1?isbn=9785940745846&r=0&s=1&viewsize=15&startidx=0. Хорошая книга. |
Автор: jijidesign 1.9.2010, 10:45 |
А я в данный момент читаю книгу, Кнут'а "Конкретная математика", можно еще почитать "Искусство программирование" тоже кнута, но там это, много математики - нужна база. |
Автор: ValeryLaptev 6.9.2010, 08:11 | ||
Не просто хорошая, а ОЧЕНЬ ХОРОШАЯ. Там еще к ней сидюк с системой BlackBox прилагается. И все примеры книги в этой системе расписаны и представлены. И доки по самой системе тоже есть. Переводчик ОЧЕНЬ грамотный, сам преподает программирование - перевел просто отлично! Да еще и непосредственно с Виртом согласовывал весь текст. Рекомендую. |