Философия языка. План на данный курс.
Пролог
Добравшись до работы и заварив кофеек, ваш покорный слуга начинает повествовать о том, что такое GOlang. На самом деле, вступление в курс будет не самым интересным, так как практическая часть будет отсутствовать. Пролог
Ранее я уже давал приблизительный список того, что планирую рассказать от себя. (жмяк) Надеюсь, Вам всем будет интересно и даже опытные разработчики будут хотя бы улыбаться при чтении данных постов. Итак, я думаю, что после такого вступления, есть смысл начать вещать!
Введение
Go - компилируемый многопоточный язык программирования, который появился на просторах интернета в ноябре 2009 года. Создавался он внутри компании Google. Изначально go создавался на замену таким языкам программирования, как С++ и С. Но мы все прекрасно понимаем, что такие языки не сместить. Роб Пайк, один из разработчиков языка, говорит:
Чем же он, собственно, завоевал своих новых фанатов:Целью Go не является проведение исследований в области дизайна языков программирования; она заключается в улучшении рабочей среды его разработчиков и их коллег. Go больше нацелен на разработку программ, нежели на исследования в области языков программирования. Или, другими словами, Go был спроектирован так, чтобы служить в первую очередь целям разработки.
- Строгая типизация
- Полноценная поддержка указателей (для любителей следить за памятью, ага, да)
- Автоматический сборщик мусора (чтобы облегчить жизнь любителям следить за памятью)
- Динамические массивы, слайсы, мапы ( хеш-карты/таблицы)
- Goroutines
- Обработчики ошибок (об этом я расскажу позже)
Строгая типизация - позволяет понять, что именно делает программа и позволяет избежать ряд ошибок
Полноценная поддержка указателей - удобное взаимодействие с памятью
Автоматический сборщик мусора - не надо активно следить за памятью, сборщик все сделает сам
Динамические массивы - немного удобств
Goroutines - вот тут очень долго рассказывать все плюшки. Поэтому скажу просто - ФАНТАСТИЧЕСКИЕ ПОТОКИ
Обработчики ошибок - не следим за ошибками - дебажим код очень долго
Философия языка
Авторы стремились максимально упростить язык и убрать из него сложные и "ненужные" конструкции. ИМХО, но им это удалось. Go - очень сильно похож на С, поэтому все пишут на нем в функциональном стиле, несмотря на то, что некоторые вещи из ООП присутсвуют в нем.
Основная задумка создания Go заключалась в том, чтобы решать высоконагрузочые задачи. Собственно поэтому Go ушел в облачную сферу.
Много можно говорить и философствовать на эту тему, но мне кажется, что данный язык настолько универсальный, что сводить его в определенные рамки не стоит. Основная сила и мощь заключается в его потоках. И конечно же, разработчики на Go всегда приветсвуют микросервисную архитектуру вместо монолитного ядра. В чем плюсы и минусы такой архитектуры мы с вами разберем позже.
План на данный курс
- Пройдемся по базовым элементам языка (типы, операторы и т.д.)
- Познакомимся со встроенными утилитами
- Разберем архитектуры приложений
- Разберемся со взаимодействием с памятью
- Углубленно изучим goroutines и race condition
- Попробуем сами создать сервер с устойчивостью к нагрузкам
- Познакомимся с тестами и запустим их на наш сервер
P.P.S. Я очень надеюсь, что вам понравится мой цикл статей на тему Go. И надеюсь, что кто то решится уйти на него, как на основной язык.