20 февраля 1991 года Гвидо ван Россум опубликовал в группе alt.sources первый выпуск языка программирования Python, над которым работал с декабря 1989 года в рамках проекта по созданию скриптового языка для решения задач системного администрирования в операционной системе Amoeba, который был бы более высокого уровня, чем Си, но, в отличие от Bourne shell, предоставлял бы более удобный доступ к системным вызовам ОС.
Имя для проекта было выбрано в честь комедийной группы Монти Пайтон (Monty Python). В первой версии была реализована поддержка классов с наследованием, обработка исключений, система модулей и базовые типы list, dict и str. Реализация модулей и исключений была заимствована из языка Modula-3, а стиль кодирования на основе отступов из языка ABC, в разработке которого Гвидо ранее принимал участие.
В процессе создания Python Гвидо руководствовался следующими принципами:
Имя для проекта было выбрано в честь комедийной группы Монти Пайтон (Monty Python). В первой версии была реализована поддержка классов с наследованием, обработка исключений, система модулей и базовые типы list, dict и str. Реализация модулей и исключений была заимствована из языка Modula-3, а стиль кодирования на основе отступов из языка ABC, в разработке которого Гвидо ранее принимал участие.
В процессе создания Python Гвидо руководствовался следующими принципами:
- Принципы, которые позволили сэкономить время при разработке:
- Заимствование полезных идей из других проектов.
- Стремление к простоте, но без чрезмерного упрощения (принцип Эйншейна "Всё должно быть изложено так просто, как только возможно, но не проще").
- Следование философии UNUX, в соответствии с которой программы реализуют какую-то одну функциональность, но делают это хорошо.
- Не слишком заботиться о производительности, оптимизации можно добавлять по мере необходимости, когда они понадобятся.
- Не пытаться бороться с сложившимися вещами, а плыть по течению.
- Избегать перфекционизма, обычно хватает и уровня "достаточно хорошо".
- Иногда можно срезать углы, особенно, если что-то можно сделать позднее.
- Остальные принципы:
- Реализация не должна быть привязана к конкретной платформе. Некоторые возможности могут быть доступны не всегда, но базовая функциональность должна работать везде.
- Не нагружать пользователей деталями, обработку которых может взять на себя машина.
- Поддержка и продвижение платформонезависимого пользовательского кода, но без ограничения доступа к возможностям и особенностям платформ.
- Большие сложные системы должны предоставлять несколько уровней для расширения.
- Ошибки не должны быть фатальными и незамеченными - пользовательский код должен иметь возможность перехватить и обработать ошибки.
- Ошибки в пользовательском коде не должны влиять на функциональность виртуальной машины и не должны приводить к неопределённому поведению интерпретатора и краху процессов.