b.s Сразу отбросим вопросы производительности, безопасности и оптимальности. Для данной зарисовки они не важны.
Последние топики про программирование на языке bat файлов напомнили вот такую концепцию. Оно конечно написано в шутку, но почему бы и нет. Может у кого-то в голове что-то и перевернет. ;)
Не претендую на авторство — наверняка такая идея уже кем-то была придумана ранее.
Итак. Возьмем для примера программку на языке C. Пишем, компилируем, получаем черный ящик бинарного кода. Он выполняется в отдельной области памяти и недоступен для простого обывателя (ну разве что вооруженного дебагером).
Для программки на скриптовом языке примерно то же самое — хоть исходники и под рукой, но что происходит в памяти интерпретатора — темный лес.
А не вывернуть ли все это наружу? На уровень доступный пользователю ОС. На уровень файловой системы. :)
Пусть это будет объектно ориентированная программа.
Создаем каталог:
Объект станет вложенным каталогом:
Его свойства окажутся просто обычными файлами:
Его методы будут мелкими программками:
Каждый метод будет выполнять свою мелкую задачу и завершаться. На вход будет получать перечень файлов-аргументов в командной строке, а результатом будет созданный файл. Что будет происходить внутри метода — пока не важно — оставим черным ящиком. Важно что он будет модифицировать свойства объекта (файлики) по мере необходимости.
Пример запуска метода из другого объекта:
в свойство
запускаем метод
получаем файл со стандартным названием нужного типа «return.png» в текущем каталоге и
копируем в свойство:
Как вариант, можно просто использовать перенаправление stdout
Или проще пример:
Что получилось? Теперь внутренности «программки» становятся видны без всяких спец инструментов. Она становится жителем ОС состоящим из ее элементов, а не чем-то инородным, присосавшимся к ней через пуповину API. :))
Что-то вроде этого было заложено в механизм переменных окружения. И слегка напоминает реализацию CGI.
Есть ли в этой шутке какая либо польза? Кто знает.
Из плюсов — такой подход сохраняет состояние программы при перезагрузке ОС. Остается лишь запустить нужный метод по событию.
Ну и как простое наглядное пособие для изучающих программирование тоже может пригодиться.
ps. Protected методы могут будут защищены средствами прав доступа самой ОС. А объекты принадлежать отдельным пользователям ОС (методы запускаются от их имени). Хотя для данной иллюстрации можно обойтись и без этого.
Последние топики про программирование на языке bat файлов напомнили вот такую концепцию. Оно конечно написано в шутку, но почему бы и нет. Может у кого-то в голове что-то и перевернет. ;)
Не претендую на авторство — наверняка такая идея уже кем-то была придумана ранее.
Итак. Возьмем для примера программку на языке C. Пишем, компилируем, получаем черный ящик бинарного кода. Он выполняется в отдельной области памяти и недоступен для простого обывателя (ну разве что вооруженного дебагером).
Для программки на скриптовом языке примерно то же самое — хоть исходники и под рукой, но что происходит в памяти интерпретатора — темный лес.
А не вывернуть ли все это наружу? На уровень доступный пользователю ОС. На уровень файловой системы. :)
Пусть это будет объектно ориентированная программа.
Создаем каталог:
.../bin/test_prg/
Объект станет вложенным каталогом:
.../bin/test_prg/converter/
Его свойства окажутся просто обычными файлами:
.../bin/test_prg/converter/count.txt
.../bin/test_prg/converter/format.txt
Его методы будут мелкими программками:
.../bin/test_prg/converter/init.bin
.../bin/test_prg/converter/to_png.sh
Каждый метод будет выполнять свою мелкую задачу и завершаться. На вход будет получать перечень файлов-аргументов в командной строке, а результатом будет созданный файл. Что будет происходить внутри метода — пока не важно — оставим черным ящиком. Важно что он будет модифицировать свойства объекта (файлики) по мере необходимости.
Пример запуска метода из другого объекта:
текущий каталог: .../bin/test_prj/image/
в свойство
.../bin/test_prj/image/new.jpg
сохраняем исходное изображениезапускаем метод
../convert/to_png.sh new.jpg
получаем файл со стандартным названием нужного типа «return.png» в текущем каталоге и
копируем в свойство:
.../bin/test_prj/image/done.png
Как вариант, можно просто использовать перенаправление stdout
../convert/to_png.sh new.jpg >done.png
.Или проще пример:
../math/add a.txt b.txt >c.txt
Что получилось? Теперь внутренности «программки» становятся видны без всяких спец инструментов. Она становится жителем ОС состоящим из ее элементов, а не чем-то инородным, присосавшимся к ней через пуповину API. :))
Что-то вроде этого было заложено в механизм переменных окружения. И слегка напоминает реализацию CGI.
Есть ли в этой шутке какая либо польза? Кто знает.
Из плюсов — такой подход сохраняет состояние программы при перезагрузке ОС. Остается лишь запустить нужный метод по событию.
Ну и как простое наглядное пособие для изучающих программирование тоже может пригодиться.
ps. Protected методы могут будут защищены средствами прав доступа самой ОС. А объекты принадлежать отдельным пользователям ОС (методы запускаются от их имени). Хотя для данной иллюстрации можно обойтись и без этого.