Форт(Forth) – язык оптимальных программ для внешних устройств ПЭВМ

       

 

Адрес документа:

http://shabronov_s2.dyn-dns.ru/doc_sh/forth_optimus/forth_optimus.doc/    инд: 1-10-1  

Адрес  программы

http://shabronov_s2.dyn-dns.ru/temp/temp/test_monsys_all.zip        мид_кар

 

 

 

   Перейти к  примеру  на  музыкальном сопровождении ( ред.2013г)

 

Разделы обсуждения:

  1. Обоснование оптимальности программ;
  2. Критерии и перечень условий для оптимальности с точки зрения пользователя;
  3. Выгоды пользователя;
  4. А что же делать программисту с  такими условиями задачи;
  5. Пример оптимального программирования;

 

Такое громкое заявление надо доказать. Попробуем. Начнем с понятия оптимальности программы для внешних устройств ПЭВМ.

Мой критерий оптимальность в том, что бы пользователь получив программный продукт, имел все для дальнейшей работы и развития:

-                программу в одном файле с минимальным размером. Чем меньше файлов и меньше размер, тем меньше шансов что то потерять, забыть;

-                Описание программы. Чем оно подробнее тем, конечно же лучше;

-                Текст программы на языке программирования. Для того, что бы можно было, что-то исправить в эксплуатации программы;

-                Компилятор текста программы. Для того, что бы из текста получить исполняемую программу.

 

Как бы, такое 'яйцо', которое бы содержало в себе ВСЕ ДЛЯ РАБОТЫ и РАЗВИТИЯ.

 

Данный подход не приветствуется из-за своей НЕ ВЫГОДНОСТИ в финансовом понимании. Все программные продукты, стараются делать так, что бы затем вновь приходилось обращаться к программистам или посредникам от программистов.

Но есть и другая сторона. Как такую оптимальную программу сделать? На каком языке программирования.  Для таких условий подходит язык программирования Форт.

Покажем на конкретной программе, как это делается.

 

Данная программа ( biovest1.exe – 90кб W98 )   содержит все   компоненты для развития системы сбора данных на основе шины 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

   

Продолжение темы -  оптимальный язык программирования - FORHT

ноябрь 2012 года

 

Для понимания достоинств работы с языком FORTH приведен пример расширения exe-файла(приложений)

 

Скачать готовый архив с музыкой  можно тут:  21000 мелодий  перейти к скачиванию exe  

 

Программа - "музыкальный фон". Т.е.  в фоновом режиме играет музыка. Пользователь самостоятельно(!)   переделывает файл exe с новыми файлами  музыки.

 

 

Действие 1 -  играть программу музыки в фоновом режиме с первичным архивом музыки:

  http://90.189.213.191:4422/

     -   скачать, разместить в удобном каталоге например с:\temp\1 , сделать ярлык с командной запуска  k 3 8 i  Этот ярлык запускает программу для проигрывания фоновой музыки.

 Ярлык располагаем  в удобном месте.

 При работе программы в  "трее" висит желтая иконка с  буквой =М=   

 

Упрощенный вариант без ярлыков и с консолью - просто нажать клавишу 8 и i  после  запуска программы.

Работа в окне или без окна в зависимости от Вами выбранного режима.

 

Действие 2 - пришло время сменить репертуар.

Размешаем в Рабочей папке  программы  новую папку  с новым репертуаром. Файлы с расширением mid, kar.

Например, папка с названием "new_muzka"

Выполняем модифицирование файла exe -  варианты:

  - командной  строкой -  test_monsys.exe  k 3 8 7 new_muzka <enter>

  - или через буфер обмена. Открыть окно музыки, нажать цифровую клавишу 7 и через ctrl+c  скопировать имя папки new_muzka

   Программа, из своего "тела" достанет все файлы.

   Поместит в каталог музыки новые файлы.

   Скомпилирует по новой в exe-файл все старые тексты и приложения и новую музыку.

   Новый  exe-файл со старым названием переместит в каталог с новой музыкой.

Если все прошло, как  описано выше - самостоятельно переместите вновь созданный exe-файл на место старого.

 На что надо обратить внимание:

 -  каталог/папка в которой выполняется формирование нового exe-файла,  должна быть доступна для чтения-записи. Рекомендую делать в   каталоге/папке  temp или на рабочем столе пользователя.

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

 -  многие антивирусы появление exe-файла воспринимают как потенциальную угрозу и начинают файл проверять. Возможно, даже и стирание exe-файла, если это задано по умолчанию в защите.  Это будет выглядеть, как  появление  и сразу же исчезновение exe-файла. Отключить защиту на время создания нового exe-файла.

 

Вывод:

- по наблюдению автора, пользователям, чем меньше, всяких установок перестановок, тем спокойней. Как в том старом анекдоте :

 

Построили, значит, новый полностью роботизированный завод. Идет экскурсия по цехам. 
Экскурсовод:(Э.) - Внимание, господа, в этом цехе все роботы управляются операционной системой
MS-DOS.  Посмотрели, идут дальше. 
Э.: - В этом цехе все роботы работают под управлением операционной системы
Unix.  Посмотрели, идут дальше. 
Э.: - Вот в этом цехе все роботы работают под управлением новейшей операционной системы
QNX.  Проходят в след. цех. 

Э.: - А в этом цехе все роботы управляются операционной системой Microsoft Windows'98. Всем присутствующим просьба  надеть защитные каски.

 

- версия Smal32 языка форт в дальнейшем мною не использовалась. http://www.forth.ru/smal32.html  На мой взгляд более удобная версия spf4 http://ru.wikipedia.org/wiki/SP-Forth . Однако, все тексты написанные на smal32 очень просто переводятся на язык spf4 и обратно . Ведь  принципы форта остались!

 

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

 

-----------------------------------------------------------

 

Новосибирск, 12- ноября 2012 год

Успехов и здоровья!

Автор - Шабронов Андрей Анатольевич

Сотовый телефон    +7-913-905-8839

e_mail -  shabronov@ngs.ru  

icq – 310-431-858

 

Релиз 14-2-2017  перевод темы на сервер автора.

Ред. 08-02-2019  добавлены более 20тыс мелодий  МИД-кар и программа большого количества на сервер автора. Мелодии не арихве, а файлами.