Какой язык программирования для Back-end производительнее?

Привет обывателям Тостера. Всё время, пока изучаю программирование, мучает один вопрос. Планирую написать подобие социальной сети, даже больше не соц. сеть, но проект под высокие нагрузки. И с возможностью роста.

Проблема заключается в том, что я не могу выбрать язык программирования для back-end'а. Основным критерием для выбора мне кажется его производительность. Для меня, да и для всех нас, всегда важно, чтобы сайт открывался быстро. Я понимаю, что если руки растут из правильного места, то всё будет отлично на любом ЯП, тем не менее, ВКонтакте переписывался с PHP на C на сколько я знаю.

Вот стек, которым сейчас владею: HTML, CSS, JavaScript, PHP, MySQL.

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

В итоге вопрос, стоит ли изучать какие-либо другие ЯП или писать на PHP (а потом в случае роста переписать)? И если писать на PHP, то какой фреймворк выбрать?

Из фреймворков PHP рассматриваю: Laravel, Symfony 4, Phalcon.

Из решений для бэка смотрю в сторону: Node.js, Go (Golang), Python, Java.

Также стоит вопрос об использовании БД. Какая производительней и проще в масштабировании?

P.S. Хотел бы услышать мнение людей, которые программируют более 2-х лет и на разных языках.
  • Вопрос задан
  • 2460 просмотров
Решения вопроса 3
bakotin
@bakotin
Бекенд-разработчик
1) Наивный вопрос с кучей левых стереотипов о производительности и языках.
2) В 99,9% случаев ты не упрешься ни в какие нагрузки, так как их просто не будет. И даже в этом случае проще будет взять машинку помощнее, чем там что-то переписывать на производительность.
3) Арихектура реальных высоконагруженных проектов - это смесь 5-10 технологий, каждая на своем участке. И на чем писать "базовый" монолит - вообще плевать.
Ответ написан
DevMan
@DevMan
вы любитель сравнивать теплое с мягким?
мне кажется, что писать что-то крупное на PHP сегодня "зашквар", и дело даже не в моде, а в производительности.
среди интерпретируемых языков у пыха, сюрпиз-сюрпиз, скорость на высоте.
а теперь или трусы оденьте, или крестик снимите определитесь что вам нужно: скорость выполнения или скорость разработки.
кстати, открою вам секрет: на многих проектах используют несколько языков.
Ответ написан
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
80-90% времени ваш мегасуперязык будет простаивать в ожидании внешних сервисов: бд, кеша, рсс сторонних сайтов, ответа апи сервисов и т.д. Бэк чаще всего выполняет задачи прослойки а-ля принеси-подай-унеси. По этому вопрос производительности языка скорее вопрос удобства и опыта использования.
Ответ написан
Пригласить эксперта
Ответы на вопрос 18
@FanatPHP
Ну да, ну да.
Википедия, фейсбук, порнхаб - все эти сайты жутко лагают и вообще лежат не поднимаясь.
А наш диванный специалист по социальным сетям, который и гостевую-то написать не может не запутавшись в двух строчках, вещает про зашквар и проблемы с производительностью.

Ничего в мире не меняется, Моцарту тоже приходилось отвечать на подобные вопросы.
Ответ написан
php666
@php666
PHP-макака
Забавно видеть, как опытные дядьки объясняют юному школьнику Цукербергу про технологии, хотя самым правильным решением нужно дать совет не писать никакие социальные сети, ибо он её не напишет, а "высокие нагрузки" ему только во сне приснятся.
Ответ написан
Robur
@Robur
Знаю больше чем это необходимо
Определитесь с нарузками.
Хотя бы RPM.

не знаю переписывали ли вконтакт на С, но можно посмотреть и по другому - до определенной точки им вполне хватало php. И вам до этой точки хватит.
Вы уже точно знаете когда вы достигните этой же точки и вам перестанет его хватать?

Если у вас больше академический интерес - "понятия не имею какое это имеет значения, но просто приятно будет знать что оно на 0.00001 мс в среднем быстрее", то возьмите GO - он модный и по слухам быстрый. как будет по факту - вам на самом деле не важно, вы вряд ли увидите эту разницу.
Ответ написан
solotony
@solotony
code for food, caviar preferably
проблема PHP как и любого другого интерпретируемого языка - время затрачиваемое на компиляцию и инициализацию, которые выполняются на каждом запросе.

а Фреймворки в силу их монструозности тормозят дай боже.

НО для большинства задач этого вполне хватает.

если вы планируете "написать соцсеть" то пишите ее на том что знаете и с чем уверенно работаете. а когда вы реально столкнетесь с тормозами - тогда и думайте.

никогда не стоит забывать заветы дедушки кнута: premature optimization is the root of all evil

хотя если вы действительно планируете работать в сфере "хайлоад" - возможно следует изначально выбрать компилируемый язык - go, java.

p.s. я сам перешел на python/django
Ответ написан
saboteur_kiev
@saboteur_kiev
build engineer
ВКонтакте переписывался с PHP на C на сколько я знаю.


Кто вам мешает пойти таким же путем?
Когда ваш проект начнет тормозить, купите сервер помощнее.
Когда сервера помощнее не будет хватать - перепишете. Точнее наймете специалистов, которые перепишут.

А сейчас не забивайте себе голову. Преждевременная оптимизация - вредна.
Ответ написан
mindtester
@mindtester
делаю странные вещи..чаще на C#..теперь и C++ ужас
бегло просмотрел (вроде уже 15 ответов ))
не устою - докину! )))

вообще то часто ценее на чем быстрее разработать надежный продукт )))
или даже всегда ))
по крайне мере слова скорость разработки + надежность (или легкость сопровождения, или читаемость, все очень рядом) в реальном мире всегда важнее ))

node.js - ад для больших продуктов (выделил.. а то вроде уже одно не верное прочтение состоялось ))
erlang- крутизна, но почему то не в фаворе (надо же)
python - ну пока доползет... )))
java - ветеран.. но..
kotlin - все сахарозы в гости к нам.. но судя по отзывам на хабре, если серьезно, все еще сыроват
C# - .net Core развивается стремительно. и по моим наблюдениям, спрос на https://hh.ru растет такими же темпами..

а вообще люди на полюсах даже пишут, даже на асме, можно даже перфоманс поднебесный получить.. в теории.. но писать долго..
кто то даже на прологе эксперементирует (сорян, ссылку не нашел за пару минут, но пролетло на хабре недавно ))
.. как то так

ps если есть стоящий продукт - найдется инвестор. если темпы роста спроса и качества инвестора устраивают - перфоманс решают вливанием в железо (свое или облака, не важно)
.. как то так ))

pps .. или лирика по теме ))

если вы перфекционист, и наделены реальным упорством - выбирайте Erlang. без шуток. но это не простой выбор.
если согласитесь с идеей, что не самый лучший, однако один из лучших перфомансов, в сочетании с крутейшей информационной поддержкой, и реально лучшим в мире инструментарием (Visual Studio) выбирайте C# .net Core
Ответ написан
@blandger
Чтобы удовлетворить ваши амбициозные требования к производительности, гляньте на сравнения бенчмарков некоторого проекта написанного на разных ЯП с разными библиотеками, с сайта
https://www.techempower.com/benchmarks/

Очевидный лидер на протяжении долгого времени ЯП RUST с одним из веб-фреймворком.
ЯП который не только выдаёт бинарный исполняемый код, имеет маленький рантайм без GC, но самое главное на уровне языка гарантирует безопасность кода (конечно при "ровных" руках). Также имеет недавно добавленный в ЯП функционал-сахар для написания асинхронного кода (async/await). Он строго типизированный, наследования нет, но есть композиция и система типажей (traits). Главное — благодаря свойствам компилятора (borrow checker) он уже при компиляции умеет "бить по рукам" за не безопасный код в многопоточной среде.

Безусловно высокая производительность зависит от множества факторов — архитектуры, распределенности, базы, кэшировпния статического контента и многого другого перечисленного в ответах.

Язык rust — сложный для вхождения, поэтому приготовьтесь осваивать дольше, чем любой другой, на уровне c++. Но он того стоит.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
На любом, где перестаните применять фреймворки, а будете строить архитектуру самостоятельно.
Свой модуль (коим, как пример, является Phalcon) под веб-сервер - самый производительный вариант (если другое - с "прямыми руками", конечно).

Вкратце, про производительность:
читаю - пререндер HTML-страниц (или их информационных блоков, например, отдельно целиком публикацию и внутрь добавляем - рейтинг пользователей) на сервере в статику и кеширование на стороне клиента.
пишу - AJAX-POST
рендерю (склейка данных и простая обработка текста) - PHP
обрабатываю (в том числе и массовый пререндер страниц!) - микросервисы

Про базу данных - здесь
Ответ написан
@Kirill-Gorelov
С ума с IT
Сразу видно, опыта мало в разработки в принципе, по крайне мере так кажется.
Во-первых, php далеко не зашквар. Php отличный язык. Кто говорит, что это отстой тот просто его "готовить" не умеет и начинает в его стороны говорить всякое ужасное. И смотрят на java разработчиков и говорят, вот java язык "огонь". Да не хрена подобного, на нем можно тоже всякие ужасные вещи писать.
Во-вторых, фреймворк, тоже любой, который поддерживается и обновляется постоянно. ТОже не ошибешься. И тем более laravel или symfony уж точно справятся с твоей задачей, если говорить о php.

И последнее, твоя первая версия проекта справится даже с нагрузкой даже php 5.3. потому что к высоким нагрузкам еще нужно дорасти и придти к этому. А это долгий путь. И когда ты к этому придешь будешь уже много знать и уметь и сам будешь разбираться какой из языков тебе подойдет.

По этому пиши на том на чем умеешь. Любой язык в 2019 умеет делать все что нужно. Не ошибешься.
Ответ написан
@spaceatmoon
https://p1d1.blogspot.com
Так то PHP и есть C. Просто архитектура языка предполагает не компиляцию, а интерпретацию кода на лету. Вон, фреймфорк Phalcon полностью написан на C. Для социальных сетей самого смысла в производительных языках мало, т.к. там простые действия. Вы больше будете проседать тупо в количестве подключений и возможность запустить кучу процессов, а они каждые хотят своего места в оперативке и процессоре. Twitter когда выпустился, у него все действия были сделаны через очереди.
Ответ написан
Sanes
@Sanes
Периодически с Java сталкиваюсь, как пользователь. Очень быстро работает.
Ответ написан
@sergeyiljin
Делаю дело
Из решений для бэка смотрю в сторону: Node.js, Go (Golang), Python, Java.

Node.js, Go для крупных проектов не подходят. Это так, чатики или одностраничники поделать. Python медленнее, чем тот же PHP7. Не советую. Java - это корпоративный и мобильный сектор, а не сайты для всех.
Из фреймворков PHP рассматриваю: Laravel, Symfony 4, Phalcon.

Лучше YII2. Золотая середина.
Также стоит вопрос об использовании БД. Какая производительней и проще в масштабировании?

По поводу производительности и масштабирования, то тут всё от ваших рук зависит. Как вы построите структуру БД? Насколько верно расставите индексы, оптимизируете запросы и хранимые процедуры? Любая СУБД подойдёт. Но есть хорошая середина - PostgreSql.
В целом общая производительность приложения будет исходить из производительности СУБД, web сервера, самого "железа" хостинга, настроек кеширования, архитектуры приложения, оптимизации кода и т.д.
Лично я для себя выбрал связку .NET Core + Nginx + PostgreSql. И всё это в докере на микросервисах. Мне удобно в коре создавать web api.
Ответ написан
@Pifarh
Сам не пишу но знакомые пишут на PHP с laravel. Скорость разработки и работы на высоком уровне.
Ответ написан
@SEOVirus
Но мне кажется, что писать что-то крупное на PHP сегодня "зашквар"

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

Правда засмеют конкуренты. Ну разве это важно, мода превыше всего и что подумают окружающие! :)
Ответ написан
wowtschuk
@wowtschuk
Asm, C, C++, Go
Ответ написан
@stilic
Производительность сетевого сервиса зависит от СУБД, точнее от вашего умения ею пользоваться
И от сети, которая от вас не зависит никак.

Крупные сети типа Facebook, VK написаны на вполне себе "медленном" бекенде PHP. Тормоза не из-за него.
А из за сети и СУБД.

Также стоит вопрос об использовании БД. Какая производительней и проще в масштабировании?


Задайте себе вопрос:

Почему, все дураки такие, выбирают не самую производительную и не самую масштабируемую технологию?

Ведь, по идее, в мире и должна остаться только она, так самая-самая супер-пуперная? А все прочие недостойные должны были бы вымереть?

Или вы считаете, что никому в голову до вас не пришло, что нужно брать ту самую крутую?

Подумайте почему до сих пор существуют "не самые крутые".
Ответ написан
@potan
Если производительность так уж критична, то правильный выбор Rust. Вместе с производительностью в нагрузку идет надежность.
Но для больших веб-проектов важнее масштабируемость, когда рост пропускной способности обеспечивается добавлением машин в кластер. Это не очень важно, на каком языке.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
GXB Development Йошкар-Ола
от 60 000 до 160 000 руб.
GFX Пермь
от 120 000 руб.
Centurion Capital Москва
от 150 000 до 210 000 руб.