Ещё в 90-е, когда я писал свои первые книги по программированию, довольно быстро обнаружил в существовавших учебниках систематическую ошибку подразумеваемых коротких расстояний в понимании (а у меня всяческих книг по программированию и computer science до сих пор дома сотни). Интернет позволил оперативно получать обратную связь, и я быстро выяснил, что у 90% начинающих большая проблема в понимании понятия "переменная".
Я сделал всего один шаг назад, уделив особый акцент этой теме, и мой самоучитель программирования стал бестселлером того времени. В моём сегодняшнем курсе для начинающих с нуля по многим темам я вот так отступаю на шаг назад, избегая любых умолчаний, и набралась интересная статистика по типовым ошибкам -- уже чуть более абстрактным. Сегодня я хорошо вижу, как сделать второй шаг назад, чтобы приблизить процесс обучения программированию с нуля к идеальному, но -- мои начальные курсы в ноябре 22-го я закрыл навсегда, и сосредотачиваюсь исключительно не переподготовке профессиональных разработчиков с хорошим опытом.
Сегодня множество курсов тоже разбирают понятие переменной достаточно подробно, но по-прежнему остаются только на одном понятийном шаге. Они рассказывают например такую ересь, что дескать Python отлично подходит для начального обучения программированию, предлагая на своих курсах унылую метафору "переменная -- это просто коробка для хранения".
Почему это не так?
Состояние -- это крайне вредная концепция для начинающих, особенно если язык допускает его свободное использование. Конечно, State нужно уметь применять, но очень осторожно, редко и максимально безопасно. Продвинутое программирование стремится к иммутабельности и stateless (и на уровне кода, и на уровне архитектуры, и на уровне тестов), а раннее или излишнее использование состояния быстро приводит к беспорядку и запутыванию (прежде всего в голове разработчика). Недаром в Оксфорде с первого же курса принуждают к хаскелю, и в итоге человек становится способен общаться на уровне цивилизованного undergraduate.
Post #692
878
- ❤ 15
- 🫡 5
- 👍 4
- ✍ 2
- 🔥 1