2007-09-30

INTUIT: Язык программирования Python

Прошел ИНТУИТовский курс «Язык программирования Python». Курс очень понравился, чувствуется, что автор — настоящий питонист и программист, нашедший свой язык программирования. Что касается темы, то у меня давние симпатии к питону. К сожалению, он не получил пока широкого распространения, как язык промышленного программирования, он несколько проигрывает Perl/PHP по скорости, а Java — по рекламной поддержке. Возможно, это временный проигрыш, и новые версии питона будут быстрее, по-крайней мере, не сильно медленней других скриптовых языков, и тогда обратят более серьезное внимание на исключительные достоинства языка — максимально чистый синтаксис, затрудняющий даже плохому программисту написать на питоне непонятную программу плюс максимальная простота, позволяющая освободить голову от муторных технических деталей языков класса C++. Но уже сейчас, я считаю, есть ниши, где язык является абсолютным лидером.

Во-первых, это скрипты для локальной автоматизации/системного администрирования. Т.е. окончательная замена Shell/Bat программированию, что делает работающий скрипт, пусть и написанный с похмелья, будет понятно другому человеку и через несколько лет (в отличие от скриптов, написанных на write-only языках), в частности это также замена Makefile/Ant/Shell/bat-файлов при описании сложной сборки проекта (см. например, Scons).

Во-вторых, это область преподавания информатики. В частности, мой знакомый использовал книгу автора этого курса при преподавании программирования школьникам, а я использую питон в курсе алгоритмов для студентов.

В-третьих, интересная перспектива — это научные исследования, в частности, разработка новых алгоритмов. Серьезный бич многих Computer Science статей по новым алгоритмам — в том, что их авторы, не удосуживаются реализовать и проверить предлагаемые алгоритмы, ограничиваясь теоретическим анализом псевдокода, ведь программировать муторно и не царское дело. В результате, когда дело доходить до реализации, (возоможно лет через двадцать после статьи) возникают проблемы. Макетирование на python, позволило бы за недорого их избежать, а также исследовать основные свойства (зависимость числа итераций от параметров и т.п.). Это также замена различных систем матмоделирования — вместо того, чтобы держать в голове десятки синтаксисов языков типа Matlab, Scilab, System R и прочих, многие из которых к тому же, коммерческие, лучше использовать единый, открытый и понятный всем язык с дополнительными предметно-ориентированными модулями (scipy, matplotlib и т.п.).

Есть у меня еще мечта, что появится Python-based система документирования и верстки, в замену ископаемому TeX/LaTeXу. Подходы к этому есть (например, plasTeX), но света в конце тоннеля пока не видно.

Еще раз спасибо автору курса, в целом, текст и задания вполне выверены и удачны. Конечно, что-то уже устарело (модуль Numeric заменен NumPy в составе SciPy), но, возможно, это как раз повод кому-нибудь сделать отдельный курс, например, на основе перевода «Guide to NumPy».

Комментариев нет: