Меню

КАК Я ИЗУЧАЛ ПИТОН

(С) Гаузер Э.Г., Баку, 25.02.25
website: www.erichware.com

Программированием на IBM PC я занимаюсь с 1992 года, до этого лет 10 программировал на калькуляторах и больших ЭВМ. Когда переходил на IBM PC, пришлось выбирать язык: Паскаль, Бейсик или Си. Я не знал ни один, попробовал все, но выбрал Бейсик в силу его схожести с фортраном, логичности, простоты, а также наличия в нем возможностей, которых не было в тогдашнем Си и тем более в Паскале. С тех пор я и пишу на Бейсике в разных его версиях, пишу как полезные утилиты, так и научные программы.

В целом, меня все устраивало, хотя мне пришлось создать свой язык ("Эллочка") для работы над одним проектом совместно с коллегами. Это было еще для MS-DOS. Когда я перешел на программирование под Виндовс, я использовал VB3 в качестве "карманного транслятора" для создания "повседневных" одноразовых программ. Но уже на Вин7 он нормально не работал, а выше и подавно перестал. И я стал искать простую и удобную замену.

Несколько лет назад я обнаружил язык SmallBasic, освоил его, но, к сожалению, "карманным" он не стал (из-за серьезных ограничений языка). Хотя я даже книгу написал "Пособие по программированию на SmallBasic". Однако, язык-то нужен! И тут мое внимание пало на Питон (Python), жутко популярный и рекламируемый, вроде бы простой, но с большими возможностями. Вдруг именно он станет моим повседневным "спутником"?

Сначала я скачал и установил этот язык, который оказался огромным монстром по объему (почти 700 Мб и больше 15000 файлов). Для "карманного" уже не слишком годится... Ну ладно, пойдем дальше. Забегая вперед, скажу, что если вы умеете самостоятельно создавать ярлыки, то установка не требуется: на другой компьютер я перенес язык просто скопировав всю его папку и добавив ярлыки для вызова нужных файлов. Собственно, нужен один: среда разработки IDLE. Да, версия Питона у меня 3.13.

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

Ясно, что для изучения языка нужно писать на нем программы. Какие? Ведь реальных задач для него у меня нет. Тогда я решил, что буду переводить на Python те свои программы, которые расположены в разделе "Исходники" данного сайта. И, естественно, результаты буду размещать там же, чтобы кто-то мог воспользоваться моим опытом и моими наработками. На момент написания этой статьи я перевел на Питон 7 программ, но в плане остаются еще как минимум 3, более сложные.

Начал я, естественно, с самых простых, работающих с консолью и не требующих графического интерфейса. В указанном разделе "Исходники" вы можете скачать как конкретные программы (во всех языковых версиях, для них имеющихся), так и отдельный набор программ на Питоне.

Должен заметить, что сравнение его с другими языками весьма интересно. Мало того! Я ведь не писал "с нуля", я переводил на Питон уже готовые программы на других языках. И как оказалось, именно версии на SmallBasic ("sb1" в обозначениях раздела) переводить было проще всего! Причем это касалось не только консольных программ, но и оконных.

Еще один важный момент. Питон считается интерпретируемым языком и программы на нем используются в виде исходных текстов, для работы которых нужна вся упомянутая выше монстрообразная среда выполнения. Меня такой вариант не слишком привлекал, я предпочитаю автономную работу готовой программы, т.е. использование ее в виде exe-файла. Оказалось, что на Питоне возможно и такое! Причем даже в нескольких реализациях. Но я выбрал вариант "auto-py-to-exe", уж не помню, почему.

В результате не только варианты исходников на бейсике, паскале и т.д. содержат в архивах и выполняемые файлы, но и программы на Питоне тоже. Правда, крошечная программа на Питоне превращается в ехе-файл размером в 6-7 (а то и 10) мегабайт. Но зато, судя по всему, она действительно автономна, в отличие от "экзешников" на том же SmallBasic, которые хоть и имеют мизерный размер, но зато требуют наличия библиотеки dll, расположенной в той же папке, что и экзешник (и даже папка, доступная в path, не годится).

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

Так вот, о впечатлениях. Как я уже отметил выше, в силу своей громоздкости среда разработки не может стать повседневным транслятором "для флешки". Хотя по большому счету, без среды разработки можно и обойтись, вызывая интерпретатор Питона прямо из командной строки. Но кто с ней нынче умеет работать? Я-то могу, но надо отделить среду от всего остального, чего я пока делать не пробовал, да и учиться в среде все же удобнее.

Однако, хочу предостеречь! Я потерял почти две недели при написании одной программы, перерывая кучу учебников и поисковиков, чтобы сделать совершенно примитивную вещь: позиционировать вывод в консоли. Ну никак! А ларчик просто открывался...

Дело в том, что я писал программу в среде IDLE, которая при запуске программы открывает свое окно и весь вывод идет в него. Если создается оконная программа, то создается ее окно (как задано в коде) и все работает нормально. А вот если вы выводите информацию в консоль, то как оказалось, создаваемое окно IDLE с истинной консолью не совместимо! Иначе говоря, я мучался до тех пор, пока не вызвал интерпретатор Питона через командную строку - и все заработало как изначально и было написано! И созданный ехе-файл тоже работал в истинной консоли нормально. Как же я ругался! Хотя по сути ситуация смешная, но кто мог подумать? По логике должна же быть совместимость, иначе в чем смысл среды разработки?

Должен отметить, что написанные мной на Питоне программы, естественно, никак не являются идеальными. Я писал в рамках тех знаний. которые получил на момент их написания. Кроме того, я избегал приемов классического ООП (с классами и прочей бюрократией), поскольку откровенно его не люблю. И программы прекрасно работают! Кстати, полагается еще проверять, не используется ли данная программа в качестве включаемого модуля. Я не включал такую проверку, у меня не было такой задачи. Кстати, о модулях. Многие библиотеки включены в инсталлируемый набор, но некоторые модули мне пришлось импортировать извне. К сожалению, я уже не помню, какие именно, но на Питоне это делается столь просто, что нет смысла заострять на этом внимание.

    Что же касается самого языка, то впечатления у меня такие (и плюсы, и минусы):
  1. В отличие от Small Basic, на Питоне (правда, я говорю про текущую версию, на старых было иначе) можно записывать в одной строке несколько однотипных операторов, разделяемых знаком "точка с запятой" (";"). И можно записывать однострочно простые циклы и условные операторы (в моих программах это все видно).
  2. Отсутствие "концов" для условных, циклических и прочих блоков выглядит непривычно и не всегда удобно, но формально даже позволяет экономить длину кода.
  3. В языке отсутствует оператор "GoTo", что в некоторых случаях создает принципиальные сложности. Да, как обычно есть "обходные" маневры в виде операторов "break" и "continue", но они помогают не всегда.
  4. Собственные функции надо определять в самом начале программы, причем так, чтобы вызывающая определялась после вызываемой, что, вообще говоря, усложняет восприятие текста программы. А уж то, что сама программа уходит в самый конец текста - и вовсе неудобно. Я привык (в других языках) сначала писать основную программу, а в конце (или вовсе в отдельных файлах) определять используемые подпрограммы. Конечно, можно привыкнуть, но изначально надо учесть.
  5. Формально язык не требует декларации используемых переменных, но лучше все же это делать, включая присвоение им начальных значений.
  6. На Питоне довольно запутанная система локальных и глобальных переменных, коими являются, похоже, даже имена объектов на форме.

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

Понятно, что мой опыт будет расширяться, возможно, будет меняться и текст этой статьи, да и набор программ в "Исходниках" тоже будет расширяться и меняться. Но пока я не считаю нужным вникать в Питон "по самые уши", потому что задач именно для него, которые невозможно решить на том же Бейсике, я не вижу.

Вообще Питон считается больше серверным языком, чем десктопным. Да, мне приходится писать серверные скрипты, причем в планах есть весьма значительные проекты. Но нужен ли там Питон - большой вопрос. Я думаю, что банальный php подойдет куда больше и если что-то кроме Бейсика изучать всерьез, то это именно php. Чем я и займусь при наличии времени. А Питон, думаю, останется просто некоторым любопытным этапом в моем опыте программирования. У меня ведь в "Исходниках" есть программы и на Паскале, и на Си (еще со времен ДОС). Но при переходе на Виндовс я от них полностью отказался.

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