Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Непейвода Н.Н. -> "Основания программирования " -> 14

Основания программирования - Непейвода Н.Н.

Непейвода Н.Н., Скопин И.Н. Основания программирования — Институт компьютерных исследований , 2002. — 919 c.
Скачать (прямая ссылка): osnovanprogramm2002.pdf
Предыдущая << 1 .. 8 9 10 11 12 13 < 14 > 15 16 17 18 19 20 .. 316 >> Следующая

Smalltalk — последний крупнй проект, результаты которого были представлен не только в виде предло ения программного продукта как данного, но и как материал для всестороннего обсу дения программистской обе-ственность . В результате таких обсу дений выработалась идея того, что нужно для поддержки объектной ориентированности в языках для промыш-
1.2. МОДЕЛЬ ВЫЧИСЛЕНИЙ ФОН НЕЙМАНА И ТРАДИЦИОННЫЕ ЯЗЫКИ
33
ленного производства программ. Такие язки появились достаточно скоро. Наибольшее распространение из них получил С++, по-видимому, из-за растущей популярности С. Заметными объектными языками стали также Turbo Pascal версий с 5.5 до 7.0 и Object Pascal системы Delphi. Общим для промышленного развития Smalltalk'а является возврат к статическим типам дан-нх, повенное внимание к вопросам заиты. В результате удалось построить приемлемые по эффективности объектного кода системы программирования, удовлетворяие требованиям технологичного программирования. днако, как это обчно бвает с производственными системами, на смену аналитическим исследованиям роли и границ применимости языка пришли рекламные хвалебные обсуждения достоинств и никогда — недостатков.
Применительно к обсуждению традиционности языков уместно посмотреть на то, как трансформируются фон Неймановские принципы вычислений при использовании объектной модели. чевидно, что отход от однородности памяти для этой модели более радикален, не ели, к примеру в Pascal^. Если рассматривать объекты как хранимые в памяти данные, то за счет связанности этих данных с программами (методами объектов) память в объектной модели приобретает активность. На концептуальном уровне рассмотрения мо но усмотреть, что модернизируется управление: объект сам знает, каку программу-метод ну но активизировать, чтобы выполнить то или иное действие. есомненно, все это повает гибкость программирования, способствует расирени возмо ности отхода от фон еймановско-го взгляда на программу, как на автомат, выполняющий предписания-команды. днако на уровне реализации программ-методов все остается по-старому: все то е последовательное вполнение операторов, те е подходы к разветвлениям вычислений и к организации циклической обработки. Более того, последовательный характер вчислений остается и при задании взаимодействия объектов. Следовательно, объектный подход, хотя и способствует взгляду на вычислительне процессы, отличаемуся от фон ей-мановского стиля, сам по себе не приводит к смене базовой модели вычислений. Этот подход мо ет бть применен и для организации вычислений на основе инх моделей, отличнх от фон еймановских. весьма успе -ный опыт такого применения имеется: разработан язык CLOS (Common Lisp Object System), который есть надстройка над нетрадиционным язком Lisp.
местно отметить, что многие прием и механизм объектного программирования на этом язке оказва тся более наглядными и естественнми, не-
ели в рамках традиционнх моделей вычислений. 10. Язык Java. Заметным этапом в развитии объектно-ориентированно-
34
ГЛАВА 1. ПОНЯТИЯ
го подхода стало появление языка Java, который был предложен как средство программирования не для отдельного компьютера, а сразу для всех машин, имеющих реализацию так называемой Java-машины — исполнителя программ на промеуточном языке более высокого уровня, не ели командный язык обчнх маины. нми словами, провозглаается система программирования с явно и точно определенным промеуточным язком. ругая особенность Java-проекта — его ориентация на Интернет программирование: поддерживается возможность построения приложений, запускаемых на сервере от клиентской рабочей станции и взаимодействуих с клиентом через произвольный браузер.
Схема трансляции с выделенным промеуточнм языком, независяим от исходного языка, очень даже не новая. В шестидесятые годы ее пытались применять для сокращения расходов на разработку трансляторов (например, в качестве промеуточного язка в С бл разработан специальный язк Uncol, в Советском Союзе для тех же целей предлагался язык АЛМО). Чисто умозрительно можно представить ситуацию. Требуется реализация m языков на n машинах. В схеме без промежуточного языка в этом случае нужно запрограммировать m х n трансляторов, тогда как использование такого языка позволяет сократить это число до m + n: для каждого языка пишется транслятор в промеуточный язык (m) и для кадой маин создается транслятор или интерпретатор промеуточного язка (n). К тому е, опять-таки умозрительно, можно предположить, что затраты на 'половинки' трансляторов сократятся. Все получается, если удается построить промежуточный язык удовлетворяий следуим условиям:
a) все реализуемые языки можно вложить в промежуточный язык, т. е. их модели вычислений совместимы, не противоречат друг другу;
b) все целевые машины можно непротиворечиво представить в одной модели вычислений промежуточного языка так, чтобы трансляция программ для этой обей модели давала б эффективный код для конкретных в -числителей.
ыполнить эти условия весьма сло но да е для близких языков и маин. Точнее сказать, что затрат на реение этих задач неизмеримо и неоправданно превыа т стоимость пресловутх m х n трансляторов. оэтому после серии экспериментальных проектов идея промеуточного языка была предана забвению. В проекте Java она возродилась, правда, в урезанном до
Предыдущая << 1 .. 8 9 10 11 12 13 < 14 > 15 16 17 18 19 20 .. 316 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100