Из-за непрекращающегося бардака в мире решил отвлечься от стресса и в итоге три недели учился кодить на Julia — портировал с Python один из своих экспериментальных проектов.
Я уже писал про впечатления от документации Julia — «теорию», а сейчас, так сказать, будет «практика».
Раз мы обсудили организацию информации, давайте поговорим о подходах к описанию свойств сущностей: композиции и классификации. Посмотрим для чего они нужны, когда какой использовать и чем может обернуться неправильный выбор.
Вопрос не так прост как кажется.
Исторически человечество сильно клонится к классификации. Начиная с ранних лет мы учим детей что классификация — это единственный основной способ организации информации — на неё опирается большинство учебников.
В итоге почти все взрослые люди имеют «урезанную» модель мира и не могут, например, в изобретательство.
К месту можно упомянуть и частный случай из отрасли — травмированность целого поколения разработчиков реализацией ООП в некоторых языках программирования, не будем показывать на них пальцем.
Заранее прошу прощения у математиков и других формалистов за отсутствие должной строгости в изложении. Свою задачу я вижу не в доказательстве математических свойств композиции и классификации, а в популяризации применения композиции.
Расскажу об одном заблуждении, которое знатно притормозило меня в детстве-юношестве, и о том, что с ним делать. Не буду утверждать, что оно свойственно всем людям, но точно большинству. Многие с ним до смерти живут.
Лично я окончательно осознал косяк только после университета. Предполагаю, что время осознания зависит как от самого человека, так и от его окружения. Я вот сильно доверял социальным институтам, а родные не лезли в моё обучение сверх необходимого — и так всё было хорошо. Поэтому мне пришлось собрать большой перечень противоречий моей модели мира с реальностью, прежде чем в голове щёлкнул нужный переключатель.
А вот некоторым моим товарищам по олимпиадам и университету, судя по их поведению и жизненному пути, кто-то мозги вправил раньше, а может они сами.
Только предупрежу, что в этом посте я ступаю на довольно зыбкую почву, поскольку не являюсь профессионалом в области, о которой рассказываю. Воспринимайте мои рассуждения критически, как пересказ собственного опыта, рефлексию.
Расскажу как правильно смотреть я смотрю на культурные явления и взаимодействие с ними. В явления запишем всё: обычаи, законы, песни, холивары, языки программирования, методологии разработки — любой информационный артефакт нашей цивилизации. Но примеры в основном будут из IT.
Также этот пост можно считать заготовкой аргументов на случай, если придётся отбиваться от навязывания консультаций по какому-нибудь scrum.
Мемплекс это и есть сложносоставное культурное явление. Это слово буду использовать и дальше, так как оно красивое и короткое.
Начну издалека — с пары оговорок и биологии, как наиболее изученной области проявления эволюции. Потом по аналогии рассмотрим элементарные информационные конструкции — мемы. Потом мемплексы.
Раз в несколько лет я нахожу время, чтобы покопаться в наработках сообщества по «продвинутым» проверкам типов. Благо у меня под рукой есть взрослый, большой и нетривиальный проект, на котором можно безбоязненно ставить эксперименты.
Не могу сказать что я разделяю оптимизм по поводу продвинутой типизации в Python. Наоборот, считаю, что это как попытка пришить змее ноги — забавно, но вряд ли удобно. Но раз куча людей тратит на это время, надо быть в курсе.
В этот раз я:
Рассказывать буду тезисно, без глубоких обоснований, так как делать нормального качества обоснования для таких холиварных вопросов слишком долго, а я уже дней 5 на копание в этом потратил.
Большая часть поста не про mypy, а про философию проверки типов и будущее Python. Поэтому должно быть интересно, даже если сам mypy вас не интересует.