Что выбрать: ASP.NET или PHP

ASP.NET и PHP — две самые популярные технологии среди backend-разработчиков. Разбираем, чем они отличаются и какую лучше выбрать новичку.

Несмотря на то что на PHP написано 79% всех сайтов в интернете, есть и другие технологии, которые хорошо подходят для написания серверной части веб-приложений: Python, Java, Ruby, Node.JS.

В этой статье мы разобрали отличия PHP и его основного конкурента — ASP.NET, доля которого среди сайтов составляет 11,2%.

Процентное соотношение сайтов, написанных на разных языках программирования. Один сайт может использовать несколько языков. Источник

Евгений Кучерявый

Пишет о разработке сайтов, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.


Чем отличаются
PHP и ASP.NET

PHP — это скриптовый интерпретируемый язык, созданный специально для разработки серверной части сайтов. На нём написаны такие сайты, как:

  • Facebook;
  • VK.com;
  • WordPress (и все сайты, созданные на нём);
  • YouTube;
  • Wikipedia и очень многое другое.

ASP.NET — это фреймворк для языков из семейства .NET (чаще всего C# или Visual Basic), который позволяет писать серверную часть сайтов. С его помощью созданы такие площадки, как:

  • Exchanger.com;
  • MSN.com;
  • Microsoft.com;
  • Dell.com;
  • Stackoverflow.com и другие.

Вот основные отличия этих технологий:

PHPASP.NET
Способ выполненияИнтерпретируется. При каждом обращении к скрипту он запускается, а после выполнения — закрывается. Поэтому на небольших проектах можно обойтись без сборки мусора.Компилируется. Сайт представляет собой приложение, которое создаёт новый поток при каждом обращении. Есть встроенная сборка мусора.


Простота изученияНизкий порог входа. Новичок сможет написать первый сайт на PHP за один день. (Конечно, если он уже знает HTML и CSS.)Высокий порог входа. Перед изучением самого ASP.NET нужно освоить какой-нибудь язык из семейства .NET.
Объём кодаКомпактный.
На PHP можно быстро написать какой-нибудь блог, используя минимум кода.
Чуть менее компактный. 
Даже для простого вывода надписи «Hello, World!» требуется создать отдельный класс и запустить анонимный асинхронный метод. Несмотря на это, многие задачи можно выполнить с помощью лаконичного кода.
Размер проектовПредпочтителен для небольших проектов. Поддержка кода на PHP сложнее, потому что в нём реже используется ООП и нет типизации (пока), а также сложно проводить отладку.Подходит для больших проектов. Небольшой сайт на ASP.NET уступает в скорости аналогичному на PHP. Однако он почти не проседает при большой нагрузке.
ТипизацияВ планахЕсть
Популярность и сообществоПопулярный.
Большое сообщество разработчиков, множество тем на форумах и Stack Overflow.
Менее популярный. Сообщество значительно меньше, чем у PHP, но это компенсируется большим количеством книг и очень подробной документацией.
ЗарплатыХорошие зарплаты на фрилансе и в столицах.
В регионах дела обстоят чуть хуже.
Зарплаты чуть выше. Это связано с более высокой квалификацией, поэтому PHP-разработчик с аналогичными навыками может зарабатывать не меньше.
РазвитиеБыстро развивается и меняется.
В новых версиях PHP планируют добавить типизацию, также постоянно появляются какие-то изменения, которые делают PHP лучше от версии к версии. Поэтому уже нельзя сказать, что PHP — это нестабильный и уязвимый язык для новичков.
Быстро развивается, но следует плану. Microsoft прислушивается к сообществу по поводу того, какие изменения вносить в язык. Но всё же компания не отходит от определённого пути. То есть ASP.NET-разработчик может быть уверен, что, проснувшись завтра, не обнаружит любимый фреймворк для создания сайтов изменившимся до неузнаваемости.
КоллекцииТолько массивы.
В PHP в качестве коллекций можно использовать только массивы, но они совмещают в себе особенности всех других коллекций. Например, можно указать строку в качестве ключа (аналог Dictionary в C#) или добавлять и удалять любые ячейки (аналог List). Это удобно для новичков, но усложняет поддержку и чтение кода.
Множество разных коллекций.
В C# и Visual Basic очень широкие возможности по работе с коллекциями: списки, очереди, словари, карты и так далее. Работа с ними становится ещё более мощной благодаря обобщённым коллекциям.
Асинхронность и многопоточностьМногопоточность не нужна.
Так как PHP запускает отдельный экземпляр скрипта при каждом обращении к нему, многопоточность и асинхронность особо не нужны — всё и так отлично работает.
Широкие возможности.
Языки семейства .NET позволяют эффективно работать с несколькими потоками и выполнять одновременно различные задачи. Например, при каждом обращении к сайту создаётся асинхронный поток.
РазмещениеМного дешёвых серверов.
Это связано с популярностью PHP. Практически все хостинги предоставляют возможность использовать PHP-скрипты без дополнительной настройки — просто загрузите ваш сайт, и он заработает.
Серверы подороже. ASP.NET менее популярен, поэтому и хостингов значительно меньше, а стоят они дороже.

Отдельно стоит сказать, что оба языка активно развиваются, поэтому некоторые различия перестанут быть актуальными уже в скором времени. Например, в PHP собираются ввести типизацию, а всё семейство .NET переходит в open source с поддержкой кроссплатформенности. Поэтому PHP может стать сложнее, а ASP.NET — популярнее и доступнее.

Также стоит отметить значительные различия в синтаксисе. Например, вот как в PHP выводится текст:

<?
$var = "Hello, World!"; //Создание переменной не требует указания типа
echo $var; //Вывод с помощью одного оператора
?>

В ASP.NET это выглядит вот так:

app.Run(async (context) =>
{ //Анонимный асинхронный метод, который вызывается при каждом обращении к приложению
	string text = "Hello World!"; //Создание переменной типа string
	await context.Response.WriteAsync(text); //Вывод
});

Этот код находится в методе Configure() класса Startup, который отвечает за работу приложения. Стоит отметить, что таким образом нельзя вывести HTML-код. В PHP же с помощью оператора echo легко выводится не только текст, но и HTML-теги.

Что учить новичку

Новичкам в программировании стоит выбрать в качестве первой технологии PHP — она проще в освоении, на ней можно практически сразу что-то создать. Поэтому можно сразу увидеть результат своих действий, а это один из главных признаков прогресса.

Кроме того, что PHP прост, он всё-таки достаточно мощный, потому что поддерживает работу с базами данных, файлами, изображениями, ООП и многое другое. Это поможет стать хорошим разработчиком на этом языке или подготовит базу для перехода на что-то другое.

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

ASP.NET лучше изучать тем, кто уже знаком с программированием и знает о типизации, ООП, отладке, обработке исключений и прочем. Несмотря на то что у него меньше сообщество, на официальном сайте Microsoft есть подробная документация, а на форумах всегда могут помочь с решением проблем.

Также по ASP.NET больше хороших книг. Но всё-таки он больше подходит тем, кто не гонится за сиюминутным результатом — написать первый сайт на нём можно далеко не за один день, в отличие от PHP.

А теперь серьёзно

То, что я скажу дальше, — это моё личное мнение, с которым вы (или редакция Skillbox) можете не согласиться.

В работе над разными проектами мне часто приходится сталкиваться как с C# (ASP.NET), так и с PHP. Это бывают как новые проекты, так и поддержка существующих. И, как мне кажется, ASP.NET в разы эффективнее, если сайт рассчитан на долгосрочную перспективу.

Даже если код писал не самый лучший разработчик, в нём можно гораздо быстрее разобраться, потому что в C# есть типизация, лаконичный синтаксис и хорошая реализация ООП. PHP в этом плане значительно проигрывает.

Твоё лицо, когда написал самую крупную социальную сеть на PHP

Поэтому я бы посоветовал PHP для тех проектов, которые нужно быстро написать, сдать и забыть. Максимум — раз в месяц вносить какие-то правки.

Разбираться в C# гораздо проще, даже если код написал менее аккуратный программист.

Заключение

Какая бы технология ни казалась вам предпочтительнее, не забывайте, что инструменты нужно выбирать индивидуально для каждой задачи. Простой блог можно написать и на PHP, а для проектов в сфере коммерции, финансов или госаппарата лучше выбрать ASP.NET.

Если же вы уже ознакомились со всеми особенностями обеих технологий и решили выбрать ASP.NET, рекомендуем пройти наш курс «Профессия
С#-разработчик
». Большая его часть посвящена использованию C# для веба, поэтому вы сможете изучить не только ASP.NET, но и основы HTML, CSS и JavaScript.

Курс

Профессия С#-разработчик


130 часов — и вы научитесь писать программы на языке, созданном Microsoft. Вы создадите 5 проектов для портфолио, даже если до этого никогда не программировали. После обучения — гарантированное трудоустройство.

Хочешь получать крутые статьи по программированию?
Подпишись на рассылку Skillbox