Статья: На чем писать программы? (краткий обзор возможностей языков программирования)
Сегодня мы продолжаем разговор на тему какой язык программирования выбрать, начатый с статье “Delphi или Visual C++ - вот в чем вопрос”. Тема оказалась глубже, чем казалось на первый взгляд, и я провел некоторые исследования по этому вопросу. Результат я хочу представить на ваш суд.
Подвигла меня к этому статья “Лучшие продукты” в журнале “Мир ПК” за январь 2001. Где опубликованы результаты опроса среди читателей журнала на тему лучших инструментов разработки, лучших персональных СУБД и корпоративных СУБД.
Так, среди персональных СУБД лучшей считают:
Microsoft Access 2000 – 49%
голосовавших за другие версии того же Microsoft Access – 23%
голосов на долю FoxPro – 19%
и только 9% на долю остальных СУБД.
Нужно ли говорить, что Access программируется, в основном, при помощи Visual Basic.
Если рассматривать корпоративные СУБД, то уверенно лидирует MS SQL server, 21% за Oracle и только один из опрошенных назвал Borland IB Database
Из средств разработки лучшим назвали:
Delphiот Borland – 45% голосов
Borland С++ Builder – 14%
Microsoft Visual Basic – 28%
Visual C++ - 8%
Цифры меня заинтересовали, так как я считал, что Microsoft лидирует по всем направлениям и я провел небольшое сравнение этих средств разработки. Результаты представлены в Таблице 1:
Я не рассматривал отдельно Delphi и Builder только по тому, что все возможности Delphi доступны в Builder.
Таблица 1 Сравнительная характеристика языков программирования.
№ | Характеристики | Средства | |||
Visual Foxpro | Access (VisualBasic) | VC++MFC | BC++ Builder | ||
1. | Принцип обработки кода |
Интерп.(псевдо Компилятор) | Интерп.(псевдокомпилятор.) | Компил. | Компил. |
2. | Язык |
DBASE c с объектами | Basic c Объектами | С++ | С++, Pascal |
3. | Система | Закрытая | Закрытая | Открытая | Открытая |
4. | Встроенные базы данных | DBF, DBC, ODBC | MDB, ODBC |
Классы обработки MDB, SQL через DB-библиотеку, ODBC | Объекты обработки dBASE, Paradox, InterBase, MDB, Informix, FoxPro, ODBC |
5. | Создание пользовательских мастеров | - | - | + | + |
6. | Динамическое создание форм ввода, обработки сообщений | + | + | - | + |
7. | Модель создания приложения | - | - | каркасная (мастер) | компонентная (мастер) |
8. | Технология | Построители экранов, меню, отчетов (drag-and-drop), классов | Построители экранов, меню, отчетов (drag-and-drop), классов | Редактор классов, Редактор ресурсов (drag-and-drop) | Редактор объектов (drag-and-drop) |
9. | Вывод из баз данных на печать | Встроенный Report | Встроенный Report | Внешний | Объект : Report |
10 | Обработка исключений | Процедура | Процедура | Объект | Объект |
11 | Поддержка CASE Rational Rose | - | + | + | - |
Естественно, таблица нуждается в некотором пояснении.
Пункт 1. FoxPro, Basic являются интерпретаторами, С++ - компилятором. Что из этого следует - понятно. При помощи интерпретаторов можно быстро собрать работающее приложение и изменять его по ходу работы программы, вплоть до того, что создавать программы “на лету”(строка 6 таблицы). Но за это приходится расплачиваться скоростью работы конечной программы. Правда, при таком развитии компьютерной техники, когда уже 1000 Мгц никого не удивишь, на это можно слегка прикрыть глаза.
Но вот размер готовой программы для интерпретатора принципиально не может быть маленьким, ведь необходимо тащить за собой всю оболочку, авось понадобиться какая-нибудь функция. Компиляторы на эту тему намного скромнее.
Последний Visual Basic уже заявлен как и компилятор тоже, но что-то слабо вериться, что можно сделать из Basic нормальный компилятор, но кто знает…
Пункт 2. Не нуждается в комментариях
Пункт 3. Почему я называю первые два инструмента закрытыми? Потому что это действительно так. Если какая-то функция языка работает не так, как нужно, то тут уже ничего не поделаешь. Если оболочка выпадает по Fatal Error, то в С++ можно всегда посмотреть код, пройтись по трассировке и проверить, что сделано неправильно. В VC++ вся библиотека MFC поставляется с открытым кодом. В интерпретаторах остается только гадать, как обойти ошибку. Например, в Foxpro команда
--> ЧИТАТЬ ПОЛНОСТЬЮ <--