Машинный код. Ассемблер
История языков программирования началась с разработки машинного языка: языка логических нулей и единиц. Запись на этом языке была очень сложной и утомительной.
Поэтому в конце 40-х для облегчения работы первых программистов был создан язык ассемблер. Вместо двоичных цифр, обозначающих какую-то команду, писались короткие слова или аббревиатура. Программисты называют ассемблер языком программирования низкого уровня, поскольку он близок к машинному языку - языку программирования самого низкого уровня. Программы на ассемблере зависят от характеристик конкретного процессора, поэтому его называют машинно-ориентированным языком.
Несмотря на всю сложность написания программ и необходимость знаний устройств компьютера именно программы на ассемблере являются самыми эффективными и работоспособными.
Алгоритмические языки
Вскоре возникла необходимость создания новых, более совершенных языков программирования, которые бы напоминали естественные языки и позволяли бы не работать напрямую с машинными командами. Они стали называться языками высокого уровня.
Такие языки ориентированы на описание алгоритмов. Поэтому их еще называют алгоритмическими языками. Их преимущество заключается в большей наглядности и независимости от конкретного компьютера.
Поскольку компьютер распознает только машинный язык, программа на алгоритмическом языке перед выполнением переводится на этот язык с помощью специальной программы транслятора. В программе трансляторе "заложены" все правила алгоритмического языка и способы преобразования различных его конструкции на машинный язык. Существуют два способа трансляции:
1. Компиляция (Compilation) - метод выполнения программы, при котором инструкции программы выполняются лишь тогда, когда собран перевод всего текста программы.
2. Интерпретация (Interpretation) - метод выполнения программы, при котором инструкции программы переводятся и сразу выполняются.
Работа с программой, написанной на алгоритмическом языке, упрощается за счет относительной простоты написания, удобной читаемости, возможности ее коррекции. Однако при этом очевидны и недостатки: дополнительное время и память на трансляцию.
Структурное программирование
В 1954 году началась разработка первого компилятора языка высокого уровня. По прошествии 2-х лет был создан язык Fortran (от англ. FORmula TRANslator - Переводчик формул). В языке имелись средства, значительно упрощающие разработку, однако программирование на Fortran представляло собой задачу непростую: легко понимаемый в коротких программах, этот язык становился нечитаемым, когда дело касалось больших программ. Однако этот язык имел успех и было выпущено много его версий.
Проблема решилась после изобретения языков структурного программирования: появились программные блоки, независимые подпрограммы, поддержка рекурсии и локальных переменных, отсутствие оператора безусловного перехода (GoTo) - в общем, возможности разбиения программы на составляющие элементы.
В течение десятилетия было создано достаточно большое количество новых языков: Algol (1958) - для записи алгоритмов, составленных из обособленных блоков; Cobol (1959) - для массовой обработки данных в сферах управления и бизнеса; Basic (1965) - для написания простых программ, обучению азам программирования. Однако совсем немногие из них были структурированными. Также было создано много других специализированных языков: Lisp, Prolog, Forth, PL/1...
Особое внимание заслуживает язык Pascal (1970) (назван в честь ученого Блеза Паскаля), который можно было использовать как для обучения, так и для решения задач различной сложности. Программы на нем легко читались, что позволяло быстро находить и исправлять ошибки, также он обладал хорошо выраженной структурированностью. Это привело к его широкой распространенности, и даже сейчас его все еще активно используют в учебных заведениях.
Очень успешным шагом стал появившийся в 1972 году язык C. Он сочетал в себе достижения многих языков, а также обладал большим количеством различных нововведений. Широкие возможности, структурированность, а также относительная простота изучения позволили ему быстро завоевать признание и стать одним из основных языков.
Хотя использование структурного программирования дало отличные результаты, было все еще проблематично писать длинные и сложные программы. Следовательно был нужен новый подход к поставленной задаче.
Объектно-ориентированное программирование (ООП)
В 70-х были созданы основы нового Объектно-ориентированного программирования. ООП возникло в результате развития идеологии процедурного программирования, где данные и подпрограммы (процедуры, функции) их обработки формально не связаны. Основными понятиями ООП являются:
- Класс - модель ещё не существующего объекта. Фактически он описывает устройство объекта, являясь его схемой.
- Объект - экземпляр класса, сущность в адресном пространстве вычислительной системы, появляющаяся при создании экземпляра класса.
- Абстракция - придание объекту характеристик, которые чётко определяют его границы, отличая от всех других объектов. Основная идея состоит в том, чтобы отделить способ использования составных объектов данных от деталей их реализации в виде более простых объектов.
- Инкапсуляция - объединение свойств (данных) и методов (подрограмм) в классе с целью сокрытия данных объекта от остальной программы и обеспечения целостности и независимоти объекта. (изменять свойства объекта иожно только через специальные методы класса)
- Наследование - механизм языка, позволяющий описать новый класс на основе уже существующего класса (или классов) с добавлением новых свойств и методов.
- Полиморфизм - свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Первым языком программирования, в котором были предложены принципы объектной ориентированности, была Симула. В момент его появления в 1967 году в нём были предложены революционные идеи: объекты, классы, виртуальные методы и т.д., но это всё не было достойно оценено современниками. Тем не менее, большинство концепций были развиты Аланом Кэем и Дэном Ингаллсом в языке Smalltalk. Именно он стал первым широко распространённым объектно-ориентированным языком программирования.
В настоящее время количество прикладных языков программирования, реализующих объектно-ориентированную парадигму, является наибольшим по отношению к другим парадигмам. Основные языки, поддерживающие концепцию ООП: C++, C#, Object Pascal (Delphi), Java...
Развитие интернета
С появлением технологии World Wide Web (WWW) Интернет приобрел большую популярность. Было создано много вспомогательных языков для работы с Интернетом, оформления сайтов, доступа к ресурсам и т.д.
Повсеместно распространен интерпретируемый, простой и легко переносимый на другие платформы язык Perl. Он используется для написания различных по сложности приложений и CGI-скриптов. Значительную роль в развитии и функционировании Интернета играет язык Java.
В 70-х годах появился язык структурированных запросов SQL, созданный для доступа и манипуляций с базами данных.
Для написания основы страниц Web-сайтов используется HTML (Язык разметки гипертекстов). Он обладает всеми возможностями разметки и оформления текста, графики. Для большей привлекательности и функциональности сайта используются:
- Сценарии, написанные на JavaScript, выполняются на Web-браузере пользователя. В основном используются для улучшения внешнего вида сайта и решения мелких задач.
- Сценарии, написанные на языке PHP, выполняются на стороне сервера и посылающие в браузер пользователя уже обработанную информацию. Используются для создания Динамических HTML-страниц, гостевых книг, форумов, опросов.
- CGI-скрипты, написанные преимущественно на Perl, C/C++, выполняются на стороне сервера и зависящие от конкретных действий пользователя. Имеют назначение сходное со сценариями PHP.