Обзор языков програмирования

Автор работы: Пользователь скрыл имя, 06 Сентября 2013 в 20:47, реферат

Описание работы

Цель работы – исследовать виды языков программирования тенденцию развития, иерархию и способы программирования.

В процессе выполнения работы необходимо было проделать следующее.
Изучение языка Ассемблера
Изучение языков высокого уровня
Изучение объектно-ориентированных языков
Изучение парадигм программирования

Содержание работы

ВВЕДЕНИЕ 3
1. ЯЗЫК АССЕМБЛЕРА 4
2.ЯЗЫКИ ВЫСОКОГО УРОВНЯ................................................................................................8
2.1 FORTRAN................................................................ ........ ... ....... .........................................10
2.2 LISP..................................................................... ...... .......... ........................ . ......................12
3. ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ ЯЗЫКИ 14
3.1 ЯЗЫК С++ 15
4. ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ: 18
4.1 Процедурное программирование 18
4.2-Модульное программирование 18
4.3-Абстракция данных 18
4.4-Объектно-ориентированное программирование 19
4.5-Поддержка абстракции данных 21
4.6-Поддержка объектно-ориентированного программирования 21
ЗАКЛЮЧЕНИЕ 23
ЛИТЕРАТУРА.............................................................................................................................239

Файлы: 1 файл

UNIRS2.docx

— 75.83 Кб (Скачать файл)

 

  Суть объектно-ориентированного  программирования заключается в  использовании концепции “объектов” , то есть, скорее, образов, чем данных.

 

    Руководящая идея  этого подхода заключается в  стремлении связать данные с  обрабатывающими эти данные методами  в единое целое - объект. Объекты  имеют характеристики и возможности.

 

    Фактически объектно-ориентированное  программирование можно рассматривать  как модульное программирование  нового уровня, когда вместо во многом случайного, механического объединения процедур и данных акцент делается на их смысловую связь.

    Объектная модель  способна одинаково хорошо описать  как элементы управления графического  интерфейса (типа кнопок и раскрывающихся  списков), так и реальные объекты(велосипед, самолёт, кота и воду). Таким образом, задача объектно-ориентированного программирования состоит в том, чтобы правильно представить эти объекты на языке программирования.

 

    В языке C++ полностью поддерживаются принципы объектно-ориентированного программирования, включая три кита, на которых оно состоит: инкапсуляцию, наследование и полиморфизм.

 

    Одновременно  с появлением и детализацией  концепции появились и основанные  на ней языки программирования. Одним из первых явился алгоритмический  язык Modula 2. Язык программирования Turbo Pascal, разработанный фирмой Borland, начиная с версии 5.5 стал объектно-ориентированным. Но наиболее последовательно воплощение концепция объектно-ориентированного программирования нашла в алгоритмическом языке C++.

    Пусть, например, нужно  определить для графической системы  тип shape (фигура). Проблема состоит в том, что мы не различаем общие свойства фигур (например, фигура имеет цвет, ее можно нарисовать и т.д.) и свойства конкретной фигуры (например, окружность - это такая фигура, которая имеет радиус, она изображается с помощью функции, рисующей дуги и т.д.).

    Суть объектно-ориентированного  программирования в том, что  оно позволяет выражать эти  различия и использует их. Язык, который имеет конструкции для  выражения и использования подобных  различий, поддерживает объектно-ориентированное  программирование. Все другие языки  не поддерживают его.  Здесь  основную роль играет механизм  наследования, заимствованный из  языка Симула.

 

    Те функции, для которых  можно определить заявленный  интерфейс, но реализация которых  (т.е. тело с операторной частью) возможна только для конкретных  фигур, отмечены служебным словом  virtual (виртуальные). В Симуле и С++ виртуальность функции означает: "функция может быть определена позднее в классе, производном от данного".

 

    Определите, какой класс  вам необходим; предоставьте полный  набор операций для каждого  класса; общность классов выразите  явно с помощью наследования.

 

    Если общность между  классами отсутствует, вполне  достаточно абстракции данных. Насколько  применимо объектно-ориентированное  программирование для данной  области приложения определяется  степенью общности между разными  типами, которая позволяет использовать  наследование и виртуальные функции.  В некоторых областях, таких, например, как интерактивная графика, есть  широкий простор для объектно-ориентированного  программирования. В других областях, в которых используются традиционные  арифметические типы и вычисления  над ними, трудно найти применение  для более развитых стилей  программирования, чем абстракция  данных. Здесь средства, поддерживающие  объектно-ориентированное программирование, очевидно, избыточны.

 

    Нахождение общности  среди отдельных типов системы  представляет собой нетривиальный  процесс. Степень такой общности  зависит от способа проектирования  системы. В процессе проектирования  выявление общности классов должно  быть постоянной целью. Она  достигается двумя способами:  либо проектированием специальных  классов, используемых как "кирпичи"  при построении других, либо поиском  похожих классов для выделения  их общей части в один базовый  класс.

 

    Для представления на С++ множества взаимозависимых классов можно использовать дружественные классы ($$5.4.1).

    Еще один способ выражения  общности понятий в языке предоставляют  шаблоны типа. Шаблонный класс  задает целое семейство классов.  Например, шаблонный класс список  задает классы вида "список  объектов T", где T может быть  произвольным типом. Таким образом,  шаблонный тип указывает, как  получается новый тип из заданного  в качестве параметра. Самые  типичные шаблонные классы - это  контейнеры, в частности, списки, массивы и ассоциативные массивы.

    1. Поддержка абстракции данных

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

перегрузка операций.

    1. Поддержка объектно-ориентированного программирования

    Поддержку объектно-ориентированного  программирования обеспечивают  классы вместе с механизмом  наследования, а также механизм  вызова функций-членов в зависимости  от истинного типа объекта  (дело в том, что возможны  случаи, когда этот тип неизвестен  на стадии трансляции). Особенно  важную роль играет механизм  вызова функций-членов.  Не менее  важны средства, поддерживающие  абстракцию данных (о них мы  говорили ранее). Все доводы в  пользу абстракции данных и  базирующихся на ней методов,  которые позволяют естественно  и красиво работать с типами, действуют и для языка, поддерживающего  объектно-ориентированное программирование. Успех обоих методов зависит  от способа построения типов,  от того, насколько они просты, гибки и эффективны. Метод объектно-ориентированного  программирования позволяет определять  более общие и гибкие пользовательские  типы по сравнению с теми, которые  получаются, если использовать только  абстракцию данных.

 

    Основная трудность для  языка, который создавался в  расчете на методы упрятывания данных, абстракции данных и объектно-ориентированного программирования, в том, что для того, чтобы быть языком общего назначения, он должен:

    - идти на традиционных  машинах;

    - сосуществовать с традиционными  операционными системами и языками;

    - соперничать с традиционными  языками программирования в эффективности  выполнения программы;

    - быть пригодным во  всех основных областях приложения;

 

    Это значит, что должны  быть возможности для эффективных  числовых операций (арифметика с  плавающей точкой без особых  накладных расходов, иначе пользователь  предпочтет Фортран) и средства  такого доступа к памяти, который  позволит писать на этом языке  драйверы устройств. Кроме того, надо уметь писать вызовы функций  в достаточно непривычной записи, принятой для обращений в традиционных  операционных системах. Наконец,  должна быть возможность из  языка, поддерживающего объектно-ориентированное  программирование, вызывать функции,  написанные на других языках, а из других языков вызывать  функцию на этом языке, поддерживающем  объектно-ориентированное программирование.

 

    С++ проектировался для поддержки того принципа, что всякая программа есть модель некоторых существующих в реальности понятий, а класс является конкретным представлением понятия, взятого из области приложения. Поэтому классы пронизывают всю программу на С++, и налагаются жесткие требования на гибкость понятия класса, компактность объектов класса и эффективность их использования. Если работать с классами будет неудобно или слишком накладно, то они просто не будут использоваться, и программы выродятся в программы на "лучшем С". Значит пользователь не сумеет насладиться теми возможностями, ради которых, собственно, и создавался язык

 

 

ЗАКЛЮЧЕНИЕ

Выделим некоторую  общую тенденцию в развитии языков программирования: языки развиваются  в сторону все большей и  большей абстракции. И это сопровождается падением эффективности. Но это стоит  того: повышение уровня абстракции влечет за собой повышение уровня надежности программирования. С низкой эффективностью можно бороться путем  создания более быстрых компьютеров. Если требования к памяти слишком  высоки, можно увеличить ее объем. Это, конечно, требует времени и  средств, но это решаемо. А вот  с ошибками в программах можно  бороться только одним способом: их надо исправлять. А еще лучше -- не совершать. А еще лучше максимально затруднить их совершение. И именно на это направлены все исследования в области языков программирования. А с потерей эффективности придется смириться.

Целью данного  обзора была попытка дать представление  о всем многообразии существующих языков программирования. Среди программистов часто бытует мнение о всеобщей применимости того или иного языка (C, C++, Pascal и т.п.). Это мнение возникает по нескольким причинам: недостаток информации, привычка, инертность мышления. Настоящий профессионал должен постоянно стремиться повышать свои профессиональную квалификацию. А для этого нужно не бояться экспериментировать. Разумеется, прежде чем приниматься использовать новый язык, нужно внимательно изучить все его особенности, включая наличии эффективной реализации, возможности взаимодействия с существующими модулями и т.п., и только после этого принимать решение. Конечно, всегда есть риск пойти не тем путем, но не ошибается лишь тот, кто ничего не делает.

Часто проводятся дискуссии вида <язык A лучше, чем  язык B>. Прочитав этот обзор, можно  убедится в бессмысленности таких споров. Максимум, о чем может идти речь -- это о преимуществах одного языка над другим при решении той или иной задачи в тех или иных условиях. Вот здесь действительно иногда есть о чем поспорить. И решение подчас отнюдь не очевидно.

Этот обзор  языков программирования задумывался  как ответ тем, кто кричит <язык X MUST DIE>. Надеюсь, что ответ получился  достаточно адекватным и убедительным.

 

ЛИТЕРАТУРА

1 Ваулин А.С. Языки программирования. кн.5 - М.: Школа-Пресс, 1993.

2 Вычислительная техника и программирование. / Под ред. А.В. Петрова – М.: Высш. шк., 1990.

3 Касвандс Э.Г. Введение в программирование на языке Ассемблер. ч.1 – М.: ЮНИТИ – ДАНА, 1993.

4 Малютин Э.А. Языки программирования. – М.: Просвещение, 1982.

5 Журнал «КомпьюТерра» №37-38 1994.

6 http://www.assembler.webservis.ru

 

 

 

Федеральное агентство по образованию

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ  УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО  ОБРАЗОВАНИЯ "ОМСКИЙ ГОСУДАРСТВЕННЫЙ  ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ" (ОмГТУ)

Кафедра «Прикладная математика и  информационные системы»

Учебная научно-исследовательская  работа

На тему:

КРАТКИЙ ОБЗОР ОСНОВНЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

 

Принял:

Преподаватель: Ефимова Е. Ш.

 

подпись, дата

Выполнил:

Студент: гр. МО-310 Максимова А.В.

 

подпись, дата


 

 

 

 

                                                             Омск 2012

 


Информация о работе Обзор языков програмирования