Отправляет email-рассылки с помощью сервиса Sendsay

Создаем свой бизнес

  Все выпуски  

Создаем свою информационную систему


Информационный Канал Subscribe.Ru

Создаем свою информационную систему


Выпуск 3. Одним ударом семерых…

Если помните, я предлагал решить относительно простую задачу. Напомню её условие.

 

Задача:

«Напишите программу, печатающую копию собственного исходного текста. Программа не должна использовать никаких входных данных (файлов, баз данных и т.п.)»

 

Насколько я понимаю, пока сделать это смог только один человек, и тот мой хороший знакомый, а как же остальные «читатели»?

Подождем еще немного, а потом я просто опубликую свой вариант решения.

 

Возникает резонный вопрос, а зачем она нам нужна эта задача? 

На это есть очень простой ответ. 

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

 

Такая программа называется генератором кода. И, как мы скоро убедимся, ее можно написать достаточно просто.

 

Есть смысл сделать небольшую классификацию программ такого типа.

 

Понятно, что генераторы могут быть зависимыми от внешних данных и не зависимыми от внешних данных.

 

Для независимых генераторов можно ввести единственный критерий:

соотношение объема сгенерированного кода к объему кода генератора. 

 

КНГ = Объем сгенерированного кода делить на Объем кода генератора.

 

Если этот коэффициент меньше 1, то мы зря потратили время. Но если он больше 1 – это значит, что мы уже получили какой-то выигрыш.  Ну,- скажите вы, это все разговор про какие-то абстракции.

 

 

А теперь посмотрите на какой-нибудь Интернет сайт с этой точки зрения.  В принципе, большинство сайтов – это и есть генераторы HTML кода. И большинство из них -  именно генераторы независимые от  внешних данных. 

 

О как!  Оказывается, что мы не про какую-то абстракцию говорим, а про целый пласт программ.

 

Но это еще не самое интересное.

Давайте-ка посмотрим на генераторы, которые зависят от внешних данных. Тут надо уточнить, что такое внешние данные. Есть данные настроечные (путь на диске, параметры базы данных и т.п.), они как правило мизерного объема. И есть данные, которые прямо влияют на процесс генерации. Я называю такие данные метамоделью. Правильно это или нет – сейчас совершенно не важно.  Важно другое. Для генераторов второго типа надо рассматривать другой коэффициент: 

 

КЗГ = Объем сгенерированного кода делить на Объем метамодели.

 

Если хочется учесть сложность самого генератора, то можно это сделать, изменив формулу следующим образом:

 

КЗГ2 = (Объем сгенерированного кода – Объем кода генератора) делить на Объем метамодели.

 

КЗГ – это коэффициент интеллектуальности генератора кода. Если он существенно выше 1, это значит, что генератор экономит вам огромную кучу времени.

 

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

 

Очень приличным генератором баз данных является, например, ErWin, но и его коэффициент КЗГ весьма не высок, я думаю он не превышает 5-6.  Но с другой стороны, это значит, что за то же время вы можете сделать в 5-6 раз больше!

 

А возможны ли генераторы с КЗГ = 50, или 100?

 

Понимаете ли Вы, что если это возможно, то один человек может сделать работу 50, или даже 100.

 

Ладно, пусть такой «умный генератор» сделать не получится.  Но всегда можно сделать группу из нескольких ну не очень умных генераторов. Объем модели останется прежним, а они будут ее последовательно обрабатывать  и каждый делать свой кусочек системы. Ну, например 3 генератора, каждый с КЗГ =5.

Это значит, что один человек может работать за 15.

 

Это понятно?

 

 

Ведущий рассылки: Михаил М. Баранов
bami@realbh.ru www.realbh.ru

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.murometz2
Отписаться
Вспомнить пароль

В избранное