Как стать автором
Обновить
9
0
Антонина @tonyaginger

Пользователь

Отправить сообщение

Сытые философы или конкурентное программирование на .NET

Время на прочтение 14 мин
Количество просмотров 14K


Давайте посмотрим как устроено конкурентное и параллельное программирование в .Net, на примере проблемы обедающих философов. План такой, от синхронизации потоков/процессов, до модели акторов (в следующих частях). Статья может быть полезна для первого знакомства или для того, чтобы освежить свои знания.


Зачем вообще уметь это? Транзисторы достигают своего минимального размера, закон Мура упирается в ограничение скорости света и поэтому рост наблюдается в количестве, транзисторов можно делать больше. При этом количество данных растет, а пользователи ожидают немедленной реакции систем. В такой ситуации "обычное" программирование, когда у нас один выполняющий поток, уже не эффективно. Нужно как-то решать проблему одновременного или конкурентного выполнения. Причем, проблема эта существует на разных уровнях: на уровне потоков, на уровне процессов, на уровне машин в сети (распределенные системы). В .NET есть качественные, проверенные временем, технологии для быстрого и эффективного решения таких задач.

Пообедаем...
Всего голосов 20: ↑20 и ↓0 +20
Комментарии 6

Использование async и await в C# — лучшие практики

Время на прочтение 8 мин
Количество просмотров 224K

Ключевые слова async и await, введённые в C# 5.0, значительно упрощают асинхронное программирование. Они также скрывают за собой некоторые сложности, которые, если вы потеряете бдительность, могут добавить проблем в ваш код. Описанные ниже практики пригодятся вам, если вы создаёте асинхронный код для .NET приложений.
Читать дальше →
Всего голосов 79: ↑69 и ↓10 +59
Комментарии 24
Здесь не будет дворецкого, которого можно во всём обвинить. Но будет загадка, тайна, исчезновение лучшего друга в декорациях высоких технологий. Это настоящий осенне-депрессивный квест. Интересно проверить свою дедукцию?
Добро пожаловать под кат
Всего голосов 69: ↑48 и ↓21 +27
Комментарии 16

Введение в zk-SNARKs с примерами (перевод)

Время на прочтение 7 мин
Количество просмотров 20K

Привет, Хабр! Представляю вашем вниманию перевод статьи Introduction to zk-SNARKs with examples автора Christian Lundkvist.


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

Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 1

Микроядро seL4. Формальная верификация программ в реальном мире

Время на прочтение 23 мин
Количество просмотров 12K
Научная статья опубликована в журнале Communications of the ACM, октябрь 2018, том 61, номер 10, стр. 68−77, doi: 10.1145/3230627

В феврале 2017 года со взлётной площадки «Боинга» в Аризоне поднялся вертолёт с обычным заданием: облёт ближайших холмов. Он летел полностью автономно. Согласно требованиям по технике безопасности Федерального управления авиации США, пилот не прикасался к органам управления. Это был не первый автономный полёт AH-6, которого в компании называют Беспилотной Птичкой (Unmanned Little Bird, ULB). Он так летает уже много лет. Однако на этот раз посреди полёта вертолёт подвергся кибератаке. Бортовой компьютер атаковало вредоносное программное обеспечение видеокамеры, а также вирус, доставленный через заражённую флэшку, которую вставили во время техобслуживания. Атака поставила под угрозу некоторые подсистемы, но не смогла повлиять на безопасную эксплуатацию воздушного судна.
Читать дальше →
Всего голосов 43: ↑43 и ↓0 +43
Комментарии 31

Мягкое введение в Coq: структуры данных и функции высших порядков

Время на прочтение 3 мин
Количество просмотров 5.4K

Пары и списки


В предыдущих частях мы научились задавать новые типы данных, определять функции над ними и доказывать их корректность с помощью распространенных тактик. Настало время определить некоторые структуры данных и функции высших порядков (далее ФВП) над ними.
Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 3

Мягкое введение в Coq: используем тактики

Время на прочтение 2 мин
Количество просмотров 6.4K

Доказательство упрощением


Итак, в предыдущих частях мы определили новые типы данных и функции над ними. Настало время обратиться к вопросу о том, как сформулировать и доказать их свойства и поведение. В некотором смысле мы уже начали делать это – в первой части мы написали своего рода юнит-тест, используя ключевое слово Example, который содержал некоторые утверждения о поведении некоторой функции, применяемой к определенному набору аргументов. Используя определение функции, Coq упрощает выражение и проверяет на равенство его левую и правую часть.
Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 5

Мягкое введение в Coq: начало

Время на прочтение 3 мин
Количество просмотров 21K

Предисловие


Ни для кого не секрет, что ошибки в программах могут привести печальным последствиям. История знает множество случаев, когда переполнение счетчика или необработанное исключение приводило к большим материальным затратам и человеческим жертвам. Так, например, 4 июня 1996 года европейская ракета-носитель «Ariane 5» буквально развалилась на части на 39-й секунде полета. Анализ инцидента показал, что авария произошла из-за ошибки в программном обеспечении. Ущерб составил около $7 млрд. В феврале 1991 года ракета «Patriot» промахнулась мимо цели из-за ошибки округления, успела пролететь лишние 500 метров. Ущерб: 28 убитых и более сотни раненых. Подобного рода ошибки встречаются и в аппаратном обеспечении. Недавний баг в процессорах Pentium, связанный с неправильным делением чисел с плавающей точкой, вынудил Intel пойти на замену бракованных чипов. Эта ошибка стоила компании $475 млн.
Читать дальше →
Всего голосов 26: ↑23 и ↓3 +20
Комментарии 17

Мягкое введение в Coq: индуктивные определения

Время на прочтение 2 мин
Количество просмотров 6.6K
В предыдущей части мы научились задавать новые типы и строить функции над их значениями. В этой небольшой заметке я более подробно остановлюсь на индуктивных определениях, чтобы внести ясность и наметить дальнейшие темы для изучения.

Ранее я сказал, что в Coq нет батареек. На самом деле я слукавил — в Coq есть стандартная библиотека, которая содержит множество полезных определений. Помимо стандартной библиотеки существуют и более специфические вещи, на которых мы пока не будем останавливаться.
Читать дальше →
Всего голосов 14: ↑12 и ↓2 +10
Комментарии 2

Информация

В рейтинге
Не участвует
Зарегистрирована
Активность