Файл: Современные языки программирования (1. Основы программирования).pdf
Добавлен: 04.07.2023
Просмотров: 80
Скачиваний: 2
СОДЕРЖАНИЕ
1.1.Языки программирования. Почему нельзя обойтись одним языком?
1.2. Классификации языков программирования
2. Классификация языков программирования высокого уровня
2.1. Особенности языков программирования высокого уровня
2.2. Процедурно-ориентированные языки программирования
2.3. Проблемно–ориентированные языки программирования
2.4. Свойства объектно-ориентированных языков программирования
2.4.1. Абстракция и инкапсуляция
3. Обзор некоторых языков программирования высокого уровня
3.1. Язык программирования Basic
Введение
В современном мире огромное значение имеет информация. Без нее трудно ориентироваться в обстановке и принимать правильные решения. Но информация не может существовать сама по себе. Те или иные сведения могут быть получены, сохранены, переданы и использованы только с помощью каких-то средств и методов.
Информационно-коммуникационные технологии можно отнести к технологическим средствам, и они направлены на подготовку личности информационного общества, формирования умений работать с информацией, развитие коммуникативных способностей, формирование исследовательских умений и навыков выбора оптимальных решений, обеспечения большим объемом качественной информации.
Социальная реальность очень быстро меняется, приобретает новые характеристики, которые в большинстве очень часто связаны с функционированием информационно-коммуникационных технологий и углублением глобальных процессов. Логично, что такие изменения отражаются и в специфике теории информационного общества.
Компьютер является автоматом, который точно выполняет указания, составленные человеком. На начальном этапе решения задачи они представляются в виде алгоритма.
Примененный к решениям задач на электронно-вычислительной машине (ЭВМ) алгоритм представляет собой последовательность арифметических и логических действий над числовыми значениями в виде переменных, приводит к вычислению решений задачи при изменении исходных данных в достаточно широких пределах. Каждый алгоритм разбивает весь вычислительный процесс на отдельные этапы и содержит информацию как о действиях, которые надо выполнить в каждом из этапов, так и о порядке, в котором должны выполняться эти этапы. По алгоритму составляется программа. Процесс создания программ называется программированием. Программа ЭВМ - это описание алгоритма решения задачи с помощью алгоритмического языка. В ЭВМ она представлена набором машинных инструкций, с помощью которых закодирован алгоритм решения задачи или управления процессом.
Для того, чтобы компьютер "понял" указания программиста, он должен "общаться" с программистом на общем языке, который называют языком программирования.
На сегодняшний день в мире существуют сотни различных языков программирования, которые в общем можно разделить на языки программирования низкого (Asembler) и высокого уровня (Pascal, Basic, Delphi, C и т.д.).
Целью данной курсовой работы является исследование классификацию языков программирования высокого уровня.
Объект исследования – основы алгоритмизации и программирования.
Предмет исследования – языки программирования высокого уровня.
Основные задачи работы:
- Определить этапы решения задач с помощью ЭВМ;
- Исследовать развитие языков программирования;
- Исследовать классификации языков программирования;
- Определить классификацию языков программирования высокого уровня;
- Сделать обзор некоторых языков программирования высокого уровня (Basic, Java).
1. Основы программирования
1.1.Языки программирования. Почему нельзя обойтись одним языком?
В современном мире сложно представить себе жизнь без персонального компьютера, смартфона, планшетного компьютера и многих других цифровых устройств, так называемых «гаджетов» (англ. gadget — штуковина, приспособление, устройство, безделушка)[3], которые призваны разнообразить и облегчить жизнь человеку. Каждый день ученые и инженеры различных компаний работают над разработкой нового или усовершенствования старого «гаджета», наделяя его новыми функциями и возможностями.
Резкий технологический прорыв конца 20-го начала 21 веков повлек за собой и активное развитие языков программирования, причем активно развивались как новые языки, так и языки, основанные на других языках. Еще в 20-м веке было известно о 120 языках программирования, которые использовались в США[1].
Но чем вызван такой рост количества языков программирования? Ведь на сегодняшний день существует более тысячи различных языков программирования, каждый из которых имеет свой синтаксис, свои особенности. Почему математики и программисты не придумают единый универсальный язык программирования, позволяющий решать широкий круг задач? Создание такого языка позволило бы проходить более ускоренный курс обучения и молодым программистам не нужно было бы изучать синтаксис очередного языка, его семантические особенности, ограничения и т.д.
В то же самое время существуют и мертвые языки программирования – т.е., которые были созданы, но не получили широкое распространение в мире. Резонный вопрос – почему некоторые языки, причем некоторые из них созданы очень давно, продолжают развиваться и использоваться в современности, а некоторые современные языки умирают сразу?
Для ответа на эти вопросы необходимо рассмотреть понятие «язык программирования», а также историю появления и основные направления развития современных языков программирования.
Язык программирования - формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно — ЭВМ) под её управлением[6].
Первые программисты (в начале 1950-х гг) для написания программ использовали машинный код, который состоял из нулей и единиц. При этом программа писалась под конкретную ЭВМ, так как при переносе на ЭВМ другого производителя, обладающими отличными кодами, программу приходилось переписывать и набирать заново, что приводило к частому возникновению ошибок. Машинный код принято считать языком программирования первого уровня.
Использование символьных обозначений машинных команд (мнемоник) привело к облегчению, хоть и небольшому, работы программистов. Также программисты научились сопоставлять имена и адреса в памяти ЭВМ. Это стало развитием языков программирования второго уровня. Наиболее ярким представителем языков программирования второго уровня является ассемблер (от англ. assembler — сборщик)[2]. Программы, написанные на ассемблере, имели ряд недостатков, а именно – при переходе на ЭВМ иной архитектуры возникали проблемы совместимости, а также программисту необходимо в решении задачи оперировать терминами «регистр», «ячейка», «команда».
Начиная с середины 1950-х г.г. разработаны так называемые языки высокого уровня, которые не имели жесткой привязки к аппаратной платформе. За исполнение программ высокого уровня на любой платформе отвечает транслятор, переводящий программный код в машинный код. Наиболее яркими представителями языка программирования высокого уровня того времени являются Фортран, Лисп и Кобол[6].
Период 1960-70-х годов ознаменовался разработкой основных парадигм языков программирования, которые используются и сегодня, при этом в большинстве случаев данный процесс улучшал идеи и концепции, которые были заложены в первых языках третьего поколения.
Так, например, язык APL был первым языком программирования, в котором была реализована обработка массива. Этот язык оказал основное влияние на функциональное программирование.
Первый язык программирования, в котором реализована поддержка объектно-ориентированного программирования, стал язык Симула,
С 1969 по 1973 г.г. велась активная разработка языка Си (С), который приобрел наибольшую популярность в мире. Многие операционные системы, например, Windows, были написаны на этом языке программирования.
Среди языков логического программирования можно выделить Пролог, созданный в 1972 году.
Каждый из приведенных языков программирования стал родоначальником целых семейств современных языков. На рисунке 1 представлено генеалогическое дерево языков программирования[4]:
Рисунок 1. Генеалогическое дерево языков программирования.
Как видно из небольшого исторического экскурса, языки программирования активно изменялись и совершенствовались в зависимости от потребностей разработчиков и стоящих перед ними задач.
Действительно, программирование микроконтроллеров и написание прикладной программы требует разных подходов, к тому же, несмотря на сложность в написании, программы на языке программирования низкого уровня (на ассемблере) работают быстрее и дают разработчику полный контроль над каждой ячейкой памяти. Однако код программ, написанных на разных языках программирования и выполняющих одно и то же действие, будет отличаться разительно. Ниже приведен код программы на ассемблере, выводящий на экран компьютера строку «Hello world» :
.MODEL SMALL
.STACK 100h
.DATA
HelloMessage DB 'Hello World',13,10,'$'
.CODE
START:
mov ax,@data
mov ds,ax
mov ah,9
mov dx,OFFSET HelloMessage
int 21h
mov ah,4ch
int 21h
END START
Эта же программа на языке С++ будет выглядеть так:
#include <iostream>
int main()
{
std::cout << "Hello, World!" << std::endl;
return 0;
}
А с использованием языка python этаже программа займет всего 2 строчки:
#!/usr/bin/python
print 'Hello World!'
Но почему же нельзя обойтись каким-либо одним языком программирования?
В зависимости от решаемой задачи, языки программирования можно разделить на три основных группы:
- Неструктурное программирование – создание программы ведется под конкретную платформу. Такой код обладает повышенной скоростью исполнения за счет более быстрой компиляции кода в машинный код. Неструктурное программирование применяется, когда необходимо написать драйвер для какого-либо устройства, или запрограммировать микросхему[5].
В неструктурном программировании в основном используется Ассемблер.
- Структурное программирование – суть, которого заключается в пошаговом описании действия, тем самым предписывая путь достижения результата. Программа представляет собой единую структуру, легкую для понимания.
Наиболее яркими представителями языков, применяемых в структурном программировании, являются такие языки как С, Pascal и Fortran.
Преимуществом структурного программирования является возможность использования ранее написанных процедур и функций, а также относительная независимость программного кода от аппаратной составляющей.
Структурное программирование широко используется для написания операционных систем, системных программ и небольших пользовательских приложений.
- Функциональное и логическое программирование – суть которых сводится к декларации желаемого результата, т.е. что должно быть достигнуто в качестве цели. В данной группе программист не задает алгоритма решения, а только точно формулирует задачу.
Яркими представителями языков, используемых в функциональном программировании, являются List и Haskell, в логическом программировании – Prolog.
Основным направлением использования функционального программирования является доказательства теорем, обработка разнородных и рекурсивных данных, однако из-за нелинейной структуры программы, код сложен для понимания.
Логическое программирование решает узкий класс задач, например, эмуляция искусственного интеллекта или экспертной системы.
- Объектно-ориентированное программирования – это когда данные в программе представляются в виде объектов, наделенных определенными свойствами и методами. Задача программиста заключается в создании таких объектов, использование которых может привести к желаемому результату.
Наиболее известными языками объектно-ориентированного программирования являются С++, Delphi, Java, Python.
Заложенные в объектно-ориентированные языки свойства, такие как полиморфизм, инкапсуляция и наследование, предоставляет гибкость использования раннее написанного программного обеспечения через использование уже созданных библиотек и классов, вместе с тем позволяет разрабатывать крупные проекты группой лиц без ущерба для производительности.[5]
С помощью языков объектно-ориентированного программирования обычно реализуют сложные и объемные проекты.
Рассмотрев историю развития языков программирования, а также их основные направления, можно сделать вывод о том, что в процессе создания и последующей эволюции каждый язык программирования был направлен на решение задач в какой-то определенной области. Созданные ранее методы решения популярных задач, находили свою реализацию в библиотеках и классах, что позволило современным программистам не тратить время на «изобретение велосипеда». В рамках рассматриваемых вопросов вывод напрашивается сам собой – использование одного языка программирования невозможно из-за разнообразия возникающих перед программистом задач: невозможно написать на скриптовом языке JavaScript драйвер, например, для клавиатуры, так же как и невозможно написать обработчик нажатия виртуальной кнопки на Ассемблере или на Prolog.