GOLANG

GOLANG

18-10-2020 09:35:58

Вводная лекция


1. О языке
2. Достоинства
3. Почему в пользу GO
4. Почему еще не должным образом популярен
5. Поддержка комьюнити
6. Библиотеки
7. Ресурсы
8. Его основное применение
9. Примеры использования


Какие компании использует язык


Основные области применения
Сетевые приложения
Веб технлогии
Автоматизация процессов
Админитсративные возможности
Работа с базами данных (NoSQL)
Робототехника
Коммерческое применнение
Инфрорамционные порталы
Сетевое обслуживание и мониторинг
Торговые сети
Биржи
Криптовалюта
Платежные системы
Как проявился интерес:
Создали маленький проект и он работает
Создали средний проект и он работает
Создали большой проект и он работает
Основные прелести и достоинства :
Скоростной высокая скорость работы
Многофункциональный
Легко сопровождаемый
Параллельный
Большая коммюнити
Без лишних наворотов
Из коробки есть все необходимое для работы
Мультплатформенный
Строго типизированный
Компилируемый (один файл)
Синтаксический сахар
Код на Go, прост в обслуживании

Сложности (почти нельзя):
Интерфейс Можно https://github.com/therecipe/qt/wiki/Getting-Started

Язык Go – серверный язык будущего.


В этой статье мы не будем разбирать «Hello World!», но затронем важность Go и его исключительные характеристики.

Аппаратные ограничения


Первый процессор Pentium 4 с тактовой частотой 3,0 ГГц был представлен еще в 2004 году корпорацией Intel. Сегодня Mackbook Pro 2016 имеет тактовую частоту 2,9 ГГц. Таким образом, почти за одно десятилетие мощности не слишком-то изменились. Вы можете увидеть сравнение мощностей на разных этапах на диаграмме ниже.

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

Для решения этой задачи:


Производители начали добавлять в процессоры все больше и больше ядер. В настоящее время мы имеем четырехъядерные и восьмиядерные процессоры. Они также ввели гиперпоточность. Для повышения производительности добавлено больше кэша. Но у вышеупомянутых решений тоже есть недостатки. Мы не можем добавить к процессору неограниченное количество кэш-памяти, поскольку у нее есть физические ограничения: чем больше кэш, тем он медленнее. Да и добавление большего количества ядер в процессор повлечет дополнительные затраты. Все это имеет пределы. Например, многоядерные процессоры могут одновременно запускать несколько потоков, что приводит к параллелизму изображения.

Если же нельзя положиться на усовершенствование оборудования, единственный выход – более эффективное ПО для повышения производительности. Но современные языки программирования малоэффективны в данном вопросе.

«Современные процессоры похожи на нитрозаправленные смешные автомобили. К сожалению, языки программирования сегодня напоминают Монте-Карло: они полны изгибов и поворотов.» © D. Ungar

У нас есть язык Go и горутины!


Увеличение количества ядер ожидается и в дальнейшем. Более того, сегодняшние приложения используют несколько микросервисов для поддержки соединений с базами данных, MQ (Messages queues) и хранение кэша. Разрабатываемое нами ПО и языки программирования должны поддерживать параллелизм и быть расширяемыми в условиях постоянного увеличения количества ядер.

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

Например, создание нового потока в Java неэффективно. Каждый канал потребляет около 1 Мб объема памяти, и, в конце концов, если вы задействуете тысячи потоков, все закончится крашем и остановкой из-за нехватки памяти. Кроме того, взаимодействие между двумя или несколькими потоками – это тоже непросто.

Язык Go (он же Golang) появился в 2009 году, когда уже были многоядерные процессоры. Вот почему этот ЯП построен с учетом параллелизма. У Go есть goroutine вместо потоков. Они потребляют только 2 Кб памяти. Таким образом, можно в любой момент активировать миллионы горутин.

Другие преимущества:


Горутины обладают сегментированными расширяемыми стеками. Другими словами, они используют больше памяти только тогда, когда это необходимо. Также они запускаются быстрее, чем потоки. Goroutines идут вместе со встроенными примитивами, чтобы безопасно обмениваться данными. В условиях одновременного использовании структур данных не придется прибегать к блокировке мьютексов. 1 горутина может свободно работать на нескольких потоках. Горутины мультиплексируются в небольшое количество потоков ОС. Вот одно из выступлений Роба Пайка, в котором раскрываются вопросы многозадачности и параллелизма.

Все вышеперечисленные моменты делают язык Go мощным инструментом в обработке параллелизма, как в C-языках и Java, но с сохранением естественности и красоты кода, как в Erlang.

Тесты : http://www.techempower.com/benchmarks/#section=data-r11&hw=ph&test=plaintext

Другие преимущества:


Горутины имеют расширяемые сегментированные стеки. Это означает, что они будут использовать память только по необходимости.
Горутины имеют более быстрое время запуска, чем потоки.
Горутины поставляются со встроенными примитивами для безопасного обмена данными между собой (каналы).
Горутины позволяют избежать необходимости прибегать к блокированию мьютексов при совместном использовании структур данных.
Также, горутины и потоки ОС не имеют сопоставления 1:1. Одна горутина может запускаться во множестве потоков. Горутины объединены (multiplexed. — прим.перев.) в малое количество потоков ОС.
Статья о горутинах http://golangtutorials.blogspot.com/2011/06/goroutines.html

Go запускается непосредственно на железе.


Одно из самых значимых преимуществ использования С/С++ вместо современных языков, типа Java/Python, это их производительность. Потому что С/С++ компилируются, а не интерпретируются.

Процессоры понимают только двоичный код. Как правило, когда вы пишете приложение на Java или других, основанных на JVM, языках, то при компиляции вашего проекта, он компилируется с человекопонятного кода в байт-код, который понятен для JVM или другой виртуальной машине, которая запускается поверх ОС. При выполнении, VM интерпретирует этот байт-код и конвертирует его в двоичный код, понятный процессору. Этапы выполнения кода, основанных на JVM Этапы выполнения кода, основанных на JVM

С другой стороны находятся С/С++, которые не используют виртуальные машины, и это позволяет убрать один этап из схемы выше, повысив при этом производительность. Происходит прямая компиляция человекопонятного кода в двоичный.

Этапы выполнения кода при отсутствии этапа компиляции в байт-код
Но очистка и распределение переменных в этих языках — та ещё боль. В то же время, большинство языков программирования обрабатывают распределение и удаление объектов, используя сборщик мусора и алгоритмы подсчёта ссылок.

Go вобрал лучшее из обоих миров. Как и низкоуровневые языки, типа С/С++, Go компилируемый язык. Это подразумевает производительность, близкую к низкоуровневым языкам. Он также имеет свой сборщик мусора для распределения и удаления объектов. Больше malloc() и free()! Круто!

Go специально не учитывает многие особенности современных языков ООП:


Нет классов. Все разделяется на пакеты. Go работает со структурами, а не с классами. Не поддерживает наследование. Это упрощает изменение кода. В языках вроде Java и Python если класс A наследует класс B, и вы вносите изменения в последний, это может вызвать некоторые нежелательные изменения внутри других классов, которые наследуют


B. Без наследования Go также становится легко читаемым:


нет суперклассов, которые следует изучать особо тщательно.
Нет дженериков.
Нет аннотаций.
Нет конструкторов.
Нет исключений.
Вышеизложенные изменения делают Go отличным от других языком, а программирование на нем – предельно простым. Возможно, некоторые перечисленные пункты вам и не понравятся (особенно если вы привыкли работать с типичными языками ООП). Но это не значит, что вы не сможете написать свою программу на Go. Все, что нужно сделать, так это добавить дополнительные 2-3 строки кода. Зато на выходе код будет более красивым, чистым и понятным.

Go поддерживается Google


Да, это не является прямым техническим преимуществом. Но Go создан и поддерживается успешной корпорацией. Google обладает одной из крупнейших облачных инфраструктур в мире, которая продолжает развиваться. Go создан разработчиками Google для решения своих нужд, касающихся поддержки эффективности и масштабируемости. Это те же проблемы, с которыми вы тоже столкнетесь при создании собственных серверов.

Кроме того, язык Go пользуется популярностью в компаниях IBM, Intel, Adobe, Medium и BBC.

Выводы


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

высокую производительность, подобно низкоуровневым C и C++;
суперэффективную обработку параллелизма, такую ​​как в Java;
удовольствие от работы с максимально удобным для разработчика кодом, как и в случае с Python, Perl.
Даже если вы не планируете осваивать язык Go, вы все равно должны понимать, что аппаратный лимит оказывает на нас, разработчиков, сильное давление, так как далеко не всегда позволяет написать эффективный код. Разработчику необходимо понять аппаратное обеспечение и уже в соответствии с ним оптимизировать программу. Доказано, что оптимизированное программное обеспечение может работать и на дешевом, медленном железе (например, на устройствах IOT), что оказывает положительный эффект на взаимодействие с конечным пользователем.


САМОЕ ОБСУЖДАЕМОЕ

...
Титан в воздухе
18-10-2020 09:35:58
Это не самолет – это Мрия!!!...
...
Лучшие бюджетные ноутбуки на 2020 год
18-10-2020 09:35:59
Как выбрать лучший ноутбук в 2020 году...
...
Технологические тенденции в 2020 году
18-10-2020 09:35:59
Технологи будущего уже сегодня...
...
Самостоятельная поездка автомобиля под управлением искусственного интеллекта
18-10-2020 09:35:58
Самый далекий перезд без водителя в истории искуственного интеллекта....
...
Ford Bronco наконец дебютирует 9 июля
18-10-2020 09:35:58
После задержек, связанных с коронавирусом, у долгожданной Бронко Форда официально объявлена ​​дата....
...
Tesla Semi готова к «массовому производству»
18-10-2020 09:35:58
Но генеральный директор не указал точные сроки начала производства электрического грузовика....
...
25 самых продаваемых легковых автомобилей, грузовиков и внедорожников 2020 года (пока)
18-10-2020 09:35:58
Хотя пандемия коронавируса привела к хаосу в продажах автомобилей, мы подсчитали рейтинг самых продаваемых в первом квартале....
...
Электрический Mustang
18-10-2020 09:35:58
Ford представляет электрический Mustang с «потрясающим» ускорением...
...
Cамые большие дизайнерские моменты 2018 года
18-10-2020 09:35:59
Мы попросили дизайнеров рассказать нам, что они считают самой важной вещью, которая произошла в отрасли в этом году....
...
Airtable
18-10-2020 09:35:59
Простая в использовании система управления реляционными базами данных...

НАШИ РЕКОМЕНДАЦИИ

Toyota Supra в 2021 году
Toyota Supra в 2021 году
Toyota Supra 2020 года не получит дооснащения, чтобы соответствовать увеличению мощности в 2021 году...
9 различных вариантов использования console log
9 различных вариантов использования console log
Каждый из нас использовал console.logдля отладки больше, чем нам хотелось бы признать....
Расслабление, снятие стресса и развитие сознания
Расслабление, снятие стресса и развитие сознания
Иногда в жизни бывают дни.......
Послушай других и сделай наооборот
Послушай других и сделай наооборот
Основатель Tesla и SpaceX воплотил в жизнь одну идею, противоречащую общепринятому мнению, и это помогло ему заработать миллиарды....
Красный флаг или работа не Вашей мечты.
Красный флаг или работа не Вашей мечты.
В последнее время развелось (были всегда) много организаций на рынке - которые надо обходить стороной....


ИНТЕРЕСНОЕ

Понимание карты и набора в JavaScript
Понимание карты и набора в JavaScript
Эта статья была изначально написана для DigitalOcean ....
Lazareth Wazuma от Феррари
Lazareth Wazuma от Феррари
Lazareth Wazuma V8F Quad – Engine By Ferrari...
20 самых важных секретов настоящих отношений
20 самых важных секретов настоящих отношений
Не простые отношения между женщинами и мужчинами...
Работа в Швеции
Работа в Швеции
Компании в Швеции переходят на 6-часовые рабочие дни и добиваются удивительных результатов...


ЛУЧШИЕ РЕЙТИНГИ

Набор массы
Набор массы
Базовые принципы для новичков
Ежедневные 15-минутные прогулки способны кардинально изменить ваше тело
Ежедневные 15-минутные прогулки способны кардинально изменить ваше тело
Всем известно, как положительно влияют на организм...
Правила для наращивания мышечной массы
Правила для наращивания мышечной массы
Зная интенсивность физических упражнений...
Раскачать грудь
Раскачать грудь
Обычно грудные растут хорошо у тех...

АКТУАЛЬНОЕ

Будущее уже с нами Galaxy Fold
CEO продвижение
Отношения с мужчинами
Раздевалка
Лишь плохие начальники ожидают от своих подчиненных постоянной занятости
Как научиться читать быстрее
Выбирай того, кто ежедневно пишет тебе «С добрым утром»
США скрывают правду о пришельцах
Свечение от ракеты SpaceX американцы приняли за НЛО
Путешествие из Австрии в Италию

ЧИТАЙТЕ ТАКЖЕ

18-10-2020 09:35:59 (120052)
Какую одежду носят манхэттенские модницы летом
Возможно эта новость тебе еще неизвестна
18-10-2020 09:35:59 (120050)
Время сгибаемых смартфонов еще не пришло
Эксперт по технологиям издания Mashable Стэн Шредер написал колонку...
18-10-2020 09:35:59 (120049)
Успешные стартапы, которые начинали как сторонние проекты
Apple, Facebook, Google, SpaceX ...
18-10-2020 09:35:59 (120051)
Надо стараться быть с теми, кто к нам хорошо относится
Маленький гимназист очень плохо учился...
18-10-2020 09:35:59 (120044)
Стопроцентная диета для похудения или питание наоборот
Сделай все наоборот....
18-10-2020 09:35:59 (120046)
Невероятная 12-месячная трансформацией тела
Звезда фитнеса из Сиднея Софи Аллен рассказывает о своей трансформации..