КАК Я ИЗУЧАЛ ПИТОН
(С) Гаузер Э.Г., Баку, 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 с истинной консолью не совместимо! Иначе говоря, я мучался до тех пор, пока не вызвал интерпретатор Питона через командную строку - и все заработало как изначально и было написано! И созданный ехе-файл тоже работал в истинной консоли нормально. Как же я ругался! Хотя по сути ситуация смешная, но кто мог подумать? По логике должна же быть совместимость, иначе в чем смысл среды разработки?
Должен отметить, что написанные мной на Питоне программы, естественно, никак не являются идеальными. Я писал в рамках тех знаний. которые получил на момент их написания. Кроме того, я избегал приемов классического ООП (с классами и прочей бюрократией), поскольку откровенно его не люблю. И программы прекрасно работают! Кстати, полагается еще проверять, не используется ли данная программа в качестве включаемого модуля. Я не включал такую проверку, у меня не было такой задачи. Кстати, о модулях. Многие библиотеки включены в инсталлируемый набор, но некоторые модули мне пришлось импортировать извне. К сожалению, я уже не помню, какие именно, но на Питоне это делается столь просто, что нет смысла заострять на этом внимание.
- Что же касается самого языка, то впечатления у меня такие (и плюсы, и минусы):
- В отличие от Small Basic, на Питоне (правда, я говорю про текущую версию, на старых было иначе) можно записывать в одной строке несколько однотипных операторов, разделяемых знаком "точка с запятой" (";"). И можно записывать однострочно простые циклы и условные операторы (в моих программах это все видно).
- Отсутствие "концов" для условных, циклических и прочих блоков выглядит непривычно и не всегда удобно, но формально даже позволяет экономить длину кода.
- В языке отсутствует оператор "GoTo", что в некоторых случаях создает принципиальные сложности. Да, как обычно есть "обходные" маневры в виде операторов "break" и "continue", но они помогают не всегда.
- Собственные функции надо определять в самом начале программы, причем так, чтобы вызывающая определялась после вызываемой, что, вообще говоря, усложняет восприятие текста программы. А уж то, что сама программа уходит в самый конец текста - и вовсе неудобно. Я привык (в других языках) сначала писать основную программу, а в конце (или вовсе в отдельных файлах) определять используемые подпрограммы. Конечно, можно привыкнуть, но изначально надо учесть.
- Формально язык не требует декларации используемых переменных, но лучше все же это делать, включая присвоение им начальных значений.
- На Питоне довольно запутанная система локальных и глобальных переменных, коими являются, похоже, даже имена объектов на форме.
В общем, язык для повседневных одноразовых задач (представьте, они у меня встречаются довольно часто!) подходит не слишком. Может быть, если отделить среду от языка и вручную отсеять лишние библиотеки, то что-то путное и получится, но процесс такого отделения - если он вообще возможен! - потребует значительных усилий и пока я не считаю его рентабельным...
Понятно, что мой опыт будет расширяться, возможно, будет меняться и текст этой статьи, да и набор программ в "Исходниках" тоже будет расширяться и меняться. Но пока я не считаю нужным вникать в Питон "по самые уши", потому что задач именно для него, которые невозможно решить на том же Бейсике, я не вижу.
Вообще Питон считается больше серверным языком, чем десктопным. Да, мне приходится писать серверные скрипты, причем в планах есть весьма значительные проекты. Но нужен ли там Питон - большой вопрос. Я думаю, что банальный php подойдет куда больше и если что-то кроме Бейсика изучать всерьез, то это именно php. Чем я и займусь при наличии времени. А Питон, думаю, останется просто некоторым любопытным этапом в моем опыте программирования. У меня ведь в "Исходниках" есть программы и на Паскале, и на Си (еще со времен ДОС). Но при переходе на Виндовс я от них полностью отказался.
Впрочем - следите за новостями (все способы есть в разделе "Автор"), сейчас все так быстро и неожиданно меняется...