p align="left">Табл.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
Страницы: 1, 2, 3, 4, 5, 6
|