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

 

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

 

Вот небольшой пример. Для публикации в Сети различных текстов (книг, статей и т. п.) их требуется отформатировать в соответствии с требованиями языка HTML. Выставлять в Internet тексты можно в том виде, как они есть, с помощью тега <PRE>, но при этом теряются возможности масштабирования. Гораздо удобнее выполнить простое форматирование  -  по окончании абзаца (перед пустой строкой или новым абзацем, начинающимся с отступа в N пробелов) вставлять тег <P>, и текст сразу становится читабельным.

 

Постановщик может сформулировать задачу так: если следующая строка форматируемого текста пустая или начинается с абзаца, то надо добавить “в хвост” текущей строки тег <P>. С его точки зрения, задача поставлена корректно. Но для программиста ее реализация сопряжена с проблемами. Дело в том, что текстовый файл обычно обрабатывается последовательно и узнать, что содержится в следующей строке, пока она не считана, нельзя. А когда она считана, теряется содержимое предыдущей строки. И начинается: буферизация файла, флажки, фиксирующие начало абзаца, и т. д. А ведь если знать базовые принципы HTML и программирования, то сформулировать задачу можно иначе: если текущая строка форматируемого текста пустая или начинается с абзаца, то добавить в ее начало тег <P>. Все! Работа HTML-конвертера при обработке такого текста в сравнении с предыдущим вариантом не меняется, а запрограммировать решение значительно проще: считал строку, проверил ее и, если надо, вставил тег и записал строку в выходной файл.

 

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

 

Сергей Бобровский

 

К автору можно обратиться по адресу: softart@postman.ru.