О софтостроении для ПМК, или как жить

| рубрика «Заметки» | автор st
Метки:

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

Софт для платформы - это самое важное. Без софта под Windows, создаваемого огромной армией разработчиков не было бы ни сегодняшней Microsoft - поставщика платформ, системного (математического) ПО, ни крупнейших производителей аппаратуры типа Dell или ASUS. Разумеется, это крайний пример, но и в нишевых решениях типа мобильных устройств действует тот же принцип. Palm проиграл именно потому, что под его платформу писать приложения намного труднее, чем под Windows Mobile.

Это была присказка. Вернемся к нашим баранам.

МК-152/161 - это принципиально новая серия. Это графические ПМК, которые не успели появиться в СССР конца 80-х. Несмотря на совместимость на уровне системы команд (входного языка) со своими дальними предками МК-52/61, для них требуется принципиально иной подход к разработке софта. Разница примерно такая же, как при переходе с DOS-разработки под Windows.

Для меня также очевидно, что использовать МК-152/161 в качестве "модернизированных МК-52/61" не имеет большого смысла, равно как и написание прикладных DOS-программ под современный Windows. Использовать при нужде старый софт - да, писать новый в старом стиле - нет. В этом плане свои эксперименты уважаемая black queen ведет в правильном направлении.

Вывод простой: если не рассматривать МК-161 только как довесок к комплекту лабораторного оборудования, то требуется разработка полноценных графических приложений.

Мне кажется, что скоро станут очевидными 2 проблемы:

  • для управления графическими приложениями клавиатуры старых ПМК не хватает
  • система команд слишком низкоуровневая

Первую, при необходимости, сможет решить производитель. Вторая целиком ложится на плечи разработчиков.

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

Если отбросить варианты эмуляции одних платформ на других, то для решения подобных проблем нужны кроссплатформенные средства создания приложений. Возможные варианты:

  • кросс-трансляторы и трансляторы с одного ЯВУ, существующие под разными платформами (C/C++, Free Pascal) - переносимость на уровне исходников, макропрограммирования и условной компиляции
  • виртуальная машина/абстрактный ассемблер (форт, java, .NET IL)
  • конвертеры на уровне исходного кода ЯВУ или ассемблерного кода
  • комбинации перечисленного выше

Теперь помечтаем. Что хотелось бы иметь в идеале. Чтобы написанная однажды программа для МК-161 могла быть использована на другой платформе. Для меня лично представляют интерес следующие: HP-50, TI-89, КПК и смартфон под Windows Mobile. Поскольку речь идет о графическом приложении с относительно небольшим числом экранных форм, то допустимо иметь единую прикладную логику и множество реализаций графических интерфейсов (подход MVC - model-view-controller).

Как реализовать это для перечисленных платформ кроме МК-161 я в целом вижу. Например, с использованием семейства компиляторов GNU.

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

P.S. Нашелся вот такой интересный проект: SDCC - Small Device C Compiler. SDCC is a retargettable, optimizing ANSI - C compiler that targets the Intel 8051, Maxim 80DS390, Zilog Z80 and the Motorola 68HC08 based MCUs. Work is in progress on supporting the Microchip PIC16 and PIC18 series. SDCC is Free Open Source Software, distributed under GNU General Public License (GPL).

По итогам дискуссий (дополнение от 2009-04-29)

Пишет digitalinvitro: По определению СЕМИКО МК-161 - это платформа пром. контроллера, с этим ИМХО тут все согласны. Писать компилятор Си например в МК161 автокод СЕМИКО не станет - не принесет это прибыли. Это и есть интересы коммерции.

То что существующий входной язык и виртуальная машина - "тормоза" во всех смыслах, главный из которых - отсутствие возможности развития этой в общем-то хорошей "железки" до уровня хотя бы отдаленно напоминающего современные ПМК (встроенные пакеты, интерпретатор, графика), было понятно еще при выходе МК-152. Но где-то теплилась надежда, что производитель найдет возможность дать разработчикам хоть какой-то SDK - возможность работать непосредственно на уровне "камня" и на ЯВУ хотя бы уровня Си/Паскаля.

Поскольку в ходе обсуждения мне указали на архитектурные ограничения, делающие реализацию невозможной, то ниша применения МК-161/152 остается прежней: платформа контроллера периферии и устройство для ностальгируюших фанов. Мне остается лишь извиниться перед читателями журнала "Мир ПК", которым была дана слишком преждевременная информация по поводу возможного возрождения в РФ массовых отечественных ПМК.

Идеи по разработке софта под МК-152/161 оставляю до лучших времен. Возможно, когда-то мы увидим SDK, и тогда будет хороший повод вернутся к этой теме.

Вопрос покупателя (дополнение от 2009-05-04)

Среди отзывов на МК-161 встретил, наконец, нормальный вопрос потенциального покупателя.

sublimator пишет: 23 апреля 2009 в 16:05

посоветуйте мне, как человеку, который в этом году пойдет на матфак, что лучше: ti-92, или мк-161? применение - в основном по-быстрому дифференцировать и интегрировать в тех ситуациях, когда пк нет рядом….. вроде бы ти-92 более под эти дела заточен.. может ли мк-161 строить графики?

Источник

Если быть честным, то человеку надо ответить: "Да, с помощью МК-161 тоже можно интегрировать, дифференцировать и строить графики. Но если ты хочешь по-быстрому, то не получится. А для графиков тебе придется стать программистом на мнемокоде МК-161, причем без компьютера и связи с ним по RS-232 написать работающую графическую программу вряд ли получится."

Калькулятор типа HP-50g/TI-89 обладает встроенным математическим пакетом, позволяющим интегрировать, дифференцировать, строить графики и еще много чего в том числе и в аналитическом виде (алгебраическая запись выражений и формул вместо числовых значений).

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

Так что пойдет человек в магазин за калькулятором HP/TI и проголосует рублём, поскольку имеющие место отдельные преимущества МК-161, к сожалению, бесполезны для подобных типовых задач среднестатистического студента.