Характеристики языков программирования с точки зрения элементов объектной модели
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Приведем характеристики объектно-ориентированных языков программирования с точки зрения семи основных элементов объектной модели.

 

Табл.1 Основные характеристики Smalltalk

Абстракции Переменные экземпляра Методы экземпляра Переменные класса Методы класса Да Да Да Да
Инкапсуляция Переменных Методов Закрытые Открытые
Модульность Разновидности модулей Нет
Иерархии Наследование Шаблоны Метаклассы Одиночное Нет Да
Типизация Сильная типизация Полиморфизм Нет Да (одиночный)
Параллельность Многозадачность Непрямая (посредством классов)
Сохраняемость Долгоживущие объекты Нет

 

Табл.2 Основные характеристики Object Pascal.

Абстракции Переменные экземпляра Методы экземпляра Переменные класса Методы класса Да Да Нет Нет
Инкапсуляция Переменных Методов Открытые Открытые
Модульность Разновидности модулей Модуль (unit)
Иерархии Наследование Шаблоны Метаклассы Одиночное Нет Нет
Типизация Сильная типизация Полиморфизм Да Да (одиночный)
Параллельность Многозадачность Нет
Сохраняемость Долгоживущие объекты Нет

 

Табл.3.Основные характеристики C++ .

Абстракции Переменные экземпляра Методы экземпляра Переменные класса Методы класса Да Да Да Да
Инкапсуляция Переменных Методов Открытые, защищенные, закрытые Открытые, защищенные, закрытые
Модульность Разновидности модулей файл
Иерархии Наследование Шаблоны Метаклассы Множественное Да Нет
Типизация Сильная типизация Полиморфизм Да Да (одиночный)
Параллельность Многозадачность Непрямая (посредством классов)
Сохраняемость Долгоживущие объекты Нет

 

Табл.4 Основные характеристики CLOS(Common Lisp Object System).

Абстракции Переменные экземпляра Методы экземпляра Переменные класса Методы класса Да Да Да Да
Инкапсуляция Переменных Методов Чтение, запись, доступ Открытые
Модульность Разновидности модулей Пакет
Иерархии Наследование Шаблоны Метаклассы Множественное Нет Да
Типизация Сильная типизация Полиморфизм Возможна Да (множественный)
Параллельность Многозадачность Да
Сохраняемость Долгоживущие объекты Нет

 

Табл. 5 Основные характеристики Ada  

Абстракции Переменные экземпляра Методы экземпляра Переменные класса Методы класса Да Да Нет Нет
Инкапсуляция Переменных Методов Открытые, закрытые Открытые, закрытые
Модульность Разновидности модулей Пакет
Иерархии Наследование Шаблоны Метаклассы Нет (входит в Ada9x) Да Нет
Типизация Сильная типизация Полиморфизм Да Нет (входит в Ada9x)
Параллельность Многозадачность Да
Сохраняемость Долгоживущие объекты Нет

 

Табл. 6 Основные характеристики Eiffel.

Абстракции Переменные экземпляра Методы экземпляра Переменные класса Методы класса Да Да Нет Нет
Инкапсуляция Переменных Методов Закрытые Открытые, закрытые
Модульность Разновидности модулей Блок (unit)
Иерархии Наследование Шаблоны Метаклассы Множественное Да Нет
Типизация Сильная типизация Полиморфизм Да Да
Параллельность Многозадачность Нет
Сохраняемость Долгоживущие объекты Нет

 

Приложение

 

Таблица «популярности языков программирования» (TIOBE Programming Community Index for December 2006)

Position
Dec 2006

Position
Dec 2005

Delta in Position

Programming Language

Ratings
Dec 2006

Delta
Dec 2005

1 1 Java 19.907% -2.36%
2 2 C 16.616% -1.75%
3 3 C++ 10.409% -0.39%
4 5 (Visual) Basic 8.912% +1.33%
5 4 PHP 8.537% -2.24%
6 6 Perl 6.396% -0.74%
7 8 Python 3.762% +1.00%
8 7 C# 3.171% -0.11%
9 10 Delphi 2.569% +1.11%
10 9 JavaScript 2.562% +0.68%
11 20 9 * Ruby 2.334% +1.90%
12 11 SAS 2.232% +1.06%
13 12 PL/SQL 1.345% +0.28%
14 27 13 * D 0.971% +0.67%
15 17 ABAP 0.903% +0.35%
16 15 Ada 0.661% +0.07%
17 13 Lisp/Scheme 0.645% -0.12%
18 14 COBOL 0.601% -0.13%
19 16 Pascal 0.566% -0.01%
20 37 17 * Transact-SQL 0.472% +0.31%

 

Заключение

 

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

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

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

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


Литература

 

1.Информатика под редакцией Е.К. Хеннера, М.,Академия,2004г.

2.Информатика.Базовый курс под ред. С. В. Симоновича, С.-П «Питер» 2005г.

3.Языки программирования. Обзор-ликбез. Хакер №4,с.36-40.

4.Р.Богатырев, Природа и эволюция сценарных языков, Мир ПК, №11,2001

5.Г.Буг, Объектно-ориентированный анализ и проектирование

6.http://citforum.ru

7. http://school.keldysh.ru/sch444/MUSEUM /LANR/evol.htm

8. http://ru.wikipedia.org

9. http://www.levenez.com/lang

10. http://tiobe.com






Дата: 2019-12-22, просмотров: 188.