Языки программирования: эволюция, классификация. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Языки программирования: эволюция, классификация.



Первичные языки программирования появились совсем недавно. По словам различных исследователей в середине двадцатого века. Первичные языки программирования были примитивными и ориентировались на численные расчеты. И теоретические научные расчеты, и прикладные задачи. Программы, написанные с помощью ранних языков программирования, являлись линейными последовательностями элементарных операций с регистрами, которые хранили в себе информацию. Первичные языки программирования оптимизировались специально для аппаратной архитектуры определенного компьютера.

Работоспособная на одной вычислительной машине программа чаще всего на другой не выполнялась. Первичные языки программирования зависели от среды вычислений и примерно соответствовали нынешним языкам ассемблера либо машинным кодам. В следующем десятилетии появились языки программирования, которые были на более высоком уровне, по сравнению с предшественниками. Различие заключается в увеличении трудовой эффективности разработчиков с помощью абстрагирования от определенных частей аппаратного обеспечения.

Учитывая то, что программа являлась набором директив, обращенных к компьютеру, этот подход назвали императивным.

История развития ЯП
Известно, что первым программистом была женщина - леди Ада Лавлейс, дочь лорда Байрона. Она разрабатывала программы для одного из первых механических компьютеров, созданного в начале 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. Непроцедурные языки по типу встроенной процедуры поиска решений делятся на:
· реляционные;
· функциональные;
· логические.
Рассмотренная схема классификации позволяет каждому ЯП присвоить один из признаков каждого класса.



Поделиться:


Последнее изменение этой страницы: 2017-02-21; просмотров: 582; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.132.194 (0.004 с.)