Многие из нас в индустрии веб-разработки слышали о Golang для серверных приложений. Но для чего именно Go и зачем мне его использовать?

Go - это многословный и параллельный язык, что означает

  • для написания базовой программы требуется больше времени, чем для языка более высокого уровня, такого как Python / JavaScript, и
  • он многопоточный.

Что именно означает многопоточность и почему я должен ее использовать? Многопоточность означает использование нескольких ядер ЦП для выполнения одного процесса, что в основном означает получение более чем одного ЦП для сосредоточения на чем-либо. Производительность, которую это дает, является чем-то впечатляющим. Разница между Go и большинством языков общего назначения заключается в том, что они не оптимизируют накладные расходы, связанные с использованием памяти. Это все хорошо, но почему я должен использовать Go? Большинство сотрудников Golang работают в Google, и он поддерживается Google. Гигант поисковых систем использует миллиарды серверов Linux для быстрого получения результатов, и проблема заключалась в том, что до Golang не существовало языка, который был одновременно динамическим и многопоточность и быстро. Не было возможности оптимизировать процессор серверов. Все серверы просто сидели на месте, не используя весь свой потенциал. Итак, в конце концов, они создали Go. Go разработан для одновременной обработки нескольких подключений, что делает его чрезвычайно удобным для работы в сети. Другой фактор заключается в том, что в коде Go, если две программы имеют одинаковые зависимости и компилируются одновременно, компилятор Go скомпилирует зависимости только один раз. Это делает компиляцию очень быстрой, потому что очень часто, если у вас есть много зависимостей, и все они нуждаются друг в друге, на других языках, таких как Node.js, пакет manager будет продолжать перекомпилировать зависимости, как бесконечный цикл. Go строит зависимости только один раз. Это экономит много памяти и ЦП. Зачем мне вообще нужно экономить память и процессор? Что плохого в интенсивном использовании памяти? Как любой, кто играл в многопользовательские игры, запускал математические программы или использовал браузер сообщит вам, проблема в задержке. При выполнении динамических задач возникает огромное количество задержек, и Go экономит ваше время, устраняя все, что может отставать.

Кроме того, людям, использующим языки низкого уровня (c, cpp, java ppl я говорю о u), понравится настраиваемая функция сбора мусора в Golang. У вас когда-нибудь был огромный проект C ++, в котором использовались тысячи переменных, и вы забыли их освободить?

Go может повысить производительность на 30% при включенном GC. И вы можете увеличить интервал между общесистемными паузами, регулируя уровень GC.

И последнее, но не менее важное: Go - это статически типизированный язык программирования, поэтому не нужно задумываться во время выполнения, какие исключения будет выдавать ваша программа из-за какой-то глупой ошибки ввода, которую допустил младший стажер.

Если вы еще не начали заниматься Go, я предлагаю посмотреть видео Написание, построение, тестирование и установка кода Go (очень информативное, даже если немного устарело). Затем попробуйте учебник Tour of Go (он знакомит со всем, чего никогда не было в C ++ на высоком уровне). И, наконец, создайте проект, использующий Go, и опубликуйте все об этом на reddit.

go learn()