Язык программной индустрии

    “Появление благодаря работам Бьерна Страуструпа языка Си++, ставшего фактически главным языком программной индустрии, а также повальное увлечение объектно-ориентированным проектированием и программированием заставили уйти в тень его именитого предшественника — язык Си” [1].
    “Сообщество сторонников Си++ страдало от чрезмерной популярности этого языка: он постоянно становился объектом нападок, ведь в современном мире, живущем по законам коммерции, честная борьба — большая редкость”.
    Бьерн Страуструп В начале 1980-х годов в научно-исследовательской фирме Bell Telephone Laboratories американской корпорации AT&T (American Telephone and Telegraph) Бьерном Страуструпом в результате дополнения и расширения языка Си был создан язык, получивший название “Си с классами” [2, 3]. В 1983 году это название было заменено на Си++. Здесь как бы сделано указание на то, что Си++ — язык следующего поколения по отношению к Си [4]: как известно, операция инкремента ++ увеличивает значение переменной на единицу. (При создании Си++ Страуструп искал базовый язык для включения в него концепции классов, взятой из языка Симула. Как альтернатива Си, по словам Страуструпа, рассматривались языки Модула-2, Ада, Смолток, Mesa и CLU. Но предпочтение было отдано Си [1].)
    Язык Cи++ является языком объектно-ориентированного программирования.
    Идея использования программных объектов развивалась разными исследователями в течение целого ряда лет. Одним из первых языков такого типа является Симула-67 [5, 6]. Утвердило же свой статус объектно-ориентированное программирование в созданном Аланом Кеем языке Смолток (Smalltalk), который появился в 1972 году [7, 8].
    “Объект есть логическая единица, которая содержит данные и правила (методы) обработки этих данных. В языке Cи++ в качестве таких правил обработки выступают функции, т.е. объект здесь объединяет в себе данные и функции, обрабатывающие эти данные” [2].
    Объектно-ориентированный язык создает так называемое программное окружение в виде множества независимых объектов, каждый из которых отличается своими свойствами и способами взаимодействия с другими объектами. Каждый объект тут в какомто смысле подобен компьютеру: он способен получать сообщения от других объектов и, в свою очередь, посылать сообщения, запоминать информацию и обрабатывать ее определенным образом. Описывая структуру обмена сообщениями между объектами, программист задает совокупность операций, которые и образуют программу. Можно использовать объекты для решения задач, не понимая механизма работы объектов, т.е. рассматривать их как своего рода “черный ящик”. Объектно-ориентированный язык скрывает многие детали функционирования системы внутри самих объектов. Но при необходимости программист может изменять детали внутреннего устройства объектов, формируя тем самым другие объекты, нужные для решения новых задач [9].
    Каждый объект в объектно-ориентированном окружении обладает своими собственными характеристиками, однако объекты, имеющие одинаковые свойства и ведущие себя сходным образом, объединяются в группы, или классы.
    “Понятие класса является центральным понятием языка Cи++. Вообще класс — это определенный программистом тип, к которому относятся любые структуры данных, определенные посредством ключевых слов class, struct и union. При определении класса расширяются возможности языка Cи++, так как в дальнейшем этот класс можно использовать как любой другой тип Cи++.
    Как только класс определен, можно создавать объекты этого класса, каждый из которых имеет члены, определенные в классе” [10] (а именно, данные-члены и функции — члены класса). Пример класса — графическая точка на экране. Данными-членами тут являются ее координаты, а также цвет. Функции-члены могут обеспечивать инициализацию точки, определение ее цвета, задание нового цвета.
    Вообще говоря, “в принципе возможен объектно-ориентированный подход к проектированию даже в традиционных языках программирования, например, таких, как Cи; однако использование объектно-ориентированных языков типа Cи++ позволяет существенно облегчить работу...”.
    Бьерн Страуструп является автором книг The C++ Programming Language (“Язык программирования Си++”), The Design and Evolution of C++ (“Архитектура и эволюция Си++”), Why C++ isn’t just an Object-Oriented Programming Language (“Почему Си++ — не просто язык объектно-ориентированного программирования”). Сейчас Страуструп возглавляет отдел программных исследований в лаборатории AT&T Labs (корпорация AT&T была в свое время реорганизована). Область его научных интересов охватывает технологии распределенных систем и операционных систем, сферу имитационного моделирования, проектирования и программирования [11].

    Литература
  
1. Богатырев Р. Летопись языков. Си // Мир ПК, № 8/2001.
    2. Березин Б.И., Березин С.Б. Начальный курс C и C++. М.: Диалог-МИФИ, 1999.
    3. Дьюхарст С., Старк К. Программирование на C++: Пер. с англ. Киев: ДиаСофт, 1993.
    4. A, B, C, ..., C++ // Информатика, № 47/ 2000.
    5. Киндлер Е. Языки моделирования: Пер. с чешского. М.: Энергоатомиздат, 1985.
    6. Окольнишников В.В., Покровский С.Б. Симула // Математическая энциклопедия. М.: Советская энциклопедия, 1984. Т. 4.
    7. Малыхина М.П., Частиков А.П. Языки программирования: Симула // Вычислительная техника и ее применение, № 5/90.
    8. Знакомьтесь: компьютер: Пер. с англ. М.: Мир, 1989.
    9. Язык компьютера: Пер. с англ. М.: Мир, 1989.
    10. Карпов Б., Баранова Т. C++: Специальный справочник. СПб.: Питер, 2000.
    11. Страуструп Б. Мне бы хотелось объединения Си и Си++ // Computerworld Россия, 03.04. 2001.

Hosted by uCoz