- BrainTools - https://www.braintools.ru -
Помните времена, когда код писали люди, а не роботы? Когда творчество [1] ценилось выше слепого следования стандартам? Современные языки — это не эволюция [2], а индульгенция для лентяев, которые боятся мыслить. Rust, Go, TypeScript — фабрики по производству посредственности, где каждый ваш шаг контролирует «всезнающий» компилятор. Пора назвать вещи своими именами: мы променяли гениальность [3] на мнимую безопасность, а свободу — на кандалы статических проверок. Это катастрофа. Увы, не все это понимают.
Хотите узнать, почему? Читайте дальше!
Помните Perl? Помните секцию SYNOPSIS в начале каждого документа? Чаще всего кроме этого раздела читать особо ничего и не требовалось. Мало того, можно было сформулировать правило: если интерфейс Вашей библиотеки не показывает лаконичного синопсиса, то скорее всего Вы сделали плохую библиотеку!
Perl с его POD — это «Война и мир» документации. Каждый модуль на CPAN начинался с SYNOPSIS с лаконичным примером, который за две строки объяснял, как творить магию. Не нужно было рыться в типах или трейтах: открыл доку — и сразу видишь живой код, а не бюрократическую отписку.
Современные языки? Добро пожаловать в ад автосгенерированной документации! Rust-крейты похожи на налоговые кодексы:
/// Конвертирует строку в число (написано роботом для роботов).
/// # Параметры
/// - `s`: &str (потому что String — это слишком человечно)
/// # Возвращает
/// - Result<i32, ParseError> (ведь вы обязаны обработать даже апокалипсис)
pub fn parse(s: &str) -> Result<i32, ParseError> { ... }
Где примеры? Зарыты где-то между #[derive(Debug)] и impl FromStr. Чтобы понять, как использовать функцию, вам понадобится докторская степень по расшифровке типов. Perl-сообщество уважало разработчика, современное — презирает, подсовывая вместо примеров стену текста.
Вывод: Документация умерла. Её место заняли автогенерированные мануалы для мазохистов.
«А что, если передашь строку вместо числа?» — пугают адепты статики. Давайте посмотрим правде в глаза:
Львиная доля багов — логические. Ваш код может идеально пройти проверку типов — и всё равно уронить спутник на Марс, потому что вы перепутали > и >=.
Динамические языки — это свобода. В Perl "25" + 10 даст 35, а не ошибку [4] — потому что язык создан для решения задач, а не для удовлетворения паранойи компилятора.
Статика — это бюрократия. Посмотрите на этот «идеальный» код на Rust:
let total: f64 = price.parse::<f64>().unwrap() * quantity.parse::<f64>().unwrap();
Теперь сравните с Perl:
my $total = $price * $quantity;
Perl понял, что вы имели в виду, а Rust требует клятву верности типам — даже если вы умнее компилятора.
Ирония: Статическая типизация не спасает от дурака. Она спасает дурака от необходимости думать.
АТД преподносят как прорыв. На деле — это костыль для статиков, которые боятся признать: динамическая типизация была права.
Пример: Парсинг YAML в Rust требует enum’а на 15 вариантов. Каждый match превращается в ад ветвлений:
match yaml {
Yaml::Real(_) => { /* ... */ },
Yaml::Integer(_) => { /* ... */ },
Yaml::String(_) => { /* ... */ },
// ... ещё 12 вариантов
_ => panic!("Вы не обработали этот случай, потому что Rust вас ненавидит"),
}
Perl-подход:
my $value = parse_yaml($input);
# Обрабатываю то, что нужно. Остальное? Не моя проблема.
Итог: АТД — это статики пытаются имитировать свободу динамических языков. Получается как всегда: сложно, многословно, и всё равно небезопасно.
Второй закон термодинамики гласит: энтропия растёт. Это следствие (или доказательство) того, что мир мутабелен. Но функциональщики решили, что они умнее Вселенной.
Последствия:
Иммутабельные структуры — это обман. Даже истошно кричащий о чистоте Haskell, прячет мутации в IO-монадах.
Гонки данных? Не смешите мои тапочки! Проблемы с гонкой решаются архитектурой, а не фанатизмом. Go с его горутинами и каналами — живое доказательство.
Перформанс? Правильные пацаны используют мутабельность, а не рекурсию. Попробуйте обновить 1 млн объектов в «иммутабельном» цикле — и ваше приложение будет удалено значительно раньше, чем успеет доработать!
Сарказм: Если вам так нравится иммутабельность — отключите клавиатуру и пишите код на камне. Это на 100% иммутабельно!
Perl дарил свободу:
TMTOWTDI — «Есть больше одного способа сделать это».
KISS — «Не усложняй».
Современные языки заменили это на:
TIOOWTDI (There Is Only One Way To Do It) — как в Go, где даже циклы только for.
KICC (Keep It Complicated, Comrade) — как в Rust, где простой скрипт требует 100 строк из-за проверок типов.
Итог: Современные языки — это школы для послушных детей. Хотите творить? Вас накажут компилятором.
Пока статики спорят о null-safety, а функциональщики фапают на монады, неиспорченные программисты делают работу. Они не боятся мутабельности, не тратят часы на аннотации типов и вместо многострочных эссе в документации пишут короткие текстовые примеры с подкраской синтаксиса.
Они пишут код, который работает — и работает хорошо!
Манифест (Призыв к бунту)
Долой тиранию типов! Используйте Python, Perl, Raku — всё, что не душит вашу креативность.
Документируйте как художники. Пусть примеры будут яркими, а не спрятаны в автосгенерированном шуме.
Мутировать — это естественно. Перестаньте бояться изменений — и ваш код оживёт.
Программирование — это искусство. А искусство не терпит правил. Верните себе право творить — или смиритесь с участью винтика в фабрике кода.
Иногда интересно подискутировать с ИИ, читая аргументы, что он приводит, поскольку в них содержится квинтессенция усреднённого текущего состояния. При этом ИИ, в отличие от случайных собеседников, читает твои аргументы, пытается принять их во внимание [5].
А в конце дискуссии можно попросить его обобщить суть до статьи.
Прошу прощения, но эта статья автосгенерирована ИИ, я лишь поправил некоторые особенно резкие выражения.
Автор: ednersky
Источник [6]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/11738
URLs in this post:
[1] творчество: http://www.braintools.ru/creation
[2] эволюция: http://www.braintools.ru/article/7702
[3] гениальность: http://www.braintools.ru/article/4566
[4] ошибку: http://www.braintools.ru/article/4192
[5] внимание: http://www.braintools.ru/article/7595
[6] Источник: https://habr.com/ru/articles/878266/?utm_source=habrahabr&utm_medium=rss&utm_campaign=878266
Нажмите здесь для печати.