Файл: Классификация языков программирования высокого уровня (УСТРОЙСТВО ПЕРСОНАЛЬНОГОКОМПЬЮТЕРА).pdf
Добавлен: 30.03.2023
Просмотров: 240
Скачиваний: 2
СОДЕРЖАНИЕ
1 УСТРОЙСТВО ПЕРСОНАЛЬНОГОКОМПЬЮТЕРА
1.1 Принципы устройства компьютера
1.2 Аппаратный уровень компьютера
1.3 Логический уровень компьютера
2 РАЗВИТИЕ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
2.1 Поколения языков программирования
3 ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ КОНСТРУКЦИИ
3.1 От интуитивного программирования к научному подходу
Сегодня существует и используется большое количество языков программирования высокого уровня как универсальных, так и специализированных. Классификация языков программирования представлена на рисунке 8.
Рисунок 8 – Классификация языков программирования
Самые первые языки программирования, как и первые электронно-вычислительные машины, были достаточно примитивны и ориентированы исключительно на численные расчеты. С их помощью выполняли как чисто теоретические научные расчеты, так и прикладные задачи, например, для нужд военных.
В настоящее время выделяют 5 поколения языков программирования. Языки программирования трех первых поколений характеризовались достаточно сложным набором служебных слов и синтаксисом. Для языков программирования четвертого поколения также характерна необходимость соблюдения определенного синтаксиса при разработке программ, но они уже более просты в освоении и ближе к естественному языку человека. Языки программирования пятого поколения, которые разрабатываются в настоящее время, позволят определять необходимые процедуры обработки информации на основе предложений языка, весьма близкого к естественному языку человеческого общения и не требующего соблюдения особенного синтаксиса. Обобщенные характеристики языков программирования по поколениям представлены в таблице 1.
Таблица 1 – Обобщенные характеристики поколений языков программирования
2.2 Языки программирования первого поколения
Первое поколение языков программирования представляет собой комплект машинных команд в двоичном (бинарном) или восьмеричном представлении. Эти машинные команды определялись архитектурой конкретного компьютера. Таким образом получается, что каждая электронно-вычислительная машина имела свой язык программирования, и программы, написанные на этом языке программирования, не годились для выполнения на другом компьютере. Программист, разрабатывающий программу на языке машинных кодов, должен был не только отлично знать этот непростой язык, но и хорошо ориентироваться в архитектуре конкретного процессора той или иной электронно-вычислительной машины. Пример программы в машинных кодах представлен на рисунке 9. Достоинствами программирования в машинных кодах являются высокая скорость выполнения программ и возможность полностью использовать аппаратные ресурсы компьютера.
Рисунок 9 – Программа в машинном коде
2.3 Языки программирования второго поколения
Для второго поколения языков программирования свойственна замена двоичных и других форматов машинных команд их мнемоническими символьными обозначениями (именами). Такой подход характерен для языков ассемблерного типа – ассемблеров, макроассемблеров. Использование ассемблера, безусловно, облегчило работу программиста, так как использовать символьное обозначение команд вместо последовательностей нулей и единиц для человека намного проще и понятнее. В то же время программирование на ассемблере оставалось машинно-зависимым. Специалист по разработке программного обеспечения по-прежнему должен был хорошо знать архитектуру электронно-вычислительной машины, для которой он пишет программу. Перенос программы с одной платформы на другую требовал значительных усилий, зачастую с полным переписыванием и адаптацией программного кода. Пример программы на ассемблере представлен на рисунке 10.
В настоящее время при необходимости разработки высокоэффективного программного обеспечения (минимального по объему и с максимальной производительностью) используют ассемблер. Часто профессиональные программисты используют вставки ассемблерного кода в программы, написанные на языках программирования высокого уровня. Такие вставки часто нужны также для более полного доступа к аппаратным ресурсам компьютера.
Рисунок 10 – Программа на ассемблере
2.4 Языки программирования третьего поколения
Началом эры языков программирования третьего поколения считают появление первого высокоуровневого языка программирования Fortran (1956 год). Появление простого в освоении языка программирования с понятными командами, независимого от архитектуры конкретного компьютера произвело революцию в программировании. Процесс разработки программного обеспечения стал доступен не только профессионалам – программистам, но и специалистам других областей. Очень быстро Fortran стал одним из самых распространенных языков программирования.
Fortran считают первым процедурно-ориентированным языком программирования высокого уровня. Изначально Fortran имел очень ограниченные средствами обеспечения работы с системой ввода-вывода и с символьной информацией. Но по мере своего развития и появления новых средств обработки данных Fortran одним из самых распространенных языков программирования высокого уровня для компьютеров всех классов — от микро- до суперЭВМ. Версии Fortran используются и сегодня, в том числе для вычислительных средств нетрадиционной параллельной архитектуры.
Сегодня насчитывается свыше двух тысяч различных языков программирования высокого уровня. Многие из них являются процедурно-ориентированными языками программирования. Наиболее популярны среди универсальных процедурно-ориентированных языков программирования высокого уровня являются C\C++, Pascal, Basic. Пример программы на языке программирования Fortran представлен на рисунке 11.
Рисунок 11 – Программа на одной из версий языка программирования Fortran
2.5 Языки программирования четвертого поколения
Языки программирования четвертого поколения обладают ярко выраженным непроцедурным характером. В программах на таких языках программирования разработчик описывает только результат, который должен быть получен в результате программирования, но не способы его достижения. В программах формируются в первую очередь соотношения, а не последовательность шагов при выполнении алгоритма. Такие языки программирования применяются в технологиях искусственного интеллекта. К языкам программирования четвертого поколения относят Prolog, LISP, Langin. Непроцедурные языки программирования имеют минимальное количество синтаксических правил, они лучше понимаются специалистами в произвольной сфере производства, не только программистами.
Также к языкам программирования четвертого поколения относят объектно-ориентированные языки программирования. При объектно-ориентированном подходе программный объект состоит из структур данных и алгоритмов, при этом каждый объект знает, как выполнять операции со своими собственными данными. Технология объектно-ориентированного программирования реализована в современных версиях языков программирования Object Pascal, C++, Visual Basic. К объектно-ориентированным языкам программирования относят Smalltalk, Simula и другие.
Еще одним направлением развития языков программирования четвертого поколения являются языки запросов, дающие пользователю возможность получать информацию из баз данных. Де факто стандартом таких языков стал сегодня язык SQL .
Языки параллельного программирования – такие как FP, SISAL также относят к четвертому поколению языков программирования. Они изначально ориентированы на создание программного обеспечения для компьютеров параллельной архитектуры в отличие от языков третьего поколения, ориентированных на традиционную однопроцессорную архитектуру.
Фрагмент программы на объектно-ориентированном языке программирования третьего поколения Object Pascal в среде Delphi представлен на рисунке 12.
Рисунок 12 – Разработка программы в среде Delphi
2.6 Языки программирования пятого поколения
Пятое поколение языков программирования формируется и развивается в настоящее время. Это языки искусственного интеллекта, экспертных систем и баз знаний, а также естественные языки, не требующие освоения специального синтаксиса. Эта такие языки программирования, как ExpertLisp, IQLisp, SIAL, Q&A и другие.
Несмотря на кажущуюся простоту языков программирования пятого поколения, большинство специалистов считает, что разработка программного обеспечения все же требует от разработчика высокой квалификации и умения составлять программы вручную. Языки программирования пятого поколения – это, как правило, узкоспециализированные языки, предоставляющие программисту мощные высокоуровневые возможности обработки информации из конкретной области знаний.
Пример программы на одной из версий языка программирования Lisp представлен на рисунке 13.
Рисунок 13 – Программа на языке программирования Lisp
2.7 Процедурно-ориентированные языки программирования
Процедурно-ориентированными языками программирования называются языки программирования высокого уровня, в основу которых положены принципы описания последовательности действий, позволяющей выполнить решение исходной задачи, то есть алгоритм.
Обычно процедурно-ориентированные языки задают программы как совокупности процедур или подпрограмм.
В следующем разделе рассмотрены основные алгоритмические структуры.
3 ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ КОНСТРУКЦИИ
3.1 От интуитивного программирования к научному подходу
Нидерландский ученый, с именем которого связано превращение программирования из хаотичного интуитивного процесса в упорядоченный научный процесс, — нидерландский ученый Эдсгер Дейкстра (рисунок 14). Он сумел доказать, что программирование является интеллектуальным творчеством и высоким искусством.
Рисунок 14 – Эдгер В. Дейкстра
Именно Дейкстра для обеспечения легкости и гибкости программ предложил проектировать и записывать компьютерные программы в соответствии с определенной дисциплиной, названной им структурным программированием. Свои предложения Дейкстра основывал на известной теореме Бема-Якопини, которая утверждает, что любой алгоритм (а, значит, и программу) программу можно построить с использованием трех конструкций: следования, ветвления и цикла.
Графическая иллюстрация теоремы Бема-Якопини представлена на рисунке 15.
Рисунок 15 – Иллюстрация теоремы Бема-Якопини
Одновременно и независимо друг от друга два больших специалиста в сфере программирования - Эдсгер Дейкстра и Никлаус Вирт (создатель классической версии языка программирования Pascal) представлять программу в форме иерархической структуры блоков, каждый из которых реализует пусть маленькую, но законченную задачу. Такой эффект может быть достигнут с помощью использования инструментария процедур и функций.
Идеи структурного программирования, поначалу встреченные несколько холодно, быстро завоевали признание и популярность, которые сопутствуют им и сегодня.
Наиболее наглядным способом представления алгоритмов является графический способ, поэтому именно он использован в данном разделе. А также основные алгоритмические структуры представлены на языке Pascal.
3.2 Простая команда
Элементарной структурной единицей любого алгоритма является простая команда.
Простая команда представляет один простейший этап переработки или передачи информации.
При выполнении алгоритма обработка информации заключается в изменении значений величин, которыми манипулирует алгоритм.
Все величины, которые используются в алгоритме (программе), могут быть разделены на постоянные (константы) и переменные.
Изменения значения константы в процессе исполнения алгоритма не допускается в отличие от переменных величин, значения которых могут быть изменены.
Для именования любых величин используются имена (идентификаторы). Обычно в роли идентификаторов выступают последовательности букв, цифр и других допустимых символов.
Значение переменной может быть изменено, например, при помощи команды присваивания: