Основная концепция программирования, которую должен знать каждый программист

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

Это из-за магии асинхронного программирования.

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

Давайте легко поймем, что такое асинхронное программирование? Какова цель его использования? Когда мы должны его использовать? И каковы преимущества его использования?

Рассмотрим этот пример…

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

Учтите, что сейчас в кофейне только один человек. Итак, человек принимает ваш заказ, входит в подготовительную, делает две чашки кофе и сервирует ваши пирожные, а затем приносит их вам. Он ждет, пока вы закончите свой кофе, а затем получает оплату. Все это он делает последовательно.

Но обычно это не так, это кажется очень неэффективным, верно? Всегда есть кто-то, кто подготовит заказ и принесет его к вашему столу. Сразу после размещения заказа кто-то на кухне готовит заказ и приносит его к столу, а затем занимается другими заказами. Этот человек сначала приготовит вам кофе, а затем принесет торт, как только приготовление кофе будет завершено.

Предположим, что в кофейне работает несколько человек. Теперь один человек принимает ваш заказ, один готовит кофе, а другой приносит торт. Ни один человек не зависит от другого, чтобы завершить свою работу, чтобы начать свою. Все это происходит одновременно.
И как только вы закончите, вы произведете оплату и уйдете.

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

Первый случай — это не что иное, как классическое синхронное программирование. Все происходит в потоке, одно за другим, и только один поток (человек) имеет полный контроль.

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

Это начинается здесь.

Бум!!

Мы поняли асинхронное программирование.

Но не будем торопиться, нам еще многому предстоит научиться.

В третьем случае, почему бы вам не попытаться понять, что происходит?

Вы получили это? Еще нет? Не волнуйтесь. Позволь мне объяснить. Здесь есть несколько тем. Эти воркеры выполняют задачи в фоновом режиме, и тем не менее у нас есть только один основной поток. И это просто Sync VS однопоточный асинхронный VS многопоточный асинхронный.

Если вы дошли до этого момента, вы можете считать, что достигли чего-то большого в своем путешествии по программированию. Хорошее понимание этого решит большинство недоразумений, например, когда использовать асинхронность, когда использовать несколько потоков⛓ и когда просто плыть по течению, последовательности, легкому, но медленному коду синхронизации 🏖.

Асинхронное программирование

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

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

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

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

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

Использованная литература:

Присоединяйтесь к FAUN: Сайт💻|Подкаст🎙️|Twitter🐦|Facebook👥 |Instagram📷|Группа Facebook🗣️|Группа Linkedin💬| Slack 📱|Cloud Native Новости📰|Дополнительно.

Если этот пост был полезен, пожалуйста, несколько раз нажмите кнопку аплодисментов 👏 ниже, чтобы выразить свою поддержку автору 👇