Всем привет.
Возможно, этот вопрос уже задавался, но п дниму его еще раз.
Что лучше начать изучать начинающему прораммисту: 1) алгоритмы, принципы конструирования кода, паттерны проектирования, парадигмы программирования (короче, теория ) или 2) языки и платформы программирования.
Мои агрументы в пользу 1):
хорошая теоретическая база позволит рассматривать любой язык как инструмент, подходящий либо не подходящий для поставленной задачи;
знание общий концепций и методологий позволит каждый раз не изобретать велосипед.
Мои агрументы против 1):
может быть затрачено много времени, которое возможно стоило бы потратить на набивание руки в какой-либол конкретной области программирования.
Мои агрументы по поводу 2):
собственно обратно аргументам по поводу 1).
Каково мнение старших собратьев по разуму?
Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination, but because their imagination reveals worlds that others cannot see.
Re: С чего лучше начать? : алгоритмы и паттерны vs языки
Здравствуйте, Shizuka-kun, Вы писали:
SK>Всем привет. SK>Возможно, этот вопрос уже задавался, но п дниму его еще раз. SK>Что лучше начать изучать начинающему прораммисту: 1) алгоритмы, принципы конструирования кода, паттерны проектирования, парадигмы программирования (короче, теория ) или 2) языки и платформы программирования.
ИМХО первое без второго невозможно. Нет патернов в отрыве от ЯП, многие патерны имеют стандартную или не очень реализацию в библиотеках.
Конечно в рамках ООП есть более менее базовые принципы (LSP,SRP,OCP). Но если речь заходит о патернах то тут уже все сложнее. Некоторые могут быть реализованы в языке, некоторые в стандартных и не очень библиотеках...
WBR, Igor Evgrafov
Re[2]: С чего лучше начать? : алгоритмы и паттерны vs языки
Здравствуйте, GarryIV, Вы писали:
GIV>Здравствуйте, Shizuka-kun, Вы писали:
GIV>ИМХО первое без второго невозможно. Нет патернов в отрыве от ЯП, многие патерны имеют стандартную или не очень реализацию в библиотеках. GIV>Конечно в рамках ООП есть более менее базовые принципы (LSP,SRP,OCP). Но если речь заходит о патернах то тут уже все сложнее. Некоторые могут быть реализованы в языке, некоторые в стандартных и не очень библиотеках...
Но есть же абстрагированный от языка подход к ООД (UML и др.), или ты считаешь что сама усваиваемость принципов ООП и паттернов низка без примеров на знакомо языке?
Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination, but because their imagination reveals worlds that others cannot see.
Re: С чего лучше начать? : алгоритмы и паттерны vs языки
Здравствуйте, Shizuka-kun, Вы писали:
SK>Всем привет. SK>Возможно, этот вопрос уже задавался, но п дниму его еще раз. SK>Что лучше начать изучать начинающему прораммисту: 1) алгоритмы, принципы конструирования кода, паттерны проектирования, парадигмы программирования (короче, теория ) или 2) языки и платформы программирования.
SK>Каково мнение старших собратьев по разуму?
Сначала нужно набрать алгоритмическую технику программирования... Это как у художников — начинать нужно с простейших натюрмортов...А потом переходить к портретам...
По мере освоения технических возможностей языка — осваивать типовые алгоритмы... Алгоритмы обычно привязываются к структурам данных... Изучая структуры данных в языке на основе типовых алгоритмов для этих структур... А вот паттерны — это уже следующий уровень...
Как написана книжка банды 4 — без хорошего представления ООП трудновато будет...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: С чего лучше начать? : алгоритмы и паттерны vs языки
Здравствуйте, LaptevVV, Вы писали:
LVV>Сначала нужно набрать алгоритмическую технику программирования... Это как у художников — начинать нужно с простейших натюрмортов...А потом переходить к портретам... LVV>По мере освоения технических возможностей языка — осваивать типовые алгоритмы... Алгоритмы обычно привязываются к структурам данных... Изучая структуры данных в языке на основе типовых алгоритмов для этих структур... А вот паттерны — это уже следующий уровень... LVV>Как написана книжка банды 4 — без хорошего представления ООП трудновато будет...
Спасибо за совет. А что за книга банды 4х? Это которая про паттерны проектирования с примерами на С++ и SmallTalk?
(начинал читать, не помню названия). И еще вопрос: для алгоритмической техники программирования подойдет Сэджвик?
Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination, but because their imagination reveals worlds that others cannot see.
Re[3]: С чего лучше начать? : алгоритмы и паттерны vs языки
Здравствуйте, Shizuka-kun, Вы писали:
SK>(начинал читать, не помню названия). И еще вопрос: для алгоритмической техники программирования подойдет Сэджвик?
Я бы порекомендовал С. Окулова "Программирование в алгоритмах". У автора большой опыт в обучении школьников олимпиадному программированию.
Потом можно Кормена и Ко. "Алгоритмы. Построение и Анализ." почитать.
Душа обязана трудиться! (с) Н.Заболоцкий.
Re[3]: С чего лучше начать? : алгоритмы и паттерны vs языки
Здравствуйте, Shizuka-kun, Вы писали:
LVV>>Как написана книжка банды 4 — без хорошего представления ООП трудновато будет...
SK>Спасибо за совет. А что за книга банды 4х? Это которая про паттерны проектирования с примерами на С++ и SmallTalk? SK>(начинал читать, не помню названия). И еще вопрос: для алгоритмической техники программирования подойдет Сэджвик?
Да, это именно та книжка... Называется Паттерны проектирования... Авторы Гамма, Влиссидес и еще двое...
Сэджвик — книжка хорошая... Но немного в отрыве от практических задач... ЕЕ нужно просто изучать... А набирать технику программирования нужно при решении реальных задач. Придумай себе задачу — и в ней уже структуры и алгоритмы применяй...
Есть неплохая книжка Колинза — здесь на сайте есть моя рецензия на нее в разделе Ресурсы-Книги... В ней в конце каждой главы есть более-менее приличная задача, решение которой автор и разбирает...
Например, класс для работы с длинными числами... ВУ Коллинза на основе вектора делается — тут тебе и STL сразу...
Обелиск советует книжку Окулова — неплохая книжка, неплохая... Можно по ней...
Очень полезно первый том Кнута читать... Там во второй части основные структуры данных расписаны... Вообще кнута можно читать, пропуская всю математику... Там алгоритмы очень неплохо написаны... Программы на Миксе тоже можно пропускать...
В общем — удачи в поиске интересной реальной задачи...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: С чего лучше начать? : алгоритмы и паттерны vs языки
Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination, but because their imagination reveals worlds that others cannot see.
Re[4]: С чего лучше начать? : алгоритмы и паттерны vs языки
Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination, but because their imagination reveals worlds that others cannot see.
Re[4]: С чего лучше начать? : алгоритмы и паттерны vs языки
Здравствуйте, LaptevVV, Вы писали:
LVV>... А набирать технику программирования нужно при решении реальных задач. Придумай себе задачу — и в ней уже структуры и алгоритмы применяй...
Категорически поддерживаю совет "набирать технику" на решении реальных задач! Очень странно что сейчас развелось немало (очень много?) "теоретиков", которые много знают (например, отлично проходят "собеседовательные вопросы"), но практические задачи решать не могут. Имхо, первоочередна есть цель, решение практической проблемы, "настоящей" какой-нибудь — тогда хорошо видет и ощутим весь путь. А все "техники" в отрыве от практического применения — человек будет больше думать "а применю как я здесь вот эту методу! нет, лучше эту! или может вот эту...", чем выдавать просто работающую реализацию — пусть даже "не по книжке".
Голь на выдумку хитра, однако...
Re: С чего лучше начать? : алгоритмы и паттерны vs языки
Здравствуйте, Shizuka-kun, Вы писали:
SK>Всем привет. SK>Возможно, этот вопрос уже задавался, но п дниму его еще раз. SK>Что лучше начать изучать начинающему прораммисту: 1) алгоритмы, принципы конструирования кода, паттерны проектирования, парадигмы программирования (короче, теория ) или 2) языки и платформы программирования.
За двадцатилетнюю практику в области ИТ изучил где-то 12 языков программирования и средств разработки, несколько разных платформ. Половина из изученного уже или безнадёжно устарело, или вообще "умерло". Но теория (алгоритмический базис) как была двадцать лет назад, так и осталась. Так что, ИМХО, первое от второго неотделяемо. Думаю, что многое придётся изучать параллельно. Собственно говоря, у меня никогда не было другого выбора. Обычно всё связывается с решением конкретной задачи (проекта). Сложно представить изучение сложных абстрактных вещей без параллельной попытки их реализации на практике. "Начитка" тех же паттернов без реальной попытки их применения практически ничего не даёт. "В первом чтении" многие из них выглядят дублирующими, малоразличающимися, без конкретной попытки их использования в реальной задачи — сути и тонкостей в отличии не увидишь. И так во всём.
Очень многое зависит и от прикладной области. Одно дело, это системное программирование, создание каких-то серверов приложений, фреймворков и т.п., другое дело — это БД, экономика, бизнес-приложения, и совсем другое графика или игры. И такие отличия в "прикладнухе" могут существенно повлиять на то, что, в каком порядке и в каком объёме изучать.
Читай "классику", копайся в примерах или исходных текстах хороших реализаций (если есть доступ), пытайся перенять "Best Style" — это, пожалуй, универсальный совет. Возьми сначала какое-нибудь одно направление. Сразу установи себе сроки и приблизительнй объём из того, в чем хотелось бы разобраться по-подробнее, а что для начала просмотреть поверхностно... Время — самый дорогой ресурс! Не пытайся охватить сразу очень много, иначе в итоге не достигнешь ничего...
Надеюсь, что хоть как-то помог...
Re[2]: С чего лучше начать? : алгоритмы и паттерны vs языки
Очень хороший фопрос поставил автор топика.
Помню я в 5ом классе начал изучать блок-схемы... потом книжицу эту запихнул в печь.
Взял бейсик и написал игру с подвижными графическими объектами — решил массу проблем, по ходу возникло множество других — движение по фону не затирая его, звук и движение объекта одновременно, анализ столкновений (и это все на 64кб ОЗУ и аскетичный редактор) ... вообщем я не знаю как изучая блок-схемы мог бы сам себе поставить такие задачи.
Потом уже, изучая такие предметы как философия и психология узнал что есть 2 разных типа людей, первый лучше понимает если изучает от общего к частному, второй тип — от конкретных задач к обобщениям. Я отношусь ко второму типу.
хоть и просмотрел этот тред 3мя месяцами позже, но за ответ — спасибо.
Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination, but because their imagination reveals worlds that others cannot see.