Автор: Пользователь скрыл имя, 19 Декабря 2011 в 09:30, реферат
Со времени создания первых программируемых машин человечество придумало более двух с половиной тысяч языков программирования. Каждый год их число увеличивается. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.
1.Введение……………………………………………………………………………...3
2.Способы реализации языков………………………………………………………3
3.Движущие силы эволюции языков программирования……………………......4
4.История развития языков программирования…………………………………..5
5.Классификация языков программирования……………………………………..8
6.Язык программирования Фортран………………………………………………..9
7.APL……………………………………………………………………………………10
8.Lisp и ему подобные языки……………………………….... ……………………10
9.Cobol………………………………………………………………………………….10
10.Algol…………………………………………………………………………………11
11.Snobol и Icon………………………………………………………………………11
12.BASIC……………………………………………………………………………….11
13.SETL…………………………………………………………..................................11
14.Pascal-подобные языки………………………………………………………….12
15.С-подобные языки………………………………………………………………..12
16.Языки Ada и Ada 95………………………………………………………………13
17.Скриптовые языки……………………………………………………………..…13
18.Perl………………………………………………………………………………….14
19.Python……………………………………………………………………………....14
20.Объектно-ориентированные языки…………………………………………...14
21.Языки параллельного программирования…………………………………...15
22.Функциональные языки…………………………………………………………16
23.Языки логического программирования……………………………………… 17
24.Вывод………………………………………………………………………………17
25.Список литературы………………………………………………………………18
Следующий этап характеризуется созданием
языков высокого уровня (ЯВУ). Эти языки
являются универсальными (на них можно
создавать любые прикладные программы)
и алгоритмически полными, имеют более
широкий спектр типов данных и операций,
поддерживают технологии программирования.
На этих языках создается неисчислимое
множество различных прикладных программ.
Принципиальными
отличиями ЯВУ от языков низкого уровня
являются:
- использование переменных;
- возможность записи сложных выражений;
- расширяемость типов данных за счет конструирования новых типов из базовых;
- расширяемость набора операций за счет подключения библиотек подпрограмм;
- слабая зависимость от типа ЭВМ.
С усложнением ЯП усложняются и трансляторы
для них. Теперь в набор инструментов программиста,
кроме транслятора, входит текстовый редактор
для ввода текста программ, отладчик для
устранения ошибок, библиотекарь для создания
библиотек программных модулей и множество
других служебных программ. Все вместе
это называется системой программирования.
Наиболее яркими представителями ЯВУ
являются FORTRAN, PL/1, Pascal, C, Basic, Ada.
Может возникнуть вопрос: почему создано
столько различных языков одного класса?
Почему нельзя создать один язык на все
случаи жизни? Ответ на этот вопрос может
быть таким же, как и на вопрос о различных
языках народов мира: так уж получилось.
Каждый из разработчиков ЯВУ стремился
создать самый лучший и самый универсальный
язык, который позволял бы быстро получать
самые эффективные, надежные и безошибочные
программы. Однако в процессе этого поиска
выяснилось, что дело не в самом языке,
а в технологии его использования. Поэтому
дальнейшее развитие языков стало определяться
новыми технологиями программирования.
Одновременно с развитием универсальных
ЯВУ стали развиваться проблемно-ориентированные
ЯП, которые решали экономические задачи
(COBOL), задачи реального времени (Modula-2, Ada),
символьной обработки ( Snobol), моделирования
(GPSS, Simula, SmallTalk), численно-аналитические
задачи (Analitic) и другие. Эти специализированные
языки позволяли более адекватно описывать
объекты и явления реального мира, приближая
язык программирования к языку специалиста
в проблемной области.
Другим направлением развития ЯП является
создание языков сверхвысокого уровня
(ЯСВУ). На языке высокого уровня программист
задает процедуру (алгоритм) получения
результата по известным исходным данным,
поэтому они называются процедурными
ЯП. На ЯСВУ программист задает отношения
между объектами в программе, например
систему линейных уравнений, и определяет,
что нужно найти, но не задает как получить
результат. Такие языки еще называют непроцедурными,
т.к. сама процедура поиска решения встроена
в язык (в его интерпретатор). Такие языки
используются, например, для решения задач
искусственного интеллекта (Lisp, Prolog) и
позволяют моделировать мыслительную
деятельность человека в процессе поиска
решений.
К непроцедурным языкам относят и языки
запросов систем управления базами данных
(QBE, SQL).
Классификация
ЯП
Исходя из вышесказанного, ЯП можно классифицировать
по следующим признакам:
1) По степени
ориентации на специфические возможности
ЭВМ ЯП делятся на:
- машинно-зависимые;
- машинно-независимые.
К машинно-зависимым ЯП относятся машинные языки, ассемблеры и автокоды, которые используются в системном программировании. Программа на машинно-зависимом ЯП может выполняться только на ЭВМ данного типа. Программа на машинно-независимом ЯП после трансляции на машинный язык становится машинно-зависимой. Этот признак ЯП определяет мобильность получаемых программ .
2) По степени
детализации алгоритма получения результата
ЯП делятся на:
- языки низкого уровня;
- языки высокого уровня;
- языки сверхвысокого уровня.
3) По степени ориентации на решение определенного
класса задач:
- проблемно-ориентированные;
- универсальные.
4) По возможности дополнения новыми типами
данных и операциями:
- расширяемые;
- нерасширяемые.
5) По возможности управления реальными
объектами и процессами:
- языки систем реального времени;
- языки систем условного времени.
6) По способу
получения результата:
- процедурные;
- непроцедурные.
7) По типу решаемых задач:
- языки системного программирования;
- языки прикладного программирования.
8) Непроцедурные языки по типу встроенной
процедуры поиска решений делятся на:
- реляционные;
- функциональные;
- логические.
Вот
некоторые из существующих или созданных
ранее языков программирования:
В 1954 году в недрах корпорации IBM группой разработчиков во главе с Джоном Бэкусом (John Backus) был создан язык программирования Fortran.
Значение этого события трудно переоценить. Это первый язык программирования высокого уровня. Впервые программист мог по-настоящему абстрагироваться от особенностей машинной архитектуры. Ключевой идеей, отличающей новый язык от ассемблера, была концепция подпрограмм. Напомним, что это современные компьютеры поддерживают подпрограммы на аппаратном уровне, предоставляя соответствующие команды и структуры данных (стек) прямо на уровне ассемблера, в 1954 же году это было совершенно не так. Поэтому компиляция Fortran’а была процессом отнюдь не тривиальным. Кроме того, синтаксическая структура языка была достаточно сложна для машинной обработки в первую очередь из-за того, что пробелы как синтаксические единицы вообще не использовались. Это порождало массу возможностей для скрытых ошибок, таких, например:
В Фортране следующая
конструкция описывает «цикл for до
метки 10 при изменении индекса от 1 до
100»:
DO 10 I=1,100
Если же здесь заменить запятую на точку,
то получится оператор присваивания:
DO10I = 1.100
Говорят, что такая ошибка заставила ракету
взорваться во время старта!
Язык
Фортран использовался (и используется
по сей день) для научных вычислений.
Он страдает от отсутствия многих привычных
языковых конструкций и атрибутов, компилятор
практически никак не проверяет синтаксически
правильную программу с точки зрения семантической
корректности (соответствие типов и проч.).
В нем нет поддержки современных способов
структурирования кода и данных. Это осознавали
и сами разработчики. По признанию самого
Бэкуса, перед ними стояла задача скорее
разработки компилятора, чем языка. Понимание
самостоятельного значения языков программирования
пришло позже.
В 1957 году
была предпринята попытка создания
языка для описания математической
обработки данных. Язык был назван
APL (Application Programming Language). Его отличительной
особенностью было использование математических
символов (что затрудняло применение на
текстовых терминалах; появление графических
интерфейсов сняло эту проблему) и очень
мощный синтаксис, который позволял производить
множество нетривиальных операций прямо
над сложными объектами, не прибегая к
разбиению их на компоненты. Широкому
применению помешало, как уже отмечалось,
использование нестандартных символов
как элементов синтаксиса.
3. Lisp и ему подобные языки
В 1958 году
появился язык Lisp — язык для обработки
списков. Получил достаточно широкое
распространение в системах искусственного
интеллекта. Имеет несколько потомков:
Planner (1967), Scheme (1975), Common Lisp (1984). Многие его
черты были унаследованы современными
языками функционального программирования.
В 1960 году был создан язык программирования Cobol.
Он задумывался как язык для создания коммерческих приложений, и он стал таковым. На Коболе написаны тысячи прикладных коммерческих систем. Отличительной особенностью языка является возможность эффективной работы с большими массивами данных. Популярность Кобола столь высока, что даже сейчас, при всех его недостатках (по структуре и замыслу Кобол во многом напоминает Фортран) появляются новые его диалекты и реализации. Так появилась реализация Кобола, совместимая с Microsoft .NET, что потребовало, вероятно, внесения в язык некоторых черт объектно-ориентированного языка.
В 1960 году
командой во главе с Петером Науром
(Peter Naur) был создан язык программирования
Algol. Этот язык дал начало целому семейству
Алгол-подобных языков (важнейший представитель
— Pascal). В 1968 году появилась новая версия
языка. Она не нашла столь широкого практического
применения, как первая версия, но была
весьма популярна в кругах теоретиков.
Язык был достаточно интересен, так как
обладал многими уникальными на так момент
характеристиками.
В 1962 году
появился язык Snobol (а в 1974 — его
преемник Icon), предназначенный для
обработки строк. Синтаксис Icon напоминает
С и Pascal одновременно. Отличие заключается
в наличии мощных встроенных функций работы
со строками и связанная с этими функциями
особая семантика. Современным аналогом
Icon и Snobol является Perl — язык обработки
строк и текстов, в который добавлены некоторые
объектно-ориентированные возможности.
Считается очень практичным языком, однако
ему недостает элегантности.
В 1963 году в Дартмурском колледже (Dartmouth College) был создан язык программирования BASIC (Beginners’ All-Purpose Symbolic Instruction Code — многоцелевой язык символических инструкций для начинающих). Язык задумывался в первую очередь как средство обучения и как первый изучаемый язык программирования. Он предполагался легко интерпретируемым и компилируемым. Надо сказать, что BASIC действительно стал языком, на котором учатся программировать. Было создано несколько мощных реализаций BASIC, поддерживающих самые современные концепции программирования (ярчайший пример — Microsoft Visual Basic).
В 1969 году
был создан язык SETL — язык для
описания операций над множествами.
Основной структурой данных в языке
является множество, а операции аналогичны
математическим операциям над множествами.
Полезен при написании программ, имеющих
дело со сложными абстрактными объектами.
В 1970 году Никлаусом Виртом был создал язык программирования Pascal. Язык замечателен тем, что это первый широко распространенный язык для структурного программирования (первым, строго говоря, был Алгол, но он не получил столь широкого распространения). Впервые оператор безусловного перехода перестал играть основополагающую роль при управлении порядком выполнения операторов. В этом языке также внедрена строгая проверка типов, что позволило выявлять многие ошибки на этапе компиляции.
Отрицательной
чертой языка было отсутствие в нем
средств для разбиения
В 1972 году Керниганом и Ритчи был создан язык программирования C. Он создавался как язык для разработки операционной системы UNIX. Его часто называют «переносимым ассемблером», имея в виду то, что он позволяет работать с данными практически так же эффективно, как на ассемблере, предоставляя при этом структурированные управляющие конструкции и абстракции высокого уровня (структуры и массивы). Именно с этим связана его огромная популярность и поныне. И именно это является его ахиллесовой пятой. Компилятор C очень слабо контролирует типы, поэтому очень легко написать внешне совершенно правильную, но логически ошибочную программу.
В 1986 году Бьярн Страуструп создал первую версию языка C++, добавив в язык C объектно-ориентированные черты, взятые из Simula (см. ниже), и исправив некоторые ошибки и неудачные решения языка. C++ продолжает совершенствоваться и в настоящее время, так в 1998 году вышла третья версия стандарта, содержащая в себе некоторые довольно существенные изменения. Язык стал основой для разработки современных больших и сложных проектов. У него имеются, однако же, и слабые стороны, вытекающие из требований эффективности.
В 1995 году в корпорации Sun Microsystems Кеном Арнольдом и Джеймсом Гослингом был создан язык Java. Он наследовал синтаксис C и C++ и был избавлен от некоторых неприятных черт последнего. Отличительной особенностью языка является компиляция в код некоей абстрактной машины, для которой затем пишется эмулятор (Java Virtual Machine) для реальных систем. Кроме того, в Java нет указателей и множественного наследования, что сильно повышает надежность программирования.
В 1999–2000
годах в корпорации Microsoft был создан
язык C#. Он в достаточной степени
схож с Java (и задумывался как альтернатива
последнему), но имеет и отличительные
особенности. Ориентирован, в основном,
на разработку многокомпонентных Интернет-приложений.