Сообщество - Типичный программист
Добавить пост

Типичный программист

1 003 поста 6 263 подписчика

Популярные теги в сообществе:

Ловушка Джокера...

Ловушка Джокера...

Краткая история развития языков программирования

Краткая история развития языков программирования IT, IT юмор, Программирование, Картинка с текстом, Программист, Цитаты, Языки программирования, C++, Rust, Javascript, Java
Краткая история развития языков программирования IT, IT юмор, Программирование, Картинка с текстом, Программист, Цитаты, Языки программирования, C++, Rust, Javascript, Java
Показать полностью 2

Даже ИИ в шоке от такого запроса

Даже ИИ в шоке от такого запроса IT, IT юмор, Искусственный интеллект, Я робот, ChatGPT
Даже ИИ в шоке от такого запроса IT, IT юмор, Искусственный интеллект, Я робот, ChatGPT

А чего вы добились в 25 лет?

А чего вы добились в 25 лет?

Фронтенд - Тайланд

Приехал на пару месяцев в Тай. И проглядывая местные вакансии понял, что хочется остаться)
Пишу на js около 7 лет. Front любой, чаще использовал вью2, вью3, но писал и на ангуляре и на реакте. Бэк поверхностно, - джанго, фастапи, - питон, и лара.
Остальное вспоминать и перечислять долго)
Всегда работал на опыте и самообучении, курсы по мелочи в самом начале, вышки нет:(
Может есть кто отсюда, кому нужен фронт?
Есть ли шанс иностранцу без вышки трудоустроиться с рабочей визой?
Стоит ли обратиться за «быстрым» дипломом?
Спасибо

Под капотом каналов в golang

Внутренняя реализация каналов в Go основана на механизме синхронизации и передачи данных между горутинами.

Под капотом каналов в golang Программирование, IT, Программист, Golang, Разработчики, Разработка

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

Внутренняя реализация каналов в Go включает в себя следующие компоненты:

  • Структура channel: Когда вы создаете канал в Go, создается структура channel, которая содержит информацию о типе данных, буфере (если он есть) и других метаданных канала.

  • Буфер: Каналы могут иметь опциональный буфер, который позволяет хранить определенное количество элементов перед тем, как горутина будет заблокирована при попытке отправки данных в полностью заполненный канал или получении данных из пустого канала. Буфер реализован с помощью внутренней очереди FIFO (First-In-First-Out).

  • Мьютексы: Для обеспечения безопасности доступа к данным в канале используются мьютексы (mutexes). Мьютексы блокируют доступ к данным, пока другая горутина не освободит их. Это позволяет предотвратить состояние гонки (race condition) при одновременной записи и чтении данных из канала.

  • Указатели на горутины: Каналы хранят указатели на горутины, которые ожидают отправки или получения данных. Когда горутина отправляет данные в канал или получает данные из канала, она блокируется, пока другая горутина не освободит канал.

  • Системные вызовы: Внутренняя реализация каналов включает системные вызовы операционной системы для блокировки и разблокировки горутин при отправке и получении данных из канала. Это обеспечивает эффективное использование ресурсов и предотвращает блокировку всей программы.

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

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью

Польза и вред макросов в С++

Макросы в C++ представляют собой инструкции, которые препроцессор обрабатывает перед компиляцией кода. Они позволяют осуществлять текстовую замену в исходном коде, что может быть полезно для автоматизации и упрощения некоторых задач.

Польза и вред макросов в С++ Программирование, Программист, IT, Разработка, Макрос, C++

Макросы определяются с помощью директивы #define, которая указывает компилятору на то, что следующая строка содержит определение макроса. Например, следующий код определяет макрос для вычисления квадрата числа:

#define SQUARE(x) ((x) * (x))

После определения макроса, его можно использовать в коде, как обычную функцию. Например:

int result = SQUARE(5); // result будет равен 25

В данном примере, при компиляции кода, препроцессор заменит все вхождения макроса SQUARE на соответствующее выражение ((x) * (x)).

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

#define IS_EVEN(x) ((x) % 2 == 0)

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

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью

А логические ошибки разработчик должен видеть сам!

А логические ошибки разработчик должен видеть сам!
Отличная работа, все прочитано!