Я понимаю естественное желание компьютерных журналов быть на острие проблем компьютерного мира. Но этот мир так быстро меняется, так бурлит новостями, что, поспевая за ними, мы не находим времени поговорить о "вечных" проблемах.
Одна из таких проблем - выбор языка, а точнее, среды программирования. На протяжении долгой программистской жизни мне не раз приходилось заниматься ею и как программисту, и как преподавателю. Написав книжку по Visual C++ (Биллиг В. А., Мусикаев И. Х. "Visual C++ 4. Книга для программистов") и получив множество откликов, я убедился, что эта тема по-прежнему волнует многих. Вот выдержки из двух писем:
"Моя совместная работа с французами требует программирования именно на Visual C++, а не на Borland C++ или Delphi, поэтому книгу по Visual C++ я ищу давно. Интересовался в издательствах BHV, "Символ Плюс", "Питер Пресс". Они издали массу переводной литературы по Borland и сейчас переключились на Internet. Visual C++, таким образом, из их поля зрения выпал..."
"Я студент и работаю над системой моделирования рассеяния радиоволн от сложных 3D-целей. Почти полгода я выбирал себе инструмент для работы над этим сложным проектом. Опробовав Watcom C++ 10.5, Borland C++ 5.2, Symantec C++, Borland Delphi 2.0 (я также знаю и Pascal), я остановился на Visual C++.
Продукт Watcom был отброшен исключительно из-за убогости IDE. Я ничего не успел бы сделать, если бы пользовался им. У Borland C++ изощренный, но слишком запутанный интерфейс, а качество кода хуже, нежели у Visual C, к тому же финансовое положение Borland делает сомнительным выход следующих (после Borland C Builder) версий этого языка, а библиотека OWL показалась мне слишком неудобной. Продукт Symantec был отвергнут примерно по тем же причинам (библиотеку MFC лучше использовать с продуктом ее создателя). Особо стоит упомянуть Delphi. Чрезвычайно удобная IDE и обилие справочной литературы позволяют сказать, что среди непрофессионалов будет господствовать именно эта система".
Первое письмо написал Николай Андреевич Корнев, кандидат наук, человек с большим программистским опытом. Второе - студент 3-го курса МВТУ им. Н. Э. Баумана Дмитрий Беленко.
Какие выводы можно сделать из этих писем? Вывод первый. Эти люди предпочли Visual C++ другим системам программирования, правда, по разным причинам: один следуя условиям контракта, второй по выбору. И обратите внимание, насколько серьезно подошел к проблеме молодой начинающий программист. Честно скажу, я рад, что у нас есть такие студенты, - это значит, не все так плохо в "датском королевстве". Вывод второй. Читатели аргументировано поддерживают точку зрения, изложенную в нашей книге, подтверждая, что Visual C++ в большей степени, чем Delphi, подходит профессионалам, разрабатывающим серьезные и долговременные проекты. Вывод третий. Компьютерной литературы - изобилие, но найти нужную (да еще и хорошую) книжку совсем не просто. По ходу замечу, что по Visual C++ появилось еще два толстых тома. Один из них - книгу Круглинского - мы рекомендовали бы иметь всем серьезным программистам на Visual C++.
Но вернемся к теме разговора. Юноша, "обдумывающий житье", коллектив программистов, начинающий серьезную разработку, "компьютерная" кафедра, в очередной раз изменяющая учебную программу, - всем им приходится решать проблему выбора языка и среды программирования. По крайней мере в первых двух случаях от правильного выбора зависит профессиональная карьера и материальный успех.
Сегодня последствия неверного выбора стоят гораздо дороже, чем 10 лет назад, так как изменилась экономическая ситуация и на порядок выросла сложность систем. Программисту высокой квалификации для овладения всеми тонкостями работы с такой громадиной, как тот же Visual C++, требуется около года упорной работы. Прошла пора универсалов от программирования, наступает время узкой специализации.
Но какова реальная картина сегодня? Что выбирают для своих разработок профессионалы и те, кто хотят ими стать? Вряд ли кто-либо обладает достаточно полной статистикой по этому вопросу. Могу лишь поделиться моими собственными наблюдениями - при начальном обучении программированию в вузах преобладает Паскаль, большинство коллективов для собственных разработок выбирают Foxpro или Delphi, молодежь набросилась на Яву (Java). Общее ощущение - мы уходим с магистрального пути развития и пытаемся идти собственным путем. В порядке эксперимента я решил через Internet поискать работу для программиста в США. Требуются программисты со знанием Visual Basic и С++, требуются программисты со знанием Кобола (жив курилка!), но заявки на Delphi-программиста я нашел только на сервере Delphi.
Попробую сформулировать собственную точку зрения на проблему выбора среды программирования. Начну с обучения. Подготовку студентов к профессиональной работе программиста я начинал бы с обучения визуальному языку программирования. Visual Basic, на мой взгляд, - один из лучших кандидатов на эту роль. Но нельзя ограничиваться только языком программирования. Поэтому далее следует заняться тем, что сегодня называют офисным программированием. Оно предполагает работу с электронными таблицами и базами данных (текстовый редактор - вещь сама собой разумеющаяся).
Нужно сказать, что последнее время я полюбил Excel и оценил его мощь для решения широкого круга задач. Офисное программирование предлагает некоторое новое качество - "программирование без программирования", по крайней мере, в традиционном понимании. Вот только один пример. Типичная задачка для первокурсников - получение чисел Фибоначчи - в Excel решается, по существу, одним щелчком, в то время как написание программы требует определенных усилий. Но Excel предлагает значительно больше - мощный статистический анализ, построение диаграмм, обработку финансовой информации, решение задач оптимизации.
Важной частью офисной среды являются средства для работы с базами данных любых форматов на основе ODBC. Профессионально овладев офисным программированием, можно на этом уровне и остановиться, заработки гарантированы, так как круг задач неисчерпаем.
Следующий уровень - это уровень больших проектов. Здесь необходимы более серьезные средства - язык типа Visual C++, СУБД, например Oracle, средства поддержки совместной работы и, конечно, работа в сети.
Если говорить о большом проекте, то выбор среды программирования для него сложен и ответственен. Слишком много параметров нужно принимать во внимание, например эффективность кода и эффективность использования ресурсов компьютера. Кроме того, следует учитывать возможности и удобство работы с каркасом приложений - библиотекой классов, лежащей в основе построения приложений. Примерами каркасов приложений служат MFC - библиотека Visual C++ и OWL - библиотека Delphi. Еще один параметр - средства поддержки больших проектов (DLL, ActiveX, DAO и т. д.). Как видите, поводов для дебатов сколько угодно. Для меня, когда я делал свой выбор в пользу Visual C++, решающими все-таки были два аргумента - открытость системы и гарантированное ее развитие в обозримом будущем. Visual C++, пожалуй, открыта для профессионалов, как никакая другая система. Чем выше ваш профессиональный уровень, тем больше вы можете повлиять на код, создаваемый системой. Это принципиальное отличие Visual C++ от Delphi . Что же касается перспектив, то на ближайшие 5 - 7 лет для Visual C++ они гарантированы.
В заключение мне хотелось бы обратиться к истории - ведь проблема выбора языков не нова и бурные дебаты всегда имели место. В начале 60-х годов было три главных языка - Алгол, Фортран и Кобол. В Союзе и Европе, пожалуй, первый был наиболее популярным. В Штатах и у физиков всего мира был более популярен Фортран. Этот язык многие уважаемые в программистском мире люди справедливо критиковали за ненадежность. Все знали о классической ошибке Фортран-программиста, поставившего точку вместо запятой в своей программе. Он написал DO 3 I = 1.3 вместо DO 3 I = 1,3. Фортран не нашел синтаксической ошибки и проинтерпретировал эту запись, как оператор присваивания. Эта ошибка стоила миллионы долларов, так как находилась в программе, управлявшей полетом ракеты, кажется, к Марсу.
Фортрану досталось поделом за ненадежность, ведь в Алголе эта ошибка была бы немедленно обнаружена. Тем не менее Алгол умер, а Фортран продолжает жить, по крайней мере в среде физиков, и в прошлом году праздновал свой юбилей - 40 лет, немалый срок для языка программирования. И сегодня в Development Studio включен Фортран Power Station. Продолжает жить в своей экономической нише и Кобол. Программисты, работающие на нем, по-прежнему требуются в Штатах.
Delphi я бы назвал прямым потомком языка Алгол, а Фортран - дедушкой Си. И если история чему-то учит, то скорее погибнет более рафинированный Delphi, чем прагматичный Visual C++.
Думайте, господа. Делайте свой выбор осознанно. Для всех, кто готов высказать свою точку зрения по этой проблеме, мой адрес: bill@tversu.ac.ru.
Владимир Биллиг
От правильного выбора языка и среды программирования могут зависеть профессиональная карьера и материальный успех