Вступление: Программирование умерло. Да здравствуют правила!

Помните времена, когда код писали люди, а не роботы? Когда творчество ценилось выше слепого следования стандартам? Современные языки — это не эволюция, а индульгенция для лентяев, которые боятся мыслить. Rust, Go, TypeScript — фабрики по производству посредственности, где каждый ваш шаг контролирует «всезнающий» компилятор. Пора назвать вещи своими именами: мы променяли гениальность на мнимую безопасность, а свободу — на кандалы статических проверок. Это катастрофа. Увы, не все это понимают.

Хотите узнать, почему? Читайте дальше!

1. Документация: От шедевров к инструкциям от IKEA

Помните Perl? Помните секцию SYNOPSIS в начале каждого документа? Чаще всего кроме этого раздела читать особо ничего и не требовалось. Мало того, можно было сформулировать правило: если интерфейс Вашей библиотеки не показывает лаконичного синопсиса, то скорее всего Вы сделали плохую библиотеку!

Perl с его POD — это «Война и мир» документации. Каждый модуль на CPAN начинался лаконичным примером, который в две строки объяснял, как творить магию. Не нужно было рыться в типах или трейтах: открыл доку — и сразу видишь живой код, а не бюрократическую отписку.

Современные языки? Добро пожаловать в ад автосгенерированной документации! Rust-крейты похожи на налоговые кодексы:

/// Конвертирует строку в число (написано роботом для роботов).  
/// # Параметры  
/// - `s`: &str (потому что String — это слишком человечно)  
/// # Возвращает  
/// - Result<i32, ParseError> (ведь вы обязаны обработать даже апокалипсис)  
pub fn parse(s: &str) -> Result<i32, ParseError> { ... }  

Где примеры? Зарыты где-то между #[derive(Debug)] и impl FromStr. Чтобы понять, как использовать функцию, вам понадобится докторская степень по расшифровке типов. Perl-сообщество уважало разработчика, современное — презирает, подсовывая вместо примеров стену текста.

Вывод: Документация умерла. Её место заняли автогенерированные мануалы для мазохистов.

2. Статическая типизация: Религия для параноиков

«А что, если передашь строку вместо числа?» — пугают адепты статики. Давайте посмотрим правде в глаза:

  • Львиная доля багов — логические. Ваш код может идеально пройти проверку типов — и всё равно уронить спутник на Марс, потому что вы перепутали > и >=.

  • Динамические языки — это свобода. В Perl "25" + 10 даст 35, а не ошибку — потому что язык создан для решения задач, а не для удовлетворения паранойи компилятора.

  • Статика — это бюрократия. Посмотрите на этот «идеальный» код на Rust:

    let total: f64 = price.parse::<f64>().unwrap() * quantity.parse::<f64>().unwrap();  

    Теперь сравните с Perl:

    my $total = $price * $quantity;  

    Perl понял, что вы имели в виду, а Rust требует клятву верности типам — даже если вы умнее компилятора.

Ирония: Статическая типизация не спасает от дурака. Она спасает дурака от необходимости думать.

3. Алгебраические типы: Величайший обман XXI века

АТД преподносят как прорыв. На деле — это костыль для статиков, которые боятся признать: динамическая типизация была права.

Пример: Парсинг YAML в Rust требует enum’а на 15 вариантов. Каждый match превращается в ад ветвлений:

match yaml {
   Yaml::Real(_) => { /* ... */ },
   Yaml::Integer(_) => { /* ... */ },
   Yaml::String(_) => { /* ... */ },
   // ... ещё 12 вариантов
   _ => panic!("Вы не обработали этот случай, потому что Rust вас ненавидит"),
}

Perl-подход:

my $value = parse_yaml($input);
# Обрабатываю то, что нужно. Остальное? Не моя проблема.

Итог: АТД — это статики пытаются имитировать свободу динамических языков. Получается как всегда: сложно, многословно, и всё равно небезопасно.

4. Иммутабельность: Бунт против законов физики

Второй закон термодинамики гласит: энтропия растёт. Это следствие (или доказательство) того, что мир мутабелен. Но функциональщики решили, что они умнее Вселенной!

Последствия:

  • Иммутабельные структуры — это обман. Даже Haskell, истошно кричащий о чистоте, прячет мутации в IO-монадах.

  • Гонки данных? Не смешите мои тапочки! Проблемы с гонкой решаются архитектурой, а не фанатизмом. Go с его горутинами и каналами — живое доказательство.

  • Перформанс? Правильные пацаны используют мутабельность, а не рекурсию! Попробуйте обновить 1 млн объектов в «иммутабельном» цикле — и ваше приложение будет удалено значительно раньше, чем успеет доработать!

Сарказм: Если вам так нравится иммутабельность — отключите клавиатуру и пишите код на камне. Это на 100% иммутабельно!

5. Философия: Как убить креативность за 10 лет

Perl дарил свободу:

  • TMTOWTDI — «Есть больше одного способа сделать это».

  • KISS — «Не усложняй».

Современные языки заменили это на:

  • TIOOWTDI (There Is Only One Way To Do It) — как в Go, где даже циклы только for.

  • KICC (Keep It Complicated, Comrade) — как в Rust, где простой скрипт требует 100 строк из-за проверок типов.

Итог: Современные языки — это школы для послушных детей. Хотите творить? Вас накажут компилятором.

Самое время вернуться к истокам!

Пока статики спорят о null-safety, а функциональщики фапают на монады, неиспорченные программисты делают работу. Они не боятся мутабельности, не тратят часы на аннотации типов и вместо многострочных эссе в документации пишут короткие текстовые примеры с подкраской синтаксиса.

Они пишут код, который работает — и работает хорошо!

Манифест (Призыв к бунту)

  1. Долой тиранию типов! Используйте Python, Perl, Raku — всё, что не душит вашу креативность.

  2. Документируйте как художники. Пусть примеры будут яркими, а не спрятаны в автосгенерированном шуме.

  3. Мутировать — это естественно. Перестаньте бояться изменений — и ваш код оживёт.

Программирование — это искусство. А искусство не терпит правил. Верните себе право творить — или смиритесь с участью винтика в фабрике кода.

Примечание

Иногда интересно подискутировать с ИИ, читая аргументы, что он приводит, поскольку в них содержится квинтессенция усреднённого текущего состояния. При этом ИИ, в отличие от случайных собеседников, читает твои аргументы, пытается принять их во внимание.

А в конце дискуссии можно попросить его обобщить суть до статьи.

Прошу прощения, но эта статья автосгенерирована ИИ, я лишь поправил некоторые особенно резкие выражения.

Комментарии (53)