История развития языков программирования началась в ХХ веках.
Программирование - это искусство создавать программные продукты, которые написаны на языке программирования. Язык программирования – это формальная знаковая система, которая предназначена для написания программ, понятных для исполнителя (в нашем рассмотрении – это компьютер).
Другими словами, программирование – это четкая заданная последовательность действий, которые пишет программист.
Языки программирования делятся на три вида:
- машинные языки. Очень непонятно для человека, но очень понятно для компьютера.
- языки низкого уровня. Например, Ассемблер.
- языки программирования высокого уровня. Например, Паскаль, Си, Java.
Программирование имеет разные ответвления в написании программного продукта. На сегодняшний день существует тысячи языков программирования. Из них популярность и известность получают некоторые. Они отличаются простотой, быстротой и гибкостью и другими свойствами.
В начале развития программирования программисты писали программы одним файлом целиком и полностью. На протяжении 60-х годов запросы на разработку программного обеспечения возросли и программы стали очень большими. Люди начали понимать, что создание программного обеспечения – гораздо более сложная задача, чем они себе представляли. Это привело к тому, что было разработано структурное программирование. Структурное программирование – это программного обеспечения, в основе которого лежит представление программы в виде иерархической структуры блоков. В данном периоде появились такие структуры, как: структура выбора (условия), структура повторения (циклы), структура следования (действия идут один за другим).
Структура выбора рассматривалась, как выбрать действия в зависимости от условия.
Структура повторения – одинаковые действие выполняются несколько раз до какого-то события (условия).
Структура следования – действия идут последовательно без ветвления один за другим.
С развитием программирования начали применять процедуры и функции. То есть если есть задача, которая выполняется несколько раз, то ее проще объявить как функцию или процедуру. И в выполнении программы просто вызывать ее. Общий код программы в данном случае становиться меньше. Функции позволяют создавать модульные программы.
Далее с развитием начали использовать структуры, а затем перешли к классам. Структуры – это составные типы данных, построенные с использованием других типов. Например, структура время. В нее входит: часы, минуты, секунды. Программист мог создать структуру время и работать с ней, как с отдельной структурой. Класс – это структура, которая имеет свои переменные и функции, которые работают с этими переменными. Это было очень большое достижение в области программирования. Теперь программирование можно было разбить на классы и тестировать не всю программу, состоящую из 10’000 строк кода, а разбить программу на 100 классов, и тестировать каждый класс. Это существенно облегчило написание программного продукта. Но и этого было мало.
Следующим достижением в области программирования было наследование и полиморфизм. Наследование – это способ повторного использования программного обеспечения, при котором новые классы создаются из уже существующих путем заимствования их атрибутов и функций, при этом обогащая новый класс и добавляя в него новые функции. Это достижение сэкономит время на написание новых классов. Так как можно использовать функции предыдущих классов, и наращивать свой функционал и переменные в новом классе. Полиморфизм – это возможность для объектов разных классов, связанных при помощи наследования, реагировать различным образом на одно и то же сообщение(имеется в виду функции). То есть у родителя и потомка есть функция, имеющая одно и тоже имя, например, print, но эта функция принимает разнотипные параметры, то если в программе вызывается функция print. Программа будет знать, какую именно функцию нужно вызвать, функцию родителя или функцию потомка.
Все это соединили вместе и получили объектно-ориентированное программирование (ООП). Объектно-ориентированное программирование – это программирование, в основу которого положено понятие объекта. Объект - это элемент программирования, объединяющий в себе как данные (структуру), так и действия над ними (функции). То есть когда класс создан, то его можно использовать как новый спецификатор типа. При этом переменная данного класса становится объектом. В нем есть и переменные и функции, которые обрабатывают эти переменные.
Все это наглядно показывается, когда пишутся компьютерные игры. Например, каждый игрок – это отдельный объект, каждое дерево, или машина – это отдельный объект. При ударе одного объекта в другой происходит событие удара и выполняется функци удара, при этом выполняется какое-то действие (поражение, смерть и т. д.), все эти действия реализованы в самом объекте. И при отладке, нужно отлаживать класс, а не всю программу. Это очень удобно.
Также в программирование вошло использование динамической памяти. Динамическое выделение памяти - это возможность в процессе выполнения программы выделять область памяти для хранения информации и освобождать ресурсы памяти, в которых уже нет необходимости.
Для того чтобы написать программу, необходимо знать ту область в которой нужно написать программу, затем разбить сложные задачи на более простые блоки, и затем эти блоки разбить на классы. И после этого писать классы, реализующие необходимую функциональность.