Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

Ява - идеал, она не нуждается в улучшениях

div.main {margin-left: 20pt; margin-right: 20pt}Ява - идеал, она не нуждается
в улучшениях


Ява была создана в 1994-1995 году. К этому моменту информационные
технологии получили интенсивное развитие как за счет "персонализации"
компьютеров, так и отчасти за счет распространения Интернет. Авторы Явы
постарались воплотить в ней все достижения информационной индустрии, но идеал,
как известно, недостижим. Кое-что, все-таки осталось "за бортом". Среди подобных
возможностей можно назвать условия проверки правильности выполнения программы,
"программирование по контракту", шаблоны и др. В основном, в качестве примера
для сравнения мы будем использовать C++, как наиболее "продвинутый" язык
программирования.


В C++ существует средство проверки условий, называемое assert. Эта
функция очень проста - она проверяет некоторое условие, задаваемое
программистом, на "истину". Если условие "ложно", assert останавливает программу
и указывает, что допустимые условия работы нарушены. Assert позволяет отлаживать
программу, одновременно проверяя правильность параметров и результатов работы
функций. При этом, в целевом (конечном) образе программы все вызовы assert будут
отсутствовать. Компилятор отбрасывает все вызовы assert при конечной генерации
модулей. В Яве не существует подобной возможности. Разумеется можно использовать
проверку условий и генерацию исключений на их основе, но, в результате, все эти
проверки попадут в образ конечной программы. Поскольку условная компиляция в Яве
также отсутствует, "спрятать" проверки условий нельзя. Остается одно - в
конечной программе "вычистить" их руками из исходного текста. Опять-таки, при
последующей модификации программы придется все повторить - проверку условий
опять необходимо включать.


Существует более мощная технология, чем assert. Это Design By
Contract, "программирование по контракту". Данная концепция вводит типы проверки
условий для каждой контролируемой контрактом функции - предусловие (правильность
переданных функции параметров), условие-инвариант (истинное в течение всего
времени работы функции), пост-условие (правильность результата). Эти условия
позволяют быстро находить источник ошибок в программе. К примеру, если неверно
пред-условие, значит "виноват" вызывающий, который передал неправильные
параметры. "Программирование по контракту" позволяет упростить создание больших
приложений, которые используют ранее созданный код. Считается, что без подобной
технологии повторное использование кода недопустимо в принципе. Ява не
поддерживает "программирование по контракту".


Шаблоны классов в C++ - это возможность генерации кода "под"
указанный пользователем класс. Коллекция объектов, реализованная с помощью
шаблона, будет компилироваться каждый раз для каждого типа объектов, хранимого в
этой коллекции. Разумеется это увеличивает размер программы, но надежность и
удобство использования классов-шаблонов все же перевешивают. Типичная коллекция
объектов в Яве хранит экземпляры класса Object, предка всех Ява-классов.
Программист, извлекая объекты из коллекции, вынужден использовать приведение
типа, чтобы работать со своим "рабочим" классом. Такое приложение работает
прекрасно до тех пор, пока другой программист случайно не добавляет в коллекцию
экземпляр совершенно другого класса. При добавлении ошибки не происходит -
коллекция "не знает", какие именно классы она хранит. Ошибка произойдет позднее
при извлечении экземпляра и попытки приведения его к неверному типу. Такая
ситуация невозможна при использовании шаблонов, в принципе, поскольку здесь
работа идет с конкретным классом.


Существуют и другие возможные пути развития Ява. К примеру,
необычайно полезным является понятие "константные" данные и "константные"
функции в C++. В C++ можно указать, что функция не изменяет данные класса. Можно
указать, что нельзя изменить данные, на которые указывает переменная. Можно,
наконец, указать, что менять адресуемые данные можно, а сам указатель - нет.
"Правильно" нагруженная константными описателями программа лучше оптимизируется,
понимается и модифицируется. В Яве подобные возможности есть, но в упрощенном
виде. Можно объявлять константные переменные и только.



Владислав Кравченко, href="mailto:grigorenko@mail.ru">Григорий Григоренко


  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2021
    Реклама на сайте