Pull to refresh

Comments 87

по моему мнению очень неплохой ресурс по введению в курс дела
http://firststeps.ru/
Ресурс хорош. Но он как раз и подталкивает к беспорядочному накоплению знаний в разных конкретных областях. Чего очень не хочется.
Я мечтаю составить для себя курс, наподобие институтского - от простого к сложному, с сохранением структуры знаний.
на intuit.ru ходили ?
Беспорядочно накопленные знания, при наборе определенной критической и массы и при условии их реального применения имеют свойство упорядочиваться сами собой :)
но всё-таки это, наверное, не лучший способ)) С практическим применением никто не спорит, но применять тоже лучше не всё подряд)
Выше я имел в виду то, что когда "беспорядочных" знаний в разных смежных областях становится много, они начинают обрастать связами и представлять собой одну ясную картину.

Может быть способ и не лучший, но свои преимущества имеет. Например когда-то именно раздел по WinAPI сайта firststeps помог мне быстро начать писать Win32 API приложения, а не чтение упорядоченного и структурированного MSDN и даже не книжки Рихтера про программирование под Windows. Лично мне было проще начать так, а потом по мере необходимости был подтянут MSDN и была прочитана книга Рихтера.
тут Вы совершенно правы, начинать с Рихтера - плохая идея, а MSDN имхо используется как справочник, а не как учебник.
Другое дело что и для первых шагов, и для профессионалов есть книжки хорошие и плохие. И даже "беспорядочные" знания лучше набирать по хорошим)
С этим полностью согласен :) Хорошо всегда использовать лучшее, но не всегда так выходит..

Для меня критерием качества источника информации является смогу ли я извлечь из представленных данных нужную мне информацию за заданный отрезок времени. Если материал удовлетворяет этим требованиям, значит он хороший независимо от его оценок относительно всего множества материалов данной тематики, так как он позволяет решать текущие задачи прямо здеcь и сейчас, а ничего другого и не требуется. Ведь по сути дела, кроме самих данных решающее значение имеют методы работы с ними и тот бэкграунд знаний которые уже есть на момент начала работы с новым источником информации. Оба этих параметра оказывают очень серьезное влияние на восприятие и усваивание новой информации.
Вообще мне концепция обучения представляется так: сначала фундамент из непоколебимых основ (наши вузы вроде бы ещё способны его давать), и если говорить о книгах, то ставить мозги на место и создавать общую картину предметной области должны проверенные источники. Если копать совсем глубоко, то мозги на место ставит хорошая математическая база, но это уже у кого как в жизни сложится.
А когда человек уже получает некоторое понимание и знает хотя бы в какую сторону ему двигаться, делать это можно самыми разными способами, и тут про качество источников вы совершенно правы.
Но это меня уже куда-то на границы с философией занесло :)
Всегда по рукой: «Профессиональное программирование на PHP», Джордж Шлоссенейгл, ISBN 5-8459-0925-2 (рус.).
Хороша теорией и примерами (не готовыми проектами) по ООП и обработкой ошибок с помощью первого.
Забыл подметить, что в ней основ PHP нет (кроме ООП).
Гран мерси, занесем в списочек )
Собственно, про пхп встречал всего две серьезных книги на русском. Вот эта и Энди Гутмаса ("PHP5 Power Programming").
Книга "Совершенный код" Стива Макконнелла.
Думаю, must read для любого программиста).
UFO just landed and posted this here
GoF: http://en.wikipedia.org/wiki/Design_Patterns
Применительно к Flex: http://www.amazon.com/ActionScript-3-0-Design-Patterns-Programming/dp/0596528469
только имхо не в этом случае. это нужно после осмысления всего предыдущего брать.
писал анализ литературы для курсача, в него вошли 17 книг по php. просмотр литературы был очень беглый (все 17 штук за ночь), так что на полноту не претендует. больше всего понравилась - "Котеров Д.В., Костарев А.Ф., PHP5. Наиболее полное руководство". сам обзор тут http://blog.reborn.ru/programmer_notes/?postid=4617
"PHP5 для профессионалов", Эд Леки-Томпсон, Хьяо Айде-Гудман, Алек Коув, Стивен Д. Новицки (ISBN 5-8459-1066-8). Хорошая книга. Охватывает много фундаментальных аспектов:
  • Основы ООП
  • Шаблоны (паттерны) проектирования
  • Служебные классы (например, Collection, GenericObject)
  • Уровни абстракции базы данных
  • Протокол SOAP
  • MVC
  • Модульное тестирование
  • и многое другое
Почти половину книги занимает учебный пример (автоматизация работы торгового предприятия), в котором кроме перечисленных выше аспектов рассматривается также методология управления проектами, проектирование и архитектура системы.
Есть у этой книги один минус - куча ошибок как в тексте так и в исходных кодах, хотя лично меня эти ошибки заставляли глубже задумываться над приведёнными примерами.
Где бы эту ск0чать посмотреть. Даже английскую версию не нашел...
Воспользуйтесь поиском по библиотекам: http://www.ebdb.ru/
Есть там английская аж на 5-ти сайтах.
Не знал про такой полезный поиск. Спасибо. :-)
за ресурс действительно спасибо
How to Design Programs
An Introduction to Computing and Programming

Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi

http://www.htdp.org/


Structure and Interpretation of Computer Programs
an excellent computer science text used in introductory courses at MIT.

Hal Abelson, Jerry Sussman, Julie Sussman

http://mitpress.mit.edu/sicp/
1) Программист-прагматик. Путь от подмастерья к мастеру. Авторы: Э.Хант, Д.Томас
2) Приемы объектно-ориентированного проектировани. Паттерны проектирования. Авторы: Э.Гаммаб Р.Хелм, Р.Джонсон, Д.Влиссидес

Во второй книге подробно разобраны очень многие паттерны
вторая книга она как бы библия паттернов, а ребята из GoF главные их пророки.
я когда заказывал на днях 2 книгу, в списке советов видел первую.
почитал описание. не впечатлило. он стоит того, чтоб читать?
До глубокого чтения еще руки не дошли, но от просмотра мельком не пожалел что купил
SICP, она же «Wizard book», есть в бесплатном виде на сайте MIT. Design Patterns: Elements of Reusable Object-Oriented Software за авторством GoF.

Читать только подлинники, потому что перевода нормального нет. Точнее, для SICP был эффорт какой-то, но я не уверен, что он успешно закончился.

И да, в русском языке нет слова «движусь», есть слово «двигаюсь».
UFO just landed and posted this here
К. Ларман. "Применение UML и шаблонов проектирования".

Фундаментальный труд, охватывающий сразу несколько аспектов разработки ПО. Я читал эту книгу довольно давно, перечитывал некоторые части много раз. Сразу оговорюсь, я читал 2-ое издание, но сейчас в продаже уже 3-е.

Первое, что я вынес для себя из этой книги - это представление о том, как должен выглядеть итеративный процесс разработки в частности и процесс разработки в общем. В книге описывается UP. Причем описываются различные аспекты и виды работ: начиная от формирования первоначального видения проекта и описания use-case`ов, и заканчивая тестированием продукта. Приведены наиболее распространенные шаблоны проектирования. Подробные описания и разъяснения, а также примеры применения шаблонов. И конечно же это отличный учебник по UML.

Способ подачи материала не рассчитан на профессионала. Это, скорее всего, учебник, который дает представление обо всех аспектах объектно-ориентированного подхода к созданию ПО и об итеративном процессе разработки. Простой и понятный язык.

Если хочется упорядочить уже имеющиеся знания и получить базовые знания обо всех смежных с разработкой ПО областях - анализ, проектирование, тестирование, документирование и т.д. - очень рекомендую.

Из минусов: не очень хорошо переведены некоторые термины, книгой неудобно пользоваться как справочником.

Вот ссылка на ozon: http://www.ozon.ru/context/detail/id/3105480/
кстати, какие свободные и удобные UML-средства используете? может быть что-то можете порекомендовать?
Свободных и удобных одновременно к сожалению не встречал. Использую PowerDesigner.
Одно время был инструмент от Borland. Не помню как назывался (Team чего-то там). Потом он стал платным.

Использовал различные UML-плагины к Eclipse.
> Основы программирования, основы ООП, создание удобного и расширяемого кода и т.д. и т.п. Движусь, в основном, в сторону ...

Из любимых книг предлагаю следующие
1. Гудман, C. Хидетниеми, C. Введение в разработку и анализ алгоритмов
2. Бентли Дж. Жемчужины программирования
3. Керниган Б., Пайк Р. Практика программирования

Как видите книги не привязаны в названиях к языкам программирования.
Все они хороршо показывают алгоритмический подход к решению задач.
Иллюстрациями являются блок-схемы, словесные описания, псевдокод алгоритмов и вставки фрагментов текста на некоторых языках программирования.

Я предложил именно эти книги, потому что они описывают
1. представление информации в компьютерах
2. правильные подходы при алгоритмизации задачи
Вот это как раз и есть основы, спасибо
Забыл добавить - не стремитесь охватить все сразу.
Кстати только первая из книг было рекомендована в качестве учебника в Америке.
Но и ее и все остальные можно читать и как учебник (есть теория и задачи), и как научно-популярную литературу.

Основы программирования они дают в полной мере.

По основам ООП сложно что-либо рассказать много. По системам счисления и то больше получится.
"Веревка достаточной длины, чтобы… выстрелить себе в ногу". Ален Голуб
книга очень толковая и рассказывает о программировании в целом, с небольшими примерами из си-си++.

если же конкретно по языкам то по си++ рекомендую
Брюс Эккель - Философия Си++ ( есть в свободном доступе в нете на английском "Thinking in C++" )
вот ссылки на почти все вышеназванные книги

Профессиональное программирование на PHP
http://rapidshare.com/files/60709022/Advanced_PHP5_programming._Schlossnagle__G.rar

Совершенный код" Стива Макконнелла.
http://infanata.ifolder.ru/7067919
http://rapidshare.com/files/120966062/mcConnellCodeComplete.rar.html


К. Ларман. "Применение UML и шаблонов проектирования".
http://www.proklondike.com/file/design_larman_uml_and_patterns.rar


Приемы объектно-ориентированного проектировани. Паттерны проектирования. Авторы: Э.Гаммаб Р.Хелм, Р.Джонсон, Д.Влиссидес
http://rs214.rapidshare.com/files/50075933/priemy_obektnoorientirovannogo_proektirovanija_patterny_proektirovanija.rar


Бентли Дж. Жемчужины программирования
http://wmate.ifolder.ru/1592404

Керниган Б., Пайк Р. Практика программирования
http://mini-soft.ru/book/tech_prog/index.php
Все эти книги по сути, дикий маразм :-/
Нужно садится и делать конкретную задачу (взять где-то, самому себе поставить), и желательно что бы кто-то контролировал и наставлял на путь истинный...

У нас менталитет такой, что без собственных ошибок вообще ничему не научишься.
И фраза "переучивается тяжело" роли не играет, все равно придётся!
> по сути, дикий маразм

http://ru.wikipedia.org/wiki/Маразм
Вы какой смысл вкладываете в данное слово?

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

Просто читая, без практики, сильно многому не научишься(для такого нужен хороший склад ума).
Если ты прочитаешь как плыть брассом, сразу брассом ты не поплывёшь, ты должен много, очень много времени потратить на то, что бы научится. Если есть наставник (тренер) - это время сократится в разы.

Систематизация знаний без знаний очень фиговая затея... Прочитав толстую книгу до конца, ты забудешь практически все что было в начале (а это обычна база языка). Лишь после использования прочитанного на практике (не на тестах, в "боевых" условиях) у тебя останутся эти знания, особенно они хорошо отпечатаются в памяти, если они пришли через "грабли" или "шишки" на лбу ;)
никто не говорит, что нужно "читать без практики"
Вы такой интересный ) Я-то как раз умею решать конкретную задачу. Да еще и если гуру вокруг сидят. Я говорю о том, что такой подход - бессистемный, неправильный. Потому что код, получающийся при этом, чаще всего похож на кошмарный сон. Потому что не зная базы можно наворотить такое решение, что и индусы рядом не валялись. Работать-то оно будет, да...

У кого это - у "вас" менталитет такой?
У нас, у славян ;)

Вы сравнивали свой код теперешний и годичной давности? Различия на лицо. Учился я по многим учебникам, а к нормальному кодингу пришёл сам, постоянно натыкаясь на какие-то грабли. Тем более каждый, абсолютно, пишет все по своему :) Используя только некий "шаблон" программирования, улучшая его или наоборот.

А для систематизации знаний, нужно много всего прочитать, попробовать на практике, а потом пройти какой-то итоговый тест, тогда будет результат :)
минусов наставили, карму убили, а сказать за че и почему, ни слова, ну не "троли" разве?
1. "Код", Чарльз Петцольд. "Для самых маленьких", фундаментальные принципы работы ЭВМ, организация памяти, основы архитектуры процессоров и т.п., буквально на пальцах. Не понять невозможно.
2. "Практика программирования", Брайан Керниган, Роберт Пайк. Принципы и приемы программирования на различных языках высокого уровня.
3. "Философия Java" (Thinking in Java) Брюс Эккель, фундаментальные представления об ООП и Java
4. "Программист-прагматик", Эндрю Хант - обязательна к прочтению для любого практикующего программиста; если придерживаться советов из этой книги, эффективность работы повышается на порядок.
5. Прочее: "Паттерны проектирования." (строго после опыта самостоятельной разработки, иначе многое будет просто не понятно), "Мифический человекомесяц" (управление процессом разработки), "Искусство программирования" (для математиков и фанатиков) и т.п. авторов и книг много и тут уже многое зависит от конкретной области развития и применения.
Хорошая тема, записал выписал себе несколько книжек из комментов выше.
Сам ничего не добавлю - все что хотел написать, написали до меня.

p.s. Забавно, что у меня порядка 40% моих книг от издательства Питер, и 30% от издательства Вильямс. Хорошие книги переводят =)
Нужно обязательно прочитать:
Мартин Фаулер "Рефакторинг существующего кода"
походу кода еще нет
Не имеет значения, эта супер-книга даёт информативный опыт по написанию кода, который не нужно будет сильно рефакторить в последствии.
Книга именно по рефакторингу. Причём во многом справочник, а не учебник.
О коде, который не нужно будет рефакторить - лучше "Совершенный код" читать.
Лично мое мнение, надо начать, а нужную литературу прочтешь походу дела.
UFO just landed and posted this here
UFO just landed and posted this here
Да, Буч это классика! Присоединяюсь.
а не подскажете как он по-английски пишется? по "Gradi Butch" что-то ничего не находится -_-
UFO just landed and posted this here
По-моему, первой книгой на полке начинающего программиста на объектно-ориентированных языках должен стоять учебник логики. Я рекомендую учебник Ивлева; еще есть пособие М.И. Панова, но его не найти.
После некоторого штудирования логики можно брать какую-нибудь умную художественную литературу, потому что такой наборчик:
>>Движусь, в основном, в сторону PHP и Adobe Flex,
>>но параллельно приходится знать и Javascript и
>>объектно-ориентированные базы данных и C++
>>и многое другое.
создает дилетанта во всех этих... ммм... отделах программирования :)

Классика С++ — это Страуструп (http://lib.ru/CPPHB/) и Герберт Шилдт. "Классика" PHP — рефман к нему и советы специалистов на форумах, а книг по нему великое множество, наверное, дело вкуса. А если ориентироваться по издательствам, как Unknown007, то зе бест — это О'Рейли :)

В общем, мое мнение таково — главное определиться, что писать и на чем писать и не делать все одному. Диверсификация рулит :)
Я какбе перечислил больше чем надо, чтоб тема и другим пригодилась )
Мое дело - пхп, флекс и ообд
UFO just landed and posted this here
У меня другой вопрос. Свою сферу я описал довольно четко в топике. Вопрос о базовых, основных для любого из перечисленных вами направлений, знаний.
UFO just landed and posted this here
пхп, флекс, ообд. Все это дело - кроссплатформенное.
UFO just landed and posted this here
У меня есть конкретная задача, для решения которой лучше всего подходят именно флекс и пхп. А си++ перечислен не лично для меня, а чтобы тему немного расширить.
Про пхп. Знания по ооп мне нужны не для него, а для того, чтобы верно работать с ообд.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
По ООП есть фундаментальный труд Бертрана Мейера "Объектно-ориентированное конструирование программных систем". Редкий пример того, как в книге могут быть полезными все 1200 страниц (второй такой пример - "Совершенный Код" - она ненамного меньше по объему). Целиком я ее пока не осилил, но некоторую степень просветления уже обрел :)
Лучше труда Фаулера "Рефакторинг" не видел ничего. Очень легко читается.
Хотя и GoF про паттерны тоже стоит почитать.
На хабре есть тематический блог про книги: Читальный зал. Будет правильно перенести топик туда.

А по поводу книг ничего дельного посоветовать не могу - все что читал советовали выше. Даже выписал себе пару книжек на будущее.
МОЩНЫЙ_ФУНДАМЕНТАЛИЗМ: Иан Грэхем, Объектно-ориентированные методы. Принципы и практика, 3-е издание, изд.Вильямс, 2004
880 стр., с ил.; ISBN 5-8459-0438-2, 0-201-61913-X; формат 70x100/16; твердый переплет, 1 кв..
http://www.williamspublishing.com/Books/5-8459-0438-2.html

ГИБКИЕ_И_ОБОСНОВАННЫЕ_РЕШЕНИЯ: Мартин Фаулер, Архитектура корпоративных программных приложений (Addison-Wesley Signature Series), изд.Вильямс, 2008
544 стр., с ил.; ISBN 978-5-8459-0579-6, 0-321-12742-0; формат 70x100/16; твердый переплет, 3 кв.; Вильямс.
http://www.williamspublishing.com/Books/5-8459-0579-6.html

КРАСИВЫЕ_НАХОДКИ: GoF уже называли;

СОПРОВОЖДЕНИЕ: по рефакторингу ООП-кода неплохие книжки у Фаулера, Кириевски и т.д..
1. Гради Буч - "Объектно Ориентированный Анализ и Проектирование" Обязательно читать! До того, как брать в руки что-либо другое!

2. После Буча можно осваивать практику, определяясь в со сферой. Если язык Java - То обязательно Брюс Эккель Thinking in Java. Если С++ - Страуструп

3. В любой последовательности "Рефакторинг" Фаулера (см выше), "Введение в шаблоны проектирования" Гамма-Хелм-Джонсон-Влиссидес (см выше)

4. Очень неплохая книга Д. Кериевски "Рефакторинг с использованием шаблонов".

Ларман. "Применение UML и шаблонов проектирования" мне лично не очень понравился. Даже если откинуть субьективную оценку отвратительного перевода на русский (каюсь, читал не на языке Шекспира), эта книга никак не может претендовать на место в библиотеке начинающего ООП программиста.

В ней гораздо больше материала посвящено процессам разработки коммерческого ПО, нежели философским или прикладным аспектам ООП. Я бы рекомендовал ее как хороший материал для изучения одного из (!) способов организации процесса разрабоки.
Тут еще не так давно вышла "Объектно-ориентированное программирование на PHP" Максима Кузнецова и Игоря Симдянова, издательство bhv. У меня в голове она кое-что упорядочила. В ней нет основ PHP, а построена приблизительно так:
1. ООП в PHP теория.
2. Создание ООП фреймворка.
3. Создание ОО CMS.
Прежде чем учить ООП я бы посоветовал сначала составить свое мнение по следующим вопросам:
1) Автоматное программирование
2) Функциональное программирование
3) Логическое программирование
4) Процедурное программирование
5) Структурное программирование
6) вот тут ООП!
7) Прототипное программирование
8) Аспектно-ориентированное программирование
При изучении каждого пункта посмотреть на пару типичных представителей языков программирования (многие знают, что JavaScript - прототипно-ориентированный?).
Вот тогда вас можно будет назвать начинающим программистом. И можно будет продолжать развиваться дальше.
Искусство программирования - это не знание в совершенстве стандартных библиотек C#, а нечто большее. 90% наших ВУЗов почему-то считают, что если человек знает 3 признака ООП и написал 10 лабораторных, то он - уже программист. И самое плохое в этом, что человек тоже так начинает считать. А для того чтобы программировать профессионально надо одновременно использовать все ключевые идеи из всех вышеперечисленных областей.

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

Видно, что не зная ООП уже можно быть хорошим программистом. А вот зная только ООП - нельзя. ООП - это продолжение теории программирования, а не начало. Кстати и не конец.
>Решил с этим бороться и начать изучать все заново, по порядку.

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

>Знаю, что здесь полно опытных людей, которые могут посоветовать с чего начинать и в каком порядке учить.

Я сомневаюсь что это возможно, порядок только вы можете выработать для себя, почитайте отзывы в интернете и решите что вам стоит почитать. А лучше вообще пишите больше кода.

>Движусь, в основном, в сторону PHP ...

Мне кажется не лучший язык для изучения ООП. Может, например, попробуете Java?
Поддерживаю Java. Хотя ООП-подход в веб программировании практически не используется. ООП хорош для написания middleware и бизнес-логики. Из ООП фреймворков для веба можно назвать разве что Java Server Faces, и то ООП там используется в неявной форме.

Под ООП я понимаю не "язык с объектами", а метод программирования, при котором используется наследование, инкапсуляция и полиморфизм.
Эээ. Чот даже сказать-то нечего.
RoR, Mzz, Seaside, ...
Попробуйте SICP. Есть на русском, есть английские видеолекции. Это не об ООП (хотя есть и это), а вообще о том, как надо программировать.

Что касается ООП, тут предложить можно много. Думаю, что стоит посмотреть на Smalltalk, Self, или вот semka рассказывает про Io. Также подойдёт java script. Со статической типизацией - есть мейнстрим языки - Java, C#.

Почитать будет, когда будете пытаться делать что то на одном из этих языков. Общие принципы для С++-like языков есть в книжках Буча, GoF, Фаулера.

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

Просто ООП - вещь не совсем точная: мало того, что он в разных языках разный, так и каждый под ним понимает что-то своё.

Из принципов, относящихся именно к ООП, стоит почитать про LSP.

И напоследок - лучше сначала почитать про программирование вообще, это неплохо сделано в SICP.
Sign up to leave a comment.

Articles