О стиле программирования

    В последнее время все чаще можно услышать такие мнения: «PHP — это язык для домохозяек» или «PHP и веб-программирование не имеют ничего общего». Собственно причиной, которая побудила меня написать этот топик, как раз является ссылка на ЖЖ, промелькнувшая на хабре, где сравнивается Perl и PHP. Сравнение, естественно, не в пользу последнего.


    Я решил разобраться откуда растут ноги у стереотипа: «PHP — недоязык, который нельзя воспринимать всерьез». Я считаю, что, во-первых, ПХП обязан этому мнению своим синтаксисом, который очень легок и прост в освоении. Это, в свою очередь, побуждает новичков, изучающих его, писать и публиковать свои первые скрипты, едва познав основные конструкции языка и не вникнув в общую философию программирования. Многочисленные статьи, которые в огромном изобилии присутствуют на просторах рунета, также диктуют несерезный подход к программированию. Итак, мы определили две главные проблемы.

    Как же избавиться от этого? Как доказать (хотя бы самому себе), что PHP — это отличный язык программирования, позволяющий создавать настоящие, высоконагруженные, серьезные веб-приложения?

    Начинать нужно с основ. Все статьи, типа «освой ПХП за 2 часа и напиши свою первую гостевую книгу» — зло. Зло, которое нужно искоренять. Проблема в том, что действительно полезных материалов, которые научат реальной методолологии программирования, а не тупому скриптингу, нету в природе. Многочисленные учебники (за редкими исключениями) также не дают этих знаний. Откуда новичок, начинающий изучение нового для себя языка, узнает, что хорошо, а что плохо? Откуда он узнает, что такое паттерны программирования, что такое MVC, фреймворки, грамотное проектирвоание и многое другое…

    Слудуя статьям, публикуемых на сайтах про PHP, он узнает возможности языка, но не научится на нем писать. Повторюсь, что, наверное, во многом виноват синтаксис, который позволяет и прощает написание так называемого «быдлокода». Что же делать с этим? Посмотрим в сторону других языков, например, C++. Это, конечно, не очень уместное сравнение, но некоторые тенденции, присутствующие в этом языке, мы сможем перенять.

    C++ не позволит нам написать сколько-нибудь сложную программу без предварительного проектирования. Библиотеки, заголовочные файлы, пространства имён — все это заставляет дисциплинированно и ответственно подходить к написанию кода.
    А что же с нашим любимым PHP? Тут все очень просто: есть задача, которую можно выполнить разными способами, и зачастую выбирается самый простой и очевидный — задача решается «сходу». Т.е. кодер тупо садится и сразу начинает писать код, «как бог на душу положит». Никакого проектирования. Ничего. Разумеется это неправильно.

    Итак, я предлагаю хабрасообществу поразмыслить на темы:
    1. Как сделать, чтобы PHP приобрел репутацию здорового, серьезного языка, чтоб его уважали также, как и Ruby или Python?
    2. Как недопустить деградацию новичков, которые начинают знакомство с PHP?
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 120

      0
      только-только начинаю осваивать php поэтому было бы действительно интересно послушать знающих людей
        +5
        Если голова есть — нечего слушать людей. Берем книгу банды четырех и учимся алгоритмике.
        Берем простой проект — рисуем на листе бумаги в туалете и идем писать.
        Берем свой написанный код и отдельные части (написанные по-разному) тестируем на скорость.

        Становимся _быть_ программистом… Пока — не настоящим, но идем к этому =)
          +2
          туалет — это вопрос принципиальный? ванна модойдет? :)
            0
            Для меня — нет. У меня совмещенный санузел. Получалось рисовать схемы и в ванной и сидя :-D
            +2
            Ориентация на скорость выполнения может негативно сказаться на формирование стиля. Тут важен просто здравый смысл, а оптимизацию лучше вынести в отдельный процесс.
              0
              Оценка скорости позволяет понять алгоритмы (при наличии некоторых «понятий»). А алгоритмика никому не мешала :)
              0
              Хоть написали бы что за книга. А то многие не знают.
                0
                Скорее всего имелась ввиду книга: Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. — Алгоритмы: построение и анализ
                0
                Немного о «банде четырех» — (англ. Gang of Four, сокращённо GoF) — распространённое название группы авторов (Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес), выпустивших в 1995 году известную книгу о шаблонах проектирования.

                «Приемы Объектно-Ориентированного Проектирования. Паттерны проектирования.» — я говорил об этой книге. Есть в PDF — если нужно, вышлю ;)

                Авторы, соответственно: Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес.
                  0
                  Нужно. kurokikaze (ы) яндекс. ру
                    +1
                    Ушло ;)
                      0
                      Получил, спасибо :)
                    0
                    И мне скинь, пожалуйста: cryonyx (сцабака) cerebrate.ru
                  +1
                  писать и рисовать в туалете можно впринципе в одно и тоже время :))
                  0
                  нужно осваивать программирование с помошью php, тогда все получиться…
                  >было бы действительно интересно послушать знающих людей
                  еще бы найти этих слущающих ;)
                  +15
                  «Как сделать, чтобы PHP приобрел репутацию здорового, серьезного языка, чтоб его уважали также, как и Ruby или Python?»
                  У PHP отличная репутация. Тысячи проектов, созданных с его помощью говорят сами за себя.
                    –2
                    заглянув в треть из этой тысячи проектов со временем замечаешь дрожание конечностей и нервные хихикания.
                    яркий пример из одного проекта, который доводилось поддерживать:
                    $fp=fopen("$datadir/$fid.dat",«a+»);
                    ftruncate ($fp,0);
                      +2
                      Кривость рук программиста != Кривость языка
                      +2
                      Посмотрите сорцы VBulletin. Вашу уверенность в своих словах думаю, как корова языком =)
                      Думаете, количество дает определение репутации? Запорожцев тоже дохрена…

                      Действительно грамотных скриптов — очень мало.
                        +1
                        Я совсем не против. Есть вещи очень хорошие и качественные. Просто за счет порога вхождения где-то они разбавлены большим количеством «пёрлов».
                          –1
                          Про " перлы" хорошо сказано) Для такого кода даже специальный язык есть ;)
                            +1
                            Ну тут уж получается, что если есть перл в коде — продукт уже нехороший?

                            Иногда приходится идти на перлы… В ранней четвертой версии, например, делали сериализацию и десериализацию $_SESSION, Потому, что так нужно было =)
                            В пятой вот перловина с наследованием синглтонов. Ну как ни бейся — все-равно кривое решение :)

                            Хорошее приложение — таки есть грамотно-спроектированное решение. Перлы поддаются рефакторингу, а архитектура — редко. :)
                              +1
                              Я понял, в чем наше с вами непонимание .) Я говорю о продуктах созданных с помощью инструмента, а вы о реализациях самого инструмента и плясок от этого =) В общем долой холивары. Каждому строителю собственный мастерок, раствор и кирпичи, которые ему по душе.
                                0
                                > В пятой вот перловина с наследованием синглтонов.
                                Разве они могут наследоваться по классическому паттерну?
                                  0
                                  Нет. В 5.3 пока тоже не очень-то получается. А без наследования (даже через self) — получается кривое решение, о чем я и упомянул выше.
                                    0
                                    Поправляюсь. Через static, конечно же.
                          +2
                          боюсь вызвать на себя гнев людей могущественных, богов ассемблера, но иногда код, что приходит сразу в голову — проще и удобней нежели продуманный монстрообразный фреймворк.
                          Относится не только к PHP, но и к фреймворкам а-ля jquery, mootools и подобным приятным вещам.
                          Ведь тот же новичек, начиная писать код с разбегу — через недельку другую натыкается на необходимость создания отдельных классов\функций, ну а дальше и ООП и прочая.
                          Заставь его сходу писать ООП — будет знать фразы, но не отдельные слова (это я по аналогии с изучением инстранного языка по самоучителям\разговорникам).
                          Множество статей, конечно, зло — но не стоит его воспринимать как руководство к действию, а лишь как основу для познания функционала, возможностей и дальнейшего роста качества кода.
                          Это и относится к правильному восприятию новичками подобных статей
                            0
                            > Заставь его сходу писать ООП — будет знать фразы, но не отдельные слова (это я по аналогии с изучением инстранного языка по самоучителям\разговорникам).
                            Хм, с переменными «новичка» должны были ещё в школе на бейсике или паскале научить работать.
                            > иногда код, что приходит сразу в голову — проще и удобней нежели продуманный монстрообразный фреймворк.
                            Иногда, может быть. Но нам же нужно постоянно писать хороший, расширяемый, понятный и быстрый код.

                            Наверное, новичков зачастую слижком жалеют. Не говорят, что если твой код не выбросить, то его проще выбросить — ничего с ним сделать уже нельзя. Это сейчас ты помнишь как он работает, а через месяц и разобраться невозможно будет даже тебе самому. Отправлять читать Макконнелла, Фаулера и т. п. авторов уберкнижек, в которых очень наглядно показано какие преимущества даёт тот или иной подход и почему нельзя писать с разбегу код, который предполагается расширять. Ну а если люди не выдержат проверку книгами, то можно смело отправлять ребят в маляра, столяра и т. п. — там лучшая теория — практика. А любой, особенно начинающий, программист постоянно держит открытым ман по языку/фреймворку. И если программист не умеет читать, то и писать он будет хреново, имхо.
                            +12
                            PHP отличный язык для тех, кто умеет на нем писать. Но таких, к сожалению, очень мало.

                            Я, когда взялся за PHP, имел весомый багаж знаний по С/С++, и, кроме того, какое-никакое, но техническое образование. И, постоянно видя одни и те же вопросы от начинающих на форумах, я понимаю, как мне повезло.

                            Что касается обилия говнокода и статей, учащих, как делать не надо. Мне кажется, нереально создать нормальное веб-приложение на PHP, если учиться по этим статьям и использовать говнокод. Ну не выйдет написать нормальный проект, если писать «как бог на душу положит».

                            Поэтому пусть вечно начинающие самоучки балуются, пишут свои гостевухи, одну хуже другой. Кому нужно, тот знает, чего стоит PHP.
                              –5
                              поменьше гордости, ок?
                                0
                                Вас это задело? По-моему, человек очень правильно сказал.
                                +1
                                Кстати спасибо, что у меня тоже за спиной был багаж 15 лет C++ и еще кучи языков начиная с asm и фортрана :), теперь заканчиваю свой проект и смотрю действительно гомнокодерства в php валом. В своем проекте применил очень много из архитектур которые я делал на C++. Кстати получился совсем непохожий на единобразные проекты — проект.
                                Я сына тоже начинаю учить с php.
                                Просто он самый «простой» язык имхо и быстро «прикрепляет» к себе.
                                А вообще про языки лучше не спорить и лучше молчать — баян.
                                У кого-то в руках и палка может стать оружием а у кого-то… :))

                                Так что не спорим о языках, кстати настоящему инженеру все равно на каком языке писать…
                                Если для данного проекта удобен php то буду писать php.
                                Если у меня проект os, то извините на чем мне писать? Если у хостеров поголовно есть php, а извините с++, питоша и руби у единиц.
                                  0
                                  Не нужно относиться так категорично… Многим начинающим с гостевух и говнокода это быстро надоедает и они ищут возможности получать знания и писать лучше… и это факт.
                                  +7
                                  Мне кажется, что лучше способа познать азы синтаксиа, чем написав подобные гостевухи нет, но потом в книге надо дать понять, что читатель все-еще говно, а не программист и рассказать про рефакторинг в функции. Потом опять намекнуть, что он все-еще говно и рассказать про ООП и так далее. Потом ткунуть носом и расскзать про паттерны, потом про MVC и потом про кеширование и мекешед и так далее.

                                  На выходе должен получиться программист.
                                    +2
                                    Да, только если постоянно обзывать читателя говном, большая часть обидится на автора и положит книжку на полочку в дачном туалете. А вообще подход хороший. Пытаюсь прорабатывать схожую методику со студентами, которым веду сейчас web-программирование. Самое печальное, что такую вещь как паттерн проектирования и разработки, народ, отучившийся 4 курса в ВУЗе, на специальности, где программирование дается от азов системщины до языков высокого уровня, рассматривается проектирование и дизайн пользовательских интерфейсов, даже не слышал! ВУЗ то причем не из захудалых, а один из ведущих по сибирскому региону, и входящий в топ российских.
                                      0
                                      Ну те кто обидятся вскоре поймут, что за гостевухи ничего не платят и в идеале должны достать книжечку с полочки. А вообще я думаю, что в самой книге надо постоянно твердить о важности освоения книги полностью
                                        0
                                        «большая часть обидится на автора»
                                        на то и расчёт, если не стоит цель научить вообще всех
                                        +1
                                        Норбеков использует такой подход. Правда книги из другой области… И ничего. Раскупают книжки. Не обижаются.
                                          0
                                          Качественной литературы крайне мало… по крайней мере в свободной продаже и за пределами москвы и питера… сам с этим столкнулся…
                                          • UFO just landed and posted this here
                                          0
                                          если есть желание развиваться то все получается :) ну и конечно по мере развития полезно читать литературку типа макконнелла ;)
                                            0
                                            Я не нашел ни одной толковой статьи по идеологии языка. А она есть. И упоминание C++ честно говоря мне показалось совершенно неуместным, потому что PHP в корне отличается от типизированных языков программирования с жёсткой структурой.
                                            Вобщем побольше толковых статей — было бы супер
                                              0
                                              У WilliamsPublishing есть 3 книги по PHP. Там таки идеология хорошо проповедуется… Правда, больше в последней :)
                                              0
                                              Работа в команде с опытными программистами плюс серьезные проэкты которые заставят сесть и спроэктировать всё исправят. А новичкам помойму ниче не остаеться как учиться на собственных ошибках ибо в инете только кривые статьи и есть по запросам.
                                                +1
                                                Не всякая команда возмет новичка
                                              • UFO just landed and posted this here
                                                  0
                                                  Товарищ, я с вами полностью согласен.
                                                    –6
                                                    +1
                                                      0
                                                      Точно.
                                                      +1
                                                      Вы еще сомневаетесь в серьезности v PHP5?
                                                      Для себя я провел тесты на скорости элементарных операций с Perl/Python (итерации/конкатенация в цикле).

                                                      Но оглашение подобных результатов — подобно казни. Кто желает — тот сделает сам. Одно могу сказать — PHP выиграл (видимо, движок ZE2 совсем уж грамотно сделали :))

                                                      ЗЫ: это не начало холливара! =)
                                                        –3
                                                        подумать только, конкатенация в цикле быстрее работает… нет, ну надо же…
                                                          0
                                                          только без холливаров, аха?
                                                          dumpz.org/2819/

                                                          PS: простейшие случаи. На правильность написания на Перле и Питоне не претендую. Оптимизация циклов не проведена
                                                            0
                                                            а ниче что у php 500.000 итераций, а у перла 5.000.000?
                                                            это не говоря уже о том, что конкатенации в циклах не рекомендуются вообще, и на реальные задачи эти тесты не похожи.
                                                              0
                                                              > а ниче что у php 500.000 итераций, а у перла 5.000.000?
                                                              Ошибочка вышла.

                                                              laptop#: time perl concat_short.pl

                                                              real 0m0.289s
                                                              user 0m0.252s
                                                              sys 0m0.012s

                                                              Не рекомендуется, но часто приходится это делать (fopen/fgets с накоплением в буфер и проходом регуляркой, например).
                                                                0
                                                                Часто??? Вы что только грабберы пишете?
                                                                  0
                                                                  Работа с потоками — это только грабберы?
                                                                  А XML-RPC/SOAP? А построковое чтение из файла? А демоны?..
                                                                    0
                                                                    Ну все-равно к частым задачам это не отнесешь
                                                                      0
                                                                      Не буду спорить — кто-то пишет сайты, а кто-то сервисы. Вот и все отличие.
                                                              +1
                                                              подтверждаю

                                                              serg@s2 serg# time python concat.py
                                                              real 0m0.321s
                                                              user 0m0.313s
                                                              sys 0m0.008s

                                                              serg@s2 serg# time php concat.php
                                                              real 0m47.606s
                                                              user 0m47.561s
                                                              sys 0m0.015s

                                                              serg@s2 serg# time php concat1.php
                                                              real 0m0.164s
                                                              user 0m0.163s
                                                              sys 0m0.000s

                                                              serg@s2 serg# time perl concat.pl
                                                              real 0m1.762s
                                                              user 0m1.754s
                                                              sys 0m0.008s
                                                                +1
                                                                упс… с перлом апдейт:

                                                                serg@s2 serg# time perl concat.pl
                                                                real 0m0.179s
                                                                user 0m0.179s
                                                                sys 0m0.000s
                                                          +2
                                                          подождем релиза 5.3, syntax sugar(namespace, traits) этой версии может ооочень изменить мир пхп, по стилистике кода.
                                                            0
                                                            Привет из будущего. Нэймспейсы есть, трэйтов нет, что весьма печалит :(
                                                            –7
                                                            Сам по себе PHP слабый язык(да даже элементарно потоков нету, хотя на дворе 2008 год), но эля веба это некритично. Для большинства задач.
                                                            А так синтаксис четкий(хоть и жалко, что dynamic weak типизация, предпочтительнее была бы dynamic strong), ООП в стиле джавы, так что можно писать красивый код)
                                                              –2
                                                              Потоков нет? Вы уверены? А это что, по вашему?
                                                              Или Вы настолько хороший программист, что даете оценку языку, не понимая разницы между потоками и и многопоточностью? :)
                                                                0
                                                                > Или Вы настолько хороший программист, что даете оценку языку, не понимая разницы между потоками и и многопоточностью? :)

                                                                Я то как раз понимаю. Threads — это тоже потоки, как ни странно. Как и streams.
                                                                И потоков threads нету.

                                                                И не надо словоблудства с терминами — все равно в большинстве ресурсов Threads переводится как потоки.
                                                                  0
                                                                  Последняя апелляция: поток,многопоточность.
                                                                    –4
                                                                    Тогда переведи слово Thread на русский. Всеми возможными вариантами. Подумай.
                                                                    Повторяю для минусующих: потоки threads с потоками streams я не путаю( отличии от wayly), я изначально говорил про threads.

                                                                    Я не виноват, что в русском языке оба термина переводятся одинаково.
                                                                      –1
                                                                      лингво:
                                                                      4) компьют. нить, трэд (в мультизадачных средах: подпроцесс, запускаемый другим процессом в адресном пространстве этого (запускающего) процесса)
                                                                        0
                                                                        Что на переводчики ссылаться? Переведите слово «поток» на английский. Стало легче? :)
                                                                        Не виноваты Вы ни в чем. Просто уточняйте сразу, о чем говорите. Это логично ведь :)

                                                                        И говорить о том, что я путаю чего-то, по крайней мере, нехорошо. Обвинения беспочвенны на фоне неуточненного понятия.
                                                                +1
                                                                Новичку рано знать про паттерны, MVC и прочее. Новичку нужно понимать прежде всего основы самого языка, основы ООП и хотя бы то, что он сам пишет и зачем он это делает.

                                                                Но PHP удобен ещё тем, что можно быстро накидать решение задачи и забыть про это. В таком случае зачем вобще париться над красотой кода или грамотным использованием ООП?
                                                                  0
                                                                  > Новичку рано знать про паттерны, MVC и прочее.

                                                                  Вот сюда сходите. Может, в голове прояснится, что MVC это и есть паттерн программирования.
                                                                    –1
                                                                    мне нет необходимости туда ходить, а MVC уже стало нарицательным словом

                                                                    в статье написано:
                                                                    Откуда он узнает, что такое паттерны программирования, что такое MVC, фреймворки...
                                                                      0
                                                                      Очень плохо, что MVC стало «нарицательным словом».

                                                                      Вот что нужно обсуждать — проф. неграмотность программистов, а не плюсы/минусы языка, имхо… Таки и статья называется «О стиле программирования», а не «Как грамотно писать на PHP» =)

                                                                        –2
                                                                        это две тесно взаимосвязанные вещи — стиль и грамотность. Быдлокодерство — это не стиль, а его отсуствие.

                                                                        Вот что нужно обсуждать

                                                                        обсуждайте
                                                                  –2
                                                                  «Слудуя статьям»???
                                                                    –1
                                                                    Автор! Я указал на опечатку, Вы её так и не исправили. Или это не опечатка?
                                                                    +1
                                                                    По моему мнению, основная часть проблемы вовсе не в простоте и нетребовательности синтаксиса и не в том, что новичка книги и крайне поверхностные статьи не учат использовать MVC и фреймворки (это может быть даже хорошо, новичку это не к чему, ему основы надо выучить).
                                                                    Проблема в том, что многие новички не могут или не хотят вникать в то, что в действительности делает машина при выполнении той или иной конструкции языка. И из-за этого непонимания и рождается куча быдлокода. Решение — научить людей думать, а начинающих программистов «заставить» понять, как работает машина.
                                                                    В то же время, новички еще не сталкиваются с крупными проектами, разрабатываемыми в команде и поддерживаемыми третьими лицами (или ими же, но на протяжении длительного времени). И потому не понимают (или не хотят понять), что код должен быть понятен не только им и не только сейчас.

                                                                    Если сразу начать учить всех работе с фреймворками, впихивать в головы MVC и т. д., ничего хорошего мы не получим. Заставив новичков работать через фреймворки мы лишим их главного — возможности научиться разрабатывать самостоятельный код и понимать принципы его работы (это проявится как только такого программиста мы посадим писать крупный проект, где функциональности фреймворка не хватит, а то и вовсе его использование будет неоправданным или ненужным).
                                                                    Разрекламируем MVC еще больше и подсадим всех на него? Получим другую крайность.
                                                                    Ведь все это не панацея.
                                                                      –1
                                                                      Ответ на насущный вопрос прост как дважды два: Написать на PHP операционку. Или драйвер для какого-нибуть девайса. Не знаю, как вы, но будучи программистом, я зауважаю этот язык.
                                                                        0
                                                                        И глупо. PHP для таких задач не предназначен, и за счет своей специализации он отчасти так и популярен.
                                                                          0
                                                                          Я надеялся что шутку поймут ;)
                                                                          0
                                                                          Странно, у меня никогда вообще не возникало предубеждений, будто этот язык является каким-нибудь «недо-языком» в области веб-программирования. Достаточно много ли вообще альтернатив на сегодняшний день?
                                                                          +4
                                                                          По поводу перспектив PHP есть оптимистический прогноз.

                                                                          Не зря Zend продвигают Zend Framework. Конечно, перспектива начинать изучение PHP сразу с фреймворка может привести в действие закон дырявых абстракций, но книги многих отечественных авторов — куда большее зло (я не имею в виду Котерова, с книгами его не знаком, но очень уважаю за DbSimple в частности).

                                                                          Чтобы недопустить деградацию новичков — нужно сжечь книги многих отечественных авторов (для начала Дронова), а самих новичков наставить на путь истинный. На путь истинный хорошо наставляют некоторые книги зарубежных авторов, например Practical Web 2.0 Applications with PHP — отличная книга. Учите английский и заказывайте в Амазоне, или скачивайте
                                                                          отсюда (но я вам эту ссылку не показывал).
                                                                            0
                                                                            Начало хорошее. Как человек, который долго программировал на С++, а потом волею судеб пришлось программировать на php, скажу что php расхолаживает в нем нет строгости.
                                                                            Но как писалось мною ранее, главное не язык, а алгоритм.
                                                                            Никакой разницы на чем написано приложение в веб на php,perl, ruby и т. д.
                                                                            А заявление апологетов С++ и Java о том, что веб-языки говно, это прежде всего говорит о глупости этих людей, у каждого языка своё место для применения.
                                                                            В статье неточность «Проблема в том, что действительно полезных материалов, которые научат реальной методолологии программирования, а не тупому скриптингу, нету в природе.» Есть и много. Программирование это процесс написания алгоритма, а не коддинг
                                                                              0
                                                                              То, что «главное — не язык» есть и у Макконнелла, но чтобы это понять, похоже, надо поработать с более строгим языком, и лишь потом переходить на PHP.

                                                                              Отсюда напрашивается вывод: надо на государственном уровне запретить начинать изучение программирования с языка PHP )
                                                                                0
                                                                                Как-то у PHP больше сфера применения, чем у QBasic/Pascal… Вам так не кажется? :)
                                                                                  0
                                                                                  Что-то не найду у себя в комменте упоминания этих языков…
                                                                                    0
                                                                                    Ну эти языки, собственно и являются «начальными». Скорее уж с них запретить. От простого к сложному, имхо :)
                                                                                    > запретить начинать изучение программирования с языка PHP )
                                                                                      0
                                                                                      Я просто неудачно пошутил. Имею в виду то, что если человек хочет серьёзно заниматься программированием — с PHP начинать гораздо труднее, отчасти из-за плохих практик, которые пропагандируются в книгах многих отечественных авторов. Хотя с ростом популярности фреймворков ситуация возможно изменится, т. к. фреймворки в идеале — кладези хороших практик, изучая исходный код которых можно многое понять.
                                                                              +2
                                                                              Зачем появились ООП? патерны? и т. д.
                                                                              Для преодоления сложности.
                                                                              PHP сделал в своей области то же самое, преодолел сложность в разработке web систем. С этой точки зрения он замечательный язык.
                                                                                +6
                                                                                1. Как сделать, чтобы PHP приобрел репутацию здорового, серьезного языка, чтоб его уважали также, как и Ruby или Python?

                                                                                у него такая репутация есть. на PHP можно писать отличные веб-приложения. А все разговоры о том, что PHP — это недоязык ведут люди, которые по каким-то соображениям являются фанатами или любителями других языков. Это можно понять. Например: я привык программировать на Ruby, я его знаю, а все остальное — полное говно. Так могут думать программисты на Ruby

                                                                                2. Как недопустить деградацию новичков, которые начинают знакомство с PHP?

                                                                                Очистить интернет и книжные полки от говнокниг. Но это, к сожалению, нереально. Можо так же начинать заниматься не самому, а с профессионалом. Как вариант — можно в компаниях, которые занимаются программированием, устраивать курсы по обучению, или специально брать людей без опыта программирования на PHP и обучать его уже при помощи своих ведущих специалистов. Тогда, я думаю, несколько снизится процент «некачественных» программистов.
                                                                                  +1
                                                                                  >> очистить интернет
                                                                                  Вы написали невозможную вещь.
                                                                                  Необходимо написать хорошие статьи. От говно-статей интернет сам очистится, когда будут отличные статьи на эти темы. :)
                                                                                +1
                                                                                Просто нам, быдло(PHP)прогерам нужно сесть и начать писать говнобыдлоскрипты на Ruby,Python и Perl)
                                                                                  0
                                                                                  little less conversation, little more action please
                                                                                  0
                                                                                  Вы извините, но зачем мне нужно что-то доказывать про PHP? Пусть думают что хотят!
                                                                                  В школе задирают, пока ты задираешься. Как только ты перестаёшь переубеждать их, они перестают грязью поливать :).

                                                                                  С автором я полностью согласен! Сам начинал с гостевой книги (до этого писал на C++) — через 4 года начал нормально пользоваться классами. :)

                                                                                  Как научить языку новечков? Опубликовать ХОРОШИЙ, ПРОСТОЙ материал на сайты, на которые они заходят или будут заходить/попадать в первую очередь, когда сталкнуться с проблеммой. Например, на firststeps.ru и ему подобных…
                                                                                    +2
                                                                                    Господа, мы тут с вами все хорошо знаем, что надо, а что не надо новичку. Каждый учится так, как он хочет. Я бы не рекомендовал изучения програмирования с «паттрнов, MVC и прочего» (хотя сама мысль некорректна). С таким же успехом можно сделать выводы — «Учебник по физике 6-го класса отстой, потому что в нем не рассказывается про устройство трансформатора».

                                                                                    Начинать изучение надо с самого начала. Для кого-то этим началом служит ООП, для кого-то «напиши свою гостевую книгу». Это не имеет значения. Главное — это научиться.

                                                                                    На PHP много говнокода как вы говорите? А почему вас это смущает? Да, много. Но это не вина языка. На мой взгляд PHP-замечательный язык. Потому что на нем можно и учиться и писать нормально, и писать очень сложно. И я не понимаю людей, которые называют быдлокодом любой код который им не нравится, кажется либо слишком простым, либо слишком сложным.

                                                                                    А php — это очень сильный язык. Хотя бы потому что на нем можно писать как просто, так и сложно, как понятно так и не понятно, как простые, так и мегасложные вещи. Мало языков, которые могут этим похвастаться.
                                                                                      0
                                                                                      и все же начинать учиться надо с освоения таких понятий как «логика», «алгоритм» и т. п.
                                                                                        0
                                                                                        Да всё у PHP нормально!
                                                                                        Надо практиковаться, уметь понимать, на какие именно грабли наступил, учиться на ошибках, и вообще головой думать.
                                                                                        А конкретные технологии не принципиальны.

                                                                                        Успехов!
                                                                                          +1
                                                                                          На луркоморье очень правильно написано:
                                                                                          PHP имеет такую репутацию не из-за того, что он PHP, а из-за некоторых людей, которые на нём пишут. На самом деле PHP охуенен. Естественно, исключительно для тех, кто знает этот язык. Но таких мало, мало…
                                                                                          • UFO just landed and posted this here
                                                                                              0
                                                                                              Быстротой и удобством разработки. Но это, разумеется, на любителя. Кто-то проникся философией, кто-то нет — каждому своё.
                                                                                              PHP — это хоть и мейнстрим, но он довольно своеобразен, как и все языки.
                                                                                              • UFO just landed and posted this here
                                                                                                  0
                                                                                                  Я ведь говорю, надо проникнуться философией языка: использовать подходящие фреймворки и библиотеки, освоить тонкости преобразования типов и т. д. Тогда разработка будет быстрой и удобной.
                                                                                                  Качество, опять же, от человека зависит в гораздо большей степени, чем от языка. Если хорошо освоить язык, то качество кода на этом языке будет высоким.
                                                                                                  • UFO just landed and posted this here
                                                                                                      0
                                                                                                      В PHPInside #18 есть статья «Тонкости разработки», можете ознакомиться.
                                                                                                      Философия PHP, как я недавно убедился, довольно серьёзно отличается от общепринятых стандартнов ООП. К примеру, создание DAO для каждой таблицы — несколько нестандартный для РНР стиль, если учесть возможности магических методов.
                                                                                                    +2
                                                                                                    Еще один, считающий PHP медленным и оценивающим возможности по говнокоду быдлопрограммеров. :-D
                                                                                                    • UFO just landed and posted this here
                                                                                                        0
                                                                                                        Вы где-то увидели «Ты»? =)

                                                                                                        Чтобы понять, почему я такой вывод сделал — достаточно прочесть тот комментарий внимательно.

                                                                                                        > Именно поэтому я его считаю хуёвым, а не охуенным языком программирования.
                                                                                                        По той же логике можно назвать любой язык программирования хреновым, ибо он не соответствует <%username%> опыту ООП на данном языке.

                                                                                                        Если что-то желаете сказать — разворачивайте свою точку зрения. Холливаров мы уже насмотрелись.
                                                                                                        • UFO just landed and posted this here
                                                                                                          • UFO just landed and posted this here
                                                                                                            • UFO just landed and posted this here
                                                                                                                0
                                                                                                                Не-а, не убедили :)

                                                                                                                По пунктам?
                                                                                                                1. Слаботипизирован — аха. Скриптовый язык, как никак… Перл? Питон? Дальше? :)
                                                                                                                2. Насчет __toString. Где могут понадобиться исключения? В логике — верно. Зачем логика в __toString? Не совсем понимаю его предназначение там. Быть может, стоит пересмотреть свой взгляд на обработку исключений? :)

                                                                                                                Про низкую оплату труда… Если не секрет, какую среднюю ЗП получают ваши друзья/знакомые? Я о такой проблеме, в принципе, даже не думал и не встречался с ней :)

                                                                                                                Нельзя на таком языке логику организовать? Поковыряйте крупные CMS, фреймворки… Там нет логики? Как-то неубедительно, если честно. Сам пишу сложные приложения, где логика не очень-то и проста.

                                                                                                                Про блох. Это, конечно, красиво. Но индусы пишут хреново и на PHP и на Java и на C/C++ (продолжается список долго). Россия потому и страна «Левшей», что средний уровень программиста выше. Потому, что наши программисты — думающие. Мы можем писать на любом языке красиво и грамотно…

                                                                                                                Из всего этого следует вывод, что Вам бы стоило написать статейку, в которой приведете все отрицательные стороны данного языка, с ОБОСНОВАНИЕМ. Текущие доводы не могу считать убедительными, извините. Может быть, новичков вы отпугнете — но не программистов ;)

                                                                                                                ЗЫ: будете писать — не используйте ненормативную лексику, пожалуйста. Уважайте других.
                                                                                                                • UFO just landed and posted this here
                                                                                                                    0
                                                                                                                    Насчет затрат и усилий со стороны php-программистов. Ну зря вы так )
                                                                                                                    Чтобы написать плюшевый двиг — достаточно полдня. Подключение PEAR — и все в кармане. Нужно реализовать только логику. Все остальное уже есть.

                                                                                                                    При разработке на _ЛЮБОМ_ языке приходится оценивать и учитывать свойства данного языка. Слово «данного» — неслучайно. Плюшки и фишки PHP — это данность. Такая же данность, как и строгая типизация в С++.

                                                                                                                    Углубившись в вышеупомянутую книгу банды четырех, я, например, не увидел ничего страшного в релизации алгоритмов на PHP. Мой косяк? Реально интересно…

                                                                                                                    Плюс ко всему, готовый фрейм, как я понимаю, снимает наглухо вопросы несоответствия концепциям true-кодинга. Это к MS-Paint и фотошопу. Не суть важно в чем ты рисуешь — главное, что это есть красиво и тебе удобно. Сейчас прийдут асмовцы, сишники, делфятники и спор продолжится… Это чистой воды холливар.

                                                                                                                    И мне не важно какие приложения я могу писать на другом языке (думаю, не слабее, как минимум). Но есть потребность и инструмент, который наиболее оптимально соответствует моим потребностям и САМОЕ ГЛАВНОЕ — возможностям клиентов.

                                                                                                                    Кучу раз наблюдал, как купит народ перловый сервисный скрипт и трахается часами, не понимая что к чему… Чего проще установки пыховых скриптов вы видели?

                                                                                                                    ЗЫ. Пример напоследок. Есть у меня друг. Отличный сишный кодер. Пишет дорогенератор на досуге (для души). Сервер — сишный демон. Однако, запросы от клиента отрабатывают именно php-скрипты. Специально сейчас вопрос в аське задал:

                                                                                                                    Я: почему ты написал клиент для доргена на пыхе, а не на чем другом?
                                                                                                                    Он: нафига заморачиваться и делать на более сложном языке?

                                                                                                                    Итого: возможно, вы правы в некотором отношении специфичности языка. Но эти вещи проигрывают полному циклу разработки, внедрения, поддержки продукта. Имхо :)
                                                                                                                    • UFO just landed and posted this here
                                                                                                                        0
                                                                                                                        Изначально топик назывался «О стиле программирования» :)
                                                                                                                        Вообще говоря обсуждали примерно следующее: «Как научиться писать на PHP хорошим стилем, дабы он потерял славу быдлоязыка» :)
                                                                                                                        • UFO just landed and posted this here
                                                                                                  0
                                                                                                  Как сделать, чтобы PHP приобрел репутацию здорового, серьезного языка, чтоб его уважали также, как и Ruby или Python?

                                                                                                  Нужно научится писать понятный код.
                                                                                                  В основе профессионального программирования лежит не только сам код но и его оформление и комментарии, что и способствует легкости чтения. Нужно всегда помнить что после вас возможно будут работать другие программисты. Если вы пишите проект в одном стиле будь то BSD, K&R, GNU или же какой то не оф. стандарт, не забывать придерживаться его до конца, если оформление не известное не забудьте дать ссылку на его описание. Очень многие это расцениваю как профессиональные навыки и уважение друг к другу.
                                                                                                  Просто зайдя на php.net я иногда пугаюсь от предложенных там снипетов, а это как не как лицо языка.
                                                                                                  • UFO just landed and posted this here

                                                                                                    Only users with full accounts can post comments. Log in, please.