Файл: Классификация языков программирования высокого уровня (Сопоставление современных языков программирования).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 22.04.2023

Просмотров: 255

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Наконец, в 1961 г. был выпущен FORTRAN IV, который представлял собой рафинированный вариант FORTRAN II, лишенный некоторых аномалий и машинно-зависимых особенностей. Именно эта версия получила наибольшее распространение среди ученых и инженеров и служила им верой и правдой более 30 лет, будучи реализованной практически на всех мэйнфреймах, мини-ЭВМ и персональных компьютерах, с которыми мне когда-либо доводилось иметь дело.

С мая 1962 г. началась работа по стандартизации языка, результатом которой стал FORTRAN 66 - первый в мире стандарт на ЯВУ. Язык заслуженно получил очередной титул "первый".

Основные черты языка: программа состоит из главной программы и набора подпрограмм, компилируемых независимо и компонуемых перед загрузкой. Каждая подпрограмма имеет собственную отдельную область памяти для хранения переменных и кода. Кроме того, можно выделять общие (COMMON) области памяти, которые содержат переменные, доступные из разных подпрограмм. Обмен данными осуществляется через блоки COMMON, а также через формальные параметры подпрограмм, при этом передача параметров производится только по ссылке.

Из типов данных имеются числовые (целочисленные и с плавающей точкой), а также логический. Из структур  скалярные переменные и статические массивы размерностью не более 3. Что характерно, имеется также встроенный тип для представления комплексных значений, для которого определен полный набор операций. 

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

На этом эволюция языка-долгожителя не остановилась, и в 1990 г. увидел свет очередной стандарт, FORTRAN 90. Впрочем, он слишком опоздал со своим появлением, дав приличную фору по времени своим конкурентам, главным из которых явился, безусловно, C++. Несмотря на очевидные усовершенствования языка, FORTRAN 90 не получил такого ошеломляющего успеха, как его знаменитые предшественники, и удовольствовался весьма скромной нишей. Не прибавило ему популярности и появление следующего стандарта, FORTRAN 95. Новое поколение программистов ориентировано на C++, Java и C#, и старому доброму FORTRANу, увы, нечего им противопоставить[12].

Третье поколение языков программирования представляет Algol 60[13]. Algol разрабатывался комитетом, специально созданным для разработки языка высокого уровня общего назначения, пригодного для научных вычислений (хотя в промышленности в то время царила эйфория, навеянная успехом FORTRAN'а, в академической среде находились люди, способные заглянуть дальше и видящие, в какой тупик со временем неизбежно заведет FORTRAN).


Как и в большинстве других языков программирования, программа на Algolе состоит из главной программы и набора подпрограмм. При их построении используются блоки - наборы описаний и последовательности операторов, ограниченные "скобками" begin и end. Структуры данных, созданные внутри блока, локальны в его пределах и при выходе из блока уничтожаются. Таким образом можно управлять временем жизни данных и областью видимости их идентификаторов[13].

Четвертое поколение представлено языками поддержки сложных структур данных. Ярким примером можно назвать язык SQL[14].

Язык SQL был разработан в конце 70-х годов в компании IBM и был впервые реализован в реляционной СУБД IBM System R. В дальнейшем, благодаря своей элегантности, независимости от специфики компьютера и поддержке лидерами в области технологии реляционных баз данных, SQL стал и в обозримом будущем останется стандартом "де-факто" для всех реляционных систем обработки данных.

Первый международный стандарт языка SQL был принят в 1989 году ANSI. Этот стандарт называют SQL/89. Подавляющее большинство СУБД поддерживают этот стандарт полностью. В связи с развитием информационных технологий через некоторое время возникла необходимость расширения стандарта. В 1992 году был принят новый стандарт SQL/92. Затем в 1999 году был принят стандарт SQL/99 и, наконец, самый последний стандарт языка SQL был принят в 2003 году и носит название SQL/2003. Стоит, правда, сказать о том, что не все СУБД ограничиваются полной поддержкой стандарта и часто добавляют в язык SQL какие-то специфичные возможности с целью повышения конкурентоспособности СУБД[14].

Следующее поколение – это языки искусственного интеллекта.

Когда-то в 60-х годах очень бурно развивалась теория автоматического доказательства теорем и Робинсоном был предложен алгоритм резолюций, который позволял доказать любую верную теорему (вывести из аксиом) за конечное время (за какое не известно). Как оказалось позже, это наилучшее решение общей задачи, невозможно доказать теорему за ограниченное число операций. Простыми словами, алгоритм представляет собой обход (в общем случае бесконечного) графа в ширину, естественно, что предсказуемость работы алгоритма практически равно 0, соответственно для Языка Программирования — это абсолютно не подходит. И в этот момент Кальмэроу нашел блестящее сужение задачи, благодаря которому доказательство некоторых теорем выглядело как процедурное исполнение программы. Стоит отметить, что класс доказуемых теорем достаточно широк и очень хорошо применим для класса программируемых задач. Вот так в 1972 году появился Prolog.


В 1977 году в Эдинбурге Уоррен и Перейра создали очень эффективный компилятор языка Пролог для ЭВМ DEC–10, который послужил прототипом для многих последующих реализаций Пролога. Что интересно, компилятор был написан на самом Прологе. Эта реализация Пролога, известная как "эдинбургская версия", фактически стала первым и единственным стандартом языка. Алгоритм, использованный при его реализации, послужил прототипом для многих последующих реализаций языка. Как правило, если современная Пролог-система и не поддерживает эдинбургский Пролог, то в ее состав входит подсистема, переводящая прологовскую программу в "эдинбургский" вид. Имеется, конечно, стандарт ISO/IEC 13211– 1:1995, но его поддерживают далеко не все Прологсистемы.

В 1980 году Кларк и Маккейб в Великобритании разработали версию Пролога для персональных ЭВМ.

В 1981 году стартовал вышеупомянутый проект Института по разработке методов создания компьютеров нового поколения.

На сегодня существует довольно много реализаций Пролога. Наиболее известные из них следующие: BinProlog, AMZI-Prolog, Arity Prolog, CProlog, Micro Prolog, МПролог, Prolog-2, Quintus Prolog, SICTUS Prolog, Silogic Knowledge Workbench, Strawberry Prolog, SWI Prolog, UNSW Prolog и т. д.

В нашей стране были разработаны такие версии Пролога как Пролог-Д (Сергей Григорьев), Акторный Пролог (Алексей Морозов), а также Флэнг (А Манцивода, Вячеслав Петухин).

Следующее поколение – это языки нейронных сетей (самообучающиеся языки). Исследовательские работы в этой области начались в середине 80-х годов XX века.

1.2. Классификация языков программирования

Классификаций языков программирования существует великое множество, но в данной работе мы рассмотрим только самые основные:

По уровню реализации:

Низкоуровневые (C, C++, Assembler)

Плюсы: полный контроль над всем (в том числе и над памятью, что в других языках практически невозможно)

Минусы: дополнительный контроль несет дополнительные сложности, контроль над памятью может быстро стать утомительным, относительно бедная стандартная библиотека (Набор функций, макросов, глобальных переменных, доступных из любого места любой программы, написанной на этом языке. Служит для облегчения жизни программистам, чтобы не "изобретать велосипед").


Среднеуровневые (C#, Java)

Плюсы: памятью все еще можно управлять, но не обязательно; богатые стандартные библиотеки; компилируются в байт-код, чем упрощается взаимодействие с другими языками

Минусы: Требуется дополнительно установленная среда для выполнения байт-кода (Java Runtime Environment для Java); сложно для освоения новичку, так как надо понимать, как устроена память, сборка мусора;

Высокоуровневые (PHP, Python, Ruby, JavaScript)

Плюсы: значительно проще синтаксис, абстракции упрощают жизнь, большие стандартные библиотеки (не надо изобретать велосипед), в целом все просто и интуитивно понятно

Минусы: сравнительно низкая производительность; Страдает архитектура (изменения могут вноситься в любом месте кода, а не там, где это действительно нужно).

По способу реализации:

Компилируемые (C++, Objective-C, Delphi, Go)

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

Интерпретируемые (Python, Ruby, Perl, PHP)

Исходный код, вместо компиляции в машинный код, исполняется специальной программой интерпретатором. Главными плюсами таких языков являются кроссплатформенность (один и тот же код будет работать на разных операционных системах) и динамическая типизация (переменная связывается с типом – число, строка, указатель - в момент присваивания данных, а не в момент ее объявления)

Также программы, написанные с использованием интерпретируемых языков, можно запускать сразу же после изменений в коде, что облегчает разработку.

По парадигмам программирования:

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

Процедурное программирование (C, Pascal, MATLAB)

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

То есть у вас есть переменная А равная 10. После выполнения операторов в определенном порядке, переменная А становится равной 20. Преобразование исходных данных в заключительные, путем последовательного выполнения операторов, и есть суть этой парадигмы.


Объективно-ориентированное программирование (C++, PHP, Python, Ruby, JavaScript), ООП.

ООП возникло в результате развития процедурного программирования. Основные понятия тут – это классы и объекты этих классов. ООП было создано, чтобы облегчить жизнь программистом. Когда вы пишете программы по этой парадигме, то разбиваете одну большую проблему на несколько маленьких. Объект, по сути, – это набор свойств и методов для работы с ними. Объекты независимы, и через их взаимодействие между собой строится ваше приложение.

Одним из плюсов ООП – это повторное использование. К примеру, вам нужно загрузить изображение на сайт и изменить его размеры. Есть уже множество готовых классов, написанных другими программистами, вам лишь остается подключить класс к своему коду и использовать его. Это сильно экономит время и повышается эффективность работы.

Декларативное программирование (Haskell, Lisp, SQL)

Эта парадигма в отличие от двух предыдущих описывает, не КАК мы получаем результат, а ЧТО мы хотим получить.

Вот вы захотели пиццу: вы просто звоните в пиццерию и заказываете ее. Вам неважно, где и как ее приготовили, вы просто декларируете ваше желание.

Кстати, язык разметки web-страниц HTML является хорошим примером такого программирования. Если вы хотите отобразить на вашей странице изображение, вы просто пишете тэг <img> в вашем html-файле. Как браузер получит эту страницу с сайта, как выведет  изображение – это его проблемы, вы лишь хотите видеть на странице картинку с котиками и получаете это.

Выводы по главе 1:

Язык программирования — формализованный язык для описания программ и алгоритмов решения задач на ЭВМ. Языки программирования являются искусственными; в них синтаксис и семантика строго определены, они не допускают свободного толкования выражения, что характерно для естественного языка. Языки программирования разделяются на три основные категории: языки высокого уровня, языки среднего уровня и языки низкого уровня.

Мы рассмотрели разные классификации языков программирования:

1.По уровню реализации: низкоуровневые, среднеуровневые и высокоуровневые.

2. По способу реализации: компилируемые и интерпретируемые.

3. По парадигмам программирования: процедурные, объективно-ориентированные и декларативные языки программирования.

Глава 2. Современные языки программирования