22 августа 2008

Python

Расслабленные летние дни позволяют найти немного времени для самообразования. На этот раз я решил, наконец, подробнее познакомиться с Python. Честно признаюсь, давно я не получал такого удовольствия.
Во-первых, порадовала книга, найденная мною на первой странице русскоязычного сайта Python: «Язык программирования Python. Г. Россум, Ф. Л. Дж. Дрейк, Д. С. Откидач и др.». Прекрасный текст, написанный сухим академическим языком, в отличие от популярных на сегодняшний день комиксов и how-to, сразу вводит в курс дела. Никто на протяжении десятка страниц не рассказывает, как удобно одной командой отсортировать список, как этим грешат книги по Ruby. Здесь сбалансировано присутствует и формальное описание языка, и достаточное количество примеров.
Во-вторых, инструментарий разработки оказался рабочим сразу после скачивания, вместе с интегрированной средой и библиотекой GUI, что не очень характерно для open-source-проектов. Не возникло проблем и с установкой GUI-компонент wxPython. Пришлось, правда, немного повозиться с настройкой mod_python под apache.
В-третьих, мне оказался очень по душе синтаксис языка. Идея выделения семантических блоков при помощи отступов позволяет сразу формировать правильный стиль оформления кода, ключевые слова удивительно прозрачны, что соответствует принципу «минимального удивления». Для каждой задачи автор языка постарался сохранить единственное решение, а в версии 3.0. этому уделяется еще больше внимания. Среди возможностей языка можно выделить «утиную типизацию», которая способствует повышению скорости разработки, поддержку множественного наследования, функций высших порядков, рефлексии, встроенная библиотека имеет средства сериализации произвольных объектов. Списки, строки, кортежи и словари обрабатываются унифицировано, что добавляет коду красоту, характерную для STL. Наконец, возможность переопределения методов установки, получения и удаления объектов позволяет создавать scope-guard’ы, как в D.
Немного странным в синтаксисе оказалось ограничение длины лямбды в одну строку, хотя это позволяет избежать искушения писать анонимные делегаты на несколько экранов, как в C# :). Кроме того, странными показались декораторы, кажется более уместным было бы использование ключевого слова, вместо @.
В общем, язык вызывает в основном положительные эмоции, я бы даже рекомендовал его использовать в качестве базового для студентов, начинающих изучать программирование, если бы не отсутствие статической типизации.

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