div.main {margin-left: 20pt; margin-right: 20pt}На Яве сложно программировать
Миф о сложности программирования на Ява основан, большей частью, на
стандартной библиотеке классов. Разработчики Ява предприняли героическую попытку
создать что-то вроде "универсальной библиотеки программиста", включающую в себя
большое количество полезных алгоритмов, с которыми часто сталкиваются при
разработке любых типов программ. Можно сказать, что это им удалось. Стандартная
библиотека Ява имеет древовидную структуру с разделением функций по уровням и
включает большое количество разнообразных классов. Использование единых
стандартных классов упрощает создание и поддержку приложений. Можно, разумеется,
создавать Ява-программы, не используя стандартную библиотеку. Но это неизбежно
приведет к ненужной трате времени и денег. В самом деле, давайте представим себе
разработку приложения группой программистов. Предположим, что для проекта
требуется класс для хранения коллекций объектов в памяти. Предположим далее, что
компания решает разработать подобный класс самостоятельно. Это означает, что не
только требуется время для создания и отладки класса. Гораздо важнее, что
требуется обучение остальной группы работе с данным классом! На это может быть
затрачено больше времени, чем на саму разработку класса! Среда Ява едина для
разных операционных систем и это упрощает жизнь программиста: разработка сложных
алгоритмов происходит всего один раз, а их использование становится возможным на
ряде аппаратных платформ.
Далее, язык программирования Ява является чисто
объектно-ориентированным. Его синтаксис похож на C++, но избыточный функционал,
часто приводящий к ошибкам, отброшен. К подобным возможностям C++ относятся, к
примеру, перегрузка операторов и множественное наследование. Вместо
множественного наследования Ява использует гораздо более простую и удобную
концепцию "интерфейса", то есть именованного соглашения о вызовах набора
функций. Ява использует строгую типизацию и не допустит неверной передачи
параметра. Ява гораздо строже С++ относится к небрежностям в исходном коде и, к
примеру, не позволит создать метод с заведомо неиспользуемым участком кода.
Также Ява не откомпилирует программу, в которой используется
неинициализированная переменная. Это предохраняет программиста от ошибок,
допущенных по невнимательности.
Один из главных источников проблем при разработке программ -
неправильное использование динамической памяти, а точнее некорректное
освобождение занятых ранее блоков. Ява использует концепцию "сборщика мусора".
Это означает, что программисту совершенно не нужно заботиться об освобождении
занятого участка памяти. Система сама добавит его к свободной памяти, когда
обнаружит, что ссылок из программы на данный объект уже нет. Для многих систем
программирования существуют специальные библиотеки, которые поддерживают сборку
мусора, но в Яве данная возможность является "встроенной" и не требует
дополнительных усилий от программиста.
Для сигнализации об ошибках Ява использует модную нынче концепцию
"исключений". Исключение - это некое специальное событие, которые сигнализирует
об ошибке в программе. Большинство языков программирования (и API) для
сигнализации об ошибке используют концепцию "кода возврата". То есть попросту
передают вызывающему результат вызова функции ("плохо" или "хорошо"). Код
анализа возвращенного значения в результате перемешан с кодом нормального
выполнения программы, это затрудняет чтение программ и их модификацию. Однако,
что гораздо важнее, исключения не только улучшают читаемость исходных текстов,
но и не позволяют вызывающей функции проигнорировать ошибку. Программист обязан
либо "отловить" исключение, либо переложить эту обязанность на вызывающую
функцию.
К сказанному можно добавить, что в Яву "встроена" мультизадачность.
При создании мнокопотоковых приложений разработчику, как правило, приходится
использовать средства операционной системы (семафоры, мьютексы) для
синхронизации задач. Ява предлагает универсальное решение с использованием
конструкций самого языка. Указание ключевого слова synchronized перед именем
метода не позволяет его выполнять более чем одному потоку одновременно.
Резюмируя, можно сказать, что сложность программирования на Ява и в
сравнение не идет с C++ или Pascal. Развитые возможности языка, поддержка
"сборки мусора", единая стандартная библиотека классов, контроль со стороны
компилятора - все это заметно упрощает создание приложений и ускоряет их
отладку.
Зима 2001. Владислав Кравченко, Григорий Григоренко
|