Разработчик программного обеспечения Алан Купер объясняет, почему его называют «отцом Visual Basic».

Поскольку у моей фирмы по разработке интерактивного дизайна Cooper уже более двух лет появились новые владельцы, неудивительно, что некоторые из моих более личных сообщений в Интернете были незаметно удалены из Cooper dot com. Одним из пострадавших было эссе, которое я изначально написал и опубликовал в 1995 году, в котором рассказывается история происхождения Visual Basic. Я репостю его здесь с небольшими изменениями исходного текста, который я написал 25 лет назад.

Митчелл Уэйт назвал меня «отцом Visual Basic» в предисловии к тому, что я считаю первой книгой, когда-либо опубликованной для Visual Basic (VB), под названием Visual Basic How-To (теперь в нескольких изданиях, опубликовано The Waite Group Press). Я подумал, что это название было подходящим, и часто использовал цитируемую фразу в качестве своей однострочной биографии.

В 80-е годы мой бизнес состоял в изобретении программного обеспечения и его продаже издателям. В 1986 году я выбрал Microsoft Windows в качестве платформы. Он не только выполнял все ожидаемые функции поддержки графического интерфейса, но и обладал уникальной и чрезвычайно желанной функцией: используя функцию библиотеки динамической компоновки (DLL), вы могли создавать инструменты, которые настраивались динамически. В тот момент, когда я узнал об этом, я знал, что у Windows будет большое и успешное будущее. В то время я узнал еще один очень важный факт о Windows: ее оболочка была ужасной.

Первоначальная оболочка Microsoft, называемая MSDOS.EXE, была чрезвычайно глупой и была одним из главных препятствий на пути к первоначальному успеху Windows.

В свободное время я сразу же начал писать лучшую программу-оболочку, чем та, что была в Windows. Я назвал его «Штатив». Первоначальная оболочка Microsoft, называемая MSDOS.EXE, была чрезвычайно глупой и была одним из главных препятствий на пути к первоначальному успеху Windows. Штатив попытался решить проблему, сделав его более простым в использовании и настройке. Но только в конце 1987 года, когда я брал интервью у корпоративного клиента, мне в голову пришла ключевая стратегия дизайна для Tripod. Когда этот менеджер информационной безопасности объяснил мне, что ему необходимо создавать и публиковать широкий спектр решений оболочки для его разрозненной базы пользователей, я понял загадку, что не существует такой вещи, как идеальная оболочка. Каждому пользователю потребуется собственная личная оболочка, настроенная в соответствии с его потребностями и уровнем квалификации. В мгновение ока я понял решение проблемы проектирования оболочки: это будет конструктор оболочки - инструмент, в котором каждый пользователь сможет построить именно ту оболочку, которая ему нужна для уникального сочетания приложений и обучения. Вместо того, чтобы я рассказывал пользователям, какой была идеальная оболочка, они могли разработать свою собственную персонализированную идеальную оболочку.

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

Первое, что мы сделали, это выбросили мой код прототипа и начали все сначала.

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

Поскольку я занимался изобретением программ и продажей их издателям, я начал показывать Tripod по отрасли. Многие компании Кремниевой долины увидели это, но мало кто проявил серьезный интерес. Однако в марте 1988 года я показал этот прототип Биллу Гейтсу, и он сразу увидел его потенциал. Он заявил, что это «круто» и что это окажет значительное влияние на всю линейку его продуктов. Билл сказал, что хочет его купить, и в течение следующих нескольких месяцев мы заключили сделку. Поскольку название «Штатив» пользовалось большой популярностью, мы сразу изменили его на «Рубин». Тем временем я собрал команду опытных программистов для создания качественной программы.

Команда состояла из Марка Меркера, Гэри Краткина, Майка Гири и Фрэнка Рааба. Первое, что мы сделали, это выбросили мой код прототипа и начали заново. Он вырос до более чем 25 000 строк кода C, и, хотя он содержал много ценных идей, сам код отражал его роль в качестве испытательного стенда для различных идей. Вся команда упорно работала в течение следующих 18 месяцев, чтобы в конечном итоге создать Ruby. Продукт прошел проверку командой Microsoft по обеспечению качества, и в начале 1990 года мы отправили золотой мастер в Редмонд.

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

Поскольку Microsoft владела исключительными правами на Ruby, они могли делать с ним все, что им заблагорассудится.

Ruby поставлялся с небольшим языком, подходящим только для выполнения десятка или около того простых команд, необходимых программе оболочки. Однако этот язык был реализован в виде цепочки DLL, любое количество из которых можно было установить во время выполнения. Внутренний синтаксический анализатор будет идентифицировать глагол и затем передавать его по цепочке DLL, пока одна из них не признает, что знает, как обрабатывать глагол. Если все библиотеки DLL прошли, это означало, что произошла синтаксическая ошибка. С самого начала наших обсуждений мы с Microsoft вынашивали идею развития языка, возможно, даже его полной замены «настоящим» языком. C был наиболее часто упоминаемым кандидатом, но в конце концов Microsoft воспользовалась этим динамическим интерфейсом, чтобы отключить наш маленький язык оболочки и полностью заменить его QuickBasic. Этот новый союз языка и визуального интерфейса был статическим и постоянным, и, хотя исходный динамический интерфейс сделал это соединение возможным, оно было потеряно в процессе.

С самого начала в процессе проектирования я продвигал идею сделать палитру гизмо динамичной. Я представлял себе продукт, в котором сторонние поставщики могли бы писать свои собственные DLL-гизмо, а пользователи могли бы добавлять их в продукт в полевых условиях без необходимости перекомпиляции. Мы определили интерфейс, с помощью которого Ruby будет опрашивать близлежащие исполняемые файлы с помощью сообщения запроса. Если файл отвечал должным образом, Ruby знал, что это взаимодействующая штуковина, и продолжал запрашивать его значок для отображения на палитре инструментов. Этот интерфейс со временем стал известен как VBX. Насколько мне известно, это было первое практическое использование средств динамической компоновки Windows вне самой операционной системы. Его замечательный успех подтвердил веру как Microsoft в его предоставление, так и меня в поиске практического применения.

Насколько мне известно, это было первое практическое использование средств динамической компоновки Windows.

Поскольку Microsoft владела исключительными правами на Ruby, они могли делать с ним все, что им заблагорассудится. Первоначальное намерение состояло в том, чтобы поставлять его с Windows 3.0 как новую, более мощную и сложную оболочку, очень похожую на ту, которая в конечном итоге будет сопровождать Windows 95. Вместо этого Microsoft решила поставлять Windows 3.0 с оболочкой, которая выглядела почти так же, как оболочка, которая поставляется с OS | 2, продуктом, которым в то время владела Microsoft. Было принято решение отложить выпуск Ruby и преобразовать его из конструктора оболочки для всех пользователей Windows в язык визуального программирования для профессиональных программистов, добавив QuickBasic. Сначала я был очень разочарован решением Microsoft и выступал против него. Однако я был впечатлен мощностью конечного продукта и вскоре стал горячим сторонником Visual Basic.

Все время, пока я работал над Ruby, я был в жестком соглашении о неразглашении с Microsoft и никому не мог рассказать о том, над чем я работаю. В течение почти четырех лет я молчал, хотя знал, что Ruby изменит ландшафт программирования. Вскоре после выпуска VB мой друг Митчелл Уэйт позвонил мне, чтобы спросить, был ли я Купером, упомянутым в VB About Box. Я признался, что это был я, и он пригласил меня на обед, чтобы он мог услышать всю историю из первых рук. Мы встретились в Сан-Франциско, и я рассказал ему ту же историю, которую только что рассказал вам. Когда я закончил, он с удивлением посмотрел на меня и произнес: Это делает вас отцом Visual Basic!

У меня есть два сына, которым было 9 и 10 лет, когда я впервые написал это эссе, и хотя я сыграл важную роль в их создании и остаюсь важной частью их жизни, они сами по себе являются независимыми людьми. Наблюдая, как они растут по-своему и принимают собственные решения относительно своей жизни, я знаю, что на самом деле значит быть отцом, и фраза Митчелла с каждым днем ​​кажется мне более подходящей. Я создал VB так же, как и маленьких Скотта и Марти. Я стою как гордый отец VB, поскольку он растет, взрослеет и создает свою собственную культуру.

В мае 1994 года на конференции Windows World в Атланте, штат Джорджия, Билл Гейтс наградил меня одной из семи премий Windows Pioneer Awards за мой вклад в успех Windows посредством создания Visual Basic. Вы можете посмотреть, как я - и мои волосы - принимаю награду, и ответить на вопросы Билла здесь.