Сегодня GoLang стал популярным языком для разработки децентрализованных систем. Все остальные организации используют его для своих основных модулей обработки, он также получил большую популярность в веб-разработке.

Мы оценили несколько языков, таких как C, C ++, Java и даже NodeJ, когда решили создать Karachain. Мы также попробовали протестировать некоторые алгоритмы, чтобы определить базовый язык для реализации протокола Karachain. Сегодня я рад сообщить, что мы используем Go именно для этой цели.

Создание блокчейна прямо сейчас эквивалентно созданию операционной системы в далеком прошлом.

ОБНОВЛЕНИЕ: Карачейн был закрыт, как всегда сообщалось, мы в любом случае не собирались собирать средства в ближайшем будущем, который все еще остается в силе.

Мы сосредоточились на некоторых основных проблемах создания чего-то столь же сложного, как блокчейн-платформа. После почти 4 недель разработки и исследований мы выяснили, как красота этого удивительного языка программирования решила наши проблемы.

Поддерживаемый код в долгосрочной перспективе

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

Чем больше строк кода добавляется в проект, тем сложнее его поддерживать. Поскольку для блокчейна могут потребоваться тысячи строк кода, нам нужен язык, который упростил бы обслуживание такого огромного проекта.

Разработчикам легко освоить

Когда мы только начинали, у нас была команда из 20 замечательных разработчиков, большинство из которых работали с такими языками программирования, как JavaScript, Java и Python. Некоторые из них были также системными инженерами, хорошо владевшими Си.

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

Скорость и эффективность

В отличие от Python, Go не является интерпретируемым языком - это компилируемый язык. Это резко снижает накладные расходы, связанные с ошибками «на лету», которые возникают в интерпретируемых языках. Это похоже на C, где сначала компилируется код, отображаются ошибки с просьбой исправить, и только затем код запускается; но это язык гораздо более высокого уровня, чем C, и гораздо более производительный, чем JavaScript и Python.

Блокчейн должен быть очень эффективным в основном из-за криптографических вычислений и огромного количества данных, которые он должен распространять, а также хранить в сети.

Он создан для распределенных систем

Это уже доказано инструментами и программным обеспечением, которые уже созданы с использованием Go. Docker, контейнер для микросервисов также построен с использованием Golang.

Мы видели, как наши микросервисы, созданные с использованием Go, легко масштабируются до миллионов запросов по сравнению с PHP.

Горутины

Параллелизм - это возможность запускать несколько программ или нескольких частей программы асинхронно или параллельно, что повышает пропускную способность. Обычно потоки используются для достижения параллелизма на таких языках, как Java и другие. В Go используются методы, называемые горутинами. Горутины - это методы или функции, которые могут работать с другими функциями параллельно. Конечно, горутина занимает около 4 килобайт места в ОЗУ. Напротив, поток занимает около 1024 килобайт в ОЗУ. Следовательно, горутины занимают в 250 раз меньше места, чем потоки на других языках, что позволяет одновременно запускать все большее количество горутин.

Ниже приводится объяснение того, как обработка потоков отличается в Go по сравнению с Java:

В Java объекты разделяются между единицами работы, и для доступа к этой части данных единица работы должна сначала получить блокировку на ней. В Go каналы разделяются между единицами работы, и канал в основном представляет собой канал FIFO - единица работы может читать или записывать в канал.

Go придерживается своего девиза: «Не общайтесь, разделяя память, вместо этого делитесь памятью, общаясь».

Кроме того, блокчейн имеет большое значение для параллельных действий, где эта конкретная функция очень удобна. Кроме того, возможность параллельного запуска множества функций позволяет запускать программы, написанные на Go, в распределенных системах, что является основной потребностью технологии блокчейн. Яркими примерами, в которых Go был принят для обеспечения параллелизма, являются Docker, MongoDB, Netflix, Uber и т. Д. - компании, для которых параллелизм и возможность работать в распределенном режиме имеют первостепенное значение.

Все в мире блокчейнов его используют

Большинство стабильных DApps и инструментов на основе блокчейна в наши дни построено с использованием Golang. Найти необходимые библиотеки и пакеты очень просто.

Go - это компилируемый язык, поэтому он работает напрямую с ОС. Это может позволить нам создавать такие технологии, как EVM (виртуальная машина Ethereum), намного лучше. В отличие от этого, мы используем Java, которая запускается в собственной JVM, которая затем запускается поверх ОС. Таким образом, создание виртуальной машины для смарт-контрактов, которая сама работает на другой виртуальной машине, вводит совершенно ненужный уровень абстракции. Это также резко снижает производительность.

Go дает ощущение языка сценариев и имеет низкое время запуска, поэтому отлично подходит для небольших программ. Количество запросов в секунду (QPS) в Go намного лучше, чем в Java. Следовательно, Go можно использовать для создания систем, способных обрабатывать большие объемы запросов.

Несколько красивых примеров кода для Go

  1. Вот как можно просто вернуть указатель на локальную переменную из функции:

2. Вы можете писать функции внутри функций, и вы можете возвращать функции точно так же, как в функциональном языке, а локальные переменные вокруг него служат в качестве переменных в замыкании:

3. Ориентация объекта

Go - очень простой, лаконичный и легкий в освоении язык, отличительной чертой которого является «прагматизм», а не синтаксическая красота. Он был разработан для решения задач разработки программного обеспечения в командной среде и в этом отношении отлично справляется со своей задачей.