Внимание! – при перепечатке ссылка на автора обязательна!
В противном случае действует закон об Авторских правах!
Форт(Forth) – язык оптимальных программ для внешних устройств ПЭВМ.
Разделы обсуждения:
Обоснование оптимальности программ;
Критерии и перечень условий для оптимальности с точки зрения пользователя;
Выгоды пользователя;
А что же делать программисту с такими условиями задачи;
Пример оптимального программирования;
Такое громкое заявление надо доказать. Попробуем. Начнем с понятия оптимальности
программы для внешних устройств ПЭВМ.
Мой критерий оптимальность в том, что бы пользователь получив программный продукт,
имел все для дальнейшей работы и развития:
- программу в одном файле с минимальным размером. Чем меньше файлов
и меньше размер, тем меньше шансов что то потерять, забыть;
- Описание программы. Чем оно подробнее тем, конечно же лучше;
- Текст программы на языке программирования. Для того, что бы
можно было, что-то исправить в эксплуатации программы;
- Компилятор текста программы. Для того, что бы из текста получить
исполняемую программу.
Как бы, такое 'яйцо', которое бы содержало в себе ВСЕ ДЛЯ РАБОТЫ и РАЗВИТИЯ.
Данный подход не приветствуется из-за своей НЕ ВЫГОДНОСТИ в финансовом понимании.
Все программные продукты, стараются делать так, что бы затем вновь приходилось
обращаться к программистам или посредникам от программистов.
Но есть и другая сторона. Как такую оптимальную программу сделать? На каком языке
программирования. Для таких условий подходит язык программирования Форт.
Покажем на конкретной программе, как это делается.
Данная программа (скачать - biovest1.exe – 260кб) содержит все компоненты
для развития системы сбора данных на основе шины Micro Lan. Подробнее на сайте
– www.irs.ru/~mikrolan
Принцип показан на рисунке.
Шина Micro Lan
Подключенные
Датчики к СОМ-
поту
Ds1820
Ds2438
Ds2450
Ds2405
Режим нормальной
работы
Режим
Развития
ПО
Biovest1.exe
--------------------
В режиме тестов создаются данные файлы. Ключ S в командной стркое
Ini_v1.tmp - файл инициализации внешних устройств датчиков на обьекте
Txt_v1.tmp – файл описания программы, работы с измерительной системой,
схемы подключения и проверок.
F32_v1.tmp – файл текста программы, на языке FORTH версия SMAL32
Exe_v1.tmp – файл компилятора языка FORTH версия SMAL32
Исходная рабочая программа 'крутится' на обьекте
Потребовалиь изменения.
программы
При выполнени exe-файла без опций, программа проводит измерения датчиков обьекта
шины
Micro Lan и выдает измеренные данные на экран и в файлы отчетов.
Программист имеет текст программы, описание системы и компилятор. Пишет новую
программу, например, под новое устройство или датчик, который
устанавливается на обьекте.
Полученная программа продолжает
Работать в замен старой
- Данная программа – работая без ключа S в командной строке,
выполняет все возложенные на нее функции по сбору данных от датчиков. Полученными
данными может воспользоваться и другие программы, которые могут потребоваться
для обработки.
- С ключом S программа переходит в режим тестов. И в этом же
режиме есть возможность восстановить файлы текста, помощи и компилятора текста.
Имена файлов по умолчанию подсказывают их назначение. Расширения у всех tmp.
Для того, что бы случайно не стереть уже имеющиеся файлы.
- Получив текст программы в режиме тестов из первичной exe-программы,
программист исправляет ее и вновь компилирует, получая файл с расширение exe.
Этот файл является новым программным продуктом для новых задач.
- Последовательность работ программиста:
1. переименовывает файлы:
f32_v1.tmp à biovest1.f32 - текст программы,
exe_v1.tmp à forth.exe - компилятор языка форт весии SMAL32,
ini_v1.tmp à biovest1.ini – текст инициализации датчиков для работы
программы в режиме сбора данных с обьекта;
txt_v1.tmp à biovest1.txt – текст описания работы на обьекте, инструкции,
схемы.
2. Исправляет текст программы на новый
biovest1.f32 à [biovest1.f32] - название файла можно оставить и
прежнее. Для удобства, программные изменения делать в одном каталоге, а затем
переносить в рабочий.
3. Комплирует из текста exe-программу
forth.exe biovest1.f32 à biovest1.exe – получается тоже файл
exe, но это уже другая программа и новые полезные свойства которые может запрограммировать
программист. Или не сможет – зависит от его ума или его зарплаты (шутка).
Таким образом, у пользователя все есть. И очень Важный момент, работающая программа
содержит в себе все необходимые компоненты для развития и исправления.
Опыт подсказывает, что возвращаться и исправлять старые программы для программиста
очень тяжело. Он многое забыл. Он забыл: где находятся эти тексты, где тот компилятор,
на котором эти тексты делались. Он забыл задачу программы ее алгоритм и т.д.
В данной программе все и текст и компилятор и задача. И самое главное, тот первичный
программист уже и не нужен. Можно ставить задачу другому программисту. Дело конечно
за малым – знать язык программирования Forth.
Данную программу можно, конечно же, написать и на других языках программирования.
Но основная задача именно – ВСЕ В ОДНОМ МИНИМАЛЬНОМ ФАЙЛЕ.
Небольшие аналогии и замечания на данный подход при поставке ПО:
1. Как известно Бил Гейтс – основатель фирмы Maйкрософт (пишу все
по русски) принципиально отказался от передачи исходных кодов своей системы Виндовс.
И нажил достаточно много денег. А сколько он нажил себе врагов-недображелателей?
Кто не ругал Виндовс? А исправить то и нельзя. Исходных кодов нет. Получается
вроде красивой машины, которую тебе продают, но, о ее недостатках и изьянах умалчивают.
С машинами проще, это железо – разбирай и чини. Или обращайся с поломанной
запчастью к поставщику.
А самое главное – можно и самому починить, заменить то, что сломалось.
А вот с программой так не получиться! Даже если и знаешь что, у тебя не идет
в работе. Нет исходных кодов! Нет этого языка программирования!
2. Программы на ZX-Spectrum, на ДВК, Электронику-60 – очень много
затрачено труда а воспользоваться сейчас этим трудом НЕВОЗМОЖНО, БЫСТРЕЕ НАПИСАТЬ
ПО НОВОЙ. Есть, например, эммулятор под ZX-Spectrum и программы. Пожалуйста,
попробуй что-либо перевести на современную технику. И вновь столкнешься с составляющими
программного продукта: текст программы, описание программы, компилятор программы.
И если это было все в одном файле, перевод на новую платформу был бы значительно
проще.
3. Такая же аналогия, прослеживается при разработке и создании новых электронных
схем и применении программ для их обслуживания. Например, мои небольшие программки
в статьях, нельзя использовать для практической работы. Только для понимания
принципа работы схемы. А если давать большие программы, хотя для любого журнала
это очень не выгодно, то теряется описание и смысл схемы. Но, сейчас время электронной
документации. И что опять делать файлы для схемотехников, файлы для операторов,
файлы для программистов
и файлы для руководящего звена? А компоненты обязательно будут теряться, если
есть такая возможность. Все должно быть в одном файле!
4. Но 'продвинутые' пользователи скажут – а на это есть архиваторы
и упаковщики. Поставляйте все компоненты в одном файле, и все будет в порядке.
Они не правы. Почему? К сожалению, ни один из известных мне архиваторов не смог
выполнить поставленную задачу. Сделать такой единый файл, что бы и работал и
распаковывался. И кроме того, сам Форт – архиватор. Коды приведенной программы
сжать - не получиться. Попробуйте сделать из приведенной exe-программы, например,
самораспаковывающийся и само запускающийся
файл.
Почему так происходит? Это отдельный разговор о структуре языка и исполняемых
кодах.
Тут только могу предложить почитать теорию.
5. А что же с пожизненной рентой программиста на свои программы? К сожалению
– ничего. Доить пользователей «улучшательством» и «продвинутостью»
будет сложнее. Но, зато спокойней будет жить. Сделал программу. Она работает
- получи свои «бабки». И при всех раскладах обратиться ли пользователь
или нет, работать можно уже начинать не с нуля. И самое главное искать ничего
не надо, все есть у пользователя в одном файле.
6. Достаточно просто доказать АВТОРСКОЕ ПРАВО. Один файл, значит, есть его
контрольная сумма или просто количество байт. Один файл быстро проверить или
даже найти на компьютере. Свой продукт очень просто отличить от подделки по той
же контрольной сумме или количеству байт.
7. И противоположная проблема - ответственность программиста за свои программы.
Можно всегда сказать пользователю. Вам дан один файл с такой то контрольной суммой
и количеством байт. Вот он и должен работать. Любые изменения не допускаются.
Но возможно есть и другие предложения. Предлагайте. Посмотрим.
----------------------------------------------------
Автор - Шабронов Андрей Анатольевич –8-913-905-8839 Новосибирск –
сентябрь 2003 года.
e_mail - shabronov@ngs.ru