Устаревшие языки программирования и их влияние на современные парадигмы программирования
Секция: Технические науки
XLV Студенческая международная заочная научно-практическая конференция «Молодежный научный форум: технические и математические науки»
Устаревшие языки программирования и их влияние на современные парадигмы программирования
Язык программирования – это нотационная система для описания вычислительных задач в машиночитаемой и удобочитаемой форме. Он основан на правилах синтаксиса и семантики. Каждый язык программирования имеет особый стиль обозначения. Слово «парадигма» происходит от греческого слова «парадегма» и обычно относится к категории сущностей, имеющих общую характеристику. Подразумевается, что парадигма программирования является принципиально общим стилем вычислений.
Языки программирования быстро эволюционировали, чтобы упростить программирование и снизить вероятность ошибок. Формы, которые возникли, считались языками высокого уровня, потому что программы не были тесно связаны с внутренними характеристиками компьютера, позволяя людям писать программы с использованием привычных терминов вместо сложных машинных инструкций. Эти языки программирования высокого уровня включали COBOL, FORTRAN, BASIC и C. Кроме того, они поддерживали переносимость и могли работать на разных компьютерах[6].
Парадигмы программирования
Наиболее влиятельные парадигмы программирования включают процедурные (также известные как императивные), структурированные, функциональные, логические и объектно-ориентированные парадигмы [3].
Парадигма параллельного программирования
В одноядерных архитектурах эта парадигма традиционно реализуется посредством процессов или потоков, порожденных одной программой. Однако из-за быстрого роста многоядерных процессоров в современных аппаратных архитектурах был введен новый способ реализации этой парадигмы, чтобы использовать полученный параллелизм[6].
Мультипарадигмы
Можно комбинировать парадигмы, чтобы получить преимущества каждой из них. Однако это также увеличивает сложность программы. Программист должен взвесить преимущества и недостатки, чтобы определить, выгодно ли комбинирование парадигм. Цель языка с несколькими парадигмами состоит в том, чтобы использовать конструкции из разных парадигм, чтобы создать программу, которая бы соответствовала природе конкретной проблемы. C ++, Leda, Common Lisp и Scala являются примерами сочетания парадигм [5].
В примере Java императивный стиль очевиден, так как найденная переменная переназначается во время выполнения цикла, который выполняет итерацию через символы в строке c индексированием [2]. В примере Scala метод exists выполняет итерацию через коллекцию символов и передает каждый символ в функцию. Если метод exists обнаруживает, что строка содержит прописную букву, она возвращает true. В противном случае возвращается false. Таким образом, найденная переменная никогда не переназначается.
Сдвиги между парадигмами программирования
Природа проблемы
Большинство проблем можно решить, начиная с известного состояния и достигая неизвестного состояния. Тем не менее, некоторые из них могут быть решены более легко, в обратном порядке, начиная с неизвестного состояния и достигая известного состояния из-за способности отследить назад к фактам, которые уже известны. Это называется восходящим подходом, и в основном используется парадигмой объектно-ориентированного программирования[1].
Проектирование аппаратного обеспечения
Архитектура фон Неймана[3] рассматривает один процессор, обрабатывающий последовательные задачи и обладающий следующими свойствами:
· Данные и программы хранятся в одной и той же памяти.
· Память отделена от центрального процессора.
· Инструкции и данные передаются из памяти в CPU.
· Результаты операций в CPU должны быть возвращены в память.
Таким образом, в этом типе архитектуры основное внимание уделяется операторам изменения состояния, в основном с использованием чтений и назначений, которые наилучшим образом соответствуют парадигме процедурного программирования [4].
Эволюция исключения / обработки ошибок
Исключением является непредвиденная ошибка или событие, такое как деление на ноль или отсутствие памяти. Обработка исключений – это механизм для устранения этих ошибок, когда они возникают, и значительно повышает надежность и отказоустойчивость программ.
Обработка исключений была впервые введена языком PL / I в 1960-х годах и была значительно усовершенствована в CLU в 1970-х годах. BASIC также предоставил ограниченную обработку исключений. В Бейсике программы были написаны с номерами, обозначающими каждую строку кода. Управление выполнением было передано путем перехода к конкретной строке с помощью оператора GOTO, а исключения обрабатывались с использованием оператора On Error Goto.
Ada, разработанная в 1983 году, обычно считается первым языком с четко определенной и удобной обработкой исключений [3]. Массовое принятие позднее пришло в 1990-х годах с C ++. Обработка исключений появилась почти во всех языках, включая Smalltalk, C ++, Java и C #. Языки типа PL / I, Ada, Mesa и CLU предоставляют явные механизмы обработки исключений, в то время как такие языки, как Pascal, C и FORTRAN – нет [5].
Обработка исключений в PL / I
PL / I был разработан корпорацией IBM в 1960-х годах, хотя он не был стандартизирован до 1976 года [4]. Механизм исключения PL / I позволил пользователю писать обработчики для как определяемых языком, так и пользовательских исключений. Программист мог указать исключения, используя строки кода ниже:
Связывание исключений с обработчиками было динамическим, то есть оно применялось к самому последнему исполненному оператору ON. Хотя конструкция была мощной и гибкой, она создавала некоторые проблемы.
В заключении можно сказать, что сначала компьютеры использовались для математических и научных расчетов. Однако по мере развития аппаратного обеспечения и усложнения задач возникла потребность в использовании различных языков программирования и парадигм. Функциональное программирование, основанное на теории функций, является более простой и более чистой парадигмой программирования, чем предшествующая процессуальная или императивная парадигма. Логическая парадигма отличается от других трех основных парадигм программирования и хорошо работает, когда применяется в областях, которые занимаются извлечением знаний из основных фактов и отношений. В качестве последнего шага в эволюции программирования парадигма объектно-ориентированного программирования использует объектные модели и является более естественным способом решения проблем, чем прежние языки программирования. Его использование таких концепций, как абстракция, инкапсуляция, полиморфизм и наследование, обеспечивает непревзойденную гибкость и удобство использования. Почти неизбежно, что в будущем произойдет еще один сдвиг парадигмы, чтобы сделать программирование лучше, как для производителя, так и для потребителя.