Эволюция и классификация языков программирования. Основные понятия языков программирования
МИНИСТЕРСТВО
ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ
КУРГАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
КАФЕДРА
«ЭКОНОМИЧЕСКАЯ ТЕОРИЯ И МОДЕЛИРОВАНИЕ
ЭКОНОМИЧЕСКИХ ПРОЦЕССОВ»
РЕФЕРАТ
по дисциплине «Экономическая информатика»
на тему
«Эволюция и классификация языков программирования. Основные понятия языков программирования.»
Вариант
№28
Выполнил студент:
Денисова Екатерина
Группа Э1711
Руководитель: Филимонов Сергей Михайлович, старший преподаватель
Курган 2011
1.Введение……………………………………………………
2.Способы
реализации языков…………………………………
3.Движущие
силы эволюции языков
4.История
развития языков программирования………………………………….
5.Классификация
языков программирования…………………
6.Язык
программирования Фортран………………
7.APL…………………………………………………………………
8.Lisp и ему подобные языки……………………………….... ……………………10
9.Cobol……………………………………………………………
10.Algol…………………………………………………………
11.Snobol и Icon……………………………………………………………………
12.BASIC…………………………………………………………
13.SETL………………………………………………………….
14.Pascal-подобные языки………………………………………………………….12
15.С-подобные
языки……………………………………………………………….
16.Языки Ada и Ada 95………………………………………………………………13
17.Скриптовые
языки……………………………………………………………..
18.Perl……………………………………………………………
19.Python………………………………………………………
20.Объектно-ориентированные языки…………………………………………...14
21.Языки
параллельного
22.Функциональные языки…………………………………………………………16
23.Языки
логического программирования……
24.Вывод…………………………………………………………
25.Список
литературы……………………………………………………
Развитие
вычислительной техники сопровождается
созданием новых и совершенствованием
существующих средств общения программистов
с ЭВМ - языков программирования(ЯП).
Язык программирования — формальная знаковая система, предназначенная для
записи компьютерных
программ. Язык
программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний
вид программы и действия, которые выполнит
исполнитель (компьютер) под ее управлением.
В более абстрактном виде ЯП является
средством создания программных моделей
объектов и явлений внешнего мира.
Язык программирования строится в соответствии с той или иной базовой моделью вычислений и парадигмой программирования. К настоящему времени созданы десятки различных ЯП от самых примитивных до близких к естественному языку человека. Чтобы разобраться во всем многообразии ЯП, нужно знать их классификацию, а также историю создания, эволюцию и тенденции развития. Этот реферат посвящен рассмотрению этих вопросов.
Со времени создания первых программируемых машин человечество придумало более двух с половиной тысяч языков программирования. Каждый год их число увеличивается. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.
Способы реализации языков
Языки программирования могут быть реализованы как компилируемые и интерпретируемые.
Программа на компилируемом языке при помощи компилятора (особой программы) преобразуется (компилируется) в машинный код (набор инструкций) для данного типа процессора и далее собирается в исполнимый модуль, который может быть запущен на исполнение как отдельная программа. Другими словами, компилятор переводит исходный текст программы с языка программирования высокого уровня в двоичные коды инструкций процессора.
Если программа написана на интерпретируемом языке, то интерпретатор непосредственно выполняет (интерпретирует) исходный текст без предварительного перевода. При этом программа остается на исходном языке и не может быть запущена без интерпретатора. Процессор компьютера, в этой связи, можно назвать интерпретатором для машинного кода.
Разделение
на компилируемые и
Для любого интерпретируемого языка можно создать компилятор — например, язык Лисп, изначально интерпретируемый, может компилироваться без каких бы то ни было ограничений. Создаваемый во время исполнения программы код может так же динамически компилироваться во время исполнения.
Как правило, скомпилированные программы выполняются быстрее и не требуют для выполнения дополнительных программ, так как уже переведены на машинный язык. Вместе с тем, при каждом изменении текста программы требуется её перекомпиляция, что замедляет процесс разработки. Кроме того, скомпилированная программа может выполняться только на том же типе компьютеров и, как правило, под той же операционной системой, на которую был рассчитан компилятор. Чтобы создать исполняемый файл для машины другого типа, требуется новая компиляция.
Интерпретируемые языки обладают некоторыми специфическими дополнительными возможностями (см. выше), кроме того, программы на них можно запускать сразу же после изменения, что облегчает разработку. Программа на интерпретируемом языке может быть зачастую запущена на разных типах машин и операционных систем без дополнительных усилий.
Однако интерпретируемые программы выполняются заметно медленнее, чем компилируемые, кроме того, они не могут выполняться без программы-интерпретатора.
Движущие силы эволюции языков программирования.
Чтобы понимать тенденции развития ЯП, нужно знать движущие силы их эволюции. Для выяснения этого вопроса будем рассматривать ЯП с различных точек зрения.
1) Во-первых, ЯП является инструментом
программиста для создания программ. Для
создания хороших программ нужны хорошие
ЯП. Поэтому одной из движущих сил эволюции
ЯП является стремление разработчиков
к созданию более совершенных программ.
2) Во-вторых,
процесс разработки программы можно сравнивать
с промышленным производством, в котором
определяющими факторами являются производительность
труда коллектива программистов, себестоимость
и качество программной продукции. Создаются
различные технологии разработки программ
(структурное, модульное, объектно-ориентированное
программирование и другие), которые должны
поддерживаться ЯП. Поэтому второй движущей
силой эволюции ЯП является стремление
к повышению эффективности процесса производства
программной продукции.
3) В-третьих, программы можно рассматривать
как аналог радиоэлектронных устройств
обработки информации, в которых вместо
радиодеталей и микросхем используют
конструкции ЯП. Как и электронные устройства,
программы могут быть простейшими ( уровня
детекторного приемника ) и сложными (уровня
автоматической космической станции),
при этом уровень инструмента должен соответствовать
сложности изделия. Поэтому третьей движущей
силой является увеличение разнообразия
и повышение сложности задач, решаемых
с помощью ЭВМ.
4) В-четвертых, совершенствование самих
ЭВМ приводит к необходимости создания
языков, максимально реализующих новые
возможности ЭВМ.
5) В-пятых, программы являются интеллектуальным
продуктом, который нужно накапливать
и приумножать. Но программы, как и технические
изделия, обладают свойством морального
старения, одной из причин которого является
их зависимость от типа ЭВМ и операционной
среды. Поэтому ЯП должен обеспечивать
продолжительный жизненный цикл программы.
Стремление к этому и является движущей
силой развития ЯП.
История развития языков
программирования.
Известно, что первым программистом была
женщина - леди Ада Лавлейс, дочь лорда
Байрона. Она разрабатывала программы
для одного из первых механических компьютеров,
созданного в начале XIX века английским
ученым Чарльзом Беббиджом. Однако, настоящее
программирование в современном понимании
началось с момента создания первой электронной
вычислительной машины. Но тем не менее,
имя этой женщины - Ada - присвоено одному
из самых мощных современных ЯП.
Первые ЭВМ, созданные человеком, имели
небольшой набор команд и встроенных типов
данных, но позволяли выполнять программы
на машинном языке. Машинный язык (МЯ) -
единственный язык, понятный ЭВМ. Он реализуется
аппаратно: каждую команду выполняет некоторое
электронное устройство. Программа на
МЯ представляет собой последовательность
команд и данных, заданных в цифровом виде.
Например, команда вида 1А12 в 16-ричном виде
или 0001101000010010 в двоичном виде означает
операцию сложения (1А) содержимого регистров
1 и 2.
Данные на МЯ представлены числами и символами.
Операции являются элементарными и из
них строится вся программа. Ввод программы
в цифровом виде производился непосредственно
в память с пульта ЭВМ либо с примитивных
устройств ввода. Естественно, что процесс
программирования был очень трудоемким,
разобраться в программе даже автору было
довольно сложно, а эффект от применения
ЭВМ был довольно низким. Этот этап в развитии
ЯП показал, что программирование является
сложной проблемой, трудно поддающейся
автоматизации, но именно программное
обеспечение определяет в конечном счете
эффективность применения ЭВМ. Поэтому
на всех последующих этапах усилия направлялись
на совершенствование интерфейса между
программистом и ЭВМ - языка программирования.
Стремление программистов оперировать не цифрами, а символами, привело к созданию мнемонического языка программирования, который называют ассемблером, мнемокодом, автокодом. Этот язык имеет определенный синтаксис записи программ, в котором, в частности, цифровой код операции заменен мнемоническим кодом. Например, команда сложения записывается в виде AR 1,2 и означает сложение (Addition) типа регистр-регистр (Register) для регистров 1 и 2. Теперь программа имеет более удобочитаемую форму, но ее не понимает ЭВМ. Поэтому понадобилось создать специальную программу транслятор, который преобразует программу с языка ассемблера на МЯ. Эта проблема потребовала, в свою очередь, глубоких научных исследований и разработки различных теорий, например теорию формальных языков, которые легли в основу создания трансляторов. Практически любой класс ЭВМ имеет свой язык ассемблера. На сегодняшний день язык ассемблера используется для создания системных программ, использующих специфические аппаратные возможности данного класса ЭВМ.
Следующий этап характеризуется созданием
языков высокого уровня (ЯВУ). Эти языки
являются универсальными (на них можно
создавать любые прикладные программы)
и алгоритмически полными, имеют более
широкий спектр типов данных и операций,
поддерживают технологии программирования.
На этих языках создается неисчислимое
множество различных прикладных программ.
Принципиальными
отличиями ЯВУ от языков низкого уровня
являются:
- использование переменных;
- возможность записи сложных выражений;
- расширяемость типов данных за счет конструирования новых типов из базовых;
- расширяемость набора операций за счет подключения библиотек подпрограмм;
- слабая зависимость от типа ЭВМ.
С усложнением ЯП усложняются и трансляторы
для них. Теперь в набор инструментов программиста,
кроме транслятора, входит текстовый редактор
для ввода текста программ, отладчик для
устранения ошибок, библиотекарь для создания
библиотек программных модулей и множество
других служебных программ. Все вместе
это называется системой программирования.
Наиболее яркими представителями ЯВУ
являются 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 (и задумывался как альтернатива
последнему), но имеет и отличительные
особенности. Ориентирован, в основном,
на разработку многокомпонентных Интернет-приложений.

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