Почему среди программистов на Haskell бытует легенда, что если программа компилируется, то она верна? Почему мало смысла в споре между приверженцами статической и динамической типизации? Как превратить тип функции в теорему, а программу — в еë доказательство? Об этом и многом другом мы поговорим в мини-серии статей, посвящённой теории типов. Зачем? Когда речь заходит о типах и типизации в программировании, то в ход идут самые разные аналогии. Кто во что горазд! Типы сравнивают с наклейками на...
Вариантность типов Интересная тема из теории программирования. В языках программирования существуют типы данных, и они могут образовывать сложную иерархию. Простой пример: тип Natural является подтипом Integer и Positive. И все трое одновременно являются подтипами Real. А тип Prime является подтипом всех вышеперечисленных. Есть у нас функция, которая в качестве параметра принимает на вход определённый тип данных. А можем ли мы передать в качестве параметра подтип или надтип исходного типа данных? За это как раз отвечает вариантность типов. Контравариантность, ковариантность, инвариантность — в статье все эти замечательные термины рассматриваются на конкретных понятных примерах. Также прочтение статьи позволит более глубокого понять принцип подстановки Барбары Лисков (LSP), который фигурирует в известной аббревиатуре soLid. В конце рассматривается реализация вариантности в различных языках программирования –TypeScript, C#, Java, C++. А на тему вариантности в python у Диджи было замечательное видео. Если понравился пост, будем рады вашему лайку. В тг-канале DevFM мы разбираем разные нюансы из жизни разработчика на Python и не только. Вам могут понравиться посты Как kafka хранит данные и Зелёные потоки в Python. #procode