Практика программирования на Python

Иванов А.В.

aivanov(злая собака)keldysh(жирная точка)ru
Институт прикладной математики им. М.В. Келдыша РАН

Даже маленькая практика
стоит большой теории
Закон Букера

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

Для кого же предназначены эти статьи? Сразу можно сказать для кого эти статьи  не предназначены - для людей, считающих себя "профессиональными программистами" (точнее "Настоящими Профессиональными Программистами", в зависимости от уровня профессионализма число заглавных букв может меняться как в ту, так и в другую сторону). К сожалению мне нечего им рассказать о программировании, все что я об этом знаю  они знают гораздо лучше и могут сформулировать гораздо правильнее, и я заранее смиренно согласен со всей критикой, звучащей с их стороны. Настоящие профессинальные программисты действительно великолепно знают как правильно писать программы, но им довольно сложно объяснить что именно нужно написать, крайне сложно объяснить зачем это нужно написать, и совершенно невозможно объяснить почему нужно написать именно это, а не что то иное. Поэтому дилетанты (вроде автора), умеющие чуть чуть программировать и знакомые с предметной областью, все еще востребованны;-).

Эти статьи предназначена для таких же дилетантов как и я, которые уже знают Python, и которым приходится в силу своих скромных дилетантских возможностей решать какие то свои сугубо практические задачи. Как дилетант я искренне убежден, что плохой (но работающий) код гораздо лучше хорошей (но неработающей) концепции кода, хотя и хуже хорошего работающего кода, поскольку любой работающий код приносит ощутимую пользу, а концепция способна доставить лишь эстетическое наслаждение. В этих статьях описано создание работающего кода (мне он кажется хорошим, но профессиональные программисты могут и не согласится), причем описано по возможности подробно, с большим количеством примеров - часть статей писались как учебные материалы по кафедральному спецкурсу "Соврменные технологии численного моделирования", читаемому на Факультете прикладной математики Московского физико--технического Института.

Я глубоко благодарен своим коллегам и сообществу сайта www.linux.org.ru за обсуждение и многочисленные полезные замечания.
  • Импорт С++ кода в Python при помощи пакета SWIG [PDF] 420К.
  • Разбор аргументов командной строки на Python [PDF] 366K. Модуль bindopt.py входит в библиотеку aivlib, но может использоваться самостоятельно, документация по модулю входит в документацию по библиотеке  aivlib.
  • Модуль myTkinter - упрощенное создание оконных интерфейсов [PDF] 209К. Модуль myTkinter.py входит в библиотеку aivlib, но может использоваться самостоятельно, документация по модулю входит в документацию по библиотеке  aivlib.
  • Клиент/серверные приложения на Python - записки дилетанта (часть I) [PDF] 273K. Пакет mysocket (файлы __init__.py, client.py, mixt.py, server.py и transport.py) входит в библиотеку aivlib, но может использоваться самостоятельно, документация по пакету входит в документацию по библиотеке  aivlib (во всяком случае мы над этим работаем).
Файлы с примерами к статьям находятся  тут.