Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ (ИСТОРИКО-ТЕОРЕТИЧЕСКИЕ АСПЕКТЫ ИЗУЧЕНИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ).pdf
Добавлен: 30.03.2023
Просмотров: 213
Скачиваний: 1
Разнообразие классов задач привело к тому, что на сегодняшний день разработано несколько сотен алгоритмических языков. Правда, широкое распространение и международное признание получили лишь 10-15 языков. Среди них в первую очередь следует отметить: Fortran и Algol - языки, предназначенные для решения научно-технических задач, Cobol – для решения экономических задач, Basic – для решения небольших вычислительных задач в диалоговом режиме. В принципе каждый из этих языков можно использовать для решения задач не своего класса. Однако, как правило, применение оказывается не удобным.
В то же время в середине 60-х годов начали разрабатывать алгоритмические языки широкой ориентации – универсальные языки. Обычно они строились по принципу объединения возможностей узко-ориентированных языков. Среди них наиболее известны PL/1, Pascal, C, C+ , Modula, Ada. Однако, как любое универсальное средство, такие широко-ориентированные языки во многих конкретных случаях оказываются менее эффективными [2].
Логические языки- (Prolog, Lisp, Mercury, KLO и др.) ориентированы не на запись алгоритма решения задачи, а на систематическое и формализованное описание задачи с тем, чтобы решение следовало из составленного описания. В этих языках указывается что дано и что требуется получить. При этом поиск решения задачи возлагается непосредственно на ЭВМ.
Объектно-ориентированные языки (Object Pascal, C++, Java, Objective Caml. и др.). Руководящая идея объектно-ориентированных языков заключается в стремлении связать данные с обрабатывающими эти данные процедурами в единое целое - объект.
Объектно-ориентированный подход использует следующие базовые понятия:
- объект;
- свойство объекта;
- метод обработки;
- событие;
- класс объектов.
Объект — совокупность свойств (параметров) определенных сущностей и методов их обработки (программных средств).
Свойство — это характеристика объекта и его параметров. Все объекты наделены определенными свойствами, совокупность которых выделяют (определяют) объект.
Метод — это набор действий над объектом или его свойствами.
Событие — это характеристика изменения состояния объекта.
Класс — это совокупность объектов, характеризующихся общностью применяемых к ним методов обработки или свойств.
Существуют различные объектно-ориентированные технологии, которые обеспечивают выполнение важнейших принципов объектного подхода:
- инкапсуляция;
- наследование.
Под инкапсуляцией понимается скрытие полей объекта с целью обеспечения доступа к ним только посредством методов класса (т. е. скрытие деталей, несущественных для использования объекта). Инкапсуляция (объединение) означает сочетание данных и алгоритмов их обработки, в результате чего и данные, и процедуры во многом теряют самостоятельное значение.
Класс может иметь образованные от него подклассы. При построении подклассов осуществляется наследование данных и методов обработки объектов исходного класса. [2]
Фактически объектно-ориентированное программирование можно рассматривать как модульное программирование нового уровня, когда вместо во многом случайного, механического объединения процедур и данных акцент делается на их смысловую связь.
Программа на объектно-ориентированном языке, решая некоторую задачу, по сути, описывает часть мира, относящуюся к этой задаче. Описание действительности в форме системы взаимодействующих объектов естественнее, чем в форме взаимодействующих процедур. [2]
1.2. История развития языков программирования
Программа – алгоритм, записанный на языке программирования. Программа – последовательность операторов языка. Языки программирования – искусственные языки, строго формализованные; существует правила записи операторов языка – синтаксис языка.
1. Машинный язык (40-50 годы XX в.).
Программы на машинном языке – очень длинные последовательности единиц и нулей, являлись машинно зависимыми, т.е. для каждой ЭВМ необходимо было составлять свою программу.
2. Ассемблер (начало 50-ых годов XX в.).
Вместо 1 и 0 программисты теперь могли пользоваться операторами (MOV, ADD, SUB и т.д.), которые похожи на английские слова. Программы на ассемблеретакже являются машинно-зависимыми. Для преобразования в машинный код использовался компилятор (спец. программа – переводчик в машинный код).
3. Первые языки программирования высокого уровня.
С середины 50-ых гг. XX в. начали создавать первые языки программирования высокого уровня (high-levellanguage). Эти языки были Машино независимыми (не привязаны к опред. типу ЭВМ). Но для каждого языка были разработаны собственные компиляторы.
Примеры таких языков: FORTRAN (FORmulaTRANslator; 1954) предназначен для научных и технических расчетов; COBOL (1959) был предназначен в основном для коммерческих приложений (обрабатывал большие объемы нечисловых данных) – CommonBusiness-OrientedLanguage); язык BASIC (Beginner’sAllPurposeInstuctionCode – универсальный язык символьных инструкций для начинающих) (1964 г.)
4. Алгоритмические языки программирования.
С начала 80-ых г. XX в. начали создаваться языки программирования, которые позволили перейти к структурному программированию (использование операторов ветвления, выбора, цикла и практически отказ от частого использования операторов перехода (goto). К этим языкам относятся: язык Pascal (назван его создателем Никлаусом Виртом в честь великого физика Блеза Паскаля; 1970); язык Си, позволяющий быстро и эффективно создавать программный код (1971)
5. Языки объектно-ориентированного программирования
(90-ые г. XX в.). В основу этих языков положены программные объекты, которые объединяют данные и методы их обработки. В этих языках сохранялся алгоритмический стиль программирования. Для них были разработаны интегрированные среды программирования, позволяющие визуально конструировать графический интерфейс приложений:
язык С++(1983) - продолжение алгоритм. языка Си;
язык ObjectPascal (1989) был создан на основе языка Pascal. После создания среды программирования – Delphi (1995);
язык VisualBasic(1991) был создан корпорацией Microsoft на основе языка Qbasic (1975) для разработки приложений с графическим интерфейсом в среде ОС Windows.
6. Языки программирования для компьютерных сетей.
В 90-ые годы XX в. в связи с бурным развитием Интернета были созданы языки, обеспечивающие межплатформенную совместимость. На подключенных к Интернету компьютерах с различными ОС (Windows, Linux, MacOS и др.) могли выполняться одни и те же программы. Исходная программа компилируется в промежуточный код, который исполняется на компьютере встроенной в браузер виртуальной машиной:
язык Java- объектно-ориентированный язык был разработан фирмой SunMicrosystems для создания сетевого программного обеспечения (1995);
язык JavaScript – язык сценариев Web-страниц (компания Netscape). (1995)
7. Языки программирования на платформе .NET.
Интегрированная среда программирования VisualStudio .Net, разработанная корпорацией Microsoft, позволяет создавать приложения на различных языках объектно-ориентированного программирования, в том числе:
- на языке Visual Basic .Net ( наоснове Visual Basic)- 2003 г.;
- на языке VisualC# (С-шарп) – на основе языков С++ и J – 2003 г.;
- на языке VisualJ# (J-шарп) – на основе Java и JavaScript – 2003 г.
Интерпретаторы и компиляторы
Для того, чтобы процессор мог выполнить программу, программа и данные должны быть загружены в оперативную память. Необходимо, чтобы в ОП был размещена программа -транслятор, автоматически переводящий с языка программирования в машинные коды. Трансляторы бывают двух типов: интерпретаторы и компиляторы. Интерпретатор – программа, которая обеспечивает последовательный перевод операторов программы с одновременным их выполнением. Достоинством интерпретатора является удобство отладки (поиск ошибок), недостаток – сравнительно малая скорость выполнения. Компилятор переводит весь текст программы на машинный язык и сохраняет его в исполнимом файле (обычно с расширением .exe).
Системы объектно-ориентированного программирования содержат программу-транслятор и позволяютработать в режиме как интерпретатора, так и компилятора. На этапе разработки и отладки проекта используется режим интерпретатора, а для получения готовой программы – режим компилятора [6].
ГЛАВА 2. РАЗВИТИЕ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
В пятидесятые годы двадцатого века с появлением компьютеров на электронных лампах началось бурное развитие языков программирования. Компьютеры, стоившие в то время значительно дороже, чем разработка любой программы, требовали высокоэффективного кода. Такой код разрабатывался вручную на языке Ассемблер.
2.1 Первый этап развития
Первые ЭВМ, созданные человеком, имели небольшой набор команд и встроенных типов данных, но позволяли выполнять программы на машинном языке. Машинный язык (МЯ) – единственный язык, понятный ЭВМ. Он реализуется аппаратно: каждую команду выполняет некоторое электронное устройство. Программа на МЯ представляет собой последовательность команд и данных, заданных в цифровом виде.
Этот этап в развитии языков программирования показал, что программирование является сложной проблемой, трудно поддающейся автоматизации, но именно программное обеспечение определяет в конечном счете эффективность применения ЭВМ. Поэтому на всех последующих этапах усилия направлялись на совершенствование интерфейса между программистом и ЭВМ – языка программирования.
Стремление программистов оперировать не цифрами, а символами, привело к созданию мнемонического языка программирования, который называют ассемблером. Этот язык имеет определенный синтаксис записи программ, в котором, в частности, цифровой код операции заменен мнемоническим кодом. Программа стала иметь более читаемую форму, но ее не понимала ЭВМ. Поэтому понадобилось создать специальную программу транслятор, который преобразует программу с языка ассемблера на машинный язык. Эта проблема потребовала, в свою очередь, глубоких научных исследований и разработки различных теорий, например, теорию формальных языков, которые легли в основу создания трансляторов. Практически любой класс ЭВМ имеет свой язык ассемблера. На сегодняшний день язык ассемблера используется для создания системных программ, использующих специфические аппаратные возможности данного класса ЭВМ.
2.2. Второй этап развития
Следующий этап характеризуется созданием языков высокого уровня (ЯВУ). Эти языки являются универсальными (на них можно создавать любые прикладные программы) и алгоритмически полными, имеют более широкий спектр типов данных и операций, поддерживают технологии программирования. На этих языках создается неисчислимое множество различных прикладных программ. Языки программирования высокого уровня делятся на несколько видов.
Среди принципиальных отличий ЯВУ от языков низкого уровня выделяют следующее:
- использование переменных;
- возможность записи сложных выражений;
- расширяемость типов данных за счет конструирования новых типов из базовых;
- расширяемость набора операций за счет подключения библиотек подпрограмм;
- слабая зависимость от типа ЭВМ.
С усложнением языков программирования усложняются и трансляторы для них. Теперь в набор инструментов программиста, кроме транслятора, входит текстовый редактор для ввода текста программ, отладчик для устранения ошибок, библиотекарь для создания библиотек программных модулей и множество других служебных программ. Все вместе это называется системой программирования. Наиболее яркими представителями ЯВУ являются FORTRAN, PL/1, Pascal, C, Basic, Ada.
Как можно заметить, было создано большое число языков одного класса. Каждый из разработчиков ЯВУ стремился создать самый лучший и самый универсальный язык, который позволял бы быстро получать самые эффективные, надежные и безошибочные программы. Однако в процессе этого поиска выяснилось, что дело не в самом языке, а в технологии его использования. Поэтому дальнейшее развитие языков стало определяться новыми технологиями программирования.
Одновременно с развитием универсальных ЯВУ стали развиваться проблемно-ориентированные языки программирования, которые решали экономические задачи (COBOL), задачи реального времени (Modula-2, Ada), символьной обработки (Snobol), моделирования (GPSS, Simula, SmallTalk), численно-аналитические задачи (Analitic) и другие. Эти специализированные языки позволяли более адекватно описывать объекты и явления реального мира, приближая язык программирования к языку специалиста в проблемной области.
Другим направлением развития языков программирования является создание языков сверхвысокого уровня (ЯСВУ). С помощью языков программирования программист задает процедуру (алгоритм) получения результата по известным исходным данным, поэтому они называются процедурными языками программирования. На ЯСВУ программист задает отношения между объектами в программе, например, систему линейных уравнений, и определяет, что нужно найти, но не задает как получить результат.
Такие языки еще называют непроцедурными, так как сама процедура поиска решения встроена в язык (в его интерпретатор). Такие языки используются, например, для решения задач искусственного интеллекта (Lisp, Prolog) и позволяют моделировать мыслительную деятельность человека в процессе поиска решений.