оригинал:medium.com/code data las/…
Nodejs — это среда выполнения или среда выполнения кода Javascript, а Golang — это язык программирования, но не только для бэкэнд-разработки. Golang был изобретен Google в 2007 году. Nodejs позволяет запускать код Javascript на сервере, а Golang подходит для написания кода на сервере. Код Nodejs также является кодом Javascript, поэтому он наследует многие функции Javascript. Javascript настолько популярен в наши дни, что стандарт ECMAScript в большей степени представляет собой эволюционный шаг вперед, чем разрушительный. Golang можно рассматривать как эволюцию более консервативных языков c/c++. Основная структура Golang построена на основных принципах C и Python.
Далее мы сравним преимущества и недостатки Golang и Nodejs, чтобы вы могли лучше выбрать, кого выбрать в следующей работе.
представление
-
Golang: Характеристики производительности аналогичны характеристикам c/c++, можно сказать, что они очень хорошие.
-
Nodejs: Сравнение Golang и Nodejs относительно справедливо с точки зрения сырой производительности. Исходная производительность означает отсутствие лишней нагрузки на процессор, и Golang, и Nodejs показывают относительно удовлетворительные результаты в этом отношении, но Golang может иметь лучшую производительность в реальной работе, потому что на производительность сервера влияют различные факторы.
параллелизм
-
Golang: Golang использует модель параллелизма под названием «Goruntinues». Горунтины позволяют запускать несколько сопрограмм одновременно, легко и надежно выполняя одновременные задачи.
-
Nodejs: Nodejs является однопоточным, что означает, что задачи выполнения выполняются последовательно. Необходимость обрабатывать несколько параллельных задач одновременно при массовом масштабировании может представлять собой некоторые ахиллесовы пяты. Javascript позволяет использовать обратные вызовы событий для обработки параллелизма, но это недостаточно эффективно.
Масштабируемость
- Golang: Golang сам по себе разработан для сценариев масштабируемости и высокой параллелизма, поэтому препятствий не так уж много.
- Nodejs: Многие люди или компании, использующие Nodejs, утверждают, что у Node будут некоторые проблемы в масштабируемой среде. Возможно, Node сможет исправить это позже.
Затраты на разработку
- Golang: Golang — относительно новый язык, и он еще не полностью прижился, поэтому будьте готовы к большому количеству документации и ручной настройке.
- Nodejs: Nodejs имеет сотни сторонних библиотек, тысячи руководств и целую кучу сторонних платформ. Огромное сообщество Javascript в последние годы вносит большой вклад, позволяя выполнять задачи в различных реальных сценариях.
обработка ошибок
- Golang: Golang требует, чтобы программы выполняли регулярную явную проверку ошибок и возвращали коды ошибок. Этот подход может показаться сложным, но на самом деле это лучший способ поддерживать согласованность приложений, что может сделать приложение более надежным.
- Nodejs: Nodejs использует модель throw/catch для немедленного запуска захвата при возникновении ошибки. Это более традиционный подход к обработке ошибок, и многие языки программирования используют такой же подход. Таким образом, согласованности приложения будет немного не хватать.
план
В 2017 году отчет об опросе разработчиков StackOverflow показал, что Golang входит в пятерку лучших платных технологий в мире. Тест производительности Golang и NodejsGolang: go version go1.10 linux/amd64
Node js :- v9.4.0
После сравнения всех аспектов Golang и Nodejs нам на самом деле сложно сказать, кто лучше другого, все они имеют свои преимущества и недостатки. С точки зрения производительности Golang кажется более надежным, чем Nodejs, но в то же время вы также должны учитывать различные аспекты, такие как размер проекта, структура проекта и тип бизнеса.
Дополнение переводчика
Эта часть контента не является исходным текстом.Содержание этого перевода не отражает мои собственные взгляды, но этот оригинальный текст более популярен на Medium, поэтому я перевел его для всеобщего обсуждения. Я сам являюсь Nodejs и фронтенд-разработчиком уже более 3 лет, недавно я несколько месяцев практиковался в некоторых back-end проектах с Golang. Мне очень нравится гибкость Nodejs/Javascript, хотя это то, что многие критикуют. Кроме того, сравнение параллелизма, упомянутое в этой статье, лишь кратко упоминает обратный вызов Js и не упоминает его.цикл событий, Хотя Nodejs является однопоточным, он имеет цикл событий, поэтому он достаточно эффективен для обработки параллелизма. Но, с другой стороны, Go рутины Go с каналом действительно очень эффективны в параллельных ситуациях, и, поскольку это не однопоточная функция, это также приведет к проблемам конкуренции за общие ресурсы и безопасности параллелизма, заставляя меня платить Обратите на это внимание, а обрабатывая и рассматривая больше ситуаций в реальном использовании, вы также можете вступить в контакт с большим количеством операционных систем или с большим количеством базовых знаний и концепций, а не с простым CRUD. Я думаю, что и у Nodejs, и у Golang есть свои сильные стороны.Мое предложение состоит в том, что если вы являетесь бэкенд-инженером Nodejs и хотите изучить другой статический язык, а также хотите иметь дело со сценариями с высокой степенью параллелизма и ознакомиться с ними на более низком уровне, я думаю, что Golang — очень хороший выбор.