Типи даних наносять удар у відповідь

Це друга частина моїх роздумів на тему «Python, яким би я хотів його бачити», і в ній ми більш детально розглянемо систему типів. Для цього нам знову доведеться заглибитися в особливості реалізації мови Python і його інтерпретатора CPython.

Якщо ви програміст на мові Python, для вас типи даних завжди залишалися за кадром. Вони десь там існують самі по собі і як там взаємодіють один з одним, але найчастіше ви замислюєтеся про їх існування лише коли виникає помилка. І тоді виняток говорить вам, що якийсь із типів даних веде себе не так, як ви від нього чекали.

Python завжди пишався своєю реалізацією системи типів. Я пам'ятаю, як багато років тому читав документацію, в якій був цілий розділ про переваги качиної типізації. Давайте начистоту: так, в практичних цілях качина типізація — хороше рішення. Якщо ви нічим не обмежені і немає потреби боротися з типами даних по причині їх відсутності, ви можете створювати дуже красиві API. Особливо легко на Python виходить вирішувати повсякденні завдання.

Практично всі API, які я реалізовував на Python, не працювали в інших мовах програмування. Навіть така проста річ, як звичайний клікабельний інтерфейс просто не працює в інших мовах, і основна причина в тому, що вам доводиться безупинно боротися з типами даних.

Не так давно піднімалося питання додавання статичної типізації в Python, і я щиро сподіваюся, що крига нарешті скресла. Постараюся пояснити, чому я проти явної типізації, і чому сподіваюся, що Python ніколи не піде цим шляхом.


Читати далі →