Сравнительный обзор объектно-ориентированных языков Доклад на семинаре по специальности Студентка группы 4057/2 Ольга Родионова 29.11.08.

Презентация:



Advertisements
Похожие презентации
Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
Advertisements

©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Объектно-ориентированное программирование Карпов В.Э. Смолток. Лекция 4. Байт-код.
Вперёд ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЦЕЛИ: ЦЕЛИ: 1. Средство для задания действий, которые должны быть выполнены машиной.(Машинный язык) 1. Средство для задания.
Основы программирования Паскаль. Паскаль ( англ. Pascal) язык программирования общего назначения. Язык Паскаль был создан Никлаусом Виртом в
Алгоритмический подход – главное алгоритм решения задачи ( в основном, используется для вычислительных задач ); Структурное программирование – декомпозиция,
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
Никлаус Вирт. Родился 15 февраля Профессор Никлаус Вирт живая легенда в мире программирования, блестящий инженер и глубокий исследователь, удостоенный.
Лекция 3. Введение в C++ Примеры взяты из книги Брюса Эккеля Думаем на С++
Программа повышения квалификации «Системное программирование» Приоритетное направление модернизации и технологического развития экономики России - Стратегические.
Объектно-ориентированное программирование Объектно-ориентированное программирование (ООП) - основная методология программирования. Она является продуктом.
Компьютерные технологии в метеорологии (Java-технологии) Чукин В. В.
В. И. Дихтяр ИНФОРМАТИКА Российский университет дружбы народов Институт гостиничного бизнеса и туризма Раздел 3Моделирование объектов и процессов и его.
ОСНОВНЫЕ ПОНЯТИЯ ООП Лекция 1 1. Язык Simula 2 Simula = SIMULAlation За разрабртку языка Simula Кристен Нигорд (Nygaard, Kristen; ), на снимке.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Электронный задачник по программированию для системы 1С:Предприятие М. Э. Абрамян, М. Ю. Беренкеева Южный федеральный университет, факультет математики,
Методология объектно- ориентированного программирования.
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Транксрипт:

Сравнительный обзор объектно-ориентированных языков Доклад на семинаре по специальности Студентка группы 4057/2 Ольга Родионова

О. Родионова 2 Содержание Концепции ООП Simula SmallTalk C++ Java C# Eiffel Oberon

О. Родионова 3 Объектно-ориентированное программирование Объектно-ориентированное программирование (ООП) – парадигма программирования, в которой основными концепциями являются понятия объектов и классов Объект – некоторая сущность в виртуальном пространстве, обладающая определенным состоянием и поведением Класс – некая сущность, которая задает некоторое общее поведение для объектов ООП чаще всего сводится к созданию некоторого количества классов, описанию связей между этими классами и их свойств и дальнейшей реализации полученных классов

О. Родионова 4 Основные концепции Система состоит из объектов Объекты некоторым образом взаимодействуют между собой Каждый объект характеризуется своим состоянием и поведением Состояние объекта задается значением полей данных Поведение объекта задается методами

О. Родионова 5 Основные методы Абстракция данных – объекты представляют собой упрощенное, идеализированное описание реальных сущностей предметной области Инкапсуляция - принцип, согласно которому класс рассматривается как черный ящик пользователь класса видит и использует только интерфейсную часть класса, не вникая в его внутреннюю реализацию Наследование - возможность порождать один класс от другого с сохранением всех свойств и методов класса-предка и добавляя новые свойства и методы Полиморфизм - явление, при котором один и тот же программный код выполняется по-разному в зависимости от того, объект какого класса используется при вызове данного кода

О. Родионова 6 Simula. История возникновения Simula 67 - первый OO язык программирования. Разработан в конце 60-х сотрудниками Норвежского вычислительного центра (Осло) Кристеном Нюгором и Уле-Йоханом Далем для моделирования сложных систем

О. Родионова 7 Simula. Достоинства и недостатки Достоинства: поддержка основных механизмов ООП –Объекты и классы –Подклассы на базе наследования –Виртуальные процедуры –Сборка мусора Недостатки –Неэффективная реализация –Отсутствие интерфейсов –Невозможность для объекта иметь более одного конструктора Итоги –Язык в значительной степени опередил свое время, современники оказались не готовы воспринять ценность языка –Не выдержал конкуренции, прежде всего с Fortran –Идеи, заложенные в этот язык оказали влияние на другие реализации ООП, такие как С++, Smalltalk

О. Родионова 8 Simula. Кто первый? Kristen Nygaard Ответ на вопрос: When was object-orientation first used? To use an analogy, gravitation for sure existed before Newton. And people certainly had to take that into account in their designs. Few will describe these designs as being early approach to the theory of gravitation Already in the age of the Vikings Norwegians had

О. Родионова 9 Эволюция языков программирования Специально разработанные ОО языки, изначально построенные на модели ООП –SmallTalk (1972) –Eiffel (1985) Традиционные процедурные языки, к которым добавлены средства ООП –С (1972) –Pascal (1970) К С-подобным языкам относят: –С++ (1986) –Java (1995) –C# (1999 – 2000) К Pascal-подобным языкам относят –Modula-2 (1978) –Delphi (1986) –Oberon (1987) Все, что существует на свете, когда-то было мечтой. Карл Сентберг

О. Родионова 10 SmallTalk. История SmallTalk разработан в начале 70-х гг. Аланом Кеем в исследовательском центре Xerox PARC Целью проекта под названием Dynabook было создание целой среды для персонального компьютера Особенности разработки –Разрабатывался как целая система, а не как просто средство для написания программ –Объектная ориентация в этом языке изначально была встроенной концепцией

О. Родионова 11 SmallTalk. Основные идеи Всё объекты. Выполнение программы состоит из посылок сообщений между объектами. Любое сообщение может быть послано любому объекту Всё доступно для изменения: интегрированная среда разработки, управляющая структура, синтаксис языка, способ работы сборщика мусора Сборка мусора встроена в язык и незаметна разработчику Динамическая типизация. Является ли операция правильной, определяет объект-получатель, а не компилятор Model-view-controller (MVC) шаблон структуры пользовательского интерфейса Программы компилируются в байткоды и выполняются виртуальной машиной Dynamic translation: современные коммерческие виртуальные машины компилируют байткоды в машинные коды для быстрого выполнения

О. Родионова 12 SmallTalk. Особенности Среда разработки –Smalltalk разрабатывался как целая система: язык, компьютер и среда программирования Минимальный язык разработки –Основные действия - разработать класс как подкласс других классов и к каждому из них присоединить методы –Основные операторы определяют присваивание и последовательное выполнение действий –Механизм параметрических вызовов, называемых сообщениями –Поставляется с предопределенным набором определений классов, написанных на языке Smalltalk Среда разработки Выполнение программы –Модель выполнения на коммуникационной модели (communication model) –Данные состоят из объектов, а методы рассматриваются как сообщения, посылаемые объектам –Динамическая модель последовательности выполнения действий –Динамическая организация памяти в виде кучи

О. Родионова 13 SmallTalk. Примеры Определение класса Object subclass: #MessagePublisher instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Smalltalk Examples' Определение метода publish Transcript show: 'Hello, world! Вызов метода MessagePublisher new publish

О. Родионова 14 SmallTalk. Немного разговора "Наши программы живут дольше, если у нас получается придумать более простые абстракции для самих себя, и я думаю, что способы достичь этого в Smalltalk намного более мощные чем в традиционных языках." Рон Джефрис "В сущности, Smalltalk это язык больше ориентированный на людей, чем на компьютеры." Алан Найт "Ну, я думаю, что одна из вещей, которая мне всегда нравилась в Smalltalk, это то, что там всё есть объект. Это очень всё упрощает, так как не важно с какими данными вы работаете, вы можете переместить их из точки А в точку Б как объект" Эндерс Хейльсберг "Почему Smalltalk? Потому, что Smalltalk использует упрощенный вариант английского. Существительные и глаголы. Объекты - это существительные. Глаголы - это сообщения, посылаемые от одних объектов к другим. Просто, как раз, два, три. Больше не нужно писать непонятные программы. Значит, почти каждый может научиться писать программы на Smalltalk-е" Питер Вильям Лаунт

О. Родионова 15 С++. История Этапы разработки –1982 : С with Classes –1984–1986 : С++ –1989 : С++, вторая версия –1994–1996 : стандарт языка Создатель языка С++ Бьерн Страуструп –Докторская диссертация в Computer Laboratory в Кембридже –Компания AT&T Bell Telephone Laboratories в США

О. Родионова 16 С++. Цели разработки Основные цели –Обеспечить поддержку абстрактных (определяемых пользователями) типов данных –Предоставить средства для объектно-ориентированного программирования –Улучшить существующие конструкции языка С Основные принципы разработки –Использование классов не должно приводить к более медленному выполнению программ по сравнению с программами без классов –Программы на С рассматриваются как подмножество программ на С++ –Не должна снизиться эффективность выполнения программ Все цели были достигнуты

О. Родионова 17 С++. Отличие от С новые операции доступа к глобальным объектам и управления динамической памятью объектно-ориентированные средства ввода-вывода прототипы функций для согласования типов параметров и аргументов более свободное размещение в программе операторов объявления переменных обработка исключительных (ошибочных) ситуаций динамическая (во время выполнения программы) идентификация типов объектов и их преобразование параметризированные функций и классы – шаблоны стандартные производные типы данных и стандартные шаблоны пространства имен – средство повышения модульности программы и средство разрешения конфликтов между одноименными переменными упрощенный синтаксис объявления переменных производных типов, определяемых пользователем

О. Родионова 18 С++. Достоинства и недостатки Достоинства –Кросс-платформенность - разработка программ для самых различных платформ и систем –Возможность работы на низком уровне с памятью, адресами, портами –Возможность создания обобщенных алгоритмов для разных типов данных, их специализация, и вычисления на этапе компиляции, используя шаблоны Недостатки –Плохая поддержка модульности. Подключение интерфейса внешнего модуля через препроцессорную вставку заголовочного файла (#include) серьёзно замедляет компиляцию, при подключении большого количества модулей –Недостаток информации о типах данных во время компиляции –Язык является сложным для изучения и для компиляции –Некоторые преобразования типов неинтуитивны –Препроцесор очень примитивен. С его помощью нельзя (или тяжело) осуществлять некоторые задачи метапрограммирования. Он часто приводит к ошибкам и требует много действий по обходу потенциальных проблем

О. Родионова 19 Java. История (1) 1990 : Сложности внутри Sun Microsystems 1991 : Green Team –Патрик Нотон –Джеймс Гослинг –Майк Шеридан 1991 : новый язык программирования Oak –(впоследствие переименован в Java) 1992 : Star7 –устройство с жидкокристаллическим сенсорным экраном, которое общалось с пользователем через анимацию, показывая, чем можно с его помощью управлять и как

О. Родионова 20 Java. История (2) Ноябрь 1992 : компания FirstPerson Середина 1994 : адаптация Oak для World Wild Web –Билл Джой –Гослинг, Нотон Июль 1994 : браузер WebRunner и апплеты Начало 1995 : переименование –Oak -> Java –WebRunner -> HotJava Март 1995 : публикация в газете, официальный сайт 23 мая 1995 : конференция SunWorld –технологии Java и HotJava официально объявлены Sun –Самый популярный браузер Netscape Navigator 2.0 поддерживает новую технологию

О. Родионова 21 Java. Свойства (1) Кросс-платформенность –Наличие виртуальной машины JVM Интерпретация/компиляция –Исходный код (текстовый файл.java) -> компилятор -> Java байт-код (бинарный файл.class) -> интерпретатор JVM Практически все реализовано в виде объектов –Потоки выполнения (threads) –Потоки данных (streams) –Работа с сетью –Работа с изображениями –С пользовательским интерфейсом –Обработка ошибок –Любое приложение – набор классов Строгая типизация –8 простых (примитивных) типов данных –Все остальные типы – объектные или ссылочные

О. Родионова 22 Java. Свойства (2) Отказ от множественного наследования –Специальный тип «интерфейс» Механизм автоматической сборки мусора Возможность создания многопоточных приложений Легкость в освоении и разработке программ Безопасность –Правила работы с памятью –Отсечение опасного кода на каждом этапе интерпретатора –Механизм подписания аппелетов и других приложений, загружаемых по сети Ориентация на интернет задачи, сетевые распределенные приложения Динамичность

О. Родионова 23 C#. История Разработан в 1998 – 2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft Разработан как основной язык разработки приложений для платформы Microsoft.Net Основой является С++ Создавался как альтернатива и прямой конкурент Java namespace HW; using System; class HW { static void Main(String[] args) { Console.WriteLine("Hello World!"); }

О. Родионова 24 C#. Сходство с C++ и Java Сходство с Java: –Объектно-ориентированный (единственное наследование) –Интерфейсы –Исключения –Нити (threads) –Пространства имен –Сильная (строгая) типизация –Сборка мусора –Отражение (reflection) –Динамическая загрузка кода –Компиляция байт-кода и его Just-in-time интерпретация Сходство с С++: –«Перегруженные» операторы –Арифметические операции с плавающей точкой относятся к небезопасному типу –Некоторые особенности синтаксиса

О. Родионова 25 C#. Особенности компонентно-ориентированный подход к программированию свойства как средство инкапсуляции данных обработка событий (имеются расширения, в том числе в части обработки исключений, в частности, оператор try) унифицированная система типизации делегаты (delegate – развитие указателя на функцию в языках C и C++) индексаторы (indexer – операторы индекса для обращения к элементам класса- контейнера); перегруженные операторы оператор foreach (обработка всех элементов классов-коллекций, аналог Visual Basic) механизмы boxing и unboxing для преобразования типов атрибуты (средство оперирования метаданными в COM-модели) прямоугольные массивы (набор элементов с доступом по номеру индекса и одинаковым количеством столбцов и строк)

О. Родионова 26 Eiffel. История Язык Eiffel был разработан Бертраном Мейером в 1985 году В 1986 году появился первый компилятор Полностью ООП и не основан ни на одном из существующих языков Имя получил в честь конструктора Густава Эйфеля class COMPLEX creation initComplex feature real_part, imag_part: REAL feature initComplex(r, i: REAL) is do real_part := r imag_part := i end end --class COMPLEX

О. Родионова 27 Eiffel. Свойства Все объекты имеют общий базовый класс Статическая система контроля типов и динамическое связывание Сборщик мусора Эффективная реализация множественного наследования - решена проблема с совпадающими именами методов, проблема двойного наследования Гибкий контроль области видимости - возможность для каждого метода указать типы клиентов которые имеют доступ к этому методу Система обработки исключительных ситуаций Создание интерфейсных классов (абстрактные классы в C++) Параметризованные типы (шаблоны в C++) Более мощный аналог delegates чем в С# Простой механизм работы с многопоточными приложениями(SCOOP)

О. Родионова 28 Eiffel. Design by Contract Среди механизмов особенно выделяется Design By Contract - который по сути является "сердцем" Eiffel Механизм позволяет задавать различные типы условий, проверяемых во время работы программы. Нарушение любого из условий приводит к выбрасыванию исключения Механизм базируется на трех основных конструкциях: предусловиях, постусловиях и инвариантах Предусловия проверяются перед началом выполнения тела метода require valid_argument: what /= Void Постусловия проверяются после завершения тела метода ensure valid_result: Result /= Void Инварианты проверяются перед и после завершения работы публичных методов invariant options_iff_ok: is_ok implies (options /= Void)

О. Родионова 29 Oberon. История Никлас Вирт –1970 : Pascal –1977 – 1981 : Modula-2 –1985, совместно с Юргом Гуткнехтом : Oberon –1987 : операционная система Oberon –1992, совместно с Ханспетером Мессенбеком : Oberon-2 "Сделай так просто, как возможно, но не проще того" Эйнштейн Назван в честь самого дальнего спутника Урана, открытого в 1787 году, мимо которого в 1986 г. пролетал американский аппарат Voyager-2

О. Родионова 30 Oberon. Основные черты Простой и ясный синтаксис, похожий на синтаксис Паскаля и Модулы-2. Набор структурных управляющих конструкций (IF-ELSIF-...-ELSE-END, CASE, WHILE, REPEAT, LOOP) Удобный и простой набор базовых типов (символы и строки, короткие и длинные целые и вещественные, логический тип, множества, процедурный тип) Простые и удобные правила совместимости числовых типов (SHORTINT

О. Родионова 31 Oberon. Эсперанто программирования Группа Естественный язык Язык програм- мирования германская Британский английский C++ Северо- американский английский C Шотландский английский C# НемецкийJava Италийская ЛатинскийPascal Романская ИспанскийDelphi ИтальянскийModula-2 Oberon как эсперанто программирования –Нейтралитет –Стабильность –Безупречная репутация –Преемственность традиций –Выразительная мощь –Отображение на ведущие языки –Простота изучения и восприятия –Наличие проверенного годами инструментария

О. Родионова 32 Oberon. Недостатки Что мешает Oberon стать эсперанто программирования? –недостаточная известность за пределами относительного узкого круга специалистов –страх риска, неуверенность в том, что имеет смысл вкладывать свой интеллектуальный потенциал в развитие малоизвестного языка –отсутствие в программировании четкого осознания того, что для развития компьютерных наук необходима единая языково- символьная основа, подобная символике математики и физики «Не исключено, что со временем в лексиконе сложится небольшое число конструкций программ, которым в силу экономии мышления будет приписана стандартная семантика. Этой семантикой может владеть каждый человек со средним образованием. Взятые вместе, эти конструкции и образуют общий язык программирования...» А. П. Ершов

О. Родионова 33 Сравнение языков программирования (1) Smallt alk C++C#JavaEiffel Статическая типизация+/-++++ Динамическая типизация+---- Явная типизация+/-++++ Неявная типизация+-/++/--- Неявное приведение типов в неоднозначных ситуациях Шаблоныx+--+ Создание объектов на стеке?+++-/+ Неуправляемые указатели+++-- Ручное управление памятью++--- Сборка мусора+-+++

О. Родионова 34 Сравнение языков программирования (2) Smallt alk C++C#JavaEiffel Целые числа произвольной длины+--+? Перегрузка функций++++- Значение параметров по умолчанию+/-+--- Локальные функции--+/- - Кортежи++/---- Цикл foreach++/-++- Поддержка исключений+++++ Контрактное программирование---+/-+ Множественное наследование-+--+ Разрешение конфликта имен при множественном наследовании x-/+xx+

О. Родионова 35 Источники Общие сведения seum/LANR/evol.htm#22http://schools.keldysh.ru/sch444/mu seum/LANR/evol.htm#22 SmallTalk C++ he:sJ4MoeSya1IJ: m/PDF/ /part.pdf+C%2B%2B+%D0%B8%D 1%81%D1%82%D0%BE%D1%80% D0%B8%D1%8F+%D0%B8+%D0% BE%D1%81%D0%BE%D0%B1%D 0%B5%D0%BD%D0%BD%D0%BE %D1%81%D1%82%D0%B8&hl=ru& ct=clnk&cd=2&gl=ru Simula NINGSDOK_MAPPE/F_OO_start.ht ml#Stopp Java course/Java_COURSE_Lec01. pdf C# g/pdf2txt?p_id=18839&p_page=5http://window.edu.ru/window_catalo g/pdf2txt?p_id=18839&p_page=5 Eiffel wz/index.php/Eiffelhttp:// wz/index.php/Eiffel Oberon onEsp.htmhttp:// onEsp.htm

О. Родионова 36 Спасибо за внимание!