Недавно начал изучать програмирование, решил учить PHP. Сначала всё шло прекрасно, но в последнее время начал замечать, что топчусь на месте. Прочитал несколько книг (начинал с «Head first PHP», потом прочитал «Practical PHP programming», сейчас читаю «PHP & MySQL web development» и «PHP. Объекты, шаблоны и методики программирования». Изучил синтаксис, стандартные функции, классы с объектами, работу с сессиями, формами, файлами, базами данных, и т.д. Словом, практически всё, что смог подчерпнуть из учебников и справочника языка. Тем не менее, чувствую, что этого мало: основы уже давно пройдены, а дальше двигаться никак не получается. Что делать, Хабр? Исходя из собственного опыта, можете назвать этапы изучения программирования?
Всё получается, просто в определенный момент стало неизвестно, что делать дальше. Сейчас более-менее понятно, что следует глядеть в сторону фреймворков и ООП.
Как дополнительный вопрос к тема автора. Начиная изучать тот же PHP люди берут книги, в которых описываются основы, но не описывается то, где это применяется на практике. Я тому пример. Я с нуля начинаю учить и понимаю, а иногда заучиваю и разбираю примеры, но понятия не имею, где это может применится на практике при создании сайтов. Было бы не плохо, если матёрые программисты подсказали шаги, которые подталкивали бы на изучение, а не убивали надежду.
Например подскажите, есть есть такой ресурс, на котором разжёвываются реальные коды из жизни: формы и тп.
Как правильно ответили выше, пора переходить от теории к практике — решать прикладные задачи. В конце-концов, язык — это только инструмент.
Вообще, профессиональный рост программиста обязан идти в двух направлениях: технологическом и теоретическом.
Например, что бы оценить технические знания, можно самого себя спросить и честно ответить:
— Для каких задач PHP подходит, а для каких — нет? Почему?
— Смогу ли я написать простейший файловый менеджер? А так, что бы не давать доступа к системным папкам и файлам? Не давать загружать зловредный код?
— Смогу ли я написать робота для парсинга страниц? А такого, что бы умел ходить по ссылкам внутри страниц? Если учесть еще множество кодировок?
— Знаю ли я о понятии «уязвимость»? Если знаю — смогу ли я найти их в своем же старом коде?
— Знаю ли я, что такое «регулярное выражение», где они используются и, главное, зачем?
— Знаю ли я о последних изменениях в языке?
— Смогу ли я написать простейший чат? Гостевую книгу? Баннерокрутилку? Что произойдет с ними, если одновременно туда зайдет 10000 посетителей и почему? Что надо сделать в таком случае?
Теоретическая часть — это вопрос об архитектурном проектировании программных продуктов, как таковых, причем далеко не обязательно речь идет о PHP. Рано или поздно программисту приходится участвовать в постройке «больших» систем и адаптировать некие алгоритмы для решения задач и придумывать свои.
Если речь о популярных алгоритмах — тут можно посоветовать таких монстров, как Дональда Кнута и его «Искусство программирования».
Model-View-Controller, Dependecy Ingection — вот о чем следует почитать для понимания принципов современных подходов проектирования приложений. Так же почитайте о «паттернах» / шаблонах программирования.
Не старайтесь двигаться в углубление изучения языка. Изучайте архитектуры и принципы их построения.
Язык меняется от проекта к проекту и даже в одном проекте вы используете несколько (JavaScript, PHP, Mysql, HTML, XML, CSS и др.) и самый верный путь — правильно выбирать инструмент для того или иного функционала. Где-то будет выгоднее использовать хранимые процедуры, где то описать логику на клиенте, где то реализовать интерактив полностью на CSS.
Мало того в один прекрасный день вам станет мало возможностей языка и при развитии в сторону алгоритмов — вы легко реализуете расширение к PHP на C к примеру.
Лично я против чтения заранее. Поставьте задачу и только тогда ищите пути ее решения в Интернете и книгах. И вот тут уже есть смысл ориентироваться на авторитетность авторов. Так что — ставьте конкретную задачу и задавайте вопросы уже по ней! Удачи!
А да, лучшее место для поиска задач — это форумы и рубрики «Вопросы/Ответы». Просто отвечайте (хотя бы для себя) на любые вопросы и решайте все задачи подряд.
Еще всем хочется порекомендовать bitfry.narod.ru — пособие по изучению ассемблера, которое очень многое ставит на свои места.