Питон, как реинкарнация Бейсика

Любители в софтостроении появились давно, а сегодня их число только растет, по разным оценкам приближаясь уже к половине программистского поголовья.

Почему возник язык Бейсик, на котором выросло целое поколение не только любителей, но и профессионалов, включая Билла Гейтса? Разработка на Фортране и чуть более поздних языках (COBOL, PL/1) не была интерактивной. Тогда как цель любителя, совершенно естественная - побыстрее решить свою прикладную задачу и отвалить от монитора (тогда - от перфоратора и машинисток), не прибегая к помощи профессиональных программистов.

Но Фортран жив по сей день и неплохо себя чувствует, его пользователи еще простудятся на похоронах очередного корпоративного монстра-фреймворка. А вот Бейсик начал загибаться в 1980-е. Как интерактивный скриптовый язык он застрял в развитии на уровне реализаций под MS DOS, а его реинкарнация Visual Basic уже имела мало общего с потребностями любителей: набросать несколько десятков строк кода, отладить и пользоваться, делясь с коллегами.

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

Знаю, что некоторые преподаватели информатики в школе с успехом применяют Питон для обучения. Хочется надеяться, что они не ограничиваются в этом деле лишь Питоном, потому что прививается односторонняя культура программирования без намека на базовые инженерные аспекты: повторное использование, зависимости и развертывание очередных "нетленок".

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

Справедливости ради надо сказать, что под Linux весь этот бордель выглядит гораздо пристойнее, потому что профессиональные разработчики постарались и добавили пакеты в депо соответствующих версий операционной системы. Поэтому в Debian все ограничивается парой команд apt-get install.

Но дело не заканчивается пакетами и зависимостями. В списке присутствует несколько установочных программ, специфичных для версии Windows (scipy, matplotlib).

Почему?

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

Чтобы затем использовать такие пакеты непосредственно из исходников, вам, соответственно, потребуется устанавливать на компьютер профессиональные инструменты и среды типа Visual Studio. Задача усложняется на порядок.

Проблема? Проблема...

Решений этой проблемы не просматривается со времен первых версий Бейсика, как бы не называли потом его реинкарнации. Точнее, теоретическое решение есть, но практически оно устраивает далеко не всех. Это специфичные для решения прикладных задач пакеты, от МатЛаба до MS Office. Обросших любительскими надстройками не хуже Питона.

Любителям нужен инструмент для решения прикладных задач. Быстрый, простой, интерактивный. Профессионалам - возможность максимально просто использовать прежние наработки, развертывая исполняемые модули с минимальными затратами. В идеале - копированием одного файла.

Когда-нибудь эти миры встретятся.

P.S. Поучительная история о "защите", сделанной программистами-любителями на Питоне (автор - А. Воробей).

Я уже много лет покупаю электронные книги в Амазоне на киндл. Обычно они приходят на ридер с защитой от копирования (DRM), но я немедленно снимаю с них DRM с помощью плагина для программы calibre, это очень просто (первая ссылка в гугле на поиск calibre drm removal, если кому надо). Любой продвинутый юзер может установить такой плагин и снимать DRM с купленных книг. Недавно мне попалась книга, которую можно было только арендовать на время - Амазон начал давать такую возможность на киндле год или два назад. Купить ее было нельзя. Будучи арендованной, она сидит на ридере в виде файла, как и обычные покупки. Я попробовал снять DRM с этого файла и получил ошибку от плагина: "Снятие DRM с арендованных книг не поддерживается".

Бонус программиста: поскольку я знаю, как устроен DRM, мне совершенно очевидно, что для арендованных книг он ломается так же легко, как для купленных. Более того, сразу очевидно, что плагин не то чтобы не может, он не хочет снять DRM с арендованной книги. В принципе могла бы быть ситуация, при которой Амазон придумал для книг в аренду совершенно другой новый формат с новым видом защиты и хакерам было бы лень или недосуг его ломать, но шансы 10:1 что это не так и что в плагине стоит тупая заглушка. Далее, я знаю, что плагины для calibre пишутся на Питоне, и я знаю этот язык. Через несколько минут я нахожу код заглушки в плагине ("если книга такого-то типа, выдай сообщение об ошибке и не пытайся даже ее читать"), и удаляю его, еще через минуту у меня готовая расшифрованная книга с снесенным DRMом.

Комментарии

Вообще говоря, питоне есть

Вообще говоря, питоне есть свой пакетный менеджер под нзванием python eggs, так что технически проблема решаемая так же как и в Linux.

Организационно, не знаю, насколько это сейчас распространено.

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

Изображение пользователя Serguei_Tarassov.

Можно и так и сяк

Когда я писал первые программы на Бейсике, то уже имел опыт Паскаля. Поэтому программы выходили структурными, понятными и без GOTO, несмотря на обязательную тогда нумерацию строк.

К чему это упомянуто? Если писать можно и так и сяк: правильно, но медленнее, или неправильно, но быстро, то

  • писать правильно выходит сложнее, чем в случае, когда это прямо предписано и ограничено языком и средой
  • в основной массе все равно писать будут неправильно, но быстро - для этого, собственно, язык и среда создавались

Поэтому тем, кому надо писать правильно, возьмут в руки другой инструмент, где это сделать легче.

И уж совсем я не понял вашего замечания по поводу "сильнотипизированного питона". В рекомендациях для начинающих пишут, что вот так делать не надо:

a = 1
a = 'a string'

Можно сто раз сказать, что не надо, а толку-то. Такие возможности хороши для написания скриптов для своих нужд. Шаг в сторону - все рушится без дополнительной поддержки контроля программистом, а не компилятором.