ЗАМЕЧАНИЕ
В середине 1980-х годов компилятор Клу реализован для советских
суперкомпьютеров «Эльбрус», язык был отобран среди прочих кандидатов
(Ада, Модула-2, Симула) как наиболее целостно и полно реализующий
концепцию абстрактных типов данных и при этом довольно простой в
реализации. Барбара Лисков стала лауреатом премии Тьюринга 2008 года. В ее
представлении проектирование языка Клу и создание серии эффективных
компиляторов для него отмечены как фундаментальный вклад в информатику,
доказавший практическую осуществимость идей абстракции данных и
превративший теоретическую концепцию в общепризнанный подход.
В языке Клу уже были реализованы такие особенности ООП, как
инкапсуляция и полиморфизм. Впрочем, инкапсуляция — не уникальное в
программировании именно для ООП явление, что не позволяет ее считать
отличительной его чертой. Что понимается под этим словом? На самом
деле, можно использовать простой русский эквивалент — сокрытие, и
известно оно еще с начала использования локальных переменных
процедур и внедрения модульности в программировании. Ясно, что лучше,
чтобы как можно больше данных были скрыты от внешнего наблюдателя
внутри некоторого программного модуля, были локальными для него. Во-
первых, это позволяет повысить безопасность, предохраняя информацию
от случайной или преднамеренной порчи, а во-вторых, чем меньше связей
между модулями, тем проще и быстрее можно модуль заменить при
модернизации или сопровождении программы.
А что же имеется в виду под полиморфизмом, также поддержанным в
рамках концепции абстрактного типа данных?
Рассмотрим еще раз пример с операциями, вроде бы не характерными для
определенных типов данных. Умножать строки, видимо, бессмысленно в
любом случае. А складывать? Во многих языках программирования
определена операция конкатенации, или слияния строк, когда в конец
одной строки приписывается другая. При этом часто она обозначается
знаком «плюс», который используется и для обозначения сложения!
Пример на Бейсике:
10 A$="дядя " + "Ваня"
20 ? A$
Достарыңызбен бөлісу: |