Как стать автором
Обновить

Комментарии 35

Как-то странно поставлен вопрос. Как будто веб-программирование и вовсе не есть программирование, будто принципы обучения и там, и там как-то принципиально отличаются.
Веб-программирование и, в частности, программирование на php — безусловно относятся к программированию вообще (притом, хочется верить, не в последнюю очередь), но спросил именно о потребном: как наставить на путь истинный начинающего php-программиста. Странно ведь будет ему давать примеры кода, скажем, на Си, не так ли?
По-моему, сначала нужно дать ему почитать общие книжки о программировании. Например, Кнута или Кормена. Нужно же понимать, как вообще действуют алгоритмы, к чему все сводится. А то ведь никакого развития не будет.

Например, когда я два года назад поступал в университет, свято верил в то, что написание программ похоже на написание книг (типа, развиваем мысль, пишем последовательность, "сюжет"), а математики там почти нет. Сейчас все с точностью до наоборот.
Когда я закончил университет, я как-то смирился с тем, что для осознанного чтения Кнута, как и другой фундаментальной литературы, нужна хорошая мотивация. Вот у Вас она, похоже есть и, как говорится, дай Бог. А когда человек начал копаться в php насмотревшись на существующие веб-сервисы и в своих стремлениях нацелен на реализацию "что-то вроде этого или того-то" ему, имхо, нужны конкретные примеры того, как какие-то здравые методы могут помочь "здесь и сейчас".
Если уж на то пошло, то не Кнут и Кормен, а Макконнелл, Фаулер и GoF. Они имеют отношение к сабжу, а Кнут исключительно алгоритмам, ооп, если не ошибаюсь, там вообще не прослеживается нигде.
UPD: Неможко промахнулся, это ответ на коммент выше
Не стоит так жестоко. Он же начинающий, а вы его сразу в Кнута с Корменом. Совсем просто надо!
Как чтение Кнута и Кормена может помочь пониманию ООП, а?
В первом предложении я говорю об общих книгах по программированию. В самом первом.
Лично я для себя выяснил следующее: ООП нужно использовать при написании библиотек. Больше его использовать ни где ненадо.
Библиотеки используются обычно в крупных проектах, а новичек крупный проект не станет. А как только у него накопится опыт программирования и накопятся знания, тогда он уже сможет асилить ООП и написание крупного проекта.

Я вообще сам никогда не писал ООП. И я уже давно не новичок, просто меня приучили не использовать то, чего можно обойтись.
ООП в PHP на самом деле не совсем уместно. Его используют как основу в Java, C, C++, но в PHP практически (это не значит нигде) нигде нет обходимости использовать, в следствие его (классов) не полной реализации наследования и полиморфизма. По сути использование ООП в PHP подобно использованию молотка для убития мухи.
Лично я конечно использую ООП в PHP в некоторых случаях, но больше придерживаюсь процедурного программирования.
А можно Вас попросить дать какие-то конретные примеры, если не на уровне кода, то на уровне концепции? В духе: ООП в PHP уместен там-то и совсем не пригоден для всего остального. Коли ООПу в php делать нечего, то и этому, наверняка, есть весомые аргументы, знакомые профессионалам :)
ООП в PHP уместен там, где оно уместно в любом другом императивном языке программирования. Уместность ООП для решения какой-то задачи обычно мало зависит от ЯП.
В моем движке например всего один класс для работы с БД (чтобы ее можно было менять), однако ООП больше нигде мне не понадобилось и все пишу процедурное, в том числе и парсер шаблонов.
Если для вас веб-программирование — муха, то, видимо, вы не ушли много дальше гостевой книги.
Я, кажется не упоминал, что программирование для меня муха, это задача может быть решена на ура без использования ООП.
А о моем уровне судите сами http://www.school530.com.ru, только прошу не особо минусовать (увидев, поймете за что) :)
Знакомый дизайн ;)
Вам наверное просто после Явы и прочего сложно использовать пхпшное ООП. А тем, кто с него начинает - нормально.
Я и начал с PHP, а в Яве знаю только основы, да и потом я не говорил что мне сложно с ООП :)
…практически (это не значит нигде) нигде
Начинайте обучать с Java-ы (CPP, C#, Delphi - нужное подчеркнуть), я уверен он проникнется ООП. Php не самый лучший вариант доказывать полезности и прелести ООП.
В своё время, когда я раздумывал, учить ли мне ООП, у меня были следующие мысли:

"против"
1) лениво =)
2) с первого взгляда - сложно
3) зачем, если я и так могу всё написать процедурно

"за"
1) интересно, а что это такое, и стрелочки выглядят красиво =)
2) большинство (по крайней мере, из моих знакомых и тогдашних ко-воркеров пишут на ООП)
3) эти же знакомые и ко-воркеры в голос утверждали, что ООП-шный проект гораздо легче поддерживать и модифицировать, а для меня тогда это было актуально
4) большинство пользуемых чужих библиотек написаны на ООП, соответственно, было бы неплохо разбираться, чтобы можно было что-то где-нибудь переписать под себя

В итоге я решил учить, и не пожалел. Сейчас пишу, совмещая ООП и функциональный подход (в основном, в функции выделаю самые часто используемые конструкции, которые содержат в себе работу с >1 классом или содержат "мусорный", но необходимый код (как-то global и иже с ним)).
По-моему, сложные проекты с разветвлённой структурой, да ещё и разрабатываемые не одним человеком, следует писать на ООП, кое-где, по надобности, совмещая с функциональным методом.
Не надо объяснять, надо показать.
Вот что показать посоветуете? Может пример какой конкретный или целую серию примеров? Или ссылкой на статью поделитесь, где грамотно ответили до Вас? Это, собственно, и разыскивается.
Ну меня лично впечатлили доки к Symfony, в качестве пропаганды ООП и сопуствующих товаров. Правда там кроме ООП еще и MVC с ORM.
ООП в PHP часто выливается в большую нагрузку на сервер. Стоит всё таки учитывать, что PHP это парсер. Но взамен разработчик получает очень удобный набор инструментов и поддержку сообщества в виде книг, статей и т.д. Ведь сейчас развивается ООП. Я например в интернете каждый день встречаю советы и посты в блогах по поводу ООП. Например тот же MVC сейчас делает много шума. С другой стороны, освоив шаблоны дизайна и всякие методики (как например TDD) разработчику будет намного проще перейти на другой язык, остаётся только выучить синтаксис и понять некоторые особенности. Вдруг ему понадобится работать на ASP.NET или Ruby On Rails который сейчас очень активано развивается. А там без ООП никак.
Стоит также сразу выбрать Framework и учиться работать с ним - очень ценный опыт. Я бы порекомендовал Zend Framework так-как он написан на очень хорошем ООП, да и скоро станет очень популярным, если не единственным.
PHP не парсер, PHP транслирующий интерпретатор. Тем более не понятно какая разница, что разбирать, набор классов или набор функций. Тем более, что при ООП на крупных проектах объем кода обычно меньше.
Я на Delphi до сих пор не разобрался с ООП, как-то все и так получается. Поэтому и в ПХП хочу все сделать так, без него.
Однако, когда-то придется разобраться, правда, мотивация не помешает. %)

Но если дело дойдет до объяснения, с удовольствием почитаю! :)
IMHO ООП лучше начинать изучать на типизированном языке: C++, Java, C#
Решил с этой своей темой переехать сюда. Она тут уместнее.
Не надо объяснять начинающему программисту принципы ООП. ИМХО, ничего хорошего из этого не получится. По мере усложнения и увеличения кода проектов, он сам придет к этому.
А если и рассказывать идеи ООП, то делать это стоит, как мне кажется, на примере разработки с использованием фреймворков. Только так человек может понять, что это действительно удобно, а дальше он уже сам заинтересуется теоретической частью всего этого.
Ну не топтаться же программистам на одном месте и каждый раз при написании нового проекта писать новые библиотеки. Я думаю именно ООП поможет объединить труды всех программистов в большой фреймворк для развития более сложных проектов. Вы не представляете как мог бы выглядеть интернет, если бы программисты работали слаженно и использовали бы единые стандарты (!развивающиеся стандарты). К примеру использование библиотек классов, которые в свою очередь сами по себе развивались бы. На самом деле в какой то степени это и происходит, но к сожалению большинство пользователей пытаются изобретать велосипед..

А новичкам посоветую учиться, учиться и ещё раз учиться, что бы ни в коем случае не остаться в новичках на долго, потому как в серьёзных проектах и ответственность большая за то, что напишешь..
НЛО прилетело и опубликовало эту надпись здесь
Нужно просто максимально доходчиво на примерах показать, что такое абстракция, инкапсуляция, наследование и полиморфизм. Сделать так, чтобы новичек в их пользе ничуть не сомневался.
P.S. Новички бывают разные. При тех, которые только осваивают мега-конструкцию echo такие слова, как ООП, ООА, инкапсуляция, полиморфизм, наследование, абстракция, интерфейсы и т.д. лучше не произносить!!! =)))
Мне было важно понять, что класс — это всего лишь новый тип, который может иметь переменная (объект). =)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации