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».

2007-09-21

Goodbuy Adobe Acrobat Reader, hello PDF-XCHANGE

Наконец-то нашел правильный PDF-ридер. Стандартный акробат угнетал все большим утяжелением и торможением + невозможностью делать комментарии. Да, начиная с седьмой версии такая возможность появилась, но с идиотскими оговорками - чтобы эта функциональность заработала, PDF-файлы нужно специально обработать полным акробатом. Это я расценивал как явное издевательство, к тому же, мои лекции и книги собирались автоматически, делать ручную работу мне не улыбалось. Плюс PDF я собираю и выкладываю в инет из офиса, где у нас не может быть нелицензионного софта, а покупать акробат не сдалось совершенно. А возможность делать комментарии в PDF важна весьма, как показал опыт взаимодействия со студентами, это наверное, оптимальная технология ревизий.
На днях, я попытался поставить восьмую версию акробата - поставился, но при запуске рисовал "слепое" белое окно принятия лицензии (видимо) без контролов, ну и так как ни на что нельзя было нажать, чтобы подтвердить свое согласие, то он и не работал. Дурдом. Ну да, может, конечно, если перезагрузится, это бы прошло, но ещё чего - перезагружаться из-за какого-то акробата. Для меня перезагрузка раз в месяц - и то слишком.
Так вот - счастье есть, оно не может не есть. Снес, надеюсь навсегда, Adobe Acrobat Reader, и поставил PDF-XCHANGE. Очень быстрый, многотабовый PDF-броузер, с шикарным набором для комментирования и иного редактирования PDF-файлов (да, например печатать произвольный текст, заполнять PDF-анкеты и т.п.). Да, на всякие "права" он не смотрит, отлично работает с моими PDFами, собранными pdfTex.
Ну наткнулся на пару косяков, - например, у меня в PDFе был watermark - discopal.ispras.ru (чтобы люди знали, где взять свежую версию лекций/книг). Так этот ридер "догадался", что это URL (хотя никаких гиперлинков, и даже http:// там не было), и постоянно по щелчку в окрестности этого ватермарка посылал меня на discopal.ispras.ru. Пришлось выкинуть ватермарк нафиг. Пока не понял, как просматривать две страницы в полноэкранном режиме. Но в остальном - одно удовольствие. Усиленно рекомендую.

2007-09-20

Курс лекций «Эффективные алгоритмы»

лекторы: д.ф.-м.н. Н.Н. Кузюрин, С.А. Фомин.

Семестровый курс по выбору для студентов 6-го курса ФУПМ МФТИ.

Организационные вопросы

Место чтения курса - МФТИ, КПМ, 110 аудитория.

Время: по пятницам, 10:45.

Планируемая периодичность - раз в неделю, но возможны изменения (две лекции через неделю + перерыв в две недели и т.п.). Формат проведения лекций: демонстрация с проектором с параллельным обсуждением, проверка тестами знаний по предыдущим темам. Подразумевается параллельное изучение студентами электронной версии курса . Электронная версия находится в состоянии перманентного обновления, нахождение в ней студентами ошибок, опечаток - приветствуется.

Ведется список посещений.

Ожидается активность студентов - учитывается посещаемость, вменяемое поведение на лекции - (не спать, задавать разумные вопросы, давать правильные ответы), и нахождение ошибок и опечаток в электронном курсе. По результатам вышеупомянутой активности, отобранная группа студентов получит возможность сдачи экзамена автоматом досрочно, для наиболее одаренных возможен экзамен "автоматом".

Остальные должны готовится к бескомпромиссной и глубокой проверке знаний ("халявы", "удовл." автоматом - нет).

Формат экзамена - тесты на знание основных определений и результатов (пользоваться материалами нельзя), по результатам тестов определяются "слабые" области, по ним задаются вопросы и задачи (пользоваться материалами можно).

Все вопросы - mailto:fomin@ispras.ru .

На самый худой конец - звоните 89166190438, Стас Фомин.

Для проверки знаний (особенно перед экзаменом), студенты могут использовать интерактивную систему тестирования.

2007-09-06

INTUIT: Цифровые фотоаппараты

Прошел курс "Цифровые фотоаппараты". Курс порадовал.
Во-первых, отдых душой после тяжелых курсов по спецификациям (HTML, CSS2). Во-вторых, это действительно "тема" - развивать потребительские навыки в высокотехнологичных товарах.
Вместо того, чтобы рыть блоги, форумы и разные FAQ, разной степени актуальности, лучше сначала прочитать курс с основными понятиями, а потом уже смотреть, что изменилось и стало неактуальным в данный момент. Я с удовольствием встретил бы подобные курсы по видеокамерам, ноутбукам, проекторам, и даже холодильникам. На месте рекламных отделов производителей, я бы уже выбивал бюджеты - такие курсы идеальное место для product placement. Еще раз спасибо автору за курс!

2007-09-02

INTUIT: курсы по CSS

Прошёл [1,2] интуитовские курсы «Применение каскадных таблиц стилей (CSS)» и «Спецификация CSS2».
Первый курс — это скорее обзорный, просто пытается на пальцах объяснить основные понятия — синтаксис, каскадирование, базовую модель вёрстки. Очевидно подразумевается, что обучающийся имеет под рукой полный справочник по CSS, т.е. курс не «замкнут», и для ответов на проверочные вопросы обязательно нужно заглядывать справочник. Соответственно, курс получился небольшой, и наверно, его можно сделать ещё меньше, выкинув уже устаревшие частности по поводу особенностей интерпретации CSS1 броузерами IE и Netscape (про последний я думаю, уже не все помнят). Вообще писать по особенности каких-то версий софта, да ещё обучающие курсы — неблагодарное дело, всё устареет моментально, и автору придётся стыдиться цитат вроде «..Одним из примеров громоздкой и, по мнению авторов, бесполезной надстройки является интегрированная система WINDOWS фирмы Microsoft. Эта система занимает почти 1 Мбайт дисковой памяти и рассчитана на преимущественное использование совместно с устройством типа "мышь" ». Поэтому этот курс можно было бы и ещё сократить, а желающих большего — отсылать на курс «Спецификация CSS2».
Во втором курсе мне понравилась идея — вместо того, чтобы тратить силы, придумывать концепцию обучения, как, что и в каком порядке излагать, и несмотря на все усилия гарантированно получать за своё творчество критику, берётся официальная спецификация, переводится и накрывается блоком тестов. Т.е. все претензии по концепции курса, автоматически «перенаправляются» коллективу авторов спецификации. И то верно, для состоявшегося IT-специалиста обучение по спецификациям должно быть нормой — этих стандартов, протоколов и прочих RFC такое безумное количество, что ждать нормальной книги по каждому всё равно нереально. Более того, не мешало бы протолкнуть идею, что при разработке любой спецификации и стандарта, должны быть разработаны тем же коллективом авторов и проверочные вопросы, чтобы гарантировать трансляцию правильного понимания.
Ещё хотелось бы предостеречь читающих этот курс от немедленного применения новых знаний на практике — это всего лишь спецификация, и её поддержка в современных броузерах ещё очень далека от полноты (я лично, натыкаясь на какую-нибудь незнакомую «фичу» несколько раз бросался её пробовать, и горестно обламывался).