Журнал «Потенциал»/Reuse. Методология повторного использования

Исходный вариант статьи (А. В. Ворожцов, Reuse: повторное использование кода) опубликован в журнале «Потенциал» №10, 2007 год.

Термин reuse («повторное использование») активно используется программистами в практике. Например, сделали вы себе красивый аватар и можете поместить его и на свою домашнюю страницу, и в социальные сети добавить. Или другой пример: написали вы библиотеку функций для работы с трёхмерной графикой и теперь можете использовать её во всех своих приложениях, где возникает необходимость рисовать 3D-картинки. Это просто и очевидно.

При всей простоте за термином reuse скрывается достаточно сложная методология, позволяющая решать задачи необъятной трудности и осуществлять метасистемные переходы в науке и технике. Здесь можно вспомнить и фразу «Я встал на плечи гигантов и увидел дальше их» Исаака Ньютона, и метасистемные переходы в живом мире: от белков к живым клеткам, от клеток — к тканям и органам, от органов — к живым существам, от живых существ к сообществам и экосистемам.

Метасистемный переход – это изменение (повышение уровня) организации системы, при котором элементарными объектами новой системы становятся системы предыдущего уровня. Этот термин ввёл В.Ф. Турчин в работе «Метасистемные переходы».

Reuse – это оперирование имеющимися методами, инструментами, алгоритмами и решениями с целью получения новых методов, инструментов для решений новых задач. По сути, reuse – это важнейший метод, который позволяет осуществлять метасистемные переходы при построении компьютерных (и не только) систем.

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

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

Современные программисты (возможно, неосознанно) активно работают над методами осуществления метасистемных переходов на уровне алгоритмов. Это, в первую очередь, проявляется в том, что они активно используют уже разработанные алгоритмы и системы, стараются выделить классы задач, найти для них общее приемлемое решение и опубликовать (продать) его в стандартном удобном виде.

У программистов слово reuse означает, прежде всего, модульное программирование, то есть программирование, направленное на создание самостоятельных моделей – кирпичиков, из которых строятся сложные системы. Модуль должен представлять собой достаточно общий набор инструментов (функций, классов, библиотек функций), который может быть использован при решении широкого класса задач и при создании других модулей. Итак суть идеи, которую обозначают словом reuse, можно выразить следующим образом:

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

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

Дальнейшее чтение

править