Отличия Go от PHP

Наверное первый и главный вопрос, который возникает у PHP разработчиков - в чем приемущества Go и зачем мне его изучать? Попробую не просто перечислить ключевые отличия Go, но и объяснить что это дает.

Преимущества

Производительность

Скорость работы программ на Go намного выше, чем на PHP, а компиляция в Go работает очень быстро. Go, в отличие от PHP, не умирает при каждом вызове и имеет богатую стандартную библиотеку для работы с сетью. Для web приложения на Go вам не нужен будет apache, а так же легко можно обойтись без кэширования данных в memcached или redis.

Статическая типизация

В Go, в отличие от PHP, типизация статическая. Если переменная является массивом целых чисел, то она не может являтся ничем другим, кроме как массивом целых чисел. Поэтому в Go вы не найдете таких функций как is_array, is_int и т.д. В них просто нет смысла. Статическая типизация делает поддержку кода проще, а большинство ошибок, которые возникают в PHP будут отловлены IDE, линтером или на стадии компиляции.

Компилируемость

Go это компилируемый язык. Однако не нужно боятся того, что для проверки кода нужно будет долго ждать окончания компиляции программы. Компиляция в Go работает очень быстро. Очень быстро - значит, во время разработки в большинстве случаев, она укладывается в одну-две секунды. Кроме того, вне завимости от вашей ОС, вы можете собрать приложение в один бинарный файл под любую платформу, что значительно упрощает процесс деплоя.

Многопоточность

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

  • читать данные из БД
  • формировать большой XML файл
  • запаковывать полученный файл в архив

Так, например, можно гораздо эффективнее по сравнению с PHP создать большой sitemap.xml.

Читаемость

Go достаточно просто изучить, в нем всего 25 ключевых слов в отличии от 67 в PHP. В комплекте идет стандартная утилита go fmt для форматирования кода. Больше никаких споров (почти) о форматировании кода. И да, не нужен $ перед именем переменной!

Недостатки

Отсутствие полноценного ООП

В Go нет полноценного ООП, хотя многие вещи можно реализовать другими средствами. "Наследование" в Go скорее напоминает прототипы Javascript.

Обработка ошибок

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

results matching ""

    No results matching ""