Если Вы научитесь программировать на VBA, поймете принципы разработки алгоритмов и основные приемы программирования, освоите среду написания программ — редактор VBA, то для Вас практически не составит труда начать создавать программы на Visual Basic for Windows. У этого языка абсолютно такой же синтаксис, такая же среда разработки с контекстной справкой и пошаговыми подсказками, на первый взгляд он отличается от VBA разве что набором доступных встроенных процедур и функций и отсутствием возможности записи макросов. Безусловно, есть и более глубокие различия, но при создании не очень сложных программ они не будут иметь большого значения. Вы сможете легко освоить средство разработки программ Delphi, хотя логика языка Pascal, лежащего в основе Delphi, несколько отличается от логики Visual Basic. Однако и среда разработки, и общие принципы программирования в Delphi те же. Несколько труднее будет освоить C++ и его производные из-за серьезно отличающегося синтаксиса и высокой сложности этого языка, но это не всегда необходимо, — подавляющее большинство проектов программ можно реализовать на Visual Basic или Delphi.
Среди тех, кто занимается программированием уже много лет и достиг в этом деле определенных высот, весьма распространено мнение, что VBA, да и Visual Basic — языки, на которых нельзя создать быстро и хорошо работающие программы. В определенной степени это соответствует действительности: программы на Visual Basic обычно работают несколько медленнее и занимают больше места, чем аналогичные им программы на C++, на Visual Basic весьма проблематично решение некоторых программистских задач и приемов. Поэтому профессиональные программисты часто считают, что Visual Basic — язык для дилетантов, а любой уважающий себя специалист в области информационных технологий обязан знать и использовать такие языки, как C++ или ассемблер. Но не следует забывать, что изначальное предназначение компьютерных технологий — помощь человеку в обработке и создании информации, а отнюдь не "служение самим себе", своему дальнейшему развитию. Поэтому основная функция большинства компьютерных программ — получение нужного результата, обработка вводимой информации, например, анализ электрокардиограммы или расчет траектории космической ракеты, а быстродействие, малый размер, да и удобство интерфейса — лишь их хорошие свойства, которые могут серьезно облегчить работу с программой.
Создать же программу, дающую действительно нужный результат, может лишь человек, непосредственно работающий в области, для которой данная программа пишется, — врач, инженер, астроном, математик. Только он знает все тонкости своего дела и сможет предусмотреть в программе все необходимые условия. Профессиональный программист же, хоть и имеет возможность создать программу, которая будет работать в несколько раз быстрее и занимать на диске значительно меньше места, чем написанная врачом или инженером, не представляет себе тонкостей области человеческой деятельности, для которой эта программа пишется, а поэтому, при всей внешней привлекательности, такая программа будет работать хуже, чем первая. К примеру, какая программа для анализа электрокардиограмм лучше: созданная опытным специалистом в области медицины, который посвятил всю свою жизнь исследованию электрокардиографии и знает все-все тонкости этого дела, или написанная не менее опытным программистом, который знает все языки программирования как свои пять пальцев, но, увы, не знаком с медициной? Даже если врач обратится к программисту с просьбой помочь ему написать эту программу, то он все равно не сможет посвятить того во все тонкости своего дела, чтобы отразить в программе все грани своего многообразного опыта, — на это может уйти слишком много времени и сил, да и нелегко программисту будет изучить совершенно незнакомую ему до этого сферу деятельности! Поэтому врач, немного знающий программирование, больше подходит для написания медицинской программы, чем профессиональный программист, немного знакомый с медициной. И пусть программа врача будет работать медленнее, пусть она будет занимать на диске в два раза больше места, пусть даже при ее создании будут нарушены все сложившиеся каноны программистского искусства, — все равно она сможет принести людям гораздо больше пользы, чем программа, прекрасно и хорошо написанная не знакомым с медициной человеком, так как только врач сможет поделиться с ней всем своим многогранным опытом[16]
.