Задать вопрос

Какой язык программирования для 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-х лет и на разных языках.
  • Вопрос задан
  • 4277 просмотров
Подписаться 5 Простой 3 комментария
Решения вопроса 2
DevMan
@DevMan
вы любитель сравнивать теплое с мягким?
мне кажется, что писать что-то крупное на PHP сегодня "зашквар", и дело даже не в моде, а в производительности.
среди интерпретируемых языков у пыха, сюрпиз-сюрпиз, скорость на высоте.
а теперь или трусы оденьте, или крестик снимите определитесь что вам нужно: скорость выполнения или скорость разработки.
кстати, открою вам секрет: на многих проектах используют несколько языков.
Ответ написан
Комментировать
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
80-90% времени ваш мегасуперязык будет простаивать в ожидании внешних сервисов: бд, кеша, рсс сторонних сайтов, ответа апи сервисов и т.д. Бэк чаще всего выполняет задачи прослойки а-ля принеси-подай-унеси. По этому вопрос производительности языка скорее вопрос удобства и опыта использования.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 16
FanatPHP
@FanatPHP
Чебуратор тега РНР
Ну да, ну да.
Википедия, фейсбук, порнхаб - все эти сайты жутко лагают и вообще лежат не поднимаясь.
А наш диванный специалист по социальным сетям, который и гостевую-то написать не может не запутавшись в двух строчках, вещает про зашквар и проблемы с производительностью.

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

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

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

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

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

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

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

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

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


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

А сейчас не забивайте себе голову. Преждевременная оптимизация - вредна.
Ответ написан
Комментировать
mindtester
@mindtester
http://iczin.su/hexagram_48
бегло просмотрел (вроде уже 15 ответов ))
не устою - докину! )))

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

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

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

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

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

если вы перфекционист, и наделены реальным упорством - выбирайте Erlang. без шуток. но это не простой выбор.
если согласитесь с идеей, что не самый лучший, однако один из лучших перфомансов, в сочетании с крутейшей информационной поддержкой, и реально лучшим в мире инструментарием (Visual Studio) выбирайте C# .net Core

довесок о hiload с участием .net - https://habr.com/ru/company/targetix/blog/261745/
Ответ написан
@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
обрабатываю (в том числе и массовый пререндер страниц!) - микросервисы

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

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

По этому пиши на том на чем умеешь. Любой язык в 2019 умеет делать все что нужно. Не ошибешься.
Ответ написан
@spaceatmoon
Так то PHP и есть C. Просто архитектура языка предполагает не компиляцию, а интерпретацию кода на лету. Вон, фреймфорк Phalcon полностью написан на C. Для социальных сетей самого смысла в производительных языках мало, т.к. там простые действия. Вы больше будете проседать тупо в количестве подключений и возможность запустить кучу процессов, а они каждые хотят своего места в оперативке и процессоре. Twitter когда выпустился, у него все действия были сделаны через очереди.
Ответ написан
Sanes
@Sanes
Периодически с Java сталкиваюсь, как пользователь. Очень быстро работает.
Ответ написан
Комментировать
@Pifarh
Сам не пишу но знакомые пишут на PHP с laravel. Скорость разработки и работы на высоком уровне.
Ответ написан
Комментировать
@SEOVirus
Но мне кажется, что писать что-то крупное на PHP сегодня "зашквар"

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

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

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

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


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

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

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

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

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

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

Похожие вопросы