Архитектурная медитация к нанотехнологиям или Легкое обновление

Авторы: Алексей Недоля, Иван Скоморох
Электронная почта: market@webaby.ru
http://www.webaby.ru/store/lightupdate.htm

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

Но нас сейчас занимает другой вопрос – могут ли иметь нанотехнологии какое-то отношение к разработке программных продуктов? Пусть косвенное, пусть на уровне неких общих подходов?

Если говорить самыми общими словами, нанотехнологии дают возможность собирать машины и механизмы на уровне молекул и атомов и делать инструменты точно соответствующие задаче, которую они решают.

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

«Прогноз развития нанотехнологий c 2003 по 2050 гг.»
Юрий Свидиненко
http://www.nanonewsnet.ru/help/nanotree

А что мы имеем сейчас в программировании? Технологии сборки и конструирования каменного века!

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

Теоретики и практики программирования уже 60 лет бьются об задачу повторного использования частей программ. За эти 60 лет было сделано много попыток решить эту задачу, сделать «стандартные» части и перейти к промышленному программированию. Так появлялись: процедуры, библиотеки, модули, COM и OLE, объектно-ориентированное программирование… но воз и ныне там.

Почему? Выскажем крамольное предположение – потому что за все эти 60 лет не было сделано ни одной попытки по настоящему разработать архитектуру программ. А как можно собирать программу из готовых частей, если нет того архитектуры или костяка, в которую эти готовые части вкладываются?

Вопрос, почему программисты не делали таких попыток – это вопрос, на наш взгляд, скорее психологический, чем технологический. Достаточно вспомнить «лудитские войны»…

Боюсь, что люди стоящие в стороне от программирования даже не подозревают, насколько не проработана в программировании архитектура программ.

Конечно, ни один разговор о современных технологиях программирования не обходится без разговора об архитектуре. Но, как правило, этот разговор сводится к обсуждению того, что у программы должна быть архитектура, и что некоторые люди могут разрабатывать архитектуру жизнеспособных программ. Мы знаем, что эти люди ценятся и получают большую зарплату. Вот только никто не знает, как они это делают и почему у одних это получается, а у других нет…

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

Как подойти к разработке архитектуры? Попробую взглянуть на архитектуру с неожиданной стороны. Посмотрим на неё взглядом «от покупателя», и взглянем сквозь одну помеху, с которой мы, пользователи программного обеспечения, сталкиваемся почти каждый день. И часто даже не замечаем её, настолько привычной она стала.

К примеру, для того, чтобы слушать музыку, я использую свою любимую программу – проигрыватель, версии, скажем 5.6.7. Разработчик выпускает новую версию 5.6.8, и я её скачиваю, устанавливаю, проверяю. И потом решаю, стоит ли мне оставить эту новую версию, в которой разработчики сделали что-то новенькое. Или вернуться к старой, проверенной. Выбор этот часто оказывается непростым, но мы говорим сейчас не о нем.

Посмотрим на отличия между версиями. Как правило, они не такие уж большие – что-то исправлено, что-то улучшено, что-то добавлено. Но чтобы поставить новую версию мне надо:

1) Скачать её целиком, а это никак не меньше нескольких мегабайт.
2) И установить, проходя еще раз через все сложности установки.

Почему так? Почему я должен раз за разом повторять одни и те же действия, и раз за разом скачивать мегабайты, и устанавливать программы? Почему это должен делать я, если у меня есть компьютер?

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

Возможно ли это?

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

А как сделать, чтобы все программы можно было обновить просто? Например, как, это сделано вКартмейстере-2 от WEBaby с помощью инструмента «Легкого обновления».

И если мы потребуем, чтобы все наши программы обновлялись легко, то каким требованиям должна удовлетворять архитектура таких программ?

Попробуем помедитировать на тему «Легкое обновление», а для этого отключимся от груза наших знаний о программировании и посмотрим со стороны. Тогда ответ становится совсем прост.

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

Программа должна состоять из «стандартных», легко заменяемых и легко добавляемых частей. И у неё должно быть устройство, которое позволяет легко вытащить одну часть, заменить её, вставить новую…

Кажется что-то такое нам когда-то обещало объектно-ориентированное программирование, потом компонентно-ориентированное программирование. Или это был DCOM и OLE? Впрочем, не будем о грустном.

У меня странное состояние, кажется, я рассказываю небывальщину. И одновременно, я знаю, что эта небывальщина уже воплощена и работает.

Берем программу, устанавливаем её один раз. А потом докачиваем те обновления, которые нам нужны. И в программе появляются новые кнопки, окна, возможности.

Чудо? Или «побочный эффект» архитектурного устройства?

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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Дата публикации: