04 августа 2020 года    
Вторник | 03:01    
Главная
 Новости
Базы данных
Безопасность PC
Всё о компьютерах
Графика и дизайн
Интернет-технологии
Мобильные устройства
Операционные системы
Программирование
Программы
Связь
Сети
 Документация
Статьи
Самоучители
 Общение
Форум







Разделы / Программирование / Другие

Компонентное программирование.

М. Безверхов.
vasilisk@nm.ru

Компонентное программирование.

Глава 2. Истоки.

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

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

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

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

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

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

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

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

Унификация парка вычислительной техники, появление нескольких «стандартных архитектур» компьютеров сформировало вокруг машины рынок пользователей программного обеспечения, который не был замкнут в пределах какой-то одной фирмы или корпорации. Это соответствует этапу разработки радиоаппаратуры на сверхбольших интегральных схемах – парадигмы и стандарты в области программного обеспечения начинают играть глобальную роль и быть зависимыми, скорее, от всего рынка, а не конкретного производителя программ.

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

Но ведь это состояние достигнуто и делает его инсталлятор! Так ли это, давайте оценим...


 Компонентное программирование.
Лента новостей


2006 (c) Copyright Hardline.ru