Абстракции | Переменные экземпляра Методы экземпляра Переменные класса Методы класса | Да Да Нет Нет |
Инкапсуляция | Переменных Методов | Открытые, закрытые Открытые, закрытые |
Модульность | Разновидности модулей | Пакет |
Иерархии | Наследование Шаблоны Метаклассы | Нет (входит в 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