CodeNet / Веб программирование / ASP / ASP.NET / Производительность
PHP4 или ASP.NET - что лучше
Алексей Филатов
В письме к нам Алексей Филатов отметил, что считает свой обзор субъективным. На взгляд же редакции, при всей неполноте статьи, объективности в ней куда больше, чем в подробных исследованиях, авторы которых стремятся доказать себе и другим, что однажды выбранная ими технология лучше остальных. Итак, что лучше - PHP4 или ASP.NET - с точки зрения независимого веб-программиста? - Владимир Гуриев.
Немного о себе. Я сделал пару небольших проектов на PHP4 (к сожалению, до сегодняшнего дня ни один из них не дожил). Зато могу похвастаться завершенными сайтами, сделанными по технологии ASP.NET: Melodyland, который был переписан мною с ASP на ASP.NET, и своим "домашним" сайтом, который был создан как тестовая площадка для программирования на ASP.NET. Все работает на связке Celeron 500 + 128 Мбайт RAM + Windows 2000 + IIS 5 + SQL Server 2000, и вопреки расхожему мнению о тормознутости Windows, и ASP, и ASP.NET прекрасно функционируют при загрузке 30-50 сессий. Что в это время происходит с оконным интерфейсом - другой вопрос, но сами сервисы летают.
ASP.NET - это не продолжение ASP. Это концептуально новая технология Microsoft, созданная в рамках идеологии .NET. Ключевыми сторонами .NET являются масштабируемость, кроссплатформность, межъязыковое взаимодействие и шаткое понятие "безопасное программирование" (safe-programming).
PHP - наоборот, открытая и бесплатная технология. Разумеется, расшифровывать сегодня PHP как Personal Home Page было бы неправильно, но отголоски прошлого дают о себе знать и по сей день. PHP - скриптовый язык, созданный исключительно для динамического вывода HTML. Это не значит, что на нем нельзя создать крупный проект. Это значит, что создать крупный проект на PHP дорого и трудно.
Для программирования на PHP не нужна дорогая среда программирования. Чтобы научиться писать более или менее работоспособные скрипты, достаточно одного-единственного учебника. С ASP.NET такой фокус не пройдет. Без Visual Studio, MSDN и иногда - доступа в Интернет там делать нечего. Большую часть времени начинающий разработчик тратит на штудирование MSDN. А к тому времени, когда он выучит навороченную модель классов и все необходимые ему функции, Microsoft наверняка придумает что-то новое. Помнится, кто-то говорил, что чем больше вариантов предложено, тем больше времени уходит на выбор лучшего. ASP.NET - яркое тому подтверждение.
Зато если выучить... Счетчик посещений? - пожалуйста, десять строчек. Добавить сюда такую же таблицу? - два-три щелчка мышкой, пятнадцать строчек текста. Другой вывод информации? - нет проблем: делаем дочерний класс, перекрываем функцию, отводим на отладку четверть часа, привязываем к выводу второй таблицы - готово! Вообще, работа в ASP.NET с применением Visual Studio сильно напоминает работу в Delphi, с той лишь разницей, что все происходит гораздо быстрее, проще и логичнее. Основные же языки, на которых пишутся ASP.NET-приложения, - Visual Basic.NET и C#, - являются наследниками соответственно Visual Basic и Java/C++. И если переход с Visual Basic на Visual Basic.NET требует некоторого пересмотра философии программирования (так как от старого Бейсика осталась лишь часть синтаксиса и название), то переход с С++, и особенно с Java на C#, органичен настолько, что не должен занимать больше двух-трех недель.
Теоретически под ASP.NET можно писать программы на любом языке, для которого имеется соответствующий компилятор. Однако на практике для создания ASP.NET-приложений используются главным образом Visual Basic.NET и C# (где-то позади плетутся managed C++ и J#). Некоторые программные среды - например, Delphi 8 - обеспечивают номинальную поддержку ASP.NET, но толку от нее, прямо скажем, немного.
"Родная" среда ASP.NET - IIS, работающий под управлением Windows. Да, IIS известен как не самый стабильный веб-сервер, а Windows - как не самая стабильная операционная система. Но вот небольшая история из жизни.
На одной моей работе стоял сервер под управлением Windows 2000 и IIS, на котором сисадмин держал в тот момент больше двух сотен сайтов. Большая их часть состояла из динамически сгенерированных ASP-страниц (ASP.NET тогда только появился, и единственный, кто рисковал с ним работать, - правда, на отдельной машине, - был ваш покорный слуга). Так вот, сервер за два года перезагружался всего пару раз, если не считать обязательных перезагрузок после установки критических обновлений. На другой работе, которой я занимался параллельно, стоял сервер с FreeBSD 4.x, исполнявший роль прокси/файрволла для локальной сети. Он падал раз, а то и два раза в месяц. Я сам некоторое время был сисадмином и не понаслышке знаю, как надо постараться, чтобы достичь таких впечатляющих результатов в стабильности работы и Windows, и FreeBSD. С тех пор я уверен, что 90-95% стабильности работы сервера обеспечивается вовсе не выбором "правильной" системы, а выбором "правильного" сисадмина.
Я не пытаюсь убедить кого-то в том, что Windows работает более стабильно и предсказуемо, чем Unix/Linux. Мало того, я сам так не думаю. Но ASP.NET - это не только Windows. Существует, например, проект Mono, позволяющий запускать любые .NET-приложения под Linux (и, соответственно, под FreeBSD в режиме бинарной совместимости), существует mod (по-нашему - плагин) Apache для обработки ASP.NET-приложений. Но все-таки ASP.NET и *nix - пока что больше гетерогенная среда, со всеми вытекающими.
ASP.NET не приспособлен для маленьких проектов и тем более - для немногочисленных сработавшихся групп, которым не требуется четкое управление. Причин тому множество - начиная от высокой стоимости платформы и заканчивая сложностью модели классов .NET. Впервые взявшись за программирование под .NET, я не мог понять, кто может все это выучить, на какого интеллектуального монстра это все рассчитано? Потом понял - никто. Кредо .NET-программирования: не лезь не в свое дело. Пиши свой модуль, выучи свои функции, знай свое место - этот принцип в коллективе работает замечательно.
По идеологии Microsoft, программист - маленький винтик хорошо отлаженного механизма. Одиночки-камикадзе вроде меня, свято верящие в светлое будущее этой корпорации, не считались и не считаются. Исключаем нас - и остаются большие, быстро и постоянно расширяющиеся интернет-проекты, где один программист отвечает за один модуль. А каким, собственно говоря, еще проектам требуется кроссплатформность и мультиязычность по умолчанию? Только таким, где могут нанять такого профи, что язык, на котором он пишет, отличается от основного проектного. Только таким, которым впоследствии может потребоваться безболезненное портирование на Pocket PC, MAC, могут потребоваться интернет-сервисы и т. д. Вот в таких проектах ASP.NET разворачивается на славу. Проблемы с производительностью, нехватка ресурсов? Чепуха! Купим еще компьютеров, купим еще программистов, купим звезды с неба, лишь бы темпы разработки не падали.
РНР-программистам в подобных проектах делать нечего. Почему? Да потому, что им потребуется куча координаторов, которым деньги платить надо. Координаторов, большую часть работы которых берет на себя сама среда .NET. И, кстати, с кластерными Unix-системами обращаться тоже непросто. Как ни крути, Unix - это прекрасная stand-alone-система, но именно поэтому сделать кластер на ней гораздо сложнее, и соответственно, денег уйдет больше. Я не говорю о суперкомпьютерах, я говорю о парке в 20-50 машин. За то время, что уйдет на автоматизацию и подключение дополнительной Unix-машины к Unix-кластеру, программисты на Windows уже давно будут писать следующий модуль. Не говоря уж о том, что кластерная СУБД MySQL как кластер существует только в альфа-версии. Автоматизация же взаимодействия между машинами на Windows Server 2003 и SQL Server - одна из сильнейших сторон этих систем (Редакция умывает руки. Все рассуждения о сложности создания кластеров на Unix целиком на совести автора. Лично мне кажется, умеючи - это не так уж долго, что на Windows, что на Unix, но экспертом в данном вопросе я не являюсь и судить не берусь. - Прим. ред).
Технология РНР в корне отличается от ASP.NET. Больше всего она похожа на классические ASP-приложения, только скриптовый язык в ней один. Язык РНР напоминает сборную солянку из C и Perl с небольшим добавлением специй в виде Basic и даже Pascal. Все это натянуто на каркас из примитивной модели классов, которая представляет собой привычные структуры C с кое-как приделанным сбоку наследованием. Правда, недавно появилась пятая версия PHP, предоставляющая неплохие возможности для объектно-ориентированного программирования, однако большого распространения она пока не получила.
PHP4 слишком доверяет программисту. В нем нет типов, объявлять переменные необязательно, существуют опасные конструкции. Синтаксис PHP заточен под быстрое и простое решение типовых проблем. При этом вся ответственность за опасные трюки лежит на программисте. Что, в частности, приводит к такому распространенному явлению, как обнаружение серьезных ошибок в коде через месяц-другой после сдачи проекта.
Область применения PHP - небольшие проекты, которые делает или тесно сработавшаяся группа, или вообще один человек. Благодаря бесплатности PHP (а также бесплатности MySQL и самой платформы), этот язык становится идеальным выбором для небольших авторских сайтов или сайтов для малого и среднего бизнеса. Кроме того, PHP работает быстрее.
Теоретически ASP.NET должна работать быстрее (все-таки здесь мы имеем дело с единожды скомпилированными бинарными кодами, тогда как PHP-скрипты каждый раз обрабатываются заново). Однако PHP летает как на IIS, так и на Apache и при большой (правда, искусственно вызванной) нагрузке всегда выдает результаты лучше, чем ASP.NET. И уж тем более лучше, чем классический ASP. Обескураженный, я пошел на сайт Microsoft, чтобы найти хотя бы одну статью, в которой бы сравнивалось быстродействие PHP и ASP.NET. Безуспешно. Зато на других ресурсах нашлось довольно много статей, авторы которых пришли к тому же выводу, что и я. "Родная" связка PHP + MySQL + Apache работает быстрее ASP.NET + IIS + Microsoft SQL Server 2000.
Значит ли это, что ASP.NET хуже? Отнюдь. На том же сайте Microsoft есть масса данных, из которых следует, что решения на базе Linux/Unix в целом обходятся среднему и большому бизнесу намного дороже, чем аналогичные решения на основе Windows (Было бы странно найти на сайте Microsoft иную информацию. Но доля правды в этом есть - бесплатность технологий вовсе не означает бесплатности их использования). Такие, казалось бы, парадоксы на самом деле вполне логичны. Скорость работы обеспечивается тем, что все РНР-приложения работают в едином адресном пространстве, тогда как ASP.NET за счет навороченной модели классов многократно проверяет и перепроверяет данные, удерживая каждое приложение в отдельном адресном пространстве. Первый подход более быстр, но менее надежен, второй - более надежен, но за это приходится платить. Чудес не бывает. Быстродействие же связки РНР + MySQL обеспечивается тем, что разрабатывающие эти две технологии группы очень тесно сотрудничают. То же самое и со связкой ASP.NET + MS SQL.
Однако скорость работы РНР с другими СУБД (через ODBC) разочаровала. С большинством известных СУБД, включая MS SQL Server, SAP и MaxDB (тот же SAP, начиная с версии 7.5), он у меня работал медленнее ASP.NET. Насколько я понял, из-за того, что ASP.NET старается делать из БД как можно меньше выборок, помещая все актуальные таблицы и даже связи между ними в кэш (технология ADO.NET в случае с MS SQL), в то время как РНР склонен генерировать множество запросов к СУБД.
Парадокс с ценами, когда оплатить несколько лицензий Microsoft дешевле, чем взять бесплатные Unix/Linux, PHP и MySQL, тоже вполне логичен. Следует учитывать, что, во-первых, эти продукты бесплатны, пока вы не собираетесь делать на них коммерческие проекты (Linux и PHP, конечно, бесплатны без всяких условий. Коммерческая лицензия в полном смысле этого слова есть только у MySQL. Некоторые затраты на PHP, пожалуй, грозят только программистам, делающим скрипты на продажу. Дабы не открывать код скриптов, им приходится использовать продукты компании Zend, а они, увы, платные. - Прим. ред), а во-вторых, что разработка и поддержка проектов под эти платформы в целом обходится дороже. Кроме того, Linux в ряде случаев работает медленнее Windows. Возможно, я ошибаюсь, но ни для какой СУБД я и близко не видел такого количества критических исправлений и сообщений, как для MySQL. А все это есть риск (Редакция умывает руки. Все рассуждения о сложности создания кластеров на Unix целиком на совести автора. Лично мне кажется, умеючи - это не так уж долго, что на Windows, что на Unix, но экспертом в данном вопросе я не являюсь и судить не берусь. - Прим. ред.).
Теперь PHP. Если кратко охарактеризовать ощущения от работы с ним - это постоянная отладка, дебаг. И дело даже не в том, что полноценного дебаггера пока нет (по крайней мере, лучший, что я нашел, Zend Studio, не идет ни в какое сравнение с дебаггером Visual Studio), а в том, что само устройство языка способствует серьезным логическим ошибкам.
Вот пример, который недавно прислала мне однокурсница, попросив помочь:
<p> <? $bukvi = "abcdefg"; $stroka = "abcdefg"; echo $stroka[0]; echo "<br>"; echo $bukvi[0]; echo "<br>"; if ($srtoka[0] == $bukvi[0]) echo "строки совпадают"; else echo "строки не совпадают"; ?> </p>
Сценарий работает, но работает неправильно.
Даже примитивная опечатка (выделена красным) приводит к логической ошибке, которой в C# не было бы в принципе. Вообще, в РНР объявление переменных отсутствует как класс, что, с моей точки зрения, большой минус. А любой сведущий в программировании человек понимает, к чему приводит отсутствие типов в крупном проекте.
Конечно, программисты на РНР могут сказать, что я ничего не понимаю: ведь достаточно залезть в php.ini и настроить вывод предупреждений. Но и здесь не все так просто. Моему знакомому PHP-программисту недавно позвонил работодатель, у которого завис сайт. В результате выяснилось, что хостер обновил PHP с версии 4.3.6 до 4.3.8, в которой предупреждения об использовании необъявленных переменных оказались по умолчанию включены. В итоге сайт стал представлять собой сборник всевозможных предупреждений от движка PHP, поскольку приятель, привыкнув к равнодушию PHP, никогда не затруднял себя объявлением переменных.
Как правило, обновление версии РНР на сервере - головная боль и для заказчиков, и для программистов. Порой найти ошибку очень трудно, особенно если она появляется лишь при определенных обстоятельствах, так что ее можно вообще не выявить до сдачи проекта. В этом и сила, и слабость РНР. Пока в С# вы будете заниматься планированием, писать разные классы, интерфейсы для коллекций и прочая и прочая, чтобы потом одним махом за десять минут сделать страницу, - в РНР вы ту же страницу успеете написать несколько раз. Только вот каждая следующая страница на ASP.NET делается лишь за десять минут, а в РНР снова и снова придется затрачивать то же самое время. Нужно визуально в выводе что-то на странице изменить - в ASP.NET понадобится пять минут, а в РНР - придется искать и править вывод HTML. PHP-программист предпочтет скорее переписать все заново, а в ASP.NET программист будет вынужден использовать готовые наработки. Иначе его просто не возьмут на работу. На таком коллективизме, когда индивидуальность программиста нивелирована до предела, и построена вся философия .NET, и эта философия, повторюсь, прекрасно действует в большом коллективе. А индивидуальность и простота РНР-программирования - в маленьком.
Этот факт хорошо отражает ситуация на рынке труда: соотношение РНР- и ASP.NET-программеров сейчас составляет 3:2, что говорит как о доступности бесплатных продуктов, так и о большом количестве небольших, но амбициозных проектов, для которых PHP подходит идеально. Иная ситуация, например, в Израиле (там соотношение примерно 1:10), Америке и Европе.
Заработок ASP.NET-программиста тоже выше, и если хороший PHP-программист получает у нас в лучшем случае 800, ну максимум 1000 долларов (информация с www.job.ru), то зарплата ASP.NET-программиста, как правило, начинается с 800 долларов. Оно и понятно - ответственности больше, работы больше, геморроя больше, свободы меньше.
Итак, маленькие и средние проекты - удел маленьких групп программистов и PHP; средние и большие - удел больших групп, использующих продукты Microsoft (Это какая-то ложная дихотомия. Можно подумать, что в мире есть только PHP и ASP.NET. Масса крупных проектов сделана на Perl, который лишен перечисленных недостатков PHP и прекрасно работает. - Прим. ред), а также очень немногочисленных хорошо организованных групп программистов на РНР; гигантские проекты делят между собой продукты HP, IBM, Sun, Oracle, и расценки там в несколько раз выше. Но это уже совершенно другая история.
Что выбрать начинающему программисту? Затрудняюсь ответить однозначно. РНР, конечно, проще: но я все-таки советовал бы изучать ASP.NET, у него абсолютно точно есть будущее в средних и крупных компаниях, чего не скажешь о РНР. Отмечу также, что ситуация на рынке труда всего лишь год-полтора назад была примерно 1:9 в пользу РНР, и радикальное изменение этого соотношения не может не насторожить.
Если же повезет и если ты действительно хороший программист - можно попасть в "совершенно другую историю", где и зарплата совершенно другая. Этому может способствовать участие в различных конкурсах, проводимых компаниями (попасть туда иным путем, без серьезных наработок на стороне, очень трудно).
Предлагаю вам два варианта (на ASP.NET и на PHP) одной и той же простенькой программки. Оба написаны в лоб (специально) и решают одну и ту же задачу: подсчитывают, сколько раз та или иная буква встречается во введенной строке.
ASP.NET:
private void Button0_Click(object sender, System.EventArgs e) { string alphabyte= "ABCDEFGHIJKLMNOPQRSTUVWXYZЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ"; int[] counter =new int[alphabyte.Length];//Массив-счетчик string Text=TextBox1.Text;//Забираем данные Text=Text.ToUpper();//Введенный текст к верхнему регистру foreach (char t in Text)//Идем по строке как по массиву { //Идем по массиву-счетчику for (int i=0; i<alphabyte.Length;i++) { //Если текущая буква в строке равна букве в алфавите, // то увеличиваем массив-счетчик на единицу для текущего положения if (t==((char)alphabyte[i])) counter[i]++; } } //Вывод for(int i=0; i<counter.Length;i++) { if (count[i]!=0) { Response.Write("Буква "+alphabyte[i]+" встречается "+ Convert.ToString(count[i])+" раз <BR>"); } } }
Я специально убрал файл с шаблонами и текст, который автоматически генерируется Visual Studio. Здесь только то, что написано "руками"; реальный текст программы раз в пять больше. Я сделал это, чтобы показать, как работа с собственно HTML в ASP.NET намеренно сводится к необходимому минимуму (в данном случае - к обработчикам событий, как в обычном визуальном языке программирования). Таким образом, становится возможной полностью раздельная работа программистов и дизайнеров, когда для радикальной смены дизайна программист, как правило, не нужен. В РНР это тоже можно реализовать путем применения шаблонов, но заметно большей кровью.
А теперь тот же код на РНР:
<form action="test.php" method="POST"> Введите слово <input type="text" name="str"> <input type="submit" name="submit" value="Посчитать"> <?php $quiz_string=$_POST['str']; if (strlen($quiz_string)!=0) { $alphabyte='QWERTYUIOPASDFGHJKLZXCVBNMЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ'; $quiz_string= $quiz_string.strtoupper($quiz_string); for ($i=0; $i<strlen(quiz_string);$i++) { for ($j=0; $j<strlen($alphabyte);$j++) { if ($alphabyte[$j]==$quiz_string[$i]) {$result[$j]+=1;} } } echo '<br>'; for ($j=0; $j<strlen($alphabyte);$j++) { if (strlen($result[$j])!=0) { echo "Буква $alphabyte[$j] встречается $result[$j] раз<BR>"; } //echo $quiz_string; } } ?> </form>
Очевидно, что в РНР правит балом динамический вывод HTML, тогда как в ASP.NET делано все, чтобы программист по возможности вообще не думал об HTML.
Итак, общий вывод.
ASP.NET: поначалу темпы разработки должны резко падать, потом стабильно расти и в конце концов остановиться на определенном уровне.
PHP: при достаточно большом объеме кода темпы разработки должны падать с начально очень высокого уровня, причем не удивлюсь, если скорость падения будет пропорциональна квадрату объема кода.
Ссылки
Оставить комментарий
Комментарии
PHP все еще жив, хотя и испытывает определенные трудности в связи с развитием облачных технологий. Тут его теснит уже стек MEAN, успевший плотно ухватиться за нишу headless cms и все, что с этим связано.
На мобильные платформы php, в отличие от .net или js так и не пробился..Приложения net core (а нынче net 5) "из коробки" разворачиваются практически на любой платформе. И, конечно, языки net - языки общего назначения, что как бы намекает.
И, да, от старика Билла ушла его Мелинда. Возможно, теперь у него появится новый велосипед и он станет добрее.
Впрочем, все это не важно, ибо что-то подсказывает мне, что выбором поколения зуммеров, скорее всего, станут python и tiktok
Вот как ваша строка будет выглядеть на php:
<?="<h1>Yaaaaaaaazzzz!..</h1>"?>
сильно отличается от asp?))) У asp просто огромное преимущество исходя из ваших знаний)))
Думаю достаточно мерятся пиписьками.
Тут такой спор как-будто вы на этих языках пишете программы прицеливания роботизированных ракет с искусственным интеллектом на метеорит в соседней галактике.
Это обычные языки программирования. Кому какой больше нравится пусть на том и пишет.
У всех свои преимущества и недостатки. Не надо выдумывать преимущества, если вы не знаете идеально оба языка.
Для написания сайта, от визитки до портала оба справляются. Самое главное - прямые руки разработчика и отменная логика построения структуры.
Иначе можно запороть любой проект на любом языке.
итак PHP:
echo('<h1>Yaaaaaaaazzzz!..</h1>');
?>
а теперь ASP.Net:
в итоге у asp.net есть полный инструментарий для того чтоб быть похожим на php. Согласитесь, если вспомнить все возможности asp.net, и даже примитивные которые мало кто использует, то абсолютно все можно привести к точно такому способу построения страниц как и в php. Т.е. можно использовать такие же шаблоны tpl, чтоб отделиться от разметки.
Можно сделать абсолютно все похожим на php.
ASP и PHP как оказалось из примера выше тоже может быть очень наглядным и монтирован просто в разметку.
ASP и PHP содержат очень большое количество всяких финтифлюшек для удобной работы с веб.
код на ASP и на PHP при желании будет выглядеть абсолютно идентично. я даже больше скажу. любой код написанный на php можно, подправив синтаксис языка и заменив всего лишь <?php .... ?> на <% ... %>, буквально преобразовать в ASP без особых усилий.
А теперь резонный вопрос: а что такого есть в php, что может утереть нос ASP.Net?
- ООП?
- Возможность собирать код в библиотеки?
- Контекстное программирование?
- Компиляция страниц?
- Возможность отказаться полностью от интерпретатора?
- DBML - как мощнейший инструмент построения бизнес логики по уже имеющейся базе?
- LINQ - не менее мощный инструмент работы с коллекциями на уровне предикативной логики?
В своё время (1998 год) ASP вызвал у меня лёгкий шок сложностью и запутанностью, и я на 2 года забросил попытки заниматься веб-программированием. Вернулся к нему спустя 2 года, в 2000, когда знакомый программист мне посоветовал обратить внимание на PHP. Мне этот язык сразу показался очень лёгким и лаконичным. Хотя, на тот момент, кроме генерации статичных страниц, для него было трудно придумать какое-либо применение.
Прошло 10 лет, но я по-прежнему продолжаю разрабатывать под LAMP. Технологии сильно поменялись с тех пор, и PHP, как и ASP.NET, значительно "повзрослели". В данный момент у компании, в которой я работаю, два десятка онлайн-сервисов, некоторые из них очень крупные (например, сайт знакомств с 1,500,000 посещений/сутки) и все они написаны на PHP, хотя есть отдельные компоненты, которые на C++. Впрочем, у крупнейших социальных сетей (facebook и её младший брат/клон - вконтакте) примерно тот же процент - 90% на PHP, 10% C++.
Сегодня, анализируя наши проекты, я понимаю, что очень правильный выбор мы сделали, выбрав PHP/MySQL и Open Source софт - будь наши проекты написаны с использованием .NET (где ВСЕ компоненты платные), разработка этих проектов вылилась бы как минимум в 100,000 долларов, не считая зарплаты программистов, конечно. Плюс, гораздо большие требования к серверам (нагрузка-то там очень даже большая), и того больше.
А так, я не люблю холивар. Кому что удобнее и выгоднее использовать, тот на том и разрабатывает.
Второе предложение автора: "Для программирования на PHP не нужна дорогая среда программирования".
Смешно? Вовсе нет.
Сколько программистов делали самые крупные проекты? Яндекс? Гугл? Подумайте над этим. Не нужна гигантская бригада PHP-девалоперов чтобы сделать мега-портал, нужен один девелопер и человек 20 саппорт-программистов.
"РНР-программистам в подобных проектах делать нечего. Почему?"
Вот и я не знаю почему. Сам веду несколько крупных проектов (причём один, без саппортеров) и всем доволен.
"PHP4 слишком доверяет программисту. В нем нет типов."
Вероятно автор не работал с PHP.
"Добавить сюда такую же таблицу? - два-три щелчка мышкой, пятнадцать строчек текста."
А что есть таблица на PHP?
$info=get_all($db,"SELECT * FROM f_table");
if(!empty($info)){
echo '<table>';
for($i=0;$i<count($info);$i++){
foreach($info[$i] AS $var=>$value) $$var=$value;
echo "<tr><td>$row1</td><td>$row2</td></tr>";
}
echo '</table>';
}
Итого - 9 строчек кода. В принципе, можно ограничется и пятью. А про удобства открытой структуры конструирования я вообще молчу.
В принципе, каждое утверждение автора весьма сомнительно.
Особенно про ООП, скорость, удобство разработки, коллективная разработка, суммарная стоимость всех затрат.
Смотрите мой коммент по той же тематике в другой статье:
http://www.codenet.ru/comments/?2049125177
Кривость примера на PHP не совсем убивает, встречались перлы и похуже, но вот обидно, что автор не осветил шаблон для ASP.NET, а ИМХО именно там и кроется все львиная доля неудобств MS-варианта.
В статье также не были упомянуты такие понятия, как Smarty, Zend(дебаггер не в счет). Однократно транслированный, при помощи Zend Optimizer, код выполняется намного быстрее.
Кстати, а почему не упоминалась такая вещь как ЧПУ, которая просто не имеет нормальной реализации в IIS (6-ой не юзал).
Gintonic / 15 октября 2005, 00:59:02
Респект!
ПС Я не PHP-фанатик, технологию надо выбирать в зависмости от задачи. Вот никогда не поставлю на домашний компьютер Linux, а веб-сервер на Windows :) , здесь по моему скромному мнению рулят никсы. Тысячу раз убеждался, что IIS - это на 100% ужасная поделка, в отличие от Apache.
После ее написания я получил довольно большое количество писем. Что меня особенно удивило: лишь некоторые сторонники PHP хотели реально конструктивного разговора. Остальные хотели мата, ора, "священных войн" и навязывания своего мнения на стольких страницах, что моя статья - пшик по сравнению с объемом их трудов. Остается только надеяться, что реальные РНР-программисты прочли, ухмыльнулись и пошли работать дальше.
Я до сих пор программирую на ASP.NET, недавно перешел на FrameWork 2.0. И, хотя, откровенно говоря, программист из меня не очень хороший, но я удивлен, как попал в цель с этой статьей. Некоторое время я проработал в фирме, делающей биллинг для крупнейших сотовых операторов в России, это был неоценимый опыт. 600 мегабайт проекта написаны и работают под ASP.NET.
Что же касается меня, то теперь я единичный разработчик, админ и SQL-программер в одном лице. И тоже на ASP.NET+MS SQL :-)
Удачи всем!
AAE писал про студию, согласиться абсолютно нельзя, для .NET лучше ничего не найти, прекрасно работает, а если даже дебагер не работает, можно дать совет купить лецензионный продукт...
Сам пишу на ASP.NET и считаю конечно лучшим, смутно знаю ПХП и в первом преимуществ нашел больше. Правда как было написано ранее одному работать практически не реально в отличии от ПХП.
ASP.NET действительно для крупнобюджетных проектов и в этом его огромный плюс.
Сам пишу на php и дествительно, когда проект разростается, конторлировать его становиться все сложнее. А плотная связка с html это и есть огромный минус. Недавно приходилось проделывать такую операцию. Так времени было затрачено куча и код практически весь был переписан. До этого не мной был написан. Но все же грамотных средств в php нет. Шаблоны?! Тут еще стоит о быстродействии не забывать. Если учитывать этот факт, то не каждый шаблон покатит. Да введение ООП (полноценного, а не как php) в web-технологии очень сильно облегчает жизнь программеру. Ну и редактор тоже играет роль, можно конечно в блокноте ваять, но как быть с кпд, оно будет очень низкое. И при больших пректах блокнота не на долго хватит.
На PHP можна и делаются крупные проекты которые не уступают ASP.NET
еще о PHP: то что в пхп много HTML - так это правильно. картина так яснее выглядит.
уровень з/п - дело временное. а вот гибкости и мощи пхп асп не видать. у него правда свои козыри тоже есть
если так писАть, то ясен пень пхп будет в гробу в белых тапках (учить его надо больше).
с автором несогласен чуть ли не в каждом предложении.
ЗЫ: я не против асп (на нём я сейчас пару-тройку крупнях проектов делаю и поддерживаю).
ЗЗЫ: тут все забыли про Перл и Джаву?
Я не знаю что сказать, но сказать хочеться. Я считаю что ASP.net может и хорошоя технология, но я не БУДУ его учить, т.к. не навижу продукты мелкомягких. Ух все они очень громозкие, тормознутые, и у всех огромные документации. Это все жрёт память, процессорное время, тормозит. и т.д. (ну зато может из за этого такой прогресс в CPU).
Я например учил пшп 2 недели. Очень лёгкий и понятный язык.
По поводу статьи, автор, не знал о чём писал. Или писал, не знал о чём. Короче ПШП+DOS :) forever. M$ - Чмошники и жополизы!
А что не опровергнешь, так это уровень зарплат. Так что перехожу на ASP.NET
Невежество с сточки зрения веб-технологий (что за странные способы оценки производительности веб сервера 30-50 сессий), невежество в точки зрения технологий программирования (масштабируемость, энтерпрайз технологии, тп), невежество с точки зрения использования сред программирования (для того же пхп есть десятки IDE разных производителей, достаточно упомянуть тот же Зенд и Эклипс), невежество с точки зрения непонимания того что количество запросов к базе зависит в первую очередь от программиста а не от утилит которые программист имеет в своем распоряжении, и полнейшее невежество в плане разделения UI и функционального кода, что видно даже в подтасованных примерах (мы тут для простоты-де все шаблоны в АСП убрали а в ПХП для примера использовали не-шаблонный вариант - иначе чем грязным трюком такой прием демонстрации не назвать).
Короче статья как мне кажется вместо демонстрации мощи АСП.НЕТ и ПХП просто путает людей которые могут на основании ее создать искаженное представление о каких-то выдуманных ограничениях PHP или о каких-то магических супер-пупер качествах .NET - при том что и то и другое серьезные технические средства для своих целей. По сути практически не конкурирующие между собой.
-- леша
alesha.ru
Я наблюдал и участвовал в двух десятках споров по этой теме. И вот что удивительно: Те кто за ASP.NET (далее буду просто .NET) те, как правило неплохо знают и PHP. А вот те кто за PHP, те в подавляющем большинстве не знают .NET. И направленность спора сводилась к тому, что кто за .NET те за .NET, а те кто за PHP те не столько за PHP, сколько против .NET.
Мое мнение: если бы технология была плохая - она бы не жила.
У автора статьи аргументация, с моей точки зрения, не совсем правильная и потому вызывает раздражение у части публики.
Если сравнивать эти технологии, то не надо сравнивать те области, в которых они НЕ пересекаются для одной и для другой.
Что касается моего предпочтения, то я отдаю должное .NET - это инструмент профессионала. Им можно и мощью долбануть и тонкую операцию сделать.
В PHP командой работать очень тяжело. Потому PHP больше подходит для малых проектов.
Крупный проект становится более затратным по сравнению с .NET.
Существенный недостаток PHP - невозможность разделить код и представление (может в будущем это будет реализовано?).
И еще: PHP это только PHP а .NET это VB.NET, C++(!), C#, J# и много других компиляторов сторонних разработчиков.
Вот такая картинка.
но я работал на системе Мамба полностью написаной на Пхп коде и даная система довольно удобна как для администратора так и пользователя
Мамба давольно крупный проект и я его рекомендую начинающим веб програмиста при изучения пхп так как там много полезных кодов и можна сразу на примере видеть что определеный код делает
Я лично предпочитаю ASP.NET чем PHР. Но это не оттого, что я считаю кого-то из них лучше. НЕТ!
По моей работе приходится разрабатывать не только web-приложения, но вин-приложения, для кпк. Поэтому я выбрал дотНЕТ. Он мне дает возможность не пригая с одного на другое создавать разные приложения.
помоему то, что ASP.NET - это часть .NET и делает его на много удобным чем PHP, зачем мне ходить изучать этот PHP, тратить на это время, когда у меня есть уже лицензионный .NET и он мне дает возможность всего. Если бы не .NET, то пришлось бы мне изучать:
Что-то вреде Дельфи + что-то вроде PHP, как говорится за двумя зайцами погонишся ....!
Kstati kak naschet design templates? V PHP oni est i ochen udobnie. A .NET predlagaet codebehind (web forms) - eto ne sovsem to chto by hotelos.
Pomojmu PHP i ASP.NET zanimajut raznie nishi, pervyj luche ispolzovat tam, gde bolee ispolzuetsja vzaimodejstvie s polzovatelem, ASP -
pri privjazke internet-vozmognostej k kakomu-nit microsoft-projectu.
В-принципе, asp.net - неплохая вещь, достаточно быстрая, удобная, но большая часть хостингов не поддерживает .net, а те, что поддерживают просят кучу денег. Требует знаний.
php4 - писать большие проекты и на нём можно, но сложно отлаживать программу. Писать легко. При большом опыте можно написать офигенные и почти безглючные вещи, но через полгода, если посмотришь на код, то будешь долго и мучительно вспоминать, как же это всё работает.
php5 - ООП это хорошо, но до ООП в C# ему как до луны... Вообщем сайт сейчас переписываю под php5, но использую статические классы в стиле C# :)
Вообщем, я с удовольствием писал бы на C# в стиле php без этих доморощенных asp.net классов.
Программисты любого языка программирования помимо среды разработки должны, обязаны учитывать то, как написанный ими код будет располагаться в памяти ЭВМ и как он будет этой ЭВМ обрабатываться.
Проблем не возникает, когда у нас простое линейное программирование, но введение лишь одного условного оператора вызывает сложность при выборке следующей команды. Теперь задумайтесь, что происходит, когда в коде встречается цикл.
А теперь поумайте, что происходит с машиной, когда при обработке программы встречается класс??? Проверьте на слово, это не пара строк кода.
Так что, не знаю, как вам, но мне приятнее иметь дело с процедурами, чем с классами, объектами и.т.д. Может, это и сложнее, но легче для обработки на сервере. Так что отсутствие ООП в PHP может даже и на пользу.
А теперь программисты ASP могут прикинуть, насколько больше кода обрабатывает их IIS со всеми его прелестями.
ИМХО, именно по-этому ни один сайт на asp не будет грузиться молниеносно, как пишут, на машину клиента. У меня, по крайней мере, такого ни разу не было. (PIII 550Mhz, 128RAm, 128 kbps - не самая старая система и не самый худший канал). Прибавьте к этому хорошую графику на сайте, анимацию и.т.п. и страница будет грузиться долго. За легкость создания и обезьяньи методы drag&drop платим нулевой оптимизацией кода.
Все имхо, сорри, ого обидел.
P/S/ А представьте, что происходит с вашей машиной, когда на нее грузится Win XP - сборище псевдоклассов и связанных объектов? Забивание ОП и Процессора только так :)) Wintel, одним словом. ЧЕМ ЗАБИВАЕТ ОПЕРАТИВКУ "ВИСТА", ЧТО ЕЙ МАЛО 512 МБ?????
ЗЫ: Криво писать можно везде. Да и если перейти от ASP .NET к PHP, то явно писать будешь криво. Потому как уже привык во всем полагаться не на себя, а на среду имхо ;) Учитесь, дети, правильно кодить!
ЗЫЫ: Майкрософт сама не всегда использует собственные серверные решения. Уже уличали их в этом. Зря на *nix гонят. Проще - не всегда качественнее и надежнее. Хотя тут следует еще учесть как давно существует *nix и до какой степени его уже успели "вылизать".
ЗЫ Кого интересует хостинг на ASP.NET 2 - http://www.ahz.ru, типа почти даром :)))
>> Зато если выучить... Счетчик посещений? - пожалуйста, десять строчек.
// на ПХП напишу в 5 строк
>> Существует, например, проект Mono, позволяющий запускать любые .NET-приложения под Linux
// ну-ну...
>> Однако скорость работы РНР с другими СУБД (через ODBC) разочаровала.
// вот тут долго смеялся.... ИМХО асп с MySQL вообще работать не захочет - и что из этого? автор вытянул дельфина на сушу и разочаровался что тот бегает медленнее зайца....
>> Очевидно, что в РНР правит балом динамический вывод HTML
// учите шаблоны... мож поможет...
ну а код вообще порадовал - автор почему-то не показал html-сторону asp-скрипта, но при этом показал на ПХП написал все... ну это ладно - спишем на невнимательность.... но зачем же так бездарно писать пхп-код? ну не умеешь - не берись...
в общем, автору хочется сказать одно.... не знаешь досконально обе технологии - не берись сравнивать...
пошел в магазин купил книгу по РНР скачал денвер и занать не знал проблем. сидел в инете читал форумы глядишь уже свой инет магазин накарябал.
а говоря о крупных проектах и пр лабуде ... где эти крупные проекты? много их в сети то по сравнению с сайтами типа vasja.narod.ru
потом индексация в поисковиках что лучше
www.aaa.ru/osf.html или .php?df=2343254534&fgjdfg=34
или .asp?df=2343254534&fgjdfg=34
я так думаю что большенство информации в сети пока текстовой... и простенькая CMS с формированием статических станиц на php разрулит 80% нужд
хотя может если писать что то вроде управления банковским счетом через инет... то я не знаю... может асп и разрулит лучше... но тут судить не могу.
---------
вообще это мое скромное мнение, и я не сомниваюсь что я ошибаюсь
--------
пожалуй самое правельное перестать спорить о том что лучше и заняться делом.
Microsoft заволновался , або их ASP, был сляпан на скорую руку из VB .
Cила php в его free. Именно над ним, работают многие талантливые бессребреники.
Вот уже php5 вышел с усиленной OOП(почти в стиле C++).А дальше php6.
Писать на php легко ( куча встроенных функций ).
Так же нельзя забывать , что php разрабатывался исключительно для web, а задачи web программирования все-таки не столь масштабны.
Microsoft заволновался , або их ASP, был сляпан на скорую руку из VB…….
Cила php в его free. Именно над ним, работают многие талантливые бессребреники.
Вот уже php5 вышел с усиленной OOП(почти в стиле C++).А дальше php6….
Писать на php легко ( куча встроенных функций ).
Так же нельзя забывать , что php разрабатывался исключительно для web, а задачи web программирования все-таки не столь масштабны….
Microsoft заволновался , або их ASP, был сляпан на скорую руку из VB…….
Cила php в его free. Именно над ним, работают многие талантливые бессребреники.
Вот уже php5 вышел с усиленной OOП(почти в стиле C++).А дальше php6….
Писать на php легко ( куча встроенных функций ).
Так же нельзя забывать , что php разрабатывался исключительно для web, а задачи web программирования все-таки не столь масштабны….
Может это заметно в крупных проектах, но втоком случаи нас всех убедили в обратном... так Что советую браться за ASP.NET. Вот друган на PHP чат пишет.... Мне его аж жалкостало.. Яб свободно решил все его проблемы и нубовские солюции на своих же нубовских знаниях ASP.NET а он вдарился в PHP и что-то несложные казалось вещи не может решить кодом на высоком уровне... Только на примитивном - скрытым от глаз юзера...
Введите слово <input type="text" name="str">
<input type="submit" name="submit" value="Посчитать">
<?php
$quiz_string=$_POST['str'];
if (strlen($quiz_string)!=0)
{
$alphabyte='QWERTYUIOPASDFGHJKLZXCVBNMЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ';
// было добавление к строке, причем в Бейсик нотации, хотя в РНР
// можно написать покороче ($a.='str') вместо ($a=$a."str")
// да и зачем тут добавлять к строке саму себя в больших
// буквах? чтобы потом цыклы дольше работали и результат
// был бы непредсказуемым ??
$quiz_string= strtoupper($quiz_string);
for ($i=0; $i<strlen($quiz_string);$i++)
for ($j=0; $j<strlen($alphabyte);$j++)
if ($alphabyte[$j]==$quiz_string[$i]) {$result[$j]+=1;}
echo '<br>';
for ($j=0; $j<strlen($alphabyte);$j++)
if (strlen($result[$j])!=0)
echo "Буква $alphabyte[$j] встречается $result[$j] раз<BR>";
}
?>
</form>
так же убраны лишние скобки блоков
Сам разрабатываю сайты на ASP.NET, но при этом хорошо владею PHP (начинал разработку сайтов в свое время именно на PHP). ИМХО выбирать технологию действительно нужно в зависимости от сложности проектов. На PHP влет пишутся небольшие сайты. Это получается проще и быстрее чем на ASP.NET, но стоит начать писать порталы и иже с ним - тут и вылазит вся прелисть ASP.NET. Четкая организация, сделать ошибку на порядок сложнее (объявление типов, компиляция и т.п., хорошая система управления БД). Да, супер-профессионал на чем угодно что угодно напишет, но толкьо много Вы их знаете? Бить себя в грудь и говорить что "Я такой" будет только самоуверенный юзверь :) Опять же ИМХО.
Что же для среднего разработчика нужно простоисходить из собственных возможностей и пожеланий заказчика (если заказчик хочет синхронизацию SQL-Баз, Веб-сервисы и т.п. - тут понятное дело потребуется ASP.NET).
На практике ценовое приимущество PHP сводится только к цене хостинга (по тем же тарифам одного из самых дешевых провайдеров на Windows - ahz.ru (http://www.ahz.ru), стоимость полноценного хостинга с ASP.NET и MSSQL - 18 у.е., в то время как PHP можно найти и за 5 у.е.), ибо о цене среды, в России, я бы промолчал. Незнаю как у остальных, а у меня VS.NET стоит столько же, сколько диск на котором он был записан и куплен на рынке.
В общем что PHP, что ASP.NET - рулез, и незачем обливать друг друга грязью. Нравится своя - ну и используй, зачем опускать другую среду, которую, зачастую, опускающие и незнают?
4Me:
"Говенный PR. И что особенно умиляет, что никому кроме самого автора статьи этот ASP.NET вообще не уперся.
> ASP.NET - это не продолжение ASP.
Полная чушь. АБСОЛЮТНО ТОТ ЖЕ СЛОН! Зачем народу мозги пудрить, да?"
Не знаешь - не лезь. Две абсолютно разные вещи. Общего только возможность вставить в HTML-код переменную типа <%=переменная%>. Незачем тебе мозги пудрить остальным... так и хочется сказать "говенный ПР PHP"...
Да , что сказать пиар
главное что заплатят автору за статью и собственно источник статьи высоко посещаемое
интернет "место"
а PHP как был, тат и останется
без всякого PR ....
Если Ваш знакомый, извените за выражение, криворукий, то нечего сперать все на язык.
Можна было поставить:
И воопще нечего сравнивать одну технологию с другой, если не знаком хорошо с обеими.
Надо было статтю назвать:
Чем ASP.NET лучше PHP
А php развивается... достаточно глянуть на списки поддерживаемых баз, на процент использования на серверах, на тестах по скорости выполнения типичных скриптов на разных вэб-языках... Можно о5 же повторится про pear..
А вообще.. довольно странно в такое время сранивать asp.net c php4, когда давно уже зарелизили php5...
Автор на каждом шагу утверждает, что крупные проекты пишуться на ASP.NET... интересно было бы узнать хоть один.
За статью спасибо, настроение так давно не поднималось :)
Итак, трехуровневое приложение с приципом MVC, 12 кластеров с шаблонами проектирования (3 направления - архитектура, дизайн, реализация и 4 вида - база данных, приложение, развертывание и инфраструктура). Вот примерно какой объем охватывает сегодня ASP.NET.
Это явно не для PHP с нестрогой типизацией, отсутсвием интерфейсов и полноценного ООП.
В плане разделения дизайна и контента (codebehind), а также создания веб-сервисов и в плане работы XML, ASP.NET выглядит гораздо мощнее. Полностью MVC на ASP.NET не реализован - контроллер сидит во вьюшке. Однако этот пробел с успехом закрывается третьими фирмами. Так что, для MS, я думаю, это вопрос времени.
Наличие среды сильно упрощает разработку, хотя VS - среда монопольная (если сравнить Sun, IBM, Oracle) и стоит подороже. Но она также позволяет импотрировать в ваш проект веб-сервисы. Плюс CASE и обратное проектирование. Повторное использование кода. Автодокументирование. Директивы в коде. Развитый механизм сессий (можно простой настройкой хранить данные сессий в БД для больших программ) и система кправления кешами (позволит оптимизировать нагрузку), механизм независимых модулей (просто подключаются в настроечном файле).
Пакетный и, конечно, компонентный подход (Infragisitcs, Component One, как в Delphi). Возможность использования UML и обратного проектирования. Бесшовная интеграция с MS Office и ActiveX.
Да, тут есть что изучать конечно. Однако это все систематизировано. Так что, с автором я не согласен, когда он пишет "Без Visual Studio, MSDN и иногда - доступа в Интернет там делать нечего". Без Visual Studio очень можно даже работать. Ну а если еще взять бесплатный WebMatrix и бесплатный SharpDeveloper то можно очень неплохо жить. MSDN и интернет - для php тоже нужна документация и также нужен интернет. Есть хорошая книга по ASP.NET (Исскусство создания веб сайтов. С Уолтер)
ASP.NET мне нравится, но у нее пока один недостаток - монополия Microsoft.
А за статью спасибо, я ее сохраню. Иногда очень сложно сформулировать все мысли, а здесь все уже изложено.
> ASP.NET - это не продолжение ASP.
Полная чушь. АБСОЛЮТНО ТОТ ЖЕ СЛОН! Зачем народу мозги пудрить, да?
наверное, автору кажется, что
$quiz_string= $quiz_string.strtoupper($quiz_string);
должно преобразовать строку к верхнему регистру (так сказать - вызов метода объекта String), на деле же - это конкатенация строки с её копией в верхнем регистре.
Надеюсь, что я никогда не увижу столь уродливого кода на PHP. Вот мой вариант:
$quiz_string = $_POST['str'];
if (strlen($quiz_string))
{
$alphabyte = 'QWERTYUIOPASDFGHJKLZXCVBNMЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ';
$quiz_string = strtoupper($quiz_string);
$result = array();
$len = strlen($alphabyte);
for ($i = 0; $i<$len; $i++)
$result[$i] = 'Буква ' . $alphabyte{$i}.
' встречается раз: '.substr_count($quiz_string, $alphabyte{$i});
echo implode("\n", $result);
}
Не говоря уже о том, что в PHP есть функция count_chars.
Так же и здесь - качество программ зависит от программиста. От его способности к проектированию.
От себя добавлю, что недавно пришлось переводить два е-магазина на PHP. Магазины стояли на платформе Microsoft(MSSQL + не знаю что. то ли Java, то ли ASP) и безбожно тормозили :)
PHP не заставляет разработчика структурировать код - это на его совести и самодисциплине. Впрочем это, как я понимаю, пришло из его истоков. Всему свое время. Москва тоже не сразу строилась. Появятся дебагеры нормальные для PHP и толковая реализация ООП.
Осмелюсь напомнить что MS-DOS из которого и выросла Windows была(да и есть сейчас) игрушечной операционкой, однако сейчас весьма успешно работает на серверах :)
1. и IBM и Oracle расхваливают пхп и создают целые разделы для него. я например использую пхп с ораклом. оракл полноценно супортит пхп в своих продуктах - в iAs и Jdeveloper.
2. пхп - вообще-то стандарт для хостеров и используется в крупнейших и самых посейщаемых проэктах типа yahoo.
3. у yahoo есть нормальная статья почему они выбрали php+mysql, как раз простота кластеризация это большой плюс shared nothing архитектуры пхп и мыскуля.
chto bivaiut krasivie mechti(php) i bivaet
realnost eto(Microsoft) tak chto uchite
asp.net
Есть разные языки для реализации различных функция. Мне проще на perl, кому то на piton.
А так за деньги я готов писать на чем угодно.
И еще автор не разобрался в данном вопросе. Глядиш через два три года, он если не будет ленится начнет немного понимать.
---
Server Error in '/forum' Application.
Runtime Error
Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.
---
Это значит, что стОит бросить Perl и PHP на Apache под Linux'ом и сломя голову мчаться в сторону ASP.NET+IIS+Windows.
А вообще, статья написана человеком, который PHP два дня как выучил на 0,0001% по самоучителю из серии "PHP за 24 часа".
Особенно понравился HTML прям в коде.
Сюда попал, т.к. недавно занялся Mono. Сильно пожалел. За такие статьи авторов надо к административной ответственности привлекать (клевета + анти-реклама).
asp.net - мощная штучка, не обходите его вниманием! Обязательно попробуйте свои силы!!
Насчет скорости работы PHP с БД. Я был поражен скоростью выполнения скриптов на Linux+PHP+Oracle8. Молниеносно! Кроме того, PHP+Oracle на Linux работают намного быстрее чем на Windows.
PHP тоже постоянно развивается, и последняя его версия - PHP 5.0 - позволяет комфортно работать в обьектно-ориентированной манере. Думаю, описанные в статье проблемы с обьявлением и использованием переменных тоже будут однажды исправлены.